API 说明
nachi 工控机主控支持的 API
100 |
获取机械臂程序版本号 |
支持 |
101 |
发送速度数据 |
不支持 |
102 |
发送加速度数据 |
不支持 |
103 |
发送圆滑过渡参数 |
不支持 |
104 |
发送工具坐标系(TCP)参数 |
不支持 |
105 |
设置数字量输出 |
支持 |
106 |
SetJointsMovej |
支持 |
107 |
SetCartMovel |
支持 |
108 |
SetJoinsMovel |
支持 |
109 |
SetCartMovej |
支持 |
110 |
MovejSequence |
不支持 |
111 |
MovelSequence |
不支持 |
112 |
SetJointsMovejDo |
不支持 |
113 |
SetCartMovelDo |
不支持 |
114 |
SetJointsMovelDo |
不支持 |
115 |
SetJointsMovejGroupDo |
不支持 |
116 |
SetCartMovelGroupDo |
不支持 |
117 |
SetJointsMovelGroupDo |
不支持 |
118 |
MovelUntil |
不支持 |
119 |
获取数字量输入状态 |
支持 |
120 |
获取数字量输出状态 |
支持 |
121 |
获取模拟量输入口数值 |
不支持 |
122 |
获取机械臂当前角度 |
支持 |
123 |
获取机械臂当前位姿 |
支持 |
200 |
机械臂后台发送状态 |
支持 |
那智工控机主控定义了一些全局变量,这些变量都放在 XYZSETUP.INC
不允许用户使用。
整体占用如下变量,请勿使用:
整数变量:V%[1~90]
实数变量:V![1~100]
字符串变量:V$[1~35]
nachi 机械臂主控支持的 API
PUBLIC.INC
中定义了全局的分隔符、结束符、版本、接收字符串等变量。
XYZSETUP.INC
中定义了全局变量的占用情况,请不要占用如下地址:
整数变量:V%[1~90]
实数变量:V![1~80], V![301~480](用于TrajMove)
字符串变量:V$[1~35]
具体占用情况如下:
整数变量V% |
|||
地址 |
别名 |
含义 |
说明(用户是否可写) |
V1% |
MST_CONNECT_TRIG |
通讯连接标志位 |
x |
V2% |
MST_COMMAND_TRIG |
发送命令标志位 |
x |
V3% |
MST_IP |
服务端的ip地址 |
可写 |
V4% |
MST_PORT |
服务端端口号 |
可写 |
V5% |
MST_CNN_ERR_ALL |
发生连接错误 |
read only |
V6% |
MST_CNN_ERR1 |
socket报错1 |
read only |
V7% |
MST_CNN_ERR2 |
socket报错2 |
read only |
V8% |
MST_SKT_SEND_SIZE |
内部使用 |
read only |
V9% |
MST_SKT_RECV_SIZE_ONE_TIME |
内部使用 |
read only |
V10% |
MST_TOTAL_RECV_VSTR_CNT |
内部使用 |
read only |
V11% |
MST_HB_VALUE |
当前分钟 |
read only |
V12% |
MST_FRONT_COMMAND |
命令号 |
read only |
V13% |
MST_TOOL_ID |
工具id |
可写 |
V14% |
MST_VS_ID |
视觉服务id |
可写 |
V15% |
MST_SET_TOKEN |
设置的token值 |
可写 |
V16% |
系统预留,请勿使用 |
x |
|
V17%~V19% |
内部使用 |
read only |
|
V20% |
系统预留,请勿使用 |
x |
|
V21% ~V30% |
MST_USR_IN_IN1 MST_USR_IN_IN2 MST_USR_IN_IN9 … MST_USR_IN_IN_10 |
xyzUsrCommand()的10个int输入参数 |
可写 |
V31% |
MST_ERR_CODE |
Max返回的错误代码 |
read only |
V32% |
MST_OUT_TOKEN |
Max返回的token值 |
read only |
V33% |
MST_POSE_NUM |
(grasp_pose/object_pose/轨迹等)的点位数量 |
read only |
V34% |
MST_PIPELINE_NUM |
运动流程编号 |
read only |
V35% |
MST_REGISTER_NUM |
抓取序号 |
read only |
V36%~V41% |
MST_OUT_INT1 … MST_OUT_INT6 |
指令xyzCalculateGraspPose() xyzCalculateObjectPose()的6个int输出值 |
read only |
V42%~V51% |
MST_USR_OUT_IN1 MST_USR_OUT_IN9 … MST_USR_OUT_IN_10 |
xyzUsrCommand()的10个int输出值 |
read only |
V52% |
MST_HB_FLAG |
内部使用,心跳标志位 |
x |
V53%~V60% |
系统预留,请勿使用 |
x |
|
V61%~V90% |
TrajMove中各轨迹点类型 |
read only |
字符串变量V$ |
|||
地址 |
别名 |
含义 |
说明(用户是否可写) |
V1$~V15$ |
内部使用 |
x |
|
V16$ |
系统预留,请勿使用 |
x |
|
V17$ |
MST_TASK_CODENAME |
任务代号 |
可写 |
V18$ |
MST_VISION_CODENAME |
视觉命令代号 |
可写 |
V19$ |
MST_ITEM_CODENAME |
工件代号 |
可写 |
V20$ |
MST_OBJ_NAME |
物体名称 |
read only |
V21$~V25$ |
MST_USR_IN_STR1 … MST_USR_IN_STR5 |
xyzUsrCommand()的5个字符串输入参数 |
可写 |
V26$~V30$ |
MST_USR_OUT_STR1 … MST_USR_OUT_STR5 |
xyzUsrCommand()的5个字符串输出值 |
read only |
V31$~V35$ |
系统预留,请勿使用 |
x |
实数变量V! |
|||
地址 |
别名 |
含义 |
说明(用户是否可写) |
V1! |
MST_POSE_X |
grasp_pose/object_pose/place_pose中的点位 |
read only |
V2! |
MST_POSE_Y |
||
V3! |
MST_POSE_Z |
||
V4! |
MST_POSE_A |
||
V5! |
MST_POSE_B |
||
V6! |
MST_POSE_C |
||
V7!~V10! |
系统预留,请勿使用 |
x |
|
V11!~V20! |
MST_USR_IN_FLT1 … MST_USR_IN_FLT_10 |
xyzUsrCommand()的10个实数输入值 |
可写 |
V21!~V30! |
MST_USR_OUT_FLT1 … MST_USR_OUT_FLT_10 |
xyzUsrCommand()的10个实数输出值 |
read only |
V31!~V36! |
MST_USR_IN_CART_POSE_X MST_USR_IN_CART_POSE_Y MST_USR_IN_CART_POSE_Z MST_USR_IN_CART_POSE_A MST_USR_IN_CART_POSE_B MST_USR_IN_CART_POSE_C |
xyzUsrCommand()的1个笛卡尔坐标输入值 |
可写 |
V37!~V42! |
MST_USR_OUT_CART_POSE_X MST_USR_OUT_CART_POSE_Y MST_USR_OUT_CART_POSE_Z MST_USR_OUT_CART_POSE_A MST_USR_OUT_CART_POSE_B MST_USR_OUT_CART_POSE_C |
xyzUsrCommand()的1个笛卡尔坐标输出值 |
read only |
V43!~V48! |
MST_USR_IN_J1 … MST_USR_IN_J6 |
xyzUsrCommand()的1个关节坐标输入值 |
可写 |
V49!~V54! |
MST_USR_OUT_J1 … MST_USR_OUT_J6 |
xyzUsrCommand()的1个关节坐标输出值 |
read only |
V55!~V62! |
内部使用 |
x |
|
V63!~V70! |
内部使用 |
x |
|
V71!~V80! |
系统预留,请勿使用 |
x |
|
V301!~V480! |
轨迹移动中的轨迹点坐标 |
x |
机械臂主控支持的api定义在 USRPROC.INC
。
各指令可能涉及到输入输出参数,在使用时既可以直接用api描述中的变量地址,也可以用上述表格中给出的变量别名。如使用到视觉服务id这个参数,在程序中既可以用 V14%
表示,也可以用别名 MST_VS_ID
表示。
- MasterInit()
初始化各变量
- xyzMasterConnect()
连接到server
- 参数
ip (V3%) – ip地址
port (V4%) – ip地址
- xyzSwitchTask()
切换任务
- 参数
task_codename (V17$) – 任务代号
- 返回
err_code(V31%)
- xyzSwitchTool()
切换工具
- 参数
tool_id (V13%) – 工具id
- 返回
err_code(V31%)
- xyzCallVisionCommand()
呼叫视觉
- 参数
vs_id (V14%) – 视觉服务id
vision_codename (V18$) – 呼叫视觉的命令代号
- 返回
err_code(V31%)
- xyzReqGraspPose()
请求抓取目标点位
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
token(V32%): 在执行”获取抓取目标点位”时使用到
- xyzGetGraspPose()
获取抓取目标点位
- 参数
token (V15%) – “请求抓取目标点位”中返回的token
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 当前可供抓取的点位数量
- 返回
pipeline_num(V34%): 运动流程编号
- 返回
register_num(V35%): 抓取序号
- 返回
grasp_pose: 抓取位姿,xyzabc分别保存在V1!~V6!
- 返回
ints: 自定义的6个int输出值(V36%~V41%),可在Task中自定义含义
- xyzReqObjPose()
请求物体位姿
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
token(V32%): 在执行”获取物体位姿“时使用到
- xyzGetObjPose()
获取抓取目标点位
- 参数
token (V15%) – “请求物体位姿”中返回的token
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 当前物体位姿个数
- 返回
object_name(V20$): 物体名称
- 返回
object_pose: 物体位姿,xyzabc分别保存在V1!~V6!
- 返回
ints: 自定义的6个int输出值(V36%~V41%),可在Task中自定义含义
- xyzResetTask()
重置任务
- 返回
err_code(V31%)
- xyzSendCurrentJoints()
发送机器人当前关节角
- 返回
err_code(V31%)
- xyzSendCurrentCartPose()
发送机器人当前笛卡尔坐标值
- 返回
err_code(V31%)
- xyzSendCurrentExtJoints()
发送机器人当前扩展轴坐标,该指令暂不支持!
- 返回
err_code(V31%)
- xyzReqPickPlace()
请求抓放规划
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- xyzGetPickIn()
获取取料入框轨迹
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 轨迹中的点位数量
- 返回
pipeline_num(V34%): 运动流程编号
- 返回
register_num(V35%): 抓取序号
- 返回
轨迹点: 轨迹点类型保存在V61%~V90%,具体的轨迹坐标保存在V301!~V480!。可以调用xyzExecGeneralTraj()、xyzExecPickInTraj()或者xyzExecPickOutTraj()来执行轨迹。
- xyzGetPickOut()
获取取料出框轨迹
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 轨迹中的点位数量
- 返回
pipeline_num(V34%): 运动流程编号
- 返回
register_num(V35%): 抓取序号
- 返回
轨迹点: 轨迹点类型保存在V61%~V90%,具体的轨迹坐标保存在V301!~V480!。可以调用xyzExecGeneralTraj()、xyzExecPickInTraj()或者xyzExecPickOutTraj()来执行轨迹。
- xyzGetPlaceIn()
获取放料入框轨迹
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 轨迹中的点位数量
- 返回
pipeline_num(V34%): 运动流程编号
- 返回
register_num(V35%): 抓取序号
- 返回
轨迹点: 轨迹点类型保存在V61%~V90%,具体的轨迹坐标保存在V301!~V480!。可以调用xyzExecGeneralTraj()、xyzExecPickInTraj()或者xyzExecPickOutTraj()来执行轨迹。
- xyzGetPlaceOut()
获取放料出框轨迹
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 轨迹中的点位数量
- 返回
pipeline_num(V34%): 运动流程编号
- 返回
register_num(V35%): 抓取序号
- 返回
轨迹点: 轨迹点类型保存在V61%~V90%,具体的轨迹坐标保存在V301!~V480!。可以调用xyzExecGeneralTraj()、xyzExecPickInTraj()或者xyzExecPickOutTraj()来执行轨迹。
- xyzUpdateTotePose()
料箱重定位
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- xyzUpdateObjPoseInHand()
工件在手上的二次定位
- 返回
err_code(V31%)
- 返回
place_pose: 放置位姿,xyzabc分别保存在V1!~V6!
- xyzSwitchItem()
切换工件
- 参数
vs_id (V14%) – 视觉服务id
item_codename (V19$) – 工件代号
- 返回
err_code(V31%)
- xyzCalculateGraspPose()
计算抓取目标点位,该指令等价于 xyzReqGraspPose() +xyzGetGraspPose()
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 当前可供抓取的点位数量
- 返回
pipeline_num(V34%): 运动流程编号
- 返回
register_num(V35%): 抓取序号
- 返回
grasp_pose: 抓取位姿,xyzabc分别保存在V1!~V6!
- 返回
ints: 自定义的6个int输出值(V36%~V41%),可在Task中自定义含义
- xyzCalculateObjectPose()
计算物体位姿,该指令等价于 xyzReqObjPose() + xyzGetObjPose()
- 参数
vs_id (V14%) – 视觉服务id
- 返回
err_code(V31%)
- 返回
pose_num(V33%): 当前物体位姿个数
- 返回
object_name(V20$): 物体名称
- 返回
object_pose: 物体位姿,xyzabc分别保存在V1!~V6!
- 返回
ints: 自定义的6个int输出值(V36%~V41%),可在Task中自定义含义
- xyzUsrCommand()
用户自定义指令,用于基础指令不支持的情况下,配合任务流图完成用户特定功能。各个参数的含义取决于任务流图中设定的输入输出。
该指令不直接带参数,所有输入输出均直接读写寄存器。
指令输入:
5个字符串输入:V$[21~25],没用到的值请初始化为空或者”0”。使用时V$[21] + V$[22]的字符串总长度不允许超过180个字节;V$[23] + V$[24] + V$[25]总长度不要超过180个字节!
10个int输入:V%[21~30],没用到的值请初始化为0。
10个real输入:V![11~20],没用到的值请初始化为0。
1个关节输入:xyzabc的值分别存在V![31~36],xyz单位是mm,abc得是deg
1个笛卡尔输入:j1~j6的值分别存储在V![43~48],单位是deg
指令返回:
err_code(V31%)
5个字符串输出:V$[26~30]
10个int输出:V%[42~51]
10个real输出:V![21~30]
1个关节输出:xyzabc的值分别存在V![37~42],xyz单位是mm,abc得是deg
1个笛卡尔输出:j1~j6的值分别存储在V![49~54],单位是deg
- CheckErrorCode()
检查err_code(V31%)是否有错误,如果有错则停止
- xyzExecGeneralTraj()
用于执行TrajMove中的轨迹
- xyzExecPickInTraj()
用于执行TrajMove中的轨迹,特点是执行最后一个点的时候速度比较慢
- xyzExecPickOutTraj()
用于执行TrajMove中的轨迹,特点是执行第一个点的时候速度比较慢