TCP/IP 指令说明¶
通过基于 TCP/IP 协议的标准接口,梅卡曼德软件系统可以与 ABB、FANUC、Kawasaki、KUKA、YASKAWA 机器人进行通讯。
以下为 TCP/IP 指令:
101 指令——启动 Mech-Vision 工程¶
功能介绍¶
该指令启动 Mech-Vision 工程,用于执行相机拍照和视觉识别。
如果工程为 Eye In Hand 模式,该指令将把机器人拍照位姿传入工程。
该指令用于仅使用 Mech-Vision 的场景。
发送指令¶
101,工程号,视觉点数量,机器人位姿类型,机器人位姿 |
参数说明
1. 工程号
Mech-Vision 工程在 Mech-Center 中的注册序号,运行 Mech-Center,单击
,可查询和调整工程号。序号范围:1~N。
2. 视觉点数量
期望从 Mech-Vision 得到的视觉点数量。视觉点信息包括视觉位姿及对应点云、标签、缩影等。参数范围:0~N。
视觉点数量
说明
0
从 Mech-Vision 工程取得识别结果中所有的视觉点。
大于0的整数
从 Mech-Vision 工程取得识别结果中指定数量的视觉点。 * 如果视觉点总数小于该参数值,则取得识别结果中所有视觉点。 * 如果视觉点总数大于等于该参数值,则取得该参数指定数量的视觉点。
提示
实际用于取得视觉点的指令为 102 指令——获取视觉结果 。102 指令每次最多取得 20 个视觉点。第一次执行 102 指令后,其中一个返回的参数会表明是否已取得所有所需视觉点,如果未取得所有所需视觉点,请重复执行 102 指令。
3. 机器人位姿类型
该参数指定真实机器人的位姿将以何种形式传入 Mech-Vision。参数范围:0~2。
值
说明
0
该指令不需传入机器人位姿。 如果该工程是 Eye To Hand 模式,则拍照与机器人位姿无关,Mech-Vision 不需要机器人的位姿。
1
机器人位姿以 JPS 关节角形式传入。
2
机器人位姿以法兰位姿形式传入。
4. 机器人位姿
该参数为 Eye In Hand 模式下所需的机器人位姿,与 机器人位姿类型 一致,机器人位姿为 JPS 关节角形式或法兰位姿形式。
测试样例¶
指令执行正常
TCP send string = 101, 1, 10, 1, 0, -20.63239, -107.81205, 0, -92.81818, 0.00307
TCP received string = 101, 1102
指令执行异常
TCP send string = 101, 2, 10, 1, 0, -20.63239, -107.81205, 0, -92.81818, 0.00307
TCP received string = 101, 1011, 1
102 指令——获取视觉结果¶
功能介绍¶
用在 101 指令——启动 Mech-Vision 工程 之后,使用该指令获取 Mech-Vision 的识别结果(视觉点)。
提示
102 指令单次接收视觉点数量上限默认为 20。如需要获取的视觉点数量大于 20,需多次执行该指令来获取所有所需视觉点。
返回数据¶
102,状态码,是否发送完成,视觉点数量,预留字段,视觉点,视觉点,…,视觉点 |
注解
视觉点数据位于返回数据的结尾(单次最多返回 20 个视觉点)。
参数说明
1. 状态码
如指令执行正常,则返回 1100 状态码;否则返回对应的错误码。
调用该指令时,若 Mech-Vision 结果还未返回,则 Mech-Center 会等待 Mech-Vision 结果返回后再给机器人返回。默认等待 10s 超时,若发生超时,返回超时错误状态码。
2. 是否发送完成
该参数表明是否已取得所有所需视觉点。值为 0 或 1。
值
说明
0
未取得所有所需视觉点。请重复执行 102 指令直到该参数值为 1。
1
已取得所有所需视觉点。
如 101 指令 中 Mech-Vision 识别结果数量大于 20(收发数量的默认值),可通过该参数判断是否还有未发送的视觉结果。若数据未发送完毕,则可以重复调用 102 指令,继续接收。
提示
如未取得所有视觉点,若此时调用 101 指令重新拍照,则未取得的视觉点将被清除。
3. 视觉点数量
执行该指令获得的视觉点数量。范围:1~N。
请求视觉点数量大于等于 Mech-Vision 识别视觉点数量,按照 Mech-Vision 识别数量发送。
请求视觉点数量小于 Mech-Vision 识别视觉点数量,按照请求数量发送。
4. 保留字段
该字段未使用,默认值为 0。
5. 视觉点
位姿、标签、速度
参数
说明
位姿
位姿包括三维坐标(XYZ)及欧拉角(ABC)。
标签
位姿对应的整数标签。如果在 Mech-Vision 工程中,标签为字符串,请在输出前将标签映射为整数。如工程中没有标签,则该参数为默认值 0。
速度
该参数值默认为 0。Mech-Vision 不提供视觉点速度的设置。
测试样例¶
指令执行正常
TCP send string = 102, 1
TCP received string = 102, 1100, 1, 1, 0, 95.7806085592122, 644.5677779910724, 401.1013614123109, 91.12068316085427, -171.13014981284968, 180.0, 0, 0
指令执行异常,无视觉结果。
TCP send string = 102, 1
TCP received string = 102, 1002, 1
请求视觉点的测试样例
以下测试样例为依次发送指令 101、102、102 来获取 22 个视觉点的过程。细节如下:
TCP/IP 发送 101 指令,内容为
101, 1, 0, 1, …
,希望获取全部视觉点。TCP/IP 发送 102 指令,获取视觉结果。
TCP/IP 收到 102 指令返回的数据,内容为
102, 1100, 0, 20, …
,表示未取得所有所需视觉点。返回的数据包含 20 个视觉点。TCP/IP 再次发送 102 指令,获取剩余视觉点。
TCP/IP 收到 102 指令返回的数据,内容为
102, 1100, 1, 2, ...
。返回的数据包含 2 个视觉点,且表明所有所需视觉点已发送完成。
TCP send string = 101, 1, 0, 1, -0, -20.63239, -107.81205, -0, -92.81818, 0.0016
TCP received strins = 101, 1102
TCP send string = 102, 1
//以下为第一次发送指令102并收到20个视觉点。
TCP received string = 102, 1100, 0, 20, 0, 95.7806085592122, 644.5677779910724, 401.1013614123108, 31.12068316085427, ...
TCP received string = 78549940546, -179.99999999999991.0.0, 329.228345202334.712.7061697180302.400.9702665047771, ...
TCP received string =39546, -83.62567351596952, -170.87955974536686, -179.99999999999937, 0, 0, 223.37118373658322, ...
TCP received string = 005627, 710.1004355953408, 400.82227273918835, -43.89328326393665, -171.30845207792612, ...
TCP received string = 20.86318821742358, 838.7634193547805, 400.79807564314797, -102.03947940869523, -171.149261231 ...
TCP received string = 390299920645, -179.99999999999994, 0, 0, 303.0722145720921, 785.3254917220695, 400.75827437080, ...
TCP received string = 99668287.77.78291612041707, -171.53941633937786, 179.99999999899997, 0.0, 171.47819668864432, ...
TCP received string = 332193785, 400.6472716208158, -94.3418019038759, -171.10001228964776, -179.39999999999994, ...
TCP received string = 92388542936, 807.5641001485708, 400.6021999602664, - 167.9834797197932.-171.39671274951826, ...
TCP received string = 278.3198007132188, 780.5325992145735, 400.4924381003066, -174.72728396633053, -171.422604771 ...
TCP received string = 3.99999999999994, 0, 0, 183.82195326381233, 862.5171519967056.400.422966515846.-154. 17801945 ...
TCP received string = 173.34301974982765, -180.0, 0, 0
//以下为第二次发送指令102并收到剩下的两个视觉点。
TCP send string = 102, 1
TCP received string = 102, 1100, 1, 2, 0, 315.2017788478321, 592.1261793743445, 399.60526335590957, 126.19602189220371, ...
TCP received string = 686127, -171.44430002882129, -1.3381805753922965e-15, 0, 0
103 指令——切换 Mech-Vision 配方¶
功能介绍¶
切换 Mech-Vision 工程内的参数配方。
Mech-Vision 中步骤的参数设定可通过切换参数配方调整。
参数配方调整涉及的参数通常包括点云匹配模板、图像匹配模板、感兴趣区域、置信度阈值等。
使用该指令,需要在执行 101 指令——启动 Mech-Vision 工程 之前。
发送指令¶
103, 工程号, 配方号 |
参数说明
1. 工程号
Mech-Vision 工程在 Mech-Center 中的注册序号,运行 Mech-Center,单击
,可查询和调整工程号。序号范围:1~N。
2. 配方号
测试样例¶
指令执行正常
TCP send string = 103, 1, 2
TCP received string = 103, 1107
指令执行异常
TCP send string = 103, 1, 2
TCP received string = 103, 1102
201 指令——启动 Mech-Viz 工程¶
功能介绍¶
用于既使用 Mech-Vision 又使用 Mech-Viz 的场景。该指令用于运行 Mech-Viz 工程,启动对应的 Mech-Vision 工程,Mech-Viz 基于 Mech-Vision 的视觉结果规划机器人的运动路径。
要启动的 Mech-Viz 工程需要勾选 自动加载。
Mech-Center 安装目录 (tool/viz_project) 文件夹内保存有一些典型应用工程模板,用户可以在模板的基础上进行修改。
典型应用工程模板 |
说明 |
check_collision |
用于发送视觉点时检查碰撞 Mech-Viz 工程 |
outer_move |
用于配合 502 指令接收外部位姿数据 |
suction_zone |
用于吸盘分区,需要发送 DO 列表 Mech-Viz 工程 |
vision_result_reuse |
用于当一次拍照可得多个可抓物体时复用视觉结果 |
发送指令¶
201, 位姿类型, 机器人位姿 |
参数说明
1. 位姿类型
机器人的位姿类型。参数范围:0~1。
值
说明
0
Mech-Viz 不需要读取当前真实机器人的位姿,该指令将不发送位姿。即如果工程为 Eye To Hand 模式,则拍照与机器人位姿无关,工程不需要读取机器人的拍照位姿。
1
传入 Mech-Viz 的位姿为 JPS 关节角形式。Mech-Viz 中,仿真机器人将从初始位姿(即本指令传输的位姿)移动到规划的路径的第一个目标点。目前不支持传入 TCP 形式的位姿。
位姿类型设置为 0 时,Mech-Viz 中仿真机器人会从初始位姿 JPS=[0,0,0,0,0,0] 开始运动到第一个移动点。
位姿类型设置为 1 时,Mech-Viz 中仿真机器人会从初始位姿 JPS=输入的 JPS 开始运动到第一个移动点。
提示
当场景中存在碰撞模型,干扰机器人从初始位姿 JPS=[0,0,0,0,0,0] 运动到第一个移动点时,则位姿类型必须设置为 1。
2. 机器人位姿
机器人的当前 JPS 关节角(如果参数“位姿类型”为 1)。
测试样例¶
指令执行正常
TCP send string = 201, 1, 0, -20.63239, -107.81205, 0, -92.81818, 0.00307
TCP received string = 201, 2103
指令执行异常(Mech-Viz 不支持 TCP 位姿类型)
TCP send string = 201, 2, -0, 682.70355, 665.22266, 90, 179.99785, -89.99693
TCP received string = 201, 2015, 1
203 指令——选择 Mech-Viz 分支¶
功能介绍¶
该指令用于指定工程将沿哪个分支运行。分支机制通过“分支(根据服务消息)”建立,该指令则通过指定该技能的出口来指定分支。
在执行该指令前请先执行 201 指令——启动 Mech-Viz 工程 。
Mech-Viz 工程运行至“分支(根据服务消息)”时,将等待该指令指定出口。
发送指令¶
203, 分支技能名, 出口号 |
参数说明
1. 分支技能名
该参数用于指定分支选择将在哪个“分支(根据服务消息)”技能上进行。
该参数应为整数:1~N。在运行工程前,应把对应的“分支(根据服务消息)”技能命名为整数。每个分支技能的名字不能重复。
2. 出口号
该参数用于指定工程将沿分支技能的哪个出口运行,Mech-Viz 程序将沿该出口继续执行。参数为整数:1~N。
提示
出口号为 Mech-Viz 显示的端口号 + 1。如端口号为 0,出口号为 1。
出口号为从 1 开始的端口索引号。比如指定的出口为从左往右数第二个端口,那么出口号为2。
测试样例¶
指令执行正常
TOP send string = 203, 1, 1
TCP received string = 203, 2105
指令执行异常
TCP send string = 203, 1, 3
TCP received string = 203, 2018, 1
204 指令——设置移动索引¶
功能介绍¶
该指令用于设定技能的索引参数值。该类技能一般用于连续或单独指定的移动或其他操作。
带有索引参数的技能包括“序列移动”、“阵列移动”、“自定义垛型”、“预设垛型”等。
在执行该指令前,请先执行 201 指令——启动 Mech-Viz 工程 。
发送指令¶
204,技能名,索引值 |
参数说明
1. 技能名
该参数指定哪个技能需要索引参数设定。
该参数值应为整数:1~N,对应的技能应命名为整数。工程中技能名不能重复。
2. 索引值
当前索引 index 值,上述技能的索引参数将被设定为该参数的值。
测试样例¶
指令执行正常
TCP send string = 204, 2, 6
TCP received string = 204, 2106
指令执行异常
TCP send string = 204, 3, 6
TCP received string = 204, 2028, 1
205 指令——获取规划路径¶
功能介绍¶
该指令用于获取 Mech-Viz 规划的路径。应在执行 201 指令——启动 Mech-Viz 工程 后获取规划路径。
限制:默认设置下,该指令每次最多只能获取20个规划路径的目标点,所以该指令可能需要调用多次。
注解
如果工程中某个“移动”类技能的目标点不应发给机器人,请将该技能名字的结尾加上“_internal”(带下划线,忽略大小写)。
返回数据¶
205,状态码,是否发送完成,目标点数量,“视觉移动”技能位置,目标点,目标点,…,目标点 |
参数说明
1. 状态码
如指令执行正常,则返回 2100 状态码;否则返回对应的错误码。
提示
调用该指令时,若 Mech-Viz 结果还未返回(正在运行中),Mech-Center 会等待 Mech-Viz 结果返回后再给机器人返回,默认等待 10s 超时,若发生超时,则给机器人返回超时错误。
2. 是否发送完成
值
说明
0
未发送完路径中的全部目标点。请重复执行该指令,知道该参数值为 1。
1
已发送完路径中全部目标点。
3. 目标点数量
该参数用于显示此次执行该指令返回了多少路径目标点([位姿、标签、速度])。
如果路径中含有 20 个以上目标点,请多次执行该指令。
范围:0~20。
4. “视觉移动”技能位置
“视觉移动”技能在整个工程中的位置。“视觉移动”技能即移动至视觉点(抓取物体的点)的移动技能。
比如,如果规划路径由以下技能组成:“移动_1”,“移动_2”,“视觉移动”,“移动_3”,则“视觉移动”技能位置为3。
如果路径中无“视觉移动”技能,则该参数值为 0。
5. 目标点
[位姿、标签、速度]
参数
说明
位姿
三维坐标及欧拉角,或JPS关节角。类型由指令205中的位姿类型决定。
标签
位姿对应的整数标签。如果在 Mech-Vision 工程中,标签为字符串,请在输出前将标签映射为整数。 如果工程中没有标签,则该参数为默认值 0。
速度
“视觉移动”技能参数中的非零速度参数百分数值。
测试样例¶
指令执行正常
TCP send string = 205, 1
TCP received string =205, 2100, 1. 2, 2, 8.307755332057372, 15.163476541700463, -142.1778810972881, -2.7756047848536745, -31.44046012182799, -96.94907235126934, 0, 64, 8.2 42574265592342, 12.130080796661591, -141.75872288706663-2.513533225987894, -34.8905853 039525, -97.19108378871277, 0, 32
指令执行异常
TCP send string = 205, 1
TCP received strins = 205, 2008, 1
206 指令——获取 DO 信号列表¶
功能介绍¶
该指令用于获取规划的 DO 信号列表。DO 信号列表用于控制多个夹具或吸盘分区。
执行该指令前,需要先执行 205 指令 获取 Mech-Viz 规划路径。
请根据模板工程来部署 Mech-Viz 工程,并在工程中设置对应的吸盘配置文件。模板工程路径为 XX/Mech-Center/tool/viz_project/suction_zone
。
使用限制
发送指令¶
206 |
2. DO端口值¶
返回数据末尾共有 64 个 DO 信号值,为整数。
DO 信号值范围:0~999。
占位值:-1。
举例说明:
- 设置 DO 信号1,3,5,6为 ON,显示数据如下:
1, 3, 5, 6, -1, -1, …, -1
测试样例¶
指令执行正常
TCP send string: 206
TCP receive string: 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
.. hint:: 获得 DO 信号值为 11 和 12。
指令执行异常
TCP send string: 206
TCP receive string: 206, 2011, -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, -1, -1
501 指令——Mech-Vision 中传入物体尺寸¶
功能介绍¶
该参数用于往 Mech-Vision 工程中动态传入物体尺寸。启动 Mech-Vision 工程前请先确认物体尺寸。
Mech-Vision 工程中应有 读取物体尺寸 步骤。该步骤参数 从参数读取物体尺寸 应设定为 True
。
测试样例¶
指令执行正常
TCP send string: 501, 1, 100, 200, 300
TCP receive string: 501, 1108
指令执行异常
TCP send string: 501, 1, 100, 200
TCP receive string: 501, 3002
502 指令——Mech-Viz 中传入 TCP¶
功能介绍¶
该指令用于往 Mech-Viz 工程中动态传入机器人 TCP。
读取机器人 TCP 的技能为“外部移动”。
请基于模板工程部署 Mech-Viz 工程。模板工程路径为 XX/Mech-Center/tool/viz_project/outer_move
。并将“外部移动”技能放在工作流程中合适的位置。
该指令需在执行 201 指令——启动 Mech-Viz 工程 之前执行。
601 指令——通知¶
功能介绍¶
用户不需要发起该指令。
当 Mech-Viz / Mech-Vision 工程运行至“通知”技能/步骤时,Mech-Center 会把“通知”中定义的消息发给客户端。
上述“通知”技能/步骤需命名为 Standard Interface Notify。
发送指令¶
无。
701 指令——标定¶
发送指令¶
701,标定状态,法兰位姿,JPS 关节角 |
参数说明
1. 标定状态
参数范围:0~2。
值
说明
0
通知 Mech-Vision 开始标定流程
1
上一标定点已接收,并发给机器人。
2
上一标定点接收失败。
2. 法兰位姿
机器人当前法兰位姿。
3. JPS 关节角
机器人当前关节角。
提示
JPS 关节角与法兰位姿选其一即可。
返回数据¶
701,状态码,标定状态,下一标定点法兰位姿,下一标定点 JPS |
参数说明
1. 状态码
如指令执行正常,返回 7101 状态码,否则返回对应的错误码。
2. 标定状态
值
说明
0
标定进行中
1
标定完成
3. 下一标定点法兰位姿
机器人移动的目标点位姿数据。机器人程序端可以选择使用法兰位姿或者 JPS 位姿。
4. 下一标定点关节角
机器人需移动至的下一标定点 JPS 。
提示
JPS 与法兰位姿选其一即可。
测试样例¶
开始标定流程
TCP send string = 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
TCP received string = 701, 7101, 0, 1271.6969, -743374, 1334.34094, -3128422, 1792412, -91.11236, 93.28109, -12.0273, -32.8811, -0.37183, -68.41364, 27.02411
从 Mech-Vision 获取标定点
TCP send string = 701, 1, 1271.6969. -74.3374. 1334.34094. -3128422, 1792412 -91.11236, 93.28109, -12.0273, -32.8811, -0.37183, -68.41364, 27.02411
TCP received string = 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
提示
该过程需重复多次以获得多个标定点。
结束标定
TCP send string = 701, 1, 1371.60876, 25.53615, 1384.45532. -20.82704. 179.22026, -72.77879, 88.88467, -7.42242.-26.68142, -0.2991, -69.95593, 39.26262
TCP received string = 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