TCP 指令说明
本文介绍基于TCP协议的标准接口指令。在开始前,请注意以下事项:
-
指令的收发:机器人或上位机(客户端)发送指令给梅卡曼德视觉系统(服务端),梅卡曼德视觉系统将处理后的数据返回给机器人或上位机。
-
指令的数据传输格式:支持ASCII和HEX。
-
ASCII格式字符串使用英文逗号作为数据分隔符,末尾的终止符使用 \r 表示。本文中的示例均采用ASCII格式字符串,且省略末尾的终止符(\r)。例如,机器人向视觉系统发送103指令,若添加末尾终止符,则指令格式如下。
103,1,2\r
-
HEX(十六进制)字节顺序分为大端和小端。在发送指令时,字节长度固定为64。若字节长度不足64,使用0填充剩余字节。若字节长度超过64,视觉系统会忽略超出的字节。
以ASCII格式字符串“103,1,2”为例,若以HEX大端形式发送指令,则指令格式如下。十进制数103对应的十六进制数为67。十六进制数67以大端字节顺序表示为00 00 00 67。
00 00 00 67 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
若以HEX小端形式发送指令,则指令格式如下。十六进制数67以小端字节顺序表示为67 00 00 00。
67 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-
-
指令的数据单位:
-
关节角的单位是度(°)。
-
机器人法兰位姿或机器人工具位姿由位置和姿态组成,位置(XYZ坐标值)单位为毫米(mm);姿态使用欧拉角表示,单位为度(°)。
-
-
视觉点或路径点:
-
视觉点:Mech-Vision识别的目标物体,一个视觉点包括物体位姿、标签、物体尺寸、自定义数据等信息。
-
路径点:机器人沿着规划路径需逐一到达的点位,一个路径点包括机器人位姿、标签、移动类型等信息。路径点可分为以下两种类型:
-
视觉移动路径点:“视觉移动”步骤对应的路径点。
-
非视觉移动路径点:除“视觉移动”步骤外,其他移动类步骤对应的路径点。
-
-
指令总览
与Mech-Vision相关的指令 |
与Mech-Viz相关的指令 |
100指令——运行Mech-Vision工程并获取结果
功能介绍
该指令先设置Mech-Vision工程所使用的参数配方(若工程中无参数配方,可跳过,参考103指令——切换Mech-Vision参数配方),然后触发Mech-Vision工程运行(参考101指令——运行Mech-Vision工程),最终返回视觉系统输出的视觉点(参考102指令——获取视觉结果),或路径点(参考105指令——获取Mech-Vision规划路径),或自定义数据(参考110指令——获取Mech-Vision自定义数据)。
机器人需等待视觉系统拍照并返回结果后,才能移动。 |
发送格式
100, Mech-Vision工程编号, 参数配方编号, 返回数据格式, 机器人关节角, 机器人法兰位姿
Mech-Vision工程编号
Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
参数配方编号
Mech-Vision工程中参数配方的编号,为正整数,取值范围为1~99。如何查看参数配方的编号,可参考《查看参数配方的编号》。
若Mech-Vision工程不涉及切换配方,则将该参数设置为0即可。 |
返回数据格式
返回数据格式 取值 |
返回数据的说明(每个字段的具体解释参见下文的 返回格式) |
1 |
100, 状态码, 是否已获取所有视觉点, 视觉点数量, 保留字段, 视觉点1(工具位姿, 标签, 末端工具编号), 视觉点2(工具位姿, 标签, 末端工具编号), … |
2 |
100, 状态码, 是否已获取所有视觉点, 自定义数据项个数N, 位姿, 标签, 自定义数据项1, …, 自定义数据项N |
3 |
100, 状态码, 是否已获取所有路径点, 路径点数量, “视觉移动”在路径中的位置, 路径点1(关节角, 标签, 末端工具编号), 路径点2(关节角, 标签, 末端工具编号), … |
4 |
100, 状态码, 是否已获取所有路径点, 路径点数量, “视觉移动”在路径中的位置, 路径点1(工具位姿, 标签, 末端工具编号), 路径点2(工具位姿, 标签, 末端工具编号), … |
机器人关节角、机器人法兰位姿
将机器人的当前关节角和法兰位姿传入Mech-Vision工程。
返回格式
返回数据格式1
100, 状态码, 是否已获取所有视觉点, 视觉点数量, 保留字段, 视觉点1(工具位姿, 标签, 末端工具编号), 视觉点2(工具位姿, 标签, 末端工具编号), …
状态码
若指令执行正常,则状态码为 1100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有视觉点
该参数表明是否已获取所有视觉点,其值为0或1。
-
0:未获取所有视觉点。
-
1:已获取所有视觉点。
|
视觉点数量
该参数表示获取的视觉点数量。
保留字段
该字段未使用,默认值为0。
视觉点
获取的每个视觉点由8个数据构成,前6个表示工具位姿,第7个表示标签,第8个表示末端工具编号。
-
工具位姿:机器人的工具位姿。
视觉系统会将视觉点的物体位姿(即“输出”步骤的poses端口数据)自动转换为对应的机器人工具位姿。
-
将物体位姿由四元数形式转换为欧拉角形式。
-
将物体位姿绕X轴旋转180°,使其Z轴朝下。
-
-
标签:位姿对应的整数标签(“输出”步骤中labels端口数据)。
-
标签必须是一个数字字符串。若标签不是数字字符串,请在“输出”步骤前,使用“标签映射”步骤将其映射为数字字符串。
-
若“输出”步骤上没有labels端口,则标签值默认为0。
-
-
末端工具编号:该参数值默认为0。Mech-Vision输出的视觉点中一般不携带机器人在物体位置的末端工具编号信息。
返回数据格式2
100, 状态码, 是否已获取所有视觉点, 自定义数据项个数N, 位姿, 标签, 自定义数据项1, …, 自定义数据项N
状态码
若指令执行正常,则状态码为 1100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有视觉点
该参数表明是否已获取所有视觉点,其值为0或1。
-
0:未获取所有视觉点。
-
1:已获取所有视觉点。
|
自定义数据项个数
所有自定义端口数据的列维数之和。例如,“输出”步骤的端口数据由以下数据组成,其中customData1和customData2为自定义端口,列维数分别为3和2,因此,自定义数据项个数为3+2=5。
端口名称 |
poses |
labels |
customData1 |
customData2 |
端口数据 |
[ [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0] ] |
[ "0", "1" ] |
[ [0, 0, 1], [1, 0, 0] ] |
[ [0, 0], [1, 1] ] |
行维数(列表中元素个数) |
2 |
2 |
2 |
2 |
列维数(列表中单个元素的维数) |
7 |
1 |
3 |
2 |
位姿
单个视觉点的机器人工具位姿。视觉系统会将视觉点的物体位姿(即“输出”步骤的poses端口数据)自动转换为对应的机器人工具位姿,具体转换流程如下。
-
将物体位姿由四元数形式转换为欧拉角形式。
-
将物体位姿绕X轴旋转180°,使其Z轴朝下。
标签
单个视觉点的标签(“输出”步骤中labels端口数据)。
|
自定义数据项
单个视觉点的所有自定义端口的数据,其数量与 自定义数据项个数 相等。例如,“输出”步骤各端口的数据如下表所示,则机器人获取第一个视觉点的 自定义数据项 为 [0, 0, 1] 与 [0, 0], 机器人获取第二个视觉点的 自定义数据项 为 [1, 0, 0] 与 [1, 1]。
端口名称 |
poses |
labels |
customData1 |
customData2 |
端口数据 |
[ [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0] ] |
[ "0", "1" ] |
[ [0, 0, 1], [1, 0, 0] ] |
[ [0, 0], [1, 1] ] |
第一个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
0 |
[0, 0, 1] |
[0, 0] |
第二个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
1 |
[1, 0, 0] |
[1, 1] |
自定义数据项按照自定义端口名称的字母顺序(A—Z)排列。 |
返回数据格式3
100, 状态码, 是否已获取所有路径点, 路径点数量, “视觉移动”在路径中的位置, 路径点1(关节角, 标签, 末端工具编号), 路径点2(关节角, 标签, 末端工具编号), …
状态码
若指令执行正常,则状态码为 1103。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有路径点
该参数表明是否已获取所有路径点,其值为0或1。
-
0:未获取所有路径点。
-
1:已获取所有路径点。
|
路径点数量
该参数表示获取的路径点数量。
“视觉移动”在路径中的位置
该参数表示路径规划工具中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置为3。
路径点
获取的每个路径点由8个数据构成,前6个表示关节角,第7个表示标签,第8个表示末端工具编号。
-
关节角:机器人的关节角(JPs)。
-
标签:位姿对应的整数标签(“输出”步骤中labels端口数据)。
-
标签必须是一个数字字符串。若标签不是数字字符串,请在“输出”步骤前,使用“标签映射”步骤将其映射为数字字符串。
-
若“输出”步骤上没有labels端口,则标签值默认为0。
-
-
末端工具编号:路径规划工具中设置的末端工具编号。
返回数据格式4
100, 状态码, 是否已获取所有路径点, 路径点数量, “视觉移动”在路径中的位置, 路径点1(工具位姿, 标签, 末端工具编号), 路径点2(工具位姿, 标签, 末端工具编号), …
状态码
若指令执行正常,则状态码为 1103。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有路径点
该参数表明是否已获取所有路径点,其值为0或1。
-
0:未获取所有路径点。
-
1:已获取所有路径点。
|
路径点数量
该参数表示获取的路径点数量。
“视觉移动”在路径中的位置
该参数表示路径规划工具中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置为3。
路径点
获取的每个路径点由8个数据构成,前6个表示工具位姿,第7个表示标签,第8个表示末端工具编号。
-
工具位姿:机器人的工具位姿。
-
标签:位姿对应的整数标签(“输出”步骤中labels端口数据)。
-
标签必须是一个数字字符串。若标签不是数字字符串,请在“输出”步骤前,使用“标签映射”步骤将其映射为数字字符串。
-
若“输出”步骤上没有labels端口,则标签值默认为0。
-
-
末端工具编号:路径规划工具中设置的末端工具编号。
样例
样例1:返回数据格式1
-
机器人向视觉系统发送如下指令,1表示视觉系统返回数据格式1。
100, 1, 2, 1, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
视觉系统向机器人返回如下结果,1表示共获取1个视觉点。
100, 1100, 1, 1, 0, 95.7806, 644.5677, 401.1013, 91.1206, -171.1301, 180.0, 0, 0
样例2:返回数据格式2
-
机器人向视觉系统发送如下指令,2表示视觉系统返回数据格式2。
100, 1, 0, 2, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
视觉系统向机器人返回如下结果,2表示自定义数据项个数,自定义数据项是12和22。
100, 1100, 1, 2, 592.6891, -256.7424, -56.6007, 0.0723, 1.1348, -176.355, 2, 12, 22
样例3:返回数据格式3
-
机器人向视觉系统发送如下指令,3表示视觉系统返回数据格式3。
100, 1, 2, 3, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
视觉系统向机器人返回所有路径点(共3个,位姿类型为关节角),其中第2个路径点为视觉移动路径点。
100, 1100, 1, 3, 2, 8.3077, 15.1634, -142.1778, -2.7756, -31.4404, -96.9490, 0, 64, 8.2425, 12.1301, -141.7587, -2.5135, -34.8905, -97.1911, 0, 32, 9.3077, 16.1634, -145.1778, -9.7756, -30.4404, -86.9490, 1, 64,
样例4:返回数据格式4
-
机器人向视觉系统发送如下指令,4表示视觉系统返回数据格式4。
100, 1, 2, 4, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
视觉系统向机器人返回所有路径点(共3个,位姿类型为工具位姿),其中第2个路径点为视觉移动路径点。
100, 1100, 1, 3, 2, 1149.114, -298.9656, 274.9219, -0.0977, -1.3863, -175.9702, 0, 7, 1149.8416, -296.8585, 245.0048, -0.0977, -1.3863, -175.9702, 2, 7, 1149.114, -298.9656, 274.9219, -0.0977, -1.3863, -175.9702, 0, 7
101指令——运行Mech-Vision工程
功能介绍
该指令用于触发Mech-Vision工程运行。在Mech-Vision工程运行期间,视觉系统会执行相机拍照,并对图像数据进行一系列的视觉算法处理,最终得到一系列视觉点或路径点。
|
调用顺序
-
工程中的步骤参数需要在运行Mech-Vision工程之前被设置,因此103指令——切换Mech-Vision参数配方或501指令——向Mech-Vision工程传入物体尺寸需先于101指令——运行Mech-Vision工程被调用。
-
只有运行Mech-Vision工程后,视觉系统才得到视觉点或路径点,因此101指令——运行Mech-Vision工程需先于102指令——获取视觉结果、105指令——获取Mech-Vision规划路径或110指令——获取Mech-Vision自定义数据被调用。
所有指令的调用顺序可参考《标准接口指令调用时序》。
发送格式
101, Mech-Vision工程编号, 预期视觉点或路径点数量, 机器人位姿类型, 机器人位姿
Mech-Vision工程编号
Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
预期视觉点或路径点数量
期望从Mech-Vision工程获取的视觉点或路径点数量。
若Mech-Vision工程中存在“路径规划”步骤,该参数表示预期路径点数量,否则表示预期视觉点数量。 |
-
0:从Mech-Vision工程获取所有视觉点或路径点。
-
大于0的整数:从Mech-Vision工程获取指定数量的视觉点或路径点。
-
如果Mech-Vision工程输出的视觉点或路径点总数小于指定的参数值,则获取输出的所有视觉点或路径点。
-
如果Mech-Vision工程输出的视觉点或路径点总数大于或等于指定的参数值,则获取指定数量的视觉点或路径点。
-
|
机器人位姿类型 、 机器人位姿
-
机器人位姿类型 指定真实机器人的位姿将以何种形式传入Mech-Vision工程,其取值范围为0~3。
-
机器人位姿 取决于 机器人位姿类型。
下表为两参数取值的关系及说明。
机器人位姿类型 | 机器人位姿 | 说明 | 适用场景 |
---|---|---|---|
0 |
0, 0, 0, 0, 0, 0 |
无需向Mech-Vision传入机器人位姿 |
相机的安装方式为Eye To Hand。若Mech-Vision工程中使用“路径规划”步骤,则路径规划的起始点为路径规划工具中设置的Home点。 |
1 |
机器人当前关节角+当前法兰位姿 |
需要将机器人的关节角和法兰位姿传入Mech-Vision |
相机的安装方式为Eye In Hand。除桁架机器人外,大多数机器人适用该设定。 |
2 |
机器人当前法兰位姿 |
需要将机器人的当前法兰位姿传入Mech-Vision |
相机的安装方式为Eye In Hand,机器人无关节角数据,仅有法兰位姿数据(如桁架机器人)。 |
3 |
机器人路径规划起始点的关节角 |
需要将机器人路径规划起始点的关节角传入Mech-Vision |
相机的安装方式为Eye To Hand,并且Mech-Vision工程中存在“路径规划”步骤,且需要从机器人端设置“路径规划”步骤的起始点。 |
样例
样例1
-
相机的安装方式为Eye In Hand,机器人向视觉系统发送如下指令,1表示机器人向视觉系统发送当前关节角和法兰位姿。
101, 1, 0, 1, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
视觉系统向机器人返回如下结果,1102表示成功触发Mech-Vision工程。
101, 1102
样例2
-
相机的安装方式为Eye To Hand,机器人向视觉系统发送如下指令,3表示机器人向视觉系统发送示教点的关节角。
101, 1, 0, 3, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15
-
视觉系统向机器人返回如下结果,1102表示成功触发Mech-Vision工程。
101, 1102
样例3
-
若Mech-Vision工程2未注册,则机器人向视觉系统发送如下指令。
101, 2, 10, 0, 0, 0, 0, 0, 0, 0
-
视觉系统向机器人返回如下结果,1011表示Mech-Vision工程未注册。
101, 1011
102指令——获取视觉结果
功能介绍
该指令用于获取Mech-Vision输出的视觉结果(一系列视觉点)。视觉点的物体位姿(即“输出”步骤的poses端口数据)将会由视觉系统自动转换为对应机器人的工具位姿,具体转换流程如下。
-
将物体位姿由四元数形式转换为欧拉角形式。
-
将物体位姿绕X轴旋转180°,使其Z轴朝下。
返回格式
102, 状态码, 是否已获取所有视觉点, 视觉点数量, 保留字段, 视觉点1(工具位姿, 标签, 末端工具编号), 视觉点2(工具位姿, 标签, 末端工具编号), …
状态码
若指令执行正常,则状态码为 1100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有视觉点
该参数表明是否已获取所有视觉点,其值为0或1。
-
0:未获取所有视觉点。
-
1:已获取所有视觉点。
|
视觉点数量
该参数表示获取的视觉点数量。视觉系统默认单次发送视觉点的最大数量为20,因此该参数默认最大值为20。 在Mech-Vision工具栏的
下,可根据需求更改默认最大数量,但最大数量的上限为30。保留字段
该字段未使用,默认值为0。
视觉点
获取的每个视觉点由8个数据构成,前6个表示工具位姿,第7个表示标签,第8个表示末端工具编号。
-
工具位姿:机器人的工具位姿。
视觉系统会将视觉点的物体位姿(即“输出”步骤的poses端口数据)自动转换为对应的机器人工具位姿。
-
将物体位姿由四元数形式转换为欧拉角形式。
-
将物体位姿绕X轴旋转180°,使其Z轴朝下。
-
-
标签:位姿对应的整数标签(“输出”步骤中labels端口数据)。
-
标签必须是一个数字字符串。若标签不是数字字符串,请在“输出”步骤前,使用“标签映射”步骤将其映射为数字字符串。
-
若“输出”步骤上没有labels端口,则标签值默认为0。
-
-
末端工具编号:该参数值默认为0。Mech-Vision输出的视觉点中一般不携带机器人在物体位置的末端工具编号信息。
样例
样例1
-
机器人向视觉系统发送如下指令。
102, 1
-
若视觉系统向机器人返回如下结果,则表示指令执行正常。1表示共获取1个视觉点。
102, 1100, 1, 1, 0, 95.7806, 644.5677, 401.1013, 91.1206, -171.1301, 180.0, 0, 0
若视觉系统向机器人返回如下结果,则表示指令执行异常。1002表示无视觉结果。
102, 1002
样例2
以下样例为获取22个视觉点的过程:
-
机器人向视觉系统发送101指令,0表示期望获取全部视觉点。
101, 1, 0, 1, -0, -20.6323, -107.8121, -0, -92.8181, 0.0016
视觉系统向机器人返回如下结果,1102表示成功触发Mech-Vision工程。
101, 1102
-
机器人向视觉系统发送102指令,获取20个视觉点。
102, 1
视觉系统向机器人返回如下数据,其中,0表示未获取所有视觉点,20表示已获取20个视觉点。
102, 1100, 0, 20, 0, 95.7806, 644.5677, 401.1013, 31.1206, ...
-
机器人再次向视觉系统发送102指令,获取剩余的视觉点。
102, 1
视觉系统向机器人返回如下数据,其中,1表示已获取所有视觉点,2表示已获取剩余的2个视觉点。
102, 1100, 1, 2, 0, 315.2017, 592.1261, 399.6052, 126.1960, ...
103指令——切换Mech-Vision参数配方
发送格式
103, Mech-Vision工程编号, 参数配方编号
Mech-Vision工程编号
Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
参数配方编号
Mech-Vision工程中参数配方的编号,为正整数,取值范围为1~99。如何查看参数配方的编号,可参考《查看参数配方的编号》。
105指令——获取Mech-Vision规划路径
功能介绍
该指令用于获取Mech-Vision规划的路径(一系列路径点)。此处的路径由“路径规划工具”(从下图的 打开编辑器 进入)规划。“路径规划”步骤相关的内容,可参考《路径规划》。
Mech-Vision “输出”步骤的 端口类型 参数需要设置为“预定义(机器人路径)”。 |
发送格式
105, Mech-Vision工程编号, 路径点的位姿类型
Mech-Vision工程编号
Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
路径点的位姿类型
该参数用于指定获取路径点的位姿类型。
-
1:机器人关节角(JPs)。
-
2:机器人工具位姿。
返回格式
105, 状态码, 是否已获取所有路径点, 路径点数量, “视觉移动”在路径中的位置, 路径点1(位姿, 标签, 末端工具编号), 路径点2(位姿, 标签, 末端工具编号), …
状态码
若指令执行正常,则状态码为 1103。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有路径点
该参数表明是否已获取所有路径点,其值为0或1。
-
0:未获取所有路径点。
-
1:已获取所有路径点。
|
路径点数量
该参数表示获取的路径点数量。视觉系统默认单次发送路径点的最大数量为20,因此该参数默认最大值为20。 在Mech-Vision工具栏的
下,可根据需求更改默认最大数量,但最大数量的上限为30。在调用105指令——获取Mech-Vision规划路径前,请务必将101指令——运行Mech-Vision工程的 预期视觉点或路径点数量 设置为0,以减少调用105指令——获取Mech-Vision规划路径的次数。若101指令——运行Mech-Vision工程指令的 预期视觉点或路径点数量 设置为1,则每次调用105指令——获取Mech-Vision规划路径只会获取一个路径点,只有多次调用才能获取全部路径点。 |
“视觉移动”在路径中的位置
该参数表示路径规划工具中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置为3。
若需多次发送该指令才可接收整条路径,则该参数在第一次返回结果中表示视觉移动路径点在整条规划路径中的位置,在后续返回结果中表示视觉移动路径点在剩余路径点中的位置。 |
例如,假设Mech-Vision规划的路径由4个路径点组成,其中第4个路径点为视觉移动路径点。
-
机器人第一次发送指令。
105, 1, 1
视觉系统向机器人返回如下结果,2表示第一次共获取到2个路径点,4表示视觉移动路径点在整条规划路径中的位置。
105, 1103, 0, 2, 4, 0.0, 0.0, 0.0, 0.0, 69.0, 0.0, 0, 7, 73.0, 0.0, 0.0, 0.0, 69.0, 0.0, 0, 7
-
机器人第二次发送指令。
105, 1, 1
视觉系统向机器人返回如下结果,第一个2表示第二次获取剩余的2个路径点,第二个2表示视觉移动路径点在剩余2个路径点中的位置。
105, 1103, 1, 2, 2, -77.0, 0.0, 0.0, 0.0, 69.0, 0.0, 0, 7, -26.6781, 55.4142, 45.0133, -7.3735, -10.948, 160.5773, 2, 7
路径点
获取的每个路径点由8个数据构成,前6个表示位姿,第7个表示标签,第8个表示末端工具编号。
-
位姿:机器人的工具位姿或关节角(JPs)。位姿类型由发送该指令时指定的 路径点的位姿类型 参数决定。
-
标签:位姿对应的整数标签(“输出”步骤中labels端口数据)。
-
标签必须是一个数字字符串。若标签不是数字字符串,请在“输出”步骤前,使用“标签映射”步骤将其映射为数字字符串。
-
若“输出”步骤上没有labels端口,则标签值默认为0。
-
-
末端工具编号:路径规划工具中设置的末端工具编号。
样例
-
机器人向视觉系统发送如下指令,即获取Mech-Vision工程1输出的路径点,2表示路径点的位姿类型为工具位姿。
105, 1, 2
-
若视觉系统向机器人返回如下结果,则表示指令执行正常。视觉系统向机器人返回所有路径点(共5个),其中第3个路径点为视觉移动路径点。
105, 1103, 1, 5, 3, 1030.0, 0, 1260.0, 0.0, 90.0, -0.0, 0, 7, 1149.114, -298.9656, 274.9219, -0.0977, -1.3863, -175.9702, 0, 7, 1149.8416, -296.8585, 245.0048, -0.0977, -1.3863, -175.9702, 2, 7, 1149.114, -298.9656, 274.9219, -0.0977, -1.3863, -175.9702, 0, 7, 1030.0, 0, 1260.0, 0.0, 90.0, -0.0, 0,7
若视觉系统向机器人返回如下结果,则表示指令执行异常。1020表示Mech-Vision工程未启动。
105, 1020
106指令——获取Mech-Vision吸盘DO信号
功能介绍
该指令用于获取Mech-Vision工程规划的多分区吸盘的控制信号。在使用该指令前,用户需提前在Mech-Vision软件中进行如下配置。
-
在“路径规划”步骤参数中,单击 配置向导。在 全局配置 中,将 箱子拆垛 开关置于打开状态。
-
在“路径规划”步骤参数中,单击 配置向导,双击末端工具名称,工具类型 选择 拆垛吸盘,单击 拆垛吸盘配置,根据需求配置DO信号。
调用顺序
所有指令的调用顺序可参考《标准接口指令调用时序》。
发送格式
106, Mech-Vision工程编号, 吸盘分区数量
Mech-Vision工程编号
Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
吸盘分区数量
该参数为吸盘配置器中设置的吸盘分区数量。例如,上图中的吸盘分区数量为3。
返回格式
106, 状态码, DO信号1, DO信号2, …, DO信号64
状态码
若指令执行正常,则状态码为 1106。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
DO信号
-
在路径规划的全局配置中,若规划全部视觉结果开关处于关闭状态,则该指令返回64个DO信号,表示本轮规划的吸盘DO信号,其中有效的DO信号为非负整数,范围为 0~999;无效的DO信号为-1(作为占位值)。
例如,在下表中,返回的有效DO信号为1、3、5、6,即表示机器人需将上述DO信号对应的值设为ON。
第1个
第2个
第3个
第4个
第5个
第6个
第7个
第8个
…
第63个
第64个
1
3
5
6
-1
-1
-1
-1
…
-1
-1
-
在路径规划的全局配置中,若规划全部视觉结果开关处于打开状态,则Mech-Vision可以根据同一视觉结果进行多轮规划。该指令返回的64个DO信号是所有轮规划的吸盘DO信号。此时使用吸盘分区数量,即可区分每轮规划的吸盘DO信号。有效的DO信号为非负整数,范围为 0~999;无效的DO信号为-1(作为占位值)。
例如,吸盘分区数量为4,该指令共返回64个DO信号,其中,每4个DO信号为一轮规划的多分区吸盘控制信号。
第1轮规划
第2轮规划
…
第16轮规划
第1个
第2个
第3个
第4个
第5个
第6个
第7个
第8个
…
第61个
第62个
第63个
第64个
1
3
4
-1
1
4
-1
-1
…
-1
-1
-1
-1
样例
-
机器人向视觉系统发送如下指令。
106, 1, 1
-
视觉系统向机器人返回如下结果,其中有效的DO信号为11、12。
106, 1106, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
110指令——获取Mech-Vision自定义数据
功能介绍
该指令用于从Mech-Vision“输出”步骤获取自定义端口的数据。 自定义端口的设置可从“输出”步骤参数的 打开编辑器 处进入,其中自定义通信键名就是自定义端口名称,例如下图中customeData1和customeData2端口就是自定义端口。
|
返回格式
110, 状态码, 是否已获取所有视觉点, 自定义数据项个数N, 位姿, 标签, 自定义数据项1, …, 自定义数据项N
状态码
若指令执行正常,则状态码为 1100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有视觉点
该参数表明是否已获取所有视觉点,其值为0或1。
-
0:未获取所有视觉点。
-
1:已获取所有视觉点。
|
自定义数据项个数
所有自定义端口数据的列维数之和。例如,“输出”步骤的端口数据由以下数据组成,其中customData1和customData2为自定义端口,列维数分别为3和2,因此,自定义数据项个数为3+2=5。
端口名称 |
poses |
labels |
customData1 |
customData2 |
端口数据 |
[ [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0] ] |
[ "0", "1" ] |
[ [0, 0, 1], [1, 0, 0] ] |
[ [0, 0], [1, 1] ] |
行维数(列表中元素个数) |
2 |
2 |
2 |
2 |
列维数(列表中单个元素的维数) |
7 |
1 |
3 |
2 |
位姿
单个视觉点的机器人工具位姿。视觉系统会将视觉点的物体位姿(即“输出”步骤的poses端口数据)自动转换为对应的机器人工具位姿,具体转换流程如下。
-
将物体位姿由四元数形式转换为欧拉角形式。
-
将物体位姿绕X轴旋转180°,使其Z轴朝下。
标签
单个视觉点的标签(“输出”步骤中labels端口数据)。
|
自定义数据项
单个视觉点的所有自定义端口的数据,其数量与 自定义数据项个数 相等。例如,“输出”步骤各端口的数据如下表所示,则机器人获取第一个视觉点的 自定义数据项 为 [0, 0, 1] 与 [0, 0], 机器人获取第二个视觉点的 自定义数据项 为 [1, 0, 0] 与 [1, 1]。
端口名称 |
poses |
labels |
customData1 |
customData2 |
端口数据 |
[ [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0] ] |
[ "0", "1" ] |
[ [0, 0, 1], [1, 0, 0] ] |
[ [0, 0], [1, 1] ] |
第一个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
0 |
[0, 0, 1] |
[0, 0] |
第二个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
1 |
[1, 0, 0] |
[1, 1] |
自定义数据项按照自定义端口名称的字母顺序(A—Z)排列。 |
样例
假设Mech-Vision工程的“输出”步骤各端口数据如下图所示,接下来演示通过101指令——运行Mech-Vision工程和110指令——获取Mech-Vision自定义数据获取自定义端口数据。
-
机器人向视觉系统发送101指令,即期望获取所有视觉点(共2个)。
101, 1, 0, 0
视觉系统向机器人返回如下结果,即101指令执行成功。
101, 1102
-
机器人向视觉系统发送110指令,即获取第一个视觉点的所有数据。
110, 1
视觉系统向机器人返回如下结果,其中,自定义数据项是11和21。
110, 1100, 0, 2, 1150.1272, -297.2476, -55.0715, -0.1087, -1.6156, -176.1518, 1, 11, 21
-
机器人向视觉系统再次发送110指令,即获取第二个视觉点的所有数据。
110, 1
视觉系统向机器人返回如下结果,其中,1表示已获取所有视觉点,自定义数据项是12和22。
110, 1100, 1, 2, 592.6891, -256.7424, -56.6007, 0.0723, 1.1348, -176.355, 2, 12, 22
111指令——获取Mech-Vision视觉移动规划数据
功能介绍
该指令用于获取Mech-Vision工程的视觉移动规划数据。此处的“视觉移动规划数据”是指路径规划工具(从“路径规划”步骤处进入)中“视觉移动”步骤规划的数据,包括被抓取工件的标签、已抓取的工件总数、本次抓取的工件数量、吸盘边角号、TCP偏移量、工件组朝向、单个工件朝向、工件组尺寸。
发送格式
111, Mech-Vision工程编号, 路径点的位姿类型
Mech-Vision工程编号
Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
路径点的位姿类型
该参数用于指定获取路径点的位姿类型。
-
1:机器人关节角(JPs)。
-
2:机器人工具位姿。
返回格式
111, 状态码, 是否已获取所有路径点, 路径点类型, 位姿, 移动类型, 末端工具编号, 速度, 视觉移动规划数据
状态码
若指令执行正常,则状态码为 1103。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有路径点
该参数表明是否已获取所有路径点,其值为0或1。
-
0:未获取所有路径点。
-
1:已获取所有路径点。
|
路径点类型
路径点类型 取值 |
路径点类型 |
数据信息 |
0 |
非视觉移动路径点 |
位姿、移动类型、末端工具编号、速度 |
1 |
视觉移动路径点 |
位姿、移动类型、末端工具编号、速度、视觉移动规划数据 |
位姿
路径点的位姿可以是机器人关节角或工具位姿,具体形式取决于发送指令时指定的 路径点的位姿类型 参数值。
移动类型
-
1:关节移动。
-
2:直线移动。
末端工具编号
路径点的末端工具编号。若值为-1,表示不使用末端工具。
速度
路径规划工具中设置的仿真速度值,使用百分数表示。
视觉移动规划数据
视觉移动规划数据包括以下数据信息。
名称 | 说明 | 维数 |
---|---|---|
被抓取工件的标签 |
由10个整数组成,默认为10个0 |
10 |
已抓取的工件总数 |
累计已抓取的工件数量 |
1 |
本次抓取的工件数量 |
本次抓取的工件数量 |
1 |
吸盘边角号 |
本次吸盘所使用的边角号 |
1 |
TCP偏移量 |
工件组中心相对于末端工具中心的XYZ偏移量 |
3 |
工件组朝向 |
工件组与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
单个工件朝向 |
单个工件长边与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
工件组尺寸 |
本次抓取的工件组的长宽高 |
3 |
样例
-
机器人向视觉系统发送如下指令。
111, 1, 2
-
视觉系统向机器人返回如下结果。
说明 数据 指令码
111
状态码
1103
是否已获取所有路径点
1
路径点类型
1
位姿
95.7806, 644.5677, 401.1013, 91.1206, -171.1301, 180.0
移动类型
1
末端工具编号
0
速度
55
视觉移动规划数据
被抓取工件的标签
1, 1, 1, 0, 0, 0, 0, 0, 0, 0
已抓取的工件总数
100
本次抓取的工件数量
3
吸盘边角号
28
TCP偏移量
95.7806, 644.5677, 0
工件组朝向
0
单个工件朝向
0
工件组尺寸
600, 800, 300
200指令——运行Mech-Viz工程并获取规划路径
功能介绍
该指令先触发Mech-Viz工程运行(参考201指令——运行Mech-Viz工程),然后设置消息分支出口(若工程中无分支,可跳过,参考203指令——设置Mech-Viz消息分支出口),最后返回Mech-Viz工程规划的移动路径(参考205指令——获取Mech-Viz规划路径)。
若Mech-Viz工程中存在多个“消息分支”步骤,则不可使用该指令。 |
发送格式
200, 消息分支的步骤编号, 分支出口, 路径点的位姿类型, 机器人关节角, 机器人法兰位姿
消息分支的步骤编号
该参数用于指定消息分支的步骤编号,取值为正整数。
若Mech-Viz工程不涉及消息分支,则将该参数设置为0即可。 |
分支出口
该参数用于指定“消息分支”步骤的出口号,其值为正整数。若将该参数值设置为N,则Mech-Viz工程将沿“消息分支”步骤的N-1出口继续执行。 例如,机器人向视觉系统发送 “200, 2, 1, …”,则Mech-Viz工程运行至步骤编号为2的消息分支时,将沿出口0继续执行。
若Mech-Viz工程不涉及消息分支,则将该参数设置为0即可。 |
路径点的位姿类型
该参数用于指定获取路径点的位姿类型。
-
1:机器人关节角(JPs)。
-
2:机器人工具位姿。
机器人关节角、机器人法兰位姿
将机器人的当前关节角和法兰位姿传入Mech-Viz工程。
返回格式
200, 状态码, 是否已获取所有路径点, 路径点数量, “视觉移动”在路径中的位置, 路径点1(位姿, 标签, 末端工具编号), 路径点2(位姿, 标签, 末端工具编号),…
状态码
若指令执行正常,则状态码为 2100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有路径点
该参数表明是否已获取所有路径点,其值为0或1。
-
0:未获取所有路径点。
-
1:已获取所有路径点。
|
路径点数量
该参数表示获取的路径点数量。
“视觉移动”在路径中的位置
该参数表示Mech-Viz工程中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置为3。
路径点
获取的每个路径点由8个数据构成,前6个表示位姿,第7个表示标签,第8个表示末端工具编号。
-
位姿:机器人的工具位姿或关节角(JPs)。位姿类型由发送该指令时指定的 路径点的位姿类型 参数决定。
-
标签:位姿对应的整数标签(“输出”步骤中labels端口数据)。
-
标签必须是一个数字字符串。若标签不是数字字符串,请在“输出”步骤前,使用“标签映射”步骤将其映射为数字字符串。
-
若“输出”步骤上没有labels端口,则标签值默认为0。
-
-
末端工具编号:Mech-Viz工程中设置的末端工具编号。
样例
-
机器人向视觉系统发送如下指令,即触发Mech-Viz运行,步骤编号为5的消息分支将沿出口2继续执行,最终获取Mech-Viz工程输出的路径点(位姿类型为关节角)。
200, 5, 3, 1, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
若视觉系统向机器人返回如下结果,则表示指令执行正常。视觉系统向机器人返回所有路径点(共2个),其中第2个路径点为视觉移动路径点。
200, 2100, 1, 2, 2, 8.3077, 15.1634, -142.1778, -2.7756, -31.4404, -96.9490, 0, 64, 8.2425, 12.1301, -141.7587, -2.5135, -34.8905, -97.1911, 0, 32
201指令——运行Mech-Viz工程
功能介绍
该指令用于触发Mech-Viz工程运行。Mech-Viz是基于Mech-Vision输出的视觉结果规划机器人的移动路径。
在Mech-Viz工程资源面板中,右键单击工程名称,勾选 设为自动加载。 |
调用顺序
工程中的步骤参数需要在触发Mech-Viz工程运行之前被设置,因此207指令——读取Mech-Viz步骤参数值或208指令——设置Mech-Viz步骤参数值需先于201指令——运行Mech-Viz工程被调用。
所有指令的调用顺序可参考《标准接口指令调用时序》。
发送格式
201, 机器人位姿类型, 机器人位姿
机器人位姿类型 、 机器人位姿
-
机器人位姿类型 指定真实机器人的位姿将以何种形式传入Mech-Viz工程,其取值范围为0~2。
-
机器人位姿 取决于 机器人位姿类型。
下表为两参数取值的关系及说明。
机器人位姿类型 | 机器人位姿 | 说明 | 适用场景 |
---|---|---|---|
0 |
0, 0, 0, 0, 0, 0 |
无需向Mech-Viz工程传入机器人位姿,Mech-Viz工程中仿真机器人将从初始位姿 JPs = [0, 0, 0, 0, 0, 0] 开始移动到第一个路径点。 |
相机的安装方式为Eye To Hand。 |
1 |
机器人当前关节角+当前法兰位姿 |
需要将机器人的当前关节角和法兰位姿传入Mech-Viz工程,Mech-Viz工程中仿真机器人将从传入的关节角开始移动到第一个路径点。 |
相机的安装方式为Eye In Hand,推荐使用该设定。 |
2 |
机器人端自定义的关节角 |
需要将机器人的一个示教点(非当前关节角)传入Mech-Viz工程,用于在机器人处于拍照区域外时,提前触发Mech-Viz工程规划下一轮路径(如下图),Mech-Viz工程中仿真机器人将从传入的示教点开始运动到第一个路径点。 |
相机的安装方式为Eye To Hand,推荐使用该设定。 |
相机的安装方式为Eye To Hand,为何 机器人位姿类型 推荐使用2?
在下图中,机器人正在放置区进行作业。
若在此种场景中,将 机器人位姿类型 设置为 1,表示将机器人当前位姿发送给Mech-Viz,真实机器人可能在移动至其他位置后才移动至第一个路径点。仿真机器人将直接从当前位置移动至Mech-Viz工程中的第一个路径点,在这段移动过程中可能会检测到碰撞而发出警告。
若在此种场景中,将 机器人位姿类型 设置为 2,表示将机器人端设置的示教拍照点发送给Mech-Viz,这样真实机器人在放置区即可提前触发Mech-Viz规划下一轮路径,从而缩短节拍。
以上就是Eye To Hand模式下,机器人位姿类型 推荐使用2的原因。
样例
样例1
-
相机的安装方式为Eye In Hand,机器人向视觉系统发送如下指令,1表示机器人向视觉系统发送当前关节角和法兰位姿。
201, 1, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
视觉系统向机器人返回如下结果,2103表示成功触发Mech-Viz工程。
201, 2103
样例2
-
相机的安装方式为Eye To Hand,机器人向视觉系统发送如下指令,2表示机器人向视觉系统发送示教点的关节角。
201, 2, 5.18, 14.52, 4.03, 0.09, 72.44, 5.15
-
视觉系统向机器人返回如下结果,2103表示成功触发Mech-Viz工程。
201, 2103
203指令——设置Mech-Viz消息分支出口
204指令——设置Mech-Viz当前索引
调用顺序
通常在索引类步骤前存在一个“消息分支”步骤,机器人端首先调用201指令——运行Mech-Viz工程,然后调用204指令——设置Mech-Viz当前索引,最后调用203指令——设置Mech-Viz消息分支出口。如此,Mech-Viz将有充足时间设置当前索引值。
所有指令的调用顺序可参考《标准接口指令调用时序》。
205指令——获取Mech-Viz规划路径
功能介绍
该指令用于获取Mech-Viz工程规划的移动路径(一系列路径点)。
路径点:机器人沿着规划路径需逐一到达的点位,一个路径点包括机器人位姿、标签、移动类型等信息。路径点可分为以下两种类型:
|
返回格式
205, 状态码, 是否已获取所有路径点, 路径点数量, “视觉移动”在路径中的位置, 路径点1(位姿, 标签, 末端工具编号), 路径点2(位姿, 标签, 末端工具编号), …
状态码
若指令执行正常,则状态码为 2100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有路径点
该参数表明是否已获取所有路径点,其值为0或1。
-
0:未获取所有路径点。
-
1:已获取所有路径点。
|
路径点数量
该参数表示获取的路径点数量。视觉系统默认单次发送路径点的最大数量为20,因此该参数默认最大值为20。 在Mech-Vision工具栏的
下,可根据需求更改默认最大数量,但最大数量的上限为30。“视觉移动”在路径中的位置
该参数表示Mech-Viz工程中“视觉移动”步骤对应的路径点(视觉移动路径点)在路径中的位置。如果路径中无视觉移动路径点,则该参数值为0。
例如,如果规划路径由以下路径点组成:“定点移动_1”,“定点移动_2”,“视觉移动”,“定点移动_3”,则视觉移动路径点的位置为3。
若需多次发送该指令才可接收整条路径,则该参数在第一次返回结果中表示视觉移动路径点在整条规划路径中的位置,在后续返回结果中表示视觉移动路径点在剩余路径点中的位置。 |
例如,假设Mech-Viz规划的路径由4个路径点组成,其中第4个路径点为视觉移动路径点。
-
机器人第一次发送指令。
205, 1
视觉系统向机器人返回如下结果,2表示第一次共获取到2个路径点,4表示视觉移动路径点在整条规划路径中的位置。
205, 2100, 0, 2, 4, 0.0, 0.0, 0.0, 0.0, 69.0, 0.0, 0, 7, 73.0, 0.0, 0.0, 0.0, 69.0, 0.0, 0, 7
-
机器人第二次发送指令。
205, 1
视觉系统向机器人返回如下结果,第一个2表示第二次获取剩余的2个路径点,第二个2表示视觉移动路径点在剩余2个路径点中的位置。
205, 2100, 1, 2, 2, -77.0, 0.0, 0.0, 0.0, 69.0, 0.0, 0, 7, -26.6781, 55.4142, 45.0133, -7.3735, -10.948, 160.5773, 2, 7
路径点
获取的每个路径点由8个数据构成,前6个表示位姿,第7个表示标签,第8个表示末端工具编号。
-
位姿:机器人的工具位姿或关节角(JPs)。位姿类型由发送该指令时指定的 路径点的位姿类型 参数决定。
-
标签:位姿对应的整数标签(“输出”步骤中labels端口数据)。
-
标签必须是一个数字字符串。若标签不是数字字符串,请在“输出”步骤前,使用“标签映射”步骤将其映射为数字字符串。
-
若“输出”步骤上没有labels端口,则标签值默认为0。
-
-
末端工具编号:Mech-Viz工程中设置的末端工具编号。
206指令——获取吸盘DO信号
功能介绍
该指令用于获取Mech-Viz工程规划的多分区吸盘的控制信号。在使用该指令前,用户需提前在Mech-Viz软件中进行如下配置。
-
在Mech-Viz软件中,“视觉移动”步骤的 抓取工艺 选择 箱子拆垛。
-
在Mech-Viz软件中,双击末端工具名称,工具类型 选择 拆垛吸盘,单击 拆垛吸盘配置,根据需求配置DO信号。
调用顺序
所有指令的调用顺序可参考《标准接口指令调用时序》。
返回格式
206, 状态码, DO信号1, DO信号2, …, DO信号64
状态码
若指令执行正常,则状态码为 2102。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
DO信号
-
若“视觉移动”步骤未勾选“复用视觉结果”,则该指令返回64个DO信号,表示本轮规划的吸盘DO信号,其中有效的DO信号为非负整数,范围为 0~999;无效的DO信号为-1(作为占位值)。
例如,在下表中,返回的有效DO信号为1、3、5、6,即表示机器人需将上述DO信号对应的值设为ON。
第1个
第2个
第3个
第4个
第5个
第6个
第7个
第8个
…
第63个
第64个
1
3
5
6
-1
-1
-1
-1
…
-1
-1
-
若“视觉移动”步骤勾选“复用视觉结果”,且“视觉移动”步骤在循环流程中,则Mech-Viz可以根据同一视觉结果进行多轮规划。该指令返回的64个DO信号是所有轮规划的吸盘DO信号。此时使用吸盘分区数量,即可区分每轮规划的吸盘DO信号。有效的DO信号为非负整数,范围为 0~999;无效的DO信号为-1(作为占位值)。
例如,吸盘分区数量为4,该指令共返回64个DO信号,其中,每4个DO信号为一轮规划的多分区吸盘控制信号。
第1轮规划
第2轮规划
…
第16轮规划
第1个
第2个
第3个
第4个
第5个
第6个
第7个
第8个
…
第61个
第62个
第63个
第64个
1
3
4
-1
1
4
-1
-1
…
-1
-1
-1
-1
样例
-
机器人向视觉系统发送如下指令。
206, 1
-
视觉系统向机器人返回如下结果,其中有效的DO信号为11、12。
206, 2102, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
207指令——读取Mech-Viz步骤参数值
发送格式
207, 配置编号
配置编号
该参数为property_config文件中指定的 配置编号 字段。
在Mech-Vision工具栏的 下,单击 属性配置,即可打开property_config文件。 |
在使用该指令前,用户需提前在property_config文件中指定步骤编号和参数名称对应的key名称,具体格式如下所示。
read, 配置编号, 步骤编号, key名称
read |
指定该行用于读取步骤参数值。 |
配置编号 |
指定一个唯一的编号,为正整数。一个配置编号只能用于读取一个步骤参数值。如果读取多个步骤参数值,请使用不同的配置编号。 |
步骤编号 |
指定将要读取的参数所属步骤的编号。 |
key名称 |
指定将要读取的参数名称对应的key名称。 |
|
例如,在property_config文件中添加如下内容,5表示配置编号,3表示步骤编号,xCount表示key名称。机器人发送“207, 5”指令后,将会获取到xCount对应的参数值。
read, 5, 3, xCount
property_config文件中可以设置多条read指令,但每条read指令的配置编号必须唯一。 |
返回格式
207, 状态码, 步骤参数值
状态码
若指令执行正常,则状态码为 2109。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
步骤参数值
读取的步骤参数值。
|
样例
下面以“计数器”步骤(步骤编号为1)为例,读取 当前计数 参数值。
-
在 Keys查询工具 中获取 当前计数 的key名称,即图中的currentCount。
-
在property_config文件中,写入以下内容,并保存。10表示配置编号,该编号需在文件中需唯一。1表示“计数器”的步骤编号。currentCount表示 当前计数 的key名称。
read, 10, 1, currentCount
-
在Mech-Vision工具栏中,重启接口服务。
-
机器人向视觉系统发送如下指令,10表示配置编号。
207, 10
-
视觉系统向机器人返回如下结果,0就是读取的 当前计数 (currentCount)的参数值。
207, 2109, 0
208指令——设置Mech-Viz步骤参数值
发送格式
208, 配置编号
配置编号
该参数为property_config文件中指定的配置编号字段。
在Mech-Vision工具栏的 下,单击 属性配置,即可打开property_config文件。 |
在使用该指令前,用户需提前在property_config文件中指定步骤编号、参数名称对应的key名称和参数值,具体格式如下所示。
write, 配置编号, 步骤编号, key名称, 参数值
write |
指定该行用于设置步骤参数值。 |
配置编号 |
指定一个编号(非唯一),为正整数。 |
步骤编号 |
指定将要设置的参数所属步骤的编号。 |
key名称 |
指定将要设置的参数名称对应的key名称。 |
参数值 |
指定将要设置的参数值。 |
|
例如,在property_config文件中添加如下内容,6表示配置编号,3表示步骤编号,xOffset表示key名称,0.000000表示设置的参数值。机器人发送“208,6”指令后,视觉系统会将xOffset对应的参数值设置为0.000000。
write, 6, 3, xOffset, 0.000000
property_config文件中可以设置多条write指令,且配置编号允许重复,即使用一个配置编号设置多个参数值。 例如,property_config文件内容如下。若机器人发送“208,1”指令后,视觉系统会将xOffset、yOffset和zOffset对应的参数值分别设置为0.000000、1.000000和2.000030。
|
样例
下面以“等待”步骤(步骤编号为3)为例,设置 等待时间 的参数值。
-
在 Keys查询工具 中获取 等待时间 的key名称,即图中的waitTime。
-
在property_config文件中,写入以下内容,并保存。11表示配置编号。3表示“等待”的步骤编号。waitTime表示 等待时间 的key名称。1000表示设置的等待时间为1000ms。
write, 11, 3, waitTime, 1000
-
在Mech-Vision工具栏中,重启接口服务。
-
机器人向视觉系统发送如下指令,11表示配置编号。
208, 11
-
视觉系统向机器人返回如下结果,2108表示成功设置参数值。
208, 2108
210指令——获取Mech-Viz视觉移动规划数据或自定义数据
功能介绍
该指令用于获取Mech-Viz工程的视觉移动规划数据或自定义数据。
对于Mech-Viz 2.0版本软件,该指令暂时不支持获取自定义数据,仅支持获取视觉移动规划数据。 |
-
视觉移动规划数据:Mech-Viz中“视觉移动”步骤规划的数据,包括被抓取工件的标签、已抓取的工件总数、本次抓取的工件数量、吸盘边角号、TCP偏移量、工件组朝向、单个工件朝向、工件组尺寸。
-
自定义数据:Mech-Vision自定义端口输出的数据,再经Mech-Viz转发后得到的数据。
自定义端口的设置可从“输出”步骤参数的 打开编辑器 处进入,其中自定义通信键名就是自定义端口名称,例如下图中customeData1和customeData2端口就是自定义端口。
-
预设通信键(下图中的poses、labels、sizes、offsets等)所代表的端口数据不属于自定义数据。
-
Mech-Vision “输出”步骤的 端口类型 参数需要设置为“自定义”,且必须存在poses端口。
-
发送格式
210, 返回数据格式
返回数据格式
返回数据格式 取值 |
返回数据的说明(每个字段的具体解释参见下文的 返回格式;若Mech-Vision工程无自定义端口,则无 自定义数据项) |
|
路径点类型 |
数据信息 |
|
1 |
非视觉移动路径点 |
位姿(关节角形式), 移动类型, 末端工具编号, 速度 |
视觉移动路径点 |
位姿(关节角形式), 移动类型, 末端工具编号, 速度, 自定义数据项个数N, 自定义数据项1, …, 自定义数据项N |
|
2 |
非视觉移动路径点 |
位姿(工具位姿形式), 移动类型, 末端工具编号, 速度 |
视觉移动路径点 |
位姿(工具位姿形式), 移动类型, 末端工具编号, 速度, 自定义数据项个数N, 自定义数据项1, …, 自定义数据项N |
|
3 |
非视觉移动路径点 |
位姿(关节角形式), 移动类型, 末端工具编号, 速度 |
视觉移动路径点 |
位姿(关节角形式), 移动类型, 末端工具编号, 速度, 视觉移动规划数据, 自定义数据项个数N, 自定义数据项1, …, 自定义数据项N |
|
4 |
非视觉移动路径点 |
位姿(工具位姿形式), 移动类型, 末端工具编号, 速度 |
视觉移动路径点 |
位姿(工具位姿形式), 移动类型, 末端工具编号, 速度, 视觉移动规划数据, 自定义数据项个数N, 自定义数据项1, …, 自定义数据项N |
该指令获取的视觉移动路径点会携带视觉移动规划数据或自定义数据,而205指令——获取Mech-Viz规划路径指令获取的视觉移动路径点不会携带上述数据。 |
返回格式
210, 状态码, 是否已获取所有路径点, 路径点类型, 位姿, 移动类型, 末端工具编号, 速度, 视觉移动规划数据, 自定义数据项个数N, 自定义数据项1, …, 自定义数据项N
|
状态码
若指令执行正常,则状态码为 2100。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
是否已获取所有路径点
该参数表明是否已获取所有路径点,其值为0或1。
-
0:未获取所有路径点。
-
1:已获取所有路径点。
|
路径点类型
路径点类型 取值 |
路径点类型 |
数据信息 |
0 |
非视觉移动路径点 |
位姿、移动类型、末端工具编号、速度 |
1 |
视觉移动路径点 |
位姿、移动类型、末端工具编号、速度、视觉移动规划数据、自定义数据(若Mech-Vision工程无自定义端口,则无此项) |
位姿
路径点的位姿可以是机器人关节角或工具位姿,具体形式取决于发送指令时指定的 返回数据格式 参数值。
移动类型
-
1:关节移动。
-
2:直线移动。
末端工具编号
路径点的末端工具编号。若值为-1,表示不使用末端工具。
速度
移动类步骤参数中设置的速度参数值乘以Mech-Viz中设置的全局速度,使用百分数表示。
视觉移动规划数据
视觉移动规划数据包括以下数据信息。
名称 | 说明 | 维数 |
---|---|---|
被抓取工件的标签 |
由10个整数组成,默认为10个0 |
10 |
已抓取的工件总数 |
累计已抓取的工件数量 |
1 |
本次抓取的工件数量 |
本次抓取的工件数量 |
1 |
吸盘边角号 |
本次吸盘所使用的边角号 |
1 |
TCP偏移量 |
工件组中心相对于末端工具中心的XYZ偏移量 |
3 |
工件组朝向 |
工件组与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
单个工件朝向 |
单个工件长边与吸盘长边的朝向关系,0表示平行,1表示垂直 |
1 |
工件组尺寸 |
本次抓取的工件组的长宽高 |
3 |
自定义数据项个数
所有自定义端口数据的列维数之和。例如,“输出”步骤的端口数据由以下数据组成,其中customData1和customData2为自定义端口,列维数分别为3和2,因此,自定义数据项个数为3+2=5。
端口名称 |
poses |
labels |
customData1 |
customData2 |
端口数据 |
[ [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0] ] |
[ "0", "1" ] |
[ [0, 0, 1], [1, 0, 0] ] |
[ [0, 0], [1, 1] ] |
行维数(列表中元素个数) |
2 |
2 |
2 |
2 |
列维数(列表中单个元素的维数) |
7 |
1 |
3 |
2 |
自定义数据项
单个视觉点的所有自定义端口的数据,其数量与 自定义数据项个数 相等。例如,“输出”步骤各端口的数据如下表所示,则机器人获取第一个视觉点的 自定义数据项 为 [0, 0, 1] 与 [0, 0], 机器人获取第二个视觉点的 自定义数据项 为 [1, 0, 0] 与 [1, 1]。
端口名称 |
poses |
labels |
customData1 |
customData2 |
端口数据 |
[ [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0] ] |
[ "0", "1" ] |
[ [0, 0, 1], [1, 0, 0] ] |
[ [0, 0], [1, 1] ] |
第一个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
0 |
[0, 0, 1] |
[0, 0] |
第二个视觉点 |
[0, 0, 0, 1, 0, 0, 0] |
1 |
[1, 0, 0] |
[1, 1] |
自定义数据项按照自定义端口名称的字母顺序(A—Z)排列。 |
样例
-
机器人向视觉系统发送如下指令。
210, 4
-
视觉系统向机器人返回如下结果。
说明 数据 指令码
210
状态码
2100
是否已获取所有路径点
1
路径点类型
1
位姿
95.7806, 644.5677, 401.1013, 91.1206, -171.1301, 180.0
移动类型
1
末端工具编号
0
速度
55
视觉移动规划数据
被抓取工件的标签
1, 1, 1, 0, 0, 0, 0, 0, 0, 0
已抓取的工件总数
100
本次抓取的工件数量
3
吸盘边角号
28
TCP偏移量
95.7806, 644.5677, 0
工件组朝向
0
单个工件朝向
0
工件组尺寸
600, 800, 300
自定义数据
自定义数据项个数
5
自定义端口a的数据项
0, 0, 1
自定义端口b的数据项
2, 2
501指令——向Mech-Vision工程传入物体尺寸
503指令——向Mech-Vision工程传入位姿
发送格式
503, Mech-Vision工程编号, 步骤名称, 位姿
Mech-Vision工程编号
Mech-Vision工程编号可在Mech-Vision工程列表窗口中查看,工程名称前的数字表示工程编号。
步骤名称
“快捷创建位姿”步骤的步骤名称参数值。该值需提前设置成数字,例如上图中的数字1。
位姿
传入的位姿数据。该数据将成为“快捷创建位姿”步骤的位姿列表参数值。
|
样例
-
机器人向视觉系统发送如下指令,将机器人位姿(例如,549.56, 50.0, 647.01, 180.0, -1.0, 180.0)传入Mech-Vision工程,即将“快捷创建位姿”步骤的位姿列表参数值设置为上述机器人位姿。
Mech-Vision工程中需包含“快捷创建位姿”步骤,且步骤名称需提前设置成数字。本样例中步骤名称为数字1。 503, 1, 1, 549.56, 50.0, 647.01, 180.0, -1.0, 180.0
-
视觉系统向机器人返回如下结果,1110表示设置位姿成功。此时“快捷创建位姿”步骤的位姿列表参数值为[0.54956, 0.05, 0.64701, -0.999962, 0, -0.00872654, 1.2246e-16]。
503, 1110
601指令——获取通知的消息
功能介绍
当Mech-Vision工程或Mech-Viz工程运行至“通知”步骤时,视觉系统会返回“通知”步骤中预先设置的消息。
在使用该指令前,“通知”步骤需满足以下设置。
-
Mech-Vision工程中的“通知”步骤
-
将“通知”步骤连接在其他步骤的右侧(此处以“输出”步骤为例)。
-
在“输出”的步骤参数处,勾选 有输出时触发控制流。
-
在“通知”的步骤参数处,服务名称填写 Standard Interface Notify(不可更改),消息填写 1001(根据需求填写,但必须为正整数)。
-
-
Mech-Viz工程中的“通知”步骤
-
将“通知”步骤连接在工作流程中的合适位置。
-
在“通知”的步骤参数处,勾选 标准接口,消息填写 1000(根据需求填写,但必须为正整数)。
-
701指令——标定
功能介绍
该指令用于机器人的手眼标定(外参标定)。该指令需要与Mech-Vision工具栏中的 相机标定 结合使用。在标定过程中,首先,机器人移动到标定起始点,将起始点位置通过该指令发送给视觉系统;其次,视觉系统给出下一标定点位置;最后,机器人移动到该点后,再一次发送该指令请求下一标定点;如此循环,直到标定结束。
发送格式
701, 标定状态, 法兰位姿, 关节角
标定状态
-
0:通知Mech-Vision开始标定流程。
-
1:机器人已成功到达上一标定点。
-
2:机器人未成功到达上一标定点。
法兰位姿
机器人当前法兰位姿。
关节角
机器人当前关节角。
返回格式
701, 状态码, 标定状态, 下一标定点的法兰位姿, 下一标定点的关节角
状态码
若指令执行正常,则状态码为 7101。 若指令执行异常,则状态码为对应的错误码,具体可参考《标准接口状态码及错误排查》。
标定状态
-
0:正在标定中。
-
1:已完成标定。
下一标定点的法兰位姿
机器人将要移动至下一标定点的法兰位姿数据。
下一标定点的关节角
机器人将要移动至下一标定点的关节角数据。
样例
-
机器人向视觉系统发送如下指令,0表示通知Mech-Vision开始标定流程,后面的位姿数据表示标定起始点的位置。
701, 0, 1371.62147, 25.6, 1334.3529, 148.58471, -179.24347, 88.75702, 88.86102, -7.11107, -28.82309, -0.44014, -67.6509, 31.4764
视觉系统向机器人返回如下结果,0表示正在标定中,后面的位姿数据表示下一标定点的位置。
701, 7101, 0, 1271.6969, -74.3374, 1334.34094, -3128.422, 179.2412, -91.11236, 93.28109, -12.0273, -32.8811, -0.37183, -68.41364, 27.02411
-
机器人向视觉系统发送如下指令,1表示机器人已成功到达标定起始点,后面的位姿数据是上条指令返回的下一标定点的位姿数据。
701, 1, 1271.6969, -74.3374, 1334.34094, -3128422, 1792412, -91.11236, 93.28109, -12.0273, -32.8811, -0.37183, -68.41364, 27.02411
视觉系统向机器人返回如下结果,0表示正在标定中,后面的位姿数据表示下一标定点的位置。
701, 7101, 0, 1471.62226, -74.40452, 1334.34235, 148.56924, -179.24432, 88.74148, 92.8367, -2.14999, -24.25433, -0.39222, -67.23261, 27.485225
-
重复上一步骤多次,以获得后续标定点。
-
若视觉系统向机器人返回如下结果,1表示已完成标定。至此,整个标定流程结束。
701, 7101, 1, 1371.62147, 25.6, 1334.3529, 148.58471, -179.24347, 88.75702, 88.86102, -7.11107, -28.82309, -0.44014, -67.6509, 31.4764