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中的轨迹,特点是执行第一个点的时候速度比较慢