接口通信指令说明

  1. 发送指定ID相机拍照点前,必须先触发对应ID的相机拍照

  2. 对于眼在手上,在注意事项1的基础上通讯执行顺序必须按照:先触发拍照,再发送拍照点,最后进行检测

  3. 对于多相机的眼在手上,在注意事项1的基础上通讯执行顺序必须按照:先触发相机ID1拍照,发送相机ID1拍照点,然后触发相机ID2拍照,发送相机ID2拍照点,最后进行检测(ID1和ID2不代表0号相机一定先拍,按照现场需求排序即可)

5700端口

自动化通讯协议-Epic Pro作为服务端(5700端口)。

interface instructions

单条指令

行为

指令

返回信息

拍照

110,相机ID

110,相机ID1,相机ID2…​

(只输入110时默认使用第一个相机)

成功:110,相机ID

失败:000,失败编码,相机ID

检测

普通检测:120,请求的位姿点个数,0

仅抓取路径规划:120,抓取路径个数,0

带回撤路径规划:120,抓取路径点个数,回撤路径点个数

成功:指令码=120

情况一(普通检测/碰撞检测):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

情况二(路径规划):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间名ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

界面点云变化,如果是碰撞检测和路径规划,机器人也会变化

路径规划不允许请求路径点个数大于设置的每段规划路径点个数,如果大于软件会返回000,3005(请求的路径点数量不符合要求); 仅算法检测/碰撞检测则允许请求的抓取点个数大于实际识别抓取点个数。

失败:000,返回给机器人状态码

切换空间下抓取物

130,空间ID, 抓取物ID

成功:130

失败:000,返回给机器人状态码

机器人拍照位姿(眼在手上)

140,相机ID,X,Y,Z,姿态

(四元数按照W,X,Y,Z的顺序解析)

成功: 140,相机ID

失败: 000,返回给机器人状态码

重启视觉软件

307

收到指令:307

关闭工控机

886

收到指令:886

快捷指令

行为

指令

返回信息

拍照+检测

普通检测:220,抓取点个数,0

仅抓取路径规划:220,抓取路径点个数,0

带回撤路径规划:220,抓取路径点个数,回撤路径点个数

成功:指令码=220

情况一(普通检测/碰撞检测):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

情况二(路径规划):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间名ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

界面点云变化,如果是碰撞检测和路径规划,机器人也会变化

失败:000,返回给机器人状态码返回给机器人状态码

拍照+机器人拍照位姿

240,相机ID,X,Y,Z,位姿

成功:240,相机ID

失败:000,返回给机器人状态码

拍照+机器人拍照位姿+检测

普通检测:250,相机ID,X,Y,Z,位姿,抓取点个数,0

仅抓取路径规划:250,相机ID,X,Y,Z,位姿,抓取路径点个数,0

带回撤路径规划:250,相机ID,X,Y,Z,位姿,抓取路径点个数,回撤路径点个数

成功:指令码=250

情况一(普通检测/碰撞检测):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

情况二(路径规划):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间名ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

界面点云变化,如果是碰撞检测和路径规划,机器人也会变化

失败:000,返回给机器人状态码

切换空间下抓取物+拍照

310,空间ID,抓取物ID,相机ID1,相机ID2…​

(不包含相机ID默认使用第一个相机)

成功: 310,相机ID

失败: 000,返回给机器人状态码

切换空间下抓取物+拍照+检测

普通检测:320,空间ID,抓取物ID,相机ID1,相机ID2…​,抓取点个数,0

仅抓取路径规划:320,空间ID,抓取物ID,相机ID1,相机ID2…​,抓取路径点个数,0

带回撤路径规划:320,空间ID,抓取物ID,相机ID1,相机ID2…​,抓取路径点个数,回撤路径点个数

(不包含相机ID默认使用第一个相机)

成功:指令码=320

情况一(普通检测/碰撞检测):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

情况二(路径规划):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间名ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

界面点云变化,如果是碰撞检测和路径规划,机器人也会变化

失败:000,返回给机器人状态码

切换空间下抓取物+拍照+机器人拍照位姿

340,空间ID,抓取物ID,相机ID,X,Y,Z,位姿

成功: 340,相机ID

失败: 000,返回给机器人状态码

切换空间下抓取物+拍照+机器人拍照位姿+检测

普通检测:350,空间ID,抓取物ID,相机ID,X,Y,Z,位姿,抓取点个数,0

仅抓取路径规划:350,空间ID,抓取物ID,相机ID,X,Y,Z,位姿,抓取路径点个数,0

带回撤路径规划:350,空间ID,抓取物ID,相机ID,X,Y,Z,位姿,抓取路径点个数,回撤路径点个数

成功:指令码=350

情况一(普通检测/碰撞检测):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

情况二(路径规划):指令码,位姿类型(笛卡尔0/关节1),发出的位姿点数量n,有抓取点的抓取物个数,识别出的抓取点总个数,当前空间名ID,当前抓取物ID,当前抓取点索引(当前抓取点在所有抓取点列表中的索引),当前抓取点序号(在抓取点编辑工具中体现的序号),预留ProStatus状态信息(没有此信息则用0填充),0,0,位姿*n

界面点云变化,如果是碰撞检测和路径规划,机器人也会变化

失败:000,返回给机器人状态码

组合指令

基本原则:

  1. 单指令之间进行互相组合,以分号(;)进行分割

  2. 对于眼在手上,确保拍照的相机ID与发送拍照点位姿的相机ID一致,并在发送拍照点前触发对应ID的相机拍照

  3. 指令顺序:

    指令顺序

    示例指令

    眼在手外:切换空间抓取物 → 拍照 →检测

    130,0,0;110,0;120,1,0

    眼在手上:切换空间抓取物 → 拍照 → 当前相机拍照点→检测

    130,0,0;110,0;140,0,0,0,0,0,0,0;120,1,0

    拼接眼在手上:切换空间抓取物 → 相机0拍照 → 相机1拍照 →检测

    130,0,0;110,0;110,1;120,1,0

    拼接眼在手外:切换空间抓取物 → 相机0拍照 → 当前相机0拍照点→ 相机1拍照 → 当前相机1拍照点→检测

    130,0,0;110,0;140,0,0,0,0,0,0,0;110,1;140,1,0,0,0,0,0,0;120,1,0

简单示例:

行为

指令

返回信息

拍照+检测

110,相机ID1,相机ID2…​;120,1,0或者110;120,1,0

(不包含相机ID默认使用第一个相机)

返回结果参考上表

拍照+机器人拍照位姿

110,相机ID;140,相机ID,X,Y,Z,位姿

返回结果参考上表

拍照+机器人拍照位姿+检测

110,相机ID;140,相机ID,X,Y,Z,位姿;120,1,0

返回结果参考上表

返回状态码

所有指令都需要经过HOOK返回,且都有返回值

成功状态码

状态码

说明

备注

2001

切换配置成功

2002

切换相机成功

2003

设置机器人拍照位姿成功

2004

拍照成功

2005

检测成功

包含仅检测成功和碰撞检测成功

2006

路径规划成功

异常状态码

状态码

说明

备注

3001

当前操作执行中,请稍后重试

退出方案中或等待状态中无法执行其他操作

3002

命令解析失败,请检查格式

3003

请求的参数数量不符合要求

3004

传入的拍照位姿格式不正确

3005

请求的路径点数量不符合要求

3006

请求的抓取点数量不符合要求

3007

切换抓取空间失败

3008

切换抓取配置失败

3009

切换相机失败

3010

设置相机参数失败

3011

未收到机器人当前拍照位姿

3012

设置相机拍照位姿时,没有拍照数据

3013

设置机器人当前拍照位姿失败

3014

未发送机器人上次拍照点位姿,请重新拍照,并发送对应的位姿

3015

拍照失败

3016

缺少检测输入数据

请求ATOM前,缺少数据:一个是手眼标定结果数据,一个是眼在手上拍照点数据

3017

设置ATOM参数失败

包含设置运行时参数和映射参数

3018

ATOM检测异常

ATOM运行存在错误或者异常(ATOM返回结果为null,或者执行请求ATOM出现了catch异常)

3019

检测异常

120 异常(不包括ATOM异常)

3020

未检测出结果

未检测到目标 (1. ATOM的检测结果为空

2. ATOM的检测结果不为空,但是全碰撞

3.ATOM的检测结果不为空,但是全部抓取点都没有规划出结果)

3021

无可用抓取点

存在可抓取的结果但是当检测结果已抓取完毕后再次请求提示:无可用抓取点

3022

Epic Pro 异常

通信执行和hooks执行但是hooks未处理的异常(执行hooks异常)

5800端口

获取实时机器人(默认5800端口)

// 注意SN命名方式变更 VendorName-ModelName-RobotName
// VendorName 命名方式同motion_plan模块
// RobotName 可以为 001 002 003 等

//发送笛卡尔空间位姿
{"SN":"Abb-001","C":"[269.91,3.84,910.26,0.0353839,0.705059,0.0673907]"}
//发送关节角度
{"SN":"Abb-001","J":"[2.03,-48.87,50.83,-0.06,85.19,0.91]"}