请求消息

从机器人发送到DaoAI Vision Pilot的指令消息长度为48个字节,由以下字段组成:

请求消息结构

字段

类型

长度

描述

Position/位置字段

int32[3]

12 bytes

机器人法兰位置 (XYZ,以毫米为单位) 用右手机器人底座表示。每个字段都必须乘以MULT系数.

Orientation/旋转字段

int32[4]

16 bytes

机器人法兰方向用右手机器人底座框架表示。方向编码和单位取决于所选的方向约定。每个字段都必须乘以 MULT系数.

command/指令字段

int32[4]

16 bytes

请求指令

payload/载荷字段

int32[2]

8 bytes

可选的有效载荷字段。

meta

int32[2]

8 bytes

meta_1,即消息的倒数第二个字段,应发送机器人的类型,meta_2,即消息的最后一个字段,应发送机器人协议版本。详细信息请参阅本文Meta消息说明。

所有字段都是必填的,并且必须为每个请求设置合理的值。有效载荷字段只对某写流程和指令有效。无效的字段请赋予零。

指令字段command可以控制DaoAI Vision Pilot执行不同的流程。下面将更详细地解释可能的指令及其对应的回应消息。


回应消息

除姿势更新请求外,所有请求指令都使用64字节长的回应消息进行应答,其结构如下:

回应消息结构

字段

类型

长度

描述

Position/位置字段

int32[3]

12 bytes

物体位置或拾取点偏移平移(XYZ,单位为毫米),具体取决于回应状态。另请参阅更详细的指令说明。每个值都必须除以MULT。

Orientation/旋转字段

int32[4]

16 bytes

物体方向或拾取点偏移旋转,具体取决于回应状态。另请参阅更详细的指令说明。编码和单位取决于所选的定向约定,并且必须用MULT除以。

payload/载荷字段

int32[6]

24 bytes

可选的有效载荷字段。编码和单位取决于所选的定向约定,并且必须用MULT除以。

status/状态字段

int32

4 bytes

定义的状态值之一。

meta

int32[2]

8 bytes

meta_1,即消息的倒数第二个字段,应发送机器人的类型,meta_2,即消息的最后一个字段,应发送机器人协议版本。详细信息请参阅本文Meta消息说明。

可用指令(Command)和状态(status)

以下是 DaoAI Vision Pilot 使用的指令,和该指令所等待的状态回复详情。

警告

在 DaoAI Vision Pilot 通讯协议中,如果返回的状态并不是协议中该指令期望的回复,系统会默认回复不正确,停止流程。

机器人发送指令常量

RC_DAOAI_NO_COMMAND                               = -1

# Manual Calibration/ Guidance Calibration
RC_START_MANUAL_CALIBRATION                       = 1
RC_STOP_MANUAL_CALIBRATION                        = 2
RC_MANUAL_ACCUMULATE_POSE                         = 6
# Auto Calibration
RC_START_AUTO_CALIBRATION                         = 4
RC_AUTO_ACCUMULATE_POSE                           = 7
RC_GUIDANCE_CALIBRATION                           = 10
RC_START_2D_AUTO_CALIBRATION                      = 11

RC_AUTO_ACCUMULATE_2D_POSE                        = 12
# Picking
RC_DAOAI_CAPTURE_AND_PROCESS_ASYNC                = 19
RC_DAOAI_CAPTURE_AND_PROCESS                      = 20
RC_DAOAI_PICK_POSE                                = 21

#Teach
RC_SEND_POSE                                      = 30

#Check empty box
RC_CHECK_EMPTY_BOX                                = 40

#Check robot driftting
RC_PRECISION_CHECK                                = 50

#Camera Config
RC_SWITCH_CONFIG                                  = 69

DaoAI Vision Pilot回应常量

DAOAI_UNKNOWN_COMMAND                              = -1

#DaoAI Vision Pilot抓取校准流程
DAOAI_OBJECTS_FOUND                                = 2
DAOAI_NO_OBJECT_FOUND                              = 3
DAOAI_NO_COLLISION_FREE_POSE                       = 4
DAOAI_CAPTURE_SUCCESS                              = 5
DAOAI_DROP_OFF_POSE                                = 6
DAOAI_CAPTURE_FAIL                                 = 9

#DaoAI Vision Pilot处于手动校准流程
DAOAI_MODE_CALIBRATION                             = 10
#DaoAI Vision Pilot处于自动校准流程
DAOAI_MODE_AUTO_CALIBRATION                        = 11
DAOAI_MODE_2D_AUTO_CALIBRATION                     = 14

#终止指令
DAOAI_DONE_CALIBRATION                             = 33
DAOAI_DONE_2D_AUTO_CALIBRATION                     = 34

#check empty box
DAOAI_BOX_EMPTY                                    = 41
DAOAI_BOX_NOT_EMPTY                                = 42

#Robot drift check
DAOAI_PRECISION_CHECK_SUCCESS                      = 51
DAOAI_PRECISION_CHECK_FAIL                         = 52

#相机配置更换
DAOAI_SWITCH_CONFIG_SUCCESS                        = 66
DAOAI_SWITCH_CONFIG_FAIL                           = 67

RC_NO_COMMAND = -1 (机器人姿势更新)

将当前的机器人法兰姿势发送给DaoAI Vision Pilot。DaoAI Vision Pilot使用此信息来确定机器人是否仍处于连接状态,以及更新DaoAI Vision Pilot网络界面中的3D视图。

RC_START_MANUAL_CALIBRATION = 1

发送校准模式开始指令到视觉,此指令属于机器人和DaoAI Vision Pilot的握手。DaoAI Vision Pilot可以处于CALIBRATION 模式

当视觉发送的指令并非以下的指令时,视觉所在的流程与机器人不符,机器人需重新发送 RC_START_MANUAL_CALIBRATION = 1 ,并重新进行此握手。

回应

字段

模式

描述

状态

DAOAI_MODE_CALIBRATION= 10

DaoAI Vision Pilot处于手动、引导校准流程

RC_STOP_MANUAL_CALIBRATION = 2

触发DaoAI Vision Pilot停止校准板图像采集和累积流程。请注意,发送此指令时,DaoAI Vision Pilot必须处于校准模式。

回应

字段

模式

描述

状态

DAOAI_DONE_CALIBRATION = 33

DaoAI Vision Pilot终止校准模式

RC_START_AUTO_CALIBRATION = 4

发送校准模式开始指令到视觉,此指令属于机器人和DaoAI Vision Pilot的握手。DaoAI Vision Pilot可以处于自动校准模式。

当视觉发送的指令并非以下的指令时,视觉所在的流程与机器人不符,机器人需重新发送 此指令进行握手。

回应

字段

模式

描述

状态

DAOAI_MODE_AUTO_CALIBRATION = 11

DaoAI Vision Pilot处于自动校准图像采集和累计流程。

RC_MANUAL_ACCUMULATE_POSE = 6

请求DaoAI Vision Pilot进入图像采集和累计流程,进行校准。若视觉发送的指令非以下指令,则机器人与视觉处于不同的模式/流程,机器人将发送 RC_START_MANUAL_CALIBRATION = 1(手动校准),并重新回到校准流程的握手状态。

回应

字段

模式

描述

状态

DAOAI_MODE_CALIBRATION = 10

DaoAI Vision Pilot处于手动校准模式

RC_AUTO_ACCUMULATE_POSE = 7

请求DaoAI Vision Pilot进入图像采集和累计流程,进行校准。若视觉发送的指令非以下指令,则机器人与视觉处于不同的模式/流程,机器人将发送 RC_START_AUTO_CALIBRATION = 4(自动校准),并重新回到校准流程的握手状态。

回应

字段

模式

描述

状态

DAOAI_MODE_AUTO_CALIBRATION = 11

DaoAI Vision Pilot处于自动校准图像采集和累计流程。

状态

DAOAI_DONE_AUTO_CALIBRATION = 33

DaoAI Vision Pilot以获得足够多的校准点位,回馈机器人停止校准

RC_GUIDANCE_CALIBRATION = 10

机器人发送此指令到视觉用以发送引导校准的位姿,视觉会接收位姿信息,不会给予回应。

RC_START_2D_AUTO_CALIBRATION = 11

发送2D校准模式开始指令到视觉,此指令属于机器人和DaoAI Vision Pilot的握手。DaoAI Vision Pilot可以处于自动校准模式。

当视觉发送的指令并非以下的指令时,视觉所在的流程与机器人不符,机器人需重新发送 此指令进行握手。

回应

字段

模式

描述

状态

DAOAI_MODE_2D_AUTO_CALIBRATION = 14

DaoAI Vision Pilot处于2D自动校准模式,并发送下一个校准点位至机器人,使机器人移动到该点位

状态

DAOAI_DONE_2D_AUTO_CALIBRATION = 34

DaoAI Vision Pilot以获得足够多的校准点位,回馈机器人停止校准

RC_AUTO_ACCUMULATE_2D_POSE = 12

请求DaoAI Vision Pilot进入图像采集和累计流程,进行校准。若视觉发送的指令非以下指令,则机器人与视觉处于不同的模式/流程,机器人将发送 RC_START_2D_AUTO_CALIBRATION = 11(2D自动校准),并重新回到校准流程的握手状态。

回应

字段

模式

描述

状态

DAOAI_MODE_2D_AUTO_CALIBRATION = 14

DaoAI Vision Pilot处于2D自动校准模式,并发送下一个校准点位至机器人,使机器人移动到该点位

状态

DAOAI_DONE_2D_AUTO_CALIBRATION = 34

DaoAI Vision Pilot以获得足够多的校准点位,回馈机器人停止校准

RC_DAOAI_CAPTURE_AND_PROCESS_ASYNC = 19

请求DaoAI Vision Pilot进行探测流程,让视觉拍照并识别流程,不会阻塞机器人。此消息必须含有机器人目前的位姿信息。

回应

字段

模式

描述

状态

DAOAI_DETECTION_MODE = 5

DaoAI Vision Pilot回馈握手信息,认知目前处于拍照并识别流程。

RC_DAOAI_CAPTURE_AND_PROCESS = 20

请求DaoAI Vision Pilot进行探测流程,让视觉拍照并识别流程,会阻塞机器人至拍照结束。此消息必须含有机器人目前的位姿信息。

回应

字段

模式

描述

状态

DAOAI_DETECTION_MODE = 5

DaoAI Vision Pilot回馈握手信息,认知目前处于拍照并识别流程。

RC_DAOAI_PICK_POSE = 21

请求DaoAI Vision Pilot发送物体位姿;此指令只出现在 DAOAI_DETECTION = 5 之后。当视觉探测并发送了位姿给机器人后,机器人进行抓取,然后重复回复视觉 RC_DAOAI_PICK_POSE = 21 请求下一个物体的位姿。

回应

字段

模式

描述

状态

DAOAI_OBJECTS_FOUND = 2

DaoAI Vision Pilot探测到物体并把物体抓取位姿回复到机器人,机器人将根据位姿进行抓取。

状态

DAOAI_NO_OBJECT_FOUND = 3

DaoAI Vision Pilot探测不到物体回复到机器人,机器人将根据当前脚本进入下一阶段。

状态

DAOAI_NO_COLLISION_FREE_POSE= 4

DaoAI Vision Pilot回馈错误信息,避碰模块无法找到任何安全位姿,机器人将根据脚本进入不同的阶段。

状态

DAOAI_CAPTURE_FAIL = 9

DaoAI Vision Pilot回馈拍照失败信息,机器人将根据脚本进入不同的阶段。

RC_DAOAI_DROP_POSE = 22

请求视觉认知系统发送物体位姿;此指令只出现在 DAOAI_DETECTION = 5 之后。当视觉探测并发送了位姿给机器人后,机器人进行抓取,然后回复视觉 RC_DAOAI_GET_NEXT_OBJECT = 21 请求下一个物体的位姿。

回应

字段

模式

描述

状态

DAOAI_OBJECTS_FOUND = 2

DaoAI Vision Pilot探测到物体并把物体抓取位姿回复到机器人,机器人将根据位姿进行抓取。

状态

DAOAI_NO_OBJECT_FOUND = 3

DaoAI Vision Pilot探测不到物体回复到机器人,机器人将根据当前脚本进入下一阶段。

状态

DAOAI_NO_COLLISION_FREE_POSE= 4

DaoAI Vision Pilot回馈错误信息,避碰模块无法找到任何安全位姿,机器人将根据脚本进入不同的阶段。

状态

DAOAI_CAPTURE_FAIL = 9

DaoAI Vision Pilot回馈拍照失败信息,机器人将根据脚本进入不同的阶段。

RC_SEND_POSE = 30

机器人发送此指令到视觉用以发送示教位姿,视觉会接收位姿信息,不会给予回应。

RC_CHECK_EMPTY_BOX = 40

请求DaoAI Vision Pilot检查箱体(ROI)区域是否为空,通常在收到 DAOAI_NO_OBJECT_FOUND = 3 之后使用。使用时 要使用payload_1 指定要进行检测的task id, 或者使用daoai_switch_task(id)函数来指定。

如果箱体不为空,但是无法检测到物体,那么就可以考虑使用机器人去晃动箱体再尝试检测。

回应

字段

模式

描述

状态

DAOAI_BOX_EMPTY = 41

视觉检测ROI区域为空,判断条件为 ROI区域<2000个点 和 检测流程没有检测到物体.

状态

DAOAI_BOX_NOT_EMPTY= 42

视觉检测ROI区域仍有存在物体,判断条件为 ROI区域>2000个点 或 检测流程有检测到至少一个物体.

RC_PRECISION_CHECK= 50

请求视觉运行precision check。使用时 要使用payload_1 指定已创建的precision check task id, 或者使用daoai_switch_task(id)函数来指定。

回应

字段

模式

描述

状态

DAOAI_PRECISION_CHECK_SUCCESS= 51

检测成功,返回值的payload_1为计算出的误差。

状态

DAOAI_PRECISION_CHECK_FAIL= 52

检测失败,通常是因为无法检测到精度验证图形码

RC_SWITCH_CONFIG = 69

请求DaoAI Vision Pilot切换相机配置;此指令发送到视觉端时,视觉会根据消息中的载荷字段1(payload_1)的整数,切换相机配置。此相机配置会在视觉端上设置好,根据整数切换用户预设的配置。如:payload_1 = 1, 切换 config_1;payload_1 = 3, 切换 config_3等。

回应

字段

模式

描述

状态

DAOAI_SWITCH_CONFIG_SUCCESS = 66

切换相机配置成功

状态

DAOAI_SWITCH_CONFIG_FAIL = 67

切换相机配置失败


载荷字段 Payload

载荷字段在抓和放时,所表示的意思并不相同:payload_1会被用作基本的抓放信息交换,抓的时候payload_1 代表的是剩余物体数量:如在场景中探测到了5个物体,第一个位姿发送时payload_1 = 5;放的时候payload_1 代表的是物体的种类(在没有分类时此payload可被忽略或者用于其他用途):如在场景中会出现5类物体,此次抓取到的是第四类物体 payload_1 = 4。

警告

在抓取时:

DaoAI Vision Pilot 给机器人发送的payload_1:代表 物体的剩余数量

机器人给 DaoAI Vision Pilot 发送的payload_1:代表 执行task的id

例:DaoAI Vision Pilot 有2个task; task_1 的id 为0,task_2的id为1。想要执行task_1时,机器人的payload_1就应该为0。 想要执行task_2时,机器人的payload_1就应该为1。

其他的payload可根据用户具体案例自由使用。


消息元数据/Message metadata

为保证机器人和DaoAI Vision Pilot之间对数据的正确解读,以下元数据始终与请求和回应消息一起发送:

Metadata message

字段

值/描述

meta_1

  • ABB = 0
  • Fanuc = 1
  • Hanwha = 2
  • Kuka = 3
  • Omron_TM = 4
  • Siemens_PLC = 5
  • Staubli = 6
  • UR = 7
  • Yaskawa = 8
  • Efort = 9
  • Aubo = 10
  • Dobot = 11
  • Mitsubishi = 12
  • Other = 99

meta_2

meta_2,即最后一个字段,代表机器人的版本和DaoAI Vision Pilot之间的协议版本号. 目前的版本号 = 2