通信与报文命令
注意:使用通信协议直接通信,需要在basic中烧录transponder,在atom中烧录最新版的atomMain
1 USB通信设置Communication Settings
请确保您的通信设置如下
- 总线接口: USB Type-C连接
- 波特率: 115200
- 数据位: 8
- 奇偶校验:无
- 停止位: 1
2 命令帧说明及单一指令解析
主机Basic向从机发送数据,从机接收到数据后进行解析,如包含返回值的指令,从机会在500ms内返回给主机。
3 命令帧发送与接收格式
所有命令为十六进制,发送与接收格式一致。
每个通信命令必须包含以下5个部分,其中3、4可为空。
- 1 命令针头: 0xFE 0xFE
- 固定
- 必含
- 2 有效命令长度: 0x02 ~ 0x10
- 以下所有命令的长度
- 必含
- 3 命令序号: 00 ~ 8F
- 现已开发了多种命令
- 可为空
- 4 命令内容: 若干
- 可为空
- 5 命令结束: 0XFA
- 固定
- 必含
4 指令解析
主机Basic向从机发送数据,从机接收到数据后进行解析,如包含返回值的指令,从机会在500ms内返回给主机。
类型 | 数据描述 | 数据长度 | 说明 |
---|---|---|---|
命令帧 | 头字节0 | 1 | 帧头识别,0XFE |
头字节1 | 1 | 帧头识别,0XFE | |
数据长度字节 | 1 | 不同指令对应不同长度数据 | |
命令字节 | 1 | 视不同命令而定 | |
数据帧 | 数据 | 0-16 | 命令附带数据,视不同命令而定 |
结束帧 | 结束字节 | 1 | 停止位,0XFA |
5 单一指令解析
机械臂上电
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X10 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 10 FA
无返回值
机械臂掉电并断开连接
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X11 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 11 FA
无返回值
Atom状态查询
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X12 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 12 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X12 |
Data[4] | 上电/断电 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
假设Atom处于上电状态
串口返回示例:FE FE 03 12 01 FA
机械臂仅掉电
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X13 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 13 FA
无返回值
机器人系统检测正常
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X14 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 14 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X14 |
Data[4] | 正常连接/断开连接 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
假设Atom连接成功
串口返回示例:FE FE 03 14 01 FA
指令刷新模式开关(设置插补/刷新运动模式)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X16 |
Data[4] | 指令帧 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
设置为刷新运动模式:
串口发送示例:FE FE 03 16 01 FA
设置为插补运动模式:
串口发送示例:FE FE 03 16 00 FA
机器人自由模式(关闭所有扭力输出)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X1A |
Data[4] | 打开/关闭 | 01/00 |
Data[5] | 结束帧 | 0XFA |
设置为自由移动运动模式:
串口发送示例:FE FE 03 1A 01 FA
检查是否是自由模式
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X1B |
Data[5] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 1B FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X1B |
Data[4] | 打开/关闭 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
假设Atom处于自由移动模式
串口返回示例:FE FE 03 1B 01 FA
读取角度(读取走位信息)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X20 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 20 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X0E |
Data[3] | 返回指令帧 | 0X20 |
Data[4] | 1号舵机角度高位 | Angle1_high |
Data[5] | 1号舵机角度低位 | Angle1_low |
Data[6] | 2号舵机角度高位 | Angle2_high |
Data[7] | 2号舵机角度低位 | Angle2_low |
Data[8] | 3号舵机角度高位 | Angle3_high |
Data[9] | 3号舵机角度低位 | Angle3_low |
Data[10] | 4号舵机角度高位 | Angle4_high |
Data[11] | 4号舵机角度低位 | Angle4_low |
Data[12] | 5号舵机角度高位 | Angle5_high |
Data[13] | 5号舵机角度低位 | Angle5_low |
Data[14] | 6号舵机角度高位 | Angle6_high |
Data[15] | 6号舵机角度低位 | Angle6_low |
Data[16] | 结束帧 | 0XFA |
串口返回示例:FE FE 0E 20 00 8C 00 3D FF E6 FF 3F 00 AF FF 51 FA
如何得出1号关节角度
temp = angle1_low+angle1_high*256
Angle1=(temp \ 33000 ?(temp – 65536) : temp)/100
计算方式:角度值低位 + 角度高位值乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以100 如果小于33000就直接除以100
(其余同理)
发送单独角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X06 |
Data[3] | 指令帧 | 0X21 |
Data[4] | 舵机序号 | joint_no |
Data[5] | 角度值高位 | angle_high |
Data[6] | 角度值低位 | angle_low |
Data[7] | 指定速度 | sp |
Data[8] | 结束帧 | 0XFA |
使1号舵机以20%速度移动到零位
串口发送示例:FE FE 06 21 01 00 00 14 FA
joint_no取值范围: 1~6
angle_high:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的高字节
angle_low:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的低字节
无返回值
发送全部角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X0F |
Data[3] | 指令帧 | 0X22 |
Data[4] | 1号舵机角度值高字节 | Angle1_high |
Data[5] | 1号舵机角度值低字节 | Angle1_low |
Data[6] | 2号舵机角度值高字节 | Angle2_ high |
Data[7] | 2号舵机角度值低字节 | Angle2_ low |
Data[8] | 3号舵机角度值高字节 | Angle3_ high |
Data[9] | 3号舵机角度值低字节 | Angle3_ low |
Data[10] | 4号舵机角度值高字节 | Angle4_ high |
Data[11] | 4号舵机角度值低字节 | Angle4_ low |
Data[12] | 5号舵机角度值高字节 | Angle5_ high |
Data[13] | 5号舵机角度值低字节 | Angle5_ low |
Data[14] | 6号舵机角度值高字节 | Angle6_ high |
Data[15] | 6号舵机角度值低字节 | Angle6_ low |
Data[16] | 指定速度 | Sp |
Data[17] | 结束帧 | 0XFA |
发送全部角度均为零/让机械恢复到零位,以30%速度移动
串口发送示例:FE FE 0F 22 00 00 00 00 00 00 00 00 00 00 00 00 1E FA
angle1_high:数据类型byte
计算方式:1号舵机角度值乘以100 先转换成int形式 再取十六进制的高字节
angle1_low:数据类型byte
计算方式:1号舵机角度值乘以100 先转换成int形式 再取十六进制的低字节
(其余同理)
无返回值
读取全部坐标
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X23 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 23 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X0E |
Data[3] | 返回指令帧 | 0X23 |
Data[4] | 指定x坐标高位 | x_high |
Data[5] | 指定x坐标低位 | x_low |
Data[6] | 指定y坐标高位 | y_high |
Data[7] | 指定y坐标低位 | y_low |
Data[8] | 指定z坐标高位 | z_high |
Data[9] | 指定z坐标低位 | z_low |
Data[10] | 指定rx坐标高位 | rx_high |
Data[11] | 指定rx坐标低位 | rx_low |
Data[12] | 指定ry坐标高位 | ry_high |
Data[13] | 指定ry坐标低位 | ry_low |
Data[14] | 指定rz坐标高位 | rz_high |
Data[15] | 指定rz坐标低位 | rz_low |
Data[16] | 结束帧 | 0XFA |
串口返回示例:FE FE 0E 23 01 BC FD A0 10 15 DC 66 FF 54 DE 21 FA
如何得出x坐标
temp = x_low + x_high*256
x坐标=(temp \ 33000 ?(temp – 65536) : temp)/10
计算方式:x坐标值低位 +x坐标值高位乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以100 如果小于33000就直接除以10
(y坐标z坐标同理)
如何得出rx坐标
temp = rx_low + rx_high*256
x坐标=(temp \ 33000 ?(temp – 65536) : temp)/100
计算方式:x坐标值低位 +x坐标值高位乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以100 如果小于33000就直接除以100
(ry坐标rz坐标同理)
发送单独坐标参数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X06 |
Data[3] | 指令帧 | 0X24 |
Data[4] | axis | x/y/z/rx/ry/rz |
Data[5] | 指定xyz/rxryrz参数高位 | xyz/ rxryrz_high |
Data[6] | 指定xyz/rxryrz参数低位 | xyz/rxryrz_low |
Data[7] | 指定速度 | Sp |
Data[8] | 结束帧 | 0XFA |
设定X坐标为200,目标速度为20
串口发送示例:FE FE 06 24 01 07 D0 14 FA
指定坐标axis:数据类型byte
取值范围:1~6
xyz_high:数据类型byte
计算方式:x/y/z坐标值乘以10 再取十六进制的高字节
xyz_low:数据类型byte
计算方式:x/y/z坐标值乘以10 再取十六进制的低字节
rxryrz_high:数据类型byte
计算方式:rx/ry/rz乘以100 再取十六进制的高字节
rxryrz_low:数据类型byte
计算方式:rx/ry/rz乘以100 再取十六进制的低字节
无返回值
发送全部坐标参数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X10 |
Data[3] | 指令帧 | 0X25 |
Data[4] | 指定x坐标高位 | x_high |
Data[5] | 指定x坐标低位 | x_low |
Data[6] | 指定y坐标高位 | y_high |
Data[7] | 指定y坐标低位 | y_low |
Data[8] | 指定z坐标高位 | z_high |
Data[9] | 指定z坐标低位 | z_low |
Data[10] | 指定rx坐标高位 | rx_high |
Data[11] | 指定rx坐标低位 | rx_low |
Data[12] | 指定ry坐标高位 | ry_high |
Data[13] | 指定ry坐标低位 | ry_low |
Data[14] | 指定rz坐标高位 | rz_high |
Data[15] | 指定rz坐标低位 | rz_low |
Data[16] | 指定速度 | Sp |
Data[17] | 模式 | 0X01 |
Data[18] | 结束帧 | 0XFA |
设定机械臂末端目标点位(150.3,-68.7,101.8,10.18,0,-90),目标速度10
串口发送示例:FE FE 10 25 05 DF FD 51 03 FA BC 30 00 00 DC D8 0A 01 FA
x_high:数据类型byte
计算方式:x坐标乘以10 再取十六进制的高字节
x_low:数据类型byte
计算方式:x坐标乘以10 再取十六进制的低字节
(y轴坐标z轴坐标同理)
rx_high:数据类型byte
计算方式:rx坐标值乘以100 再取十六进制的高字节
rx_low:数据类型byte
计算方式:rx坐标值乘以100 再取十六进制的低字节
(ry轴坐标rz轴坐标同理)
无返回值
程序暂停
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X26 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 26 FA
无返回值
程序是否暂停
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X27 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 27 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X27 |
Data[4] | 暂停/未暂停 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
假设程序处于暂停状态
串口返回示例:FE FE 03 12 01 FA
程序恢复
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X28 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 26 FA
无返回值
程序停止
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X29 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 26 FA
无返回值
是否达到点位
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X0E/0X0F |
Data[3] | 指令帧 | 0X2A |
Data[4] | 坐标x高位/1号舵机角度值高字节 | x_high/Angle1_high |
Data[5] | 坐标x低位/1号舵机角度值低字节 | x_low/Angle1_low |
Data[6] | 坐标y高位/2号舵机角度值高字节 | y_high/Angle2_high |
Data[7] | 坐标y低位/2号舵机角度值低字节 | y_low/Angle2_low |
Data[8] | 坐标z高位/3号舵机角度值高字节 | z_high/Angle3_high |
Data[9] | 坐标z低位/3号舵机角度值低字节 | z_low/Angle3_low |
Data[10] | 坐标rx高位/4号舵机角度值高字节 | rx_high/Angle4_high |
Data[11] | 坐标rx低位/4号舵机角度值低字节 | rx_low/Angle4_low |
Data[12] | 坐标ry高位/5号舵机角度值高字节 | ry_high/Angle5_high |
Data[13] | 坐标ry低位/5号舵机角度值低字节 | ry_low/Angle5_low |
Data[14] | 坐标rz高位/6号舵机角度值高字节 | rz_high/Angle6_high |
Data[15] | 坐标rz低位/6号舵机角度值低字节 | rz_low/Angle6_low |
Data[16] | 坐标/角度 | 0X01/0X00 |
Data[17] | 结束帧 | 0XFA |
判断机械臂是否到达原点
串口发送示例: FE FE 0F 2A 00 00 00 00 00 00 00 00 00 00 00 00 00 FA
x_high:数据类型byte
计算方式:x坐标乘以10 先转换为int类型 再取十六进制高字节
x_low:数据类型byte
计算方式:x坐标乘以10 先转换为int类型 再取十六进制低字节
(y轴坐标z轴坐标同理)
rx_high:数据类型byte
计算方式:rx坐标乘以100 先转换为int类型 再取十六进制高字节
rx_low:数据类型byte
计算方式:rx坐标乘以100 先转换为int类型 再取十六进制低字节
(ry轴坐标rz轴坐标同理)
angle_high:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的高字节
angle_low:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的低字节
Type:数据类型byte(暂未使用)
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X2a |
Data[4] | 到达点位/未到达点位 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
假设机械臂未到达指定点位
串口返回示例:FE FE 03 2A 00 FA
机械臂运动检测
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X2B |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 2B FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X2B |
Data[4] | 运动中/未运动 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
假设程序处于运动状态
串口返回示例:FE FE 03 2B 01 FA
jog-关节方向运动
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 指令帧 | 0X30 |
Data[4] | 关节舵机序号 | Joint |
Data[5] | 关节舵机方向 | direction |
Data[6] | 指定速度 | sp |
Data[7] | 结束帧 | 0XFA |
设定1号舵机顺时针方向以20%速度转动
串口发送示例: FE FE 05 30 01 01 14 FA
关节序号取值范围: 1~6
di:数据类型byte 取值范围 0和1
sp:数据类型byte 取值范围0-100
无返回值
jod-绝对控制
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X06 |
Data[3] | 指令帧 | 0X31 |
Data[4] | 关节舵机序号 | Joint |
Data[5] | 关节舵机角度值高字节 | Angle_high |
Data[6] | 关节舵机角度值低字节 | Angle_low |
Data[7] | 指定速度 | sp |
Data[8] | 结束帧 | 0XFA |
设定1号舵机转到45°,速度20
串口发送示例: FE FE 06 31 01 11 94 14 FA
关节序号取值范围: 1~6
Angle_high:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的高字节
Angle_low:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的低字节
sp:数据类型byte 取值范围0-100
无返回值
jog-坐标方向运动
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 指令帧 | 0X32 |
Data[4] | 指定坐标 | axis |
Data[5] | 关节舵机方向 | di |
Data[6] | 指定速度 | sp |
Data[7] | 结束帧 | 0XFA |
设定机械臂往x方向运动,速度20
串口发送示例: FE FE 06 32 01 01 14 FA
axis 取值范围: 1~6,分别代表x,y,z,rx,ry,rz
di:数据类型byte 取值范围 0和1
sp:数据类型byte 取值范围0-100
无返回值
jog-步进模式
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X06 |
Data[3] | 指令帧 | 0X33 |
Data[4] | 关节舵机序号 | Joint |
Data[5] | 关节舵机角度值高字节 | Angle_high |
Data[6] | 关节舵机角度值低字节 | Angle_low |
Data[7] | 指定速度 | sp |
Data[8] | 结束帧 | 0XFA |
设定1号舵机角度增加45,以20%速度转动
串口发送示例: FE FE 06 33 01 11 94 14 FA
关节序号取值范围: 1~6
Angle_high:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的高字节
Angle_low:数据类型byte
计算方式:角度值乘以100 先转换成int形式 再取十六进制的低字节 sp:数据类型byte 取值范围0-100
无返回值
jog-停止
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X34 |
Data[4] | 结束帧 | 0XFA |
jog停止运动
串口发送示例: FE FE 02 34 FA
无返回值
发送电位值
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 指令帧 | 0X3A |
Data[4] | 关节舵机序号 | Joint |
Data[5] | 电位值高位 | Encoder_high |
Data[6] | 电位值低位 | Encoder_low |
Data[7] | 结束帧 | 0XFA |
示例,设定5号关节到2048电位。
串口发送示例: FE FE 05 3A 05 08 00 FA
关节序号取值范围:0~5
Joint:数据类型byte
Encoder_high:数据类型byte
计算方式:取电位值(十六进制)的高位
Encoder_low:数据类型byte
计算方式:取电位值值(十六进制)的低位
无返回值
获取电位值
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X3B |
Data[4] | 关节序号 | joint |
Data[5] | 结束帧 | 0XFA |
获取2号舵机电位值
串口发送示例: FE FE 03 3B 02 FA
关节序号取值范围:1-6
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X04 |
Data[3] | 返回指令帧 | 0X3B |
Data[4] | 舵机电位值高位 | Encoder_high |
Data[5] | 舵机电位值低位 | Encoders_low |
Data[6] | 结束帧 | 0XFA |
串口返回示例: FE FE 04 3B 08 07 FA
如何计算电位值
电位值 = 电位值低位 + 电位值高位 * 256
发送六个舵机的电位值
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X0F |
Data[3] | 指令帧 | 0X3C |
Data[4] | 1号舵机电位值高字节 | encoder_1_high |
Data[5] | 1号舵机电位值低字节 | encoder_1_low |
Data[6] | 2号舵机电位值高字节 | encoder_2_high |
Data[7] | 2号舵机电位值低字节 | encoder_2_low |
Data[8] | 3号舵机电位值高字节 | encoder_3_high |
Data[9] | 3号舵机电位值低字节 | encoder_3_low |
Data[10] | 4号舵机电位值高字节 | encoder_4_high |
Data[11] | 4号舵机电位值低字节 | encoder_4_low |
Data[12] | 5号舵机电位值高字节 | encoder_5_high |
Data[13] | 5号舵机电位值低字节 | encoder_5_low |
Data[14] | 6号舵机电位值高字节 | encoder_6_high |
Data[15] | 6号舵机电位值低字节 | encoder_6_low |
Data[16] | 指定速度 | Sp |
Data[17] | 结束帧 | 0XFA |
发送所有电机的电位值均为2048,速度为20
串口发送示例:FE FE 0F 3C 08 00 08 00 08 00 08 00 08 00 08 00 14 FA
(参考上方发送单独电位值)
encoder_1_high:数据类型byte
计算方式: 1号舵机电位值先转换为int类型 再取十六进制高字节
encoder_1_low:数据类型byte
计算方式: 1号舵机电位值先转换为int类型 再取十六进制低字节
(其余同理)
Sp:数据类型byte 取值范围:0~100
无返回值
读取六个舵机的电位值
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X3D |
Data[4] | 结束帧 | 0XFA |
串口发送示例: FE FE 02 3D FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X0E |
Data[3] | 指令帧 | 0X3D |
Data[4] | 1号舵机电位值高字节 | encoder_1_high |
Data[5] | 1号舵机电位值低字节 | encoder_1_low |
Data[6] | 2号舵机电位值高字节 | encoder_2_high |
Data[7] | 2号舵机电位值低字节 | encoder_2_low |
Data[8] | 3号舵机电位值高字节 | encoder_3_high |
Data[9] | 3号舵机电位值低字节 | encoder_3_low |
Data[10] | 4号舵机电位值高字节 | encoder_4_high |
Data[11] | 4号舵机电位值低字节 | encoder_4_low |
Data[12] | 5号舵机电位值高字节 | encoder_5_high |
Data[13] | 5号舵机电位值低字节 | encoder_5_low |
Data[14] | 6号舵机电位值高字节 | encoder_6_high |
Data[15] | 6号舵机电位值低字节 | encoder_6_low |
Data[16] | 结束帧 | 0XFA |
假设当前机械臂各关节都处于0位
串口返回示例: FE FE 0E 3D 08 00 08 00 08 00 08 00 08 00 08 00 FA
如何计算电位值
电位值 = 电位值低位 + 电位值高位 * 256
读取速度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X40 |
Data[4] | 结束帧 | 0XFA |
串口发送示例: FE FE 02 40 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X40 |
Data[4] | 指定速度 | Sp |
Data[5] | 结束帧 | 0XFA |
假设当前速度为50%
串口返回示例:FE FE 03 40 32 FA
设置速度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X41 |
Data[4] | 指定速度 | sp |
Data[5] | 结束帧 | 0XFA |
Sp:数据类型byte 取值范围:0~100
设定当前速度为50%
串口发送示例:FE FE 03 41 32 FA
无返回值
读取关节最小角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X4A |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | 结束帧 | 0XFA |
读取2号关节最小角度
串口发送示例: FE FE 03 4A 02 FA
joint_no取值范围:1-6
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X05 |
Data[3] | 返回指令帧 | 0X4A |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | 舵机角度值高位 | Angle_high |
Data[6] | 舵机角度值低位 | Angle_low |
Data[7] | 结束帧 | 0XFA |
串口返回示例: FE FE 05 4A 02 F9 F2 FA
如何得出关节最小角度
temp = angle1_low+angle1_high*256
Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10
计算方式:角度值低位 + 角度高位值乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以10 如果小于33000就直接除以10
读取关节最大角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X4B |
Data[4] | 关节舵机序号 | joint_number |
Data[5] | 结束帧 | 0XFA |
joint_no取值范围:1-6
读取2号关节的最大角度
串口发送示例: FE FE 03 4B 02 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X04 |
Data[3] | 返回指令帧 | 0X4B |
Data[4] | 关节舵机序号 | joint_number |
Data[5] | 舵机角度值高位 | Angle_high |
Data[6] | 舵机角度值低位 | Angle_low |
Data[7] | 结束帧 | 0XFA |
串口返回示例: FE FE 05 4B 02 06 72 FA
如何得出关节最大角度
temp = angle1_low+angle1_high*256
Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10
计算方式:角度值低位 + 角度高位值乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以10 如果小于33000就直接除以10
设置关节最小角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 指令帧 | 0X4C |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | 关节舵机角度值高字节 | Angle_high |
Data[6] | 关节舵机角度值低字节 | Angle_low |
Data[7] | 结束帧 | 0XFA |
设置2号关节最小角度为0
joint_no取值范围:1-6
angle1_high:数据类型byte
计算方式:舵机角度值乘以100 先转换成int形式 再取十六进制的高字节
angle1_low:数据类型byte
计算方式:舵机角度值乘以100 先转换成int形式 再取十六进制的低字节
串口发送示例: FE FE 05 4C 02 00 00 FA
无返回值
设置关节最大角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 指令帧 | 0X4D |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | 关节舵机角度值高字节 | Angle_high |
Data[6] | 关节舵机角度值低字节 | Angle_low |
Data[7] | 结束帧 | 0XFA |
设置2号关节最大角度为45
joint_no取值范围:1-6
angle1_high:数据类型byte
计算方式:舵机角度值乘以100 先转换成int形式 再取十六进制的高字节
angle1_low:数据类型byte
计算方式:舵机角度值乘以100 先转换成int形式 再取十六进制的低字节
串口发送示例: FE FE 05 4C 02 11 94 FA
无返回值
查看连接
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X50 |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | 结束帧 | 0XFA |
joint_no取值范围:1-6
查看1号舵机是否连接
串口发送示例:FE FE 03 50 01 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X50 |
Data[4] | 关节舵机序号 | Joint_number |
Data[5] | 连接/未连接 | 0X01/0X00 |
Data[6] | 结束帧 | 0XFA |
1号舵机连接正常
串口返回示例:FE FE 04 50 01 01 FA
查看舵机是否全部上电
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X51 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 51 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X51 |
Data[4] | 上电/未上电 | 0X01/0X00 |
Data[5] | 结束帧 | 0XFA |
并没有全部舵机上电 串口返回示例:FE FE 03 51 01 FA
读取伺服参数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 指令帧 | 0X53 |
Data[4] | 关节舵机序号 | joint_no |
Data[5] | 数据地址 | data_id |
Data[6] | 结束帧 | 0XFA |
读取1号舵机位置P比例参数
串口发送示例:FE FE 04 53 01 15 FA
joint_no取值范围 1~6
Data_id:数据类型byte,取值如下表
地址 | 功能 | 取值范围 | 初始值 | 取值解析 |
---|---|---|---|---|
20 | LED报警 | 0-254 | 0 | 1\0 = 打开或关闭LED报警 |
21 | 位置环P | 0-254 | 10 | 控制电机的比例系数 |
22 | 位置环I | 0-254 | 0 | 控制电机的微分系数 |
23 | 位置环D | 0-254 | 1 | 控制电机的积分系数 |
24 | 最小启动力 | 0-1000 | 0 | 设置最小输出力矩 1000 = 100% |
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X53 |
Data[4] | 返回数据 | data |
Data[5] | 结束帧 | 0XFA |
串口返回示例:FE FE 03 53 10 FA
设置舵机伺服参数
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 指令帧 | 0X52 |
Data[4] | 关节舵机序号 | joint_no |
Data[5] | 数据地址 | data_id |
Data[6] | 数据 | data |
Data[7] | 结束帧 | 0XFA |
设置1号舵机位置P比例参数为1
串口发送示例:FE FE 05 52 01 15 01 FA
joint_no取值范围:1~6
无返回值
data_id取值如下表
地址 | 功能 | 取值范围 | 初始值 | 取值解析 |
---|---|---|---|---|
20 | LED报警 | 0-254 | 0 | 1\0 = 打开或关闭LED报警 |
21 | 位置环P | 0-254 | 10 | 控制电机的比例系数 |
22 | 位置环I | 0-254 | 0 | 控制电机的微分系数 |
23 | 位置环D | 0-254 | 1 | 控制电机的积分系数 |
24 | 最小启动力 | 0-1000 | 0 | 设置最小输出力矩 1000 = 100% |
设置舵机零点
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X54 |
Data[4] | 关节舵机序号 | joint_number |
Data[5] | 结束帧 | 0XFA |
设置1号舵机的零位
串口发送示例:FE FE 03 54 01 FA
joint_number:1~6
无返回值
刹车单个电机
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X55 |
Data[4] | 关节舵机序号 | joint_number |
Data[5] | 结束帧 | 0XFA |
刹车1号舵机
joint_number:1~6
串口发送示例:FE FE 03 55 01 FA
无返回值
单个电机掉电
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X56 |
Data[4] | 舵机序号 | Servo_no |
Data[5] | 结束帧 | 0XFA |
让3号舵机掉电
串口发送示例:FE FE 03 56 03 FA
Servo_no:1~6
无返回值
单个电机上电
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X57 |
Data[4] | 舵机序号 | Servo_no |
Data[5] | 结束帧 | 0XFA |
给1号舵机上电
串口发送示例:FE FE 03 57 01 FA
Servo_no:1~6
无返回值
设置atom引脚模式
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 指令帧 | 0X60 |
Data[4] | 引脚序号 | pin_no |
Data[5] | 输入/输出 | 00X00/00X01 |
Data[6] | 结束帧 | 0XFA |
设置atom pin22为输入模式
串口发送示例:FE FE 04 60 16 00 FA
Pin_no:数据类型byte
Pin_mode:0/1
无返回值
设置Atom IO(setDigitalOutput)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 指令帧 | 0X61 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
设置引脚P23为高电平
串口发送示例:FE FE 04 61 17 01 FA
无返回值
读取Atom IO(getDigitalInput)
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X62 |
Data[4] | 引脚序号 | pin_no |
Data[5] | 结束帧 | 0XFA |
读取引脚P22的电平信号
串口发送示例:FE FE 03 62 16 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X04 |
Data[3] | 返回指令帧 | 0X62 |
Data[4] | 引脚序号 | pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
假设引脚P22为高电平
串口返回示例:FE FE 04 62 16 01 FA
读取夹爪角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X65 |
Data[6] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 65 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X65 |
Data[4] | 夹爪张开幅度 | value |
Data[6] | 结束帧 | 0XFA |
value:0-100%
假设夹爪处于全张开状态
串口返回示例:FE FE 03 65 64 FA
夹爪张开大小 = 6 * 16 + 4 = 100
设置夹爪模式
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 指令帧 | 0X66 |
Data[4] | 夹爪张开/收拢 | 0X00/0X01 |
Data[5] | 速度 | Sp |
Data[6] | 结束帧 | 0XFA |
设置夹爪以50速度张开
串口发送示例:FE FE 04 66 00 32 FA
无返回值
设置夹爪角度
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 指令帧 | 0X67 |
Data[4] | 夹爪张开幅度 | value |
Data[6] | 速度 | Sp |
Data[7] | 结束帧 | 0XFA |
假设夹爪张开50%,速度为20
串口发送示例:FE FE 04 67 32 14 FA
value直接换算成16进制即可
无返回值
夹爪设置零点
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X68 |
Data[4] | 结束帧 | 0XFA |
设置夹爪当前位置为零点
串口发送示例:FE FE 02 68 FA
检测夹爪是否运动
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X69 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 69 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X69 |
Data[4] | 停止/运动 | 00/01 |
Data[5] | 结束帧 | 0XFA |
假设夹爪处于停止状态
串口返回示例:FE FE 03 69 00 FA
设定atom屏幕RGB灯的颜色
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X05 |
Data[3] | 指令帧 | 0X6A |
Data[4] | R | 0X00/0XFF |
Data[5] | G | 0X00/0XFF |
Data[6] | B | 0X00/0XFF |
Data[7] | 结束帧 | 0XFA |
设置RGB为蓝色
串口发送示例:FE FE 05 6A 00 00 FF FA
无返回值
设置底座IO输出
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 指令帧 | 0Xa0 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
设置引脚2输出高电平
串口发送示例:FE FE 02 a0 02 01 FA
读取底座IO输出
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0Xa1 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 结束帧 | 0XFA |
串口发送示例:FE FE 03 a1 02 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回识别帧 | 0XFE |
Data[1] | 返回识别帧 | 0XFE |
Data[2] | 返回数据长度帧 | 0X04 |
Data[3] | 返回指令帧 | 0Xa1 |
Data[4] | 引脚序号 | Pin_no |
Data[5] | 电平信号 | 0X00/0X01 |
Data[6] | 结束帧 | 0XFA |
假设引脚2为高电平
串口返回示例:FE FE 04 a1 02 01 FA
获取WiFi账号&密码
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0Xb1 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 b1 FA
串口返回示例:ssid: MyCobotWiFi2.4G password: mycobot123
ssid:WiFi账号
password:WiFi密码
设置端口号
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X04 |
Data[3] | 指令帧 | 0Xb2 |
Data[4] | 端口号高字节 | port_high |
Data[5] | 端口号低字节 | port_low |
Data[6] | 结束帧 | 0XFA |
假设设置端口号为7000
串口发送示例:FE FE 04 b2 1b 58 FA
port_high:端口号十六进制高字节
port_low:端口号十六进制低字节
无返回值
设置工具坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X0E |
Data[3] | 指令帧 | 0X81 |
Data[4] | 指定x坐标高位 | x_high |
Data[5] | 指定x坐标低位 | x_low |
Data[6] | 指定y坐标高位 | y_high |
Data[7] | 指定y坐标低位 | y_low |
Data[8] | 指定z坐标高位 | z_high |
Data[9] | 指定z坐标低位 | z_low |
Data[10] | 指定rx坐标高位 | rx_high |
Data[11] | 指定rx坐标低位 | rx_low |
Data[12] | 指定ry坐标高位 | ry_high |
Data[13] | 指定ry坐标低位 | ry_low |
Data[14] | 指定rz坐标高位 | rz_high |
Data[15] | 指定rz坐标低位 | rz_low |
Data[16] | 结束帧 | 0XFA |
假设设置(0,0,50,0,0,0)为工具坐标系
串口发送示例:FE FE 0E 81 00 00 00 00 13 88 00 00 00 00 00 00 FA
无返回值
获取工具坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X82 |
Data[6] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 82 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X0E |
Data[3] | 返回指令帧 | 0X82 |
Data[4] | 指定x坐标高位 | x_high |
Data[5] | 指定x坐标低位 | x_low |
Data[6] | 指定y坐标高位 | y_high |
Data[7] | 指定y坐标低位 | y_low |
Data[8] | 指定z坐标高位 | z_high |
Data[9] | 指定z坐标低位 | z_low |
Data[10] | 指定rx坐标高位 | rx_high |
Data[11] | 指定rx坐标低位 | rx_low |
Data[12] | 指定ry坐标高位 | ry_high |
Data[13] | 指定ry坐标低位 | ry_low |
Data[14] | 指定rz坐标高位 | rz_high |
Data[15] | 指定rz坐标低位 | rz_low |
Data[16] | 结束帧 | 0XFA |
串口返回示例:FE FE 0E 82 00 00 00 00 13 88 00 00 00 00 00 00 FA
如何得出x坐标
temp = x_low + x_high*256
x坐标=(temp \ 33000 ?(temp – 65536) : temp)/10
计算方式:x坐标值低位 +x坐标值高位乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以100 如果小于33000就直接除以10
(y坐标z坐标同理)
如何得出rx坐标
temp = rx_low + rx_high*256
x坐标=(temp \ 33000 ?(temp – 65536) : temp)/100
计算方式:x坐标值低位 +x坐标值高位乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以100 如果小于33000就直接除以100
(ry坐标rz坐标同理)
设置世界坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X0E |
Data[3] | 指令帧 | 0X83 |
Data[4] | 指定x坐标高位 | x_high |
Data[5] | 指定x坐标低位 | x_low |
Data[6] | 指定y坐标高位 | y_high |
Data[7] | 指定y坐标低位 | y_low |
Data[8] | 指定z坐标高位 | z_high |
Data[9] | 指定z坐标低位 | z_low |
Data[10] | 指定rx坐标高位 | rx_high |
Data[11] | 指定rx坐标低位 | rx_low |
Data[12] | 指定ry坐标高位 | ry_high |
Data[13] | 指定ry坐标低位 | ry_low |
Data[14] | 指定rz坐标高位 | rz_high |
Data[15] | 指定rz坐标低位 | rz_low |
Data[16] | 结束帧 | 0XFA |
假设设置(0,0,50,0,0,0)为世界坐标系
串口发送示例:FE FE 0E 83 00 00 00 00 13 88 00 00 00 00 00 00 FA
无返回值
获取世界坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X84 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 82 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X0E |
Data[3] | 返回指令帧 | 0X84 |
Data[4] | 指定x坐标高位 | x_high |
Data[5] | 指定x坐标低位 | x_low |
Data[6] | 指定y坐标高位 | y_high |
Data[7] | 指定y坐标低位 | y_low |
Data[8] | 指定z坐标高位 | z_high |
Data[9] | 指定z坐标低位 | z_low |
Data[10] | 指定rx坐标高位 | rx_high |
Data[11] | 指定rx坐标低位 | rx_low |
Data[12] | 指定ry坐标高位 | ry_high |
Data[13] | 指定ry坐标低位 | ry_low |
Data[14] | 指定rz坐标高位 | rz_high |
Data[15] | 指定rz坐标低位 | rz_low |
Data[16] | 结束帧 | 0XFA |
串口返回示例:FE FE 0E 84 00 00 00 00 13 88 00 00 00 00 00 00 FA
如何得出x坐标
temp = x_low + x_high*256
x坐标=(temp \ 33000 ?(temp – 65536) : temp)/10
计算方式:x坐标值低位 +x坐标值高位乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以100 如果小于33000就直接除以10
(y坐标z坐标同理)
如何得出rx坐标
temp = rx_low + rx_high*256
x坐标=(temp \ 33000 ?(temp – 65536) : temp)/100
计算方式:x坐标值低位 +x坐标值高位乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以100 如果小于33000就直接除以100
(ry坐标rz坐标同理)
设置基坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X85 |
Data[4] | 基坐标/世界坐标 | 00/01 |
Data[5] | 结束帧 | 0XFA |
假设设置坐标系为世界坐标系
串口发送示例:FE FE 03 85 01 FA
无返回值
获取基坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X86 |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 86 FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X86 |
Data[4] | 基坐标/世界坐标 | 00/01 |
Data[4] | 结束帧 | 0XFA |
串口返回示例:FE FE 03 86 01 FA
设置末端坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X03 |
Data[3] | 指令帧 | 0X89 |
Data[4] | 法兰/工具 | 00/01 |
Data[5] | 结束帧 | 0XFA |
假设设置末端坐标系为工具
串口发送示例:FE FE 03 89 01 FA
无返回值
获取末端坐标系
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 识别帧 | 0XFE |
Data[1] | 识别帧 | 0XFE |
Data[2] | 数据长度帧 | 0X02 |
Data[3] | 指令帧 | 0X8a |
Data[4] | 结束帧 | 0XFA |
串口发送示例:FE FE 02 8a FA
返回数据结构
数据域 | 说明 | 数据 |
---|---|---|
Data[0] | 返回帧头 | 0XFE |
Data[1] | 返回帧头 | 0XFE |
Data[2] | 返回长度帧 | 0X03 |
Data[3] | 返回指令帧 | 0X8a |
Data[4] | 法兰/工具 | 00/01 |
Data[4] | 结束帧 | 0XFA |
串口返回示例:FE FE 03 86 01 FA
附录:
在ATOM库和运动学库中添加了相应的坐标变换程序,具体实现方式如下所述:
改变末端坐标系
通过setEndType和getEndType函数可以设置末端坐标系,EndType::FLANGE为将末端设置为法兰,EndType::TOOL为将末端设置为工具末端。
通过setToolReference和getToolReference函数可以设置读取工具的坐标信息。设置时是以法兰坐标系为相对坐标系,工具末端信息是相对于法兰坐标系的。
将EndType设置为FLANGE后,GetCoords和WriteCoords方法均以法兰位置计算。
将EndType设置为TOOL后,GetCoords和WriteCoords方法均以工具末端位置计算。
改变基坐标系
通过setReferenceFrame函数可以设置基坐标系,RFType::BASE为将机器人基座作为基坐标,RFType::WORLD为将世界坐标系作为基坐标。getReferenceFrame函数为读取当前基坐标系种类。
通过setWorldReference和getWorldReference函数可以设置读取基坐标系信息。设置时是以世界坐标系为相对坐标系,输入机器人的基座相对于世界坐标系的位置信息。
当基坐标系为基座时,GetCoords和WriteCoords方法均以基座为参考坐标系。
当基坐标系为世界坐标系时,GetCoords和WriteCoords方法均以世界坐标系作为参考坐标系。
通信相关更改(暂时)
现增加末端坐标系的设置与读取,世界坐标系的设置与读取,当前参考坐标系的设置与读取,末端类型的设置与读取,移动方式的设置与读取,机械臂信息的发送接收。
这些通信暂时设置为0x80至0x8A
在ParameterList.h文件中新增roboticMessages空间用于添加机械臂通信信息,现只暂时增加“没有逆解”的提示,后续可陆续增加。
MOVEL功能简单设计思想如下:
求出初始点位和目标点位之间的欧式距离,以欧式距离为基准,每隔10mm插入一个插值点,如果插值点没有逆解,搜索位置不变三个方向姿态正负PI/30的临近空间内是否有逆解,主要是避免奇异值以及一些恰好不能求出解的特殊位置。
MOVEL和JOG的点位发送间隔时间改为动态时间,根据两点之间最大关节移动距离计算移动时间,再讲该移动时间减去特定时长作为时间间隔。