6 通信与报文命令

注意:使用通信协议直接通信,需要在basic中烧录transponder,在atom中烧录最新版的atomMain

communication

6.1USB通信设置Communication Settings


请确保您的通信设置如下

  • 总线接口: USB Type-C连接
  • 波特率: 115200
  • 数据位: 8
  • 奇偶校验:无
  • 停止位: 1

6.2命令帧说明及单一指令解析

主机Basic向从机发送数据,从机接收到数据后进行解析,如包含返回值的指令,从机会在500ms内返回给主机。

6.3命令帧发送与接收格式

所有命令为十六进制,发送与接收格式一致。

每个通信命令必须包含以下5个部分,其中3、4可为空。

  • 1 命令针头: 0xFE 0xFE
    • 固定
    • 必含
  • 2 有效命令长度: 0x02 ~ 0x10
    • 以下所有命令的长度
    • 必含
  • 3 命令序号: 00 ~ 8F
    • 现已开发了多种命令
    • 可为空
  • 4 命令内容: 若干
    • 可为空
  • 5 命令结束: 0XFA
    • 固定
    • 必含

6.4指令解析

主机Basic向从机发送数据,从机接收到数据后进行解析,如包含返回值的指令,从机会在500ms内返回给主机。

类型 数据描述 数据长度 说明
命令帧 头字节0 1 帧头识别,0XFE
头字节1 1 帧头识别,0XFE
数据长度字节 1 不同指令对应不同长度数据
命令字节 1 视不同命令而定
数据帧 数据 0-16 命令附带数据,视不同命令而定
结束帧 结束字节 1 停止位,0XFA

6.5单一指令解析

1、Atom打开通讯

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X10
Data[4] 结束帧 0XFA

串口发送示例:FE FE 02 10 FA

无返回值


2、Atom关闭通讯

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X11
Data[4] 结束帧 0XFA

串口发送示例:FE FE 02 11 FA

无返回值


3、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


4、读取角度(读取走位信息)

数据域 说明 数据
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

(其余同理)


5、发送单独角度

数据域 说明 数据
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取值范围: 0~5

angle_high:数据类型byte

计算方式:角度值乘以100 先转换成int形式 再取十六进制的高字节

angle_low:数据类型byte

计算方式:角度值乘以100 先转换成int形式 再取十六进制的低字节

无返回值


6、发送全部角度

数据域 说明 数据
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形式 再取十六进制的低字节

(其余同理)

无返回值


7、读取全部坐标

数据域 说明 数据
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坐标同理)


8、发送单独坐标参数

数据域 说明 数据
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坐标为14,目标速度为20%

串口发送示例:FE FE 06 24 00 00 8C 14 FA

指定坐标axis:数据类型byte

取值范围:0~5

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 再取十六进制的低字节

无返回值


9、发送全部坐标参数

数据域 说明 数据
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

设定机械臂末端目标点位(-14,-27,275,-89.5,0.7,-90.7),目标速度50%

串口发送示例:FE FE 10 25 FF 74 FE EE 0A C1 DD 05 00 48 DC 95 32 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轴坐标同理)

无返回值


10、是否达到点位(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X0E/0X0F
Data[3] 指令帧 0X2A
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] Is_linear type
Data[17] 结束帧 0XFA

判断机械臂是否到达指定点位

串口发送示例: FE FE 0E 2A FF 74 FE EE 0A C1 DD 05 00 48 DC 95 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轴坐标同理)

Type:数据类型byte(暂未使用)


11、机械臂运动检测(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X2B
Data[4] 结束帧 0XFA

12、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%

无返回值


13、jog-坐标方向运动(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 指令帧 0X32
Data[4] 指定坐标 axis
Data[5] 关节舵机方向 direction
Data[6] 指定速度 sp
Data[7] 结束帧 0XFA

14、jog-停止

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X34
Data[4] 结束帧 0XFA

jog停止运动

串口发送示例: FE FE 02 34 FA

无返回值


15、发送电位值

数据域 说明 数据
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

计算方式:取电位值值(十六进制)的低位

无返回值


16、获取电位值

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X3B
Data[4] 关节序号 joint
Data[5] 结束帧 0XFA

获取2号舵机电位值

串口发送示例: FE FE 01 3B 01 FA

关节序号取值范围:0~5

返回数据结构

数据域 说明 数据
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


17、发送六个舵机的电位值

数据域 说明 数据
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%

无返回值


18、读取速度

数据域 说明 数据
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


19、设置速度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X41
Data[4] 指定速度 sp
Data[5] 结束帧 0XFA

设定当前速度为50%

串口发送示例:FE FE 03 41 32 FA

无返回值


20、读取FeedOverride(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X42
Data[4] 结束帧 0XFA

21、读取加速度(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X44
Data[4] 结束帧 0XFA

22、读取关节最小角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X4A
Data[4] 关节舵机序号 Joint_number
Data[5] 结束帧 0XFA

读取2号关节最小角度

串口发送示例: FE FE 03 4A 01 FA

joint_no取值范围:0~5

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X04
Data[3] 返回指令帧 0X4A
Data[4] 舵机角度值高位 Angle_high
Data[5] 舵机角度值低位 Angle_low
Data[6] 结束帧 0XFA

串口返回示例: FE FE 04 4A F9 F2 FA

如何得出关节最小角度

temp = angle1_low+angle1_high*256

Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10

计算方式:角度值低位 + 角度高位值乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以10 如果小于33000就直接除以10


23、读取关节最大角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X4B
Data[4] 关节舵机序号 joint_number
Data[5] 结束帧 0XFA

读取2号关节的最大角度

串口发送示例: FE FE 03 4B 01 FA

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X04
Data[3] 返回指令帧 0X4B
Data[4] 舵机角度值高位 Angle_high
Data[5] 舵机角度值低位 Angle_low
Data[6] 结束帧 0XFA

串口返回示例: FE FE 04 4B 06 0E FA

joint_no取值范围:0~5

如何得出关节最大角度

temp = angle1_low+angle1_high*256

Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10

计算方式:角度值低位 + 角度高位值乘以256 先判断是否大于33000 如果大于33000就再减去65536 最后除以10 如果小于33000就直接除以10


24、查看连接

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X50
Data[4] 结束帧 0XFA

串口发送示例:FE FE 03 50 FA

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X03
Data[3] 指令帧 0X50
Data[4] 连接/未连接 0X01/0X00
Data[5] 结束帧 0XFA

连接正常

串口返回示例:FE FE 03 50 01 FA


25、查看舵机是否全部上电(暂未开放)

数据域 说明 数据
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


26、读取伺服参数

数据域 说明 数据
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


27、设置舵机伺服参数

数据域 说明 数据
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

无返回值

取值如下表

地址 功能 取值范围 初始值 取值解析
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%

28、设置舵机零点(暂未开放)

数据域 说明 数据
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

无返回值


29、刹车单个电机(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X55
Data[4] 关节舵机序号 joint_number
Data[5] 结束帧 0XFA

30、程序暂停运行(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X26
Data[4] 结束帧 0XFA

31、程序是否运行(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X27
Data[6] 结束帧 0XFA

32、程序恢复(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X28
Data[4] 结束帧 0XFA

33、程序停止运行(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X29
Data[4] 结束帧 0XFA

34、机器人自由模式(关闭所有扭力输出)(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X13
Data[4] 结束帧 0XFA

35、机器人系统检测正常(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X14
Data[4] 结束帧 0XFA

36、机器人错误检测(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X15
Data[4] 结束帧 0XFA

37、设置成自由模式(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[2] 模式 0X00/0X01
Data[3] 指令帧 0X1A
Data[4] 结束帧 0XFA

38、检查是否是自由模式(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X1B
Data[4] 结束帧 0XFA

39、设定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

无返回值


40、设置FeedOverride(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 指令帧 0X43
Data[4] Feed_override高位 Feed_override_high
Data[5] Feed_override低位 Feed_override_low
Data[6] 结束帧 0XFA

41、设置加速度(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 指令帧 0X45
Data[4] 加速度值高位 acceleration_high
Data[5] 加速度值低位 acceleration_low
Data[6] 结束帧 0XFA

acceleration_high:数据类型byte

计算方式:加速度值乘以10 先转换为int格式 再取十六进制的高字节

acceleration_low:数据类型byte

计算方式:加速度值乘以10 先转换为int格式 再取十六进制的低字节


42、设置关节最小角度(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 指令帧 0X4C
Data[4] 关节舵机序号 Joint
Data[5] 角度值高位 Angle_high
Data[6] 角度值低位 Angle_low
Data[7] 结束帧 0XFA

43、设置关节最大角度(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 指令帧 0X4D
Data[4] 关节舵机序号 Joint
Data[5] 角度值高位 Angle_high
Data[6] 角度值低位 Angle_low
Data[7] 结束帧 0XFA

44、单个电机掉电

数据域 说明 数据
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

无返回值


45、单个电机上电

数据域 说明 数据
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

无返回值


46、设置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

无返回值


47、设置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

无返回值


48、读取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] 返回数据长度帧 0X03
Data[3] 返回指令帧 0X62
Data[4] 电平信号 0X00/0X01
Data[5] 结束帧 0XFA

假设引脚P22为高电平

串口返回示例:FE FE 03 62 01 FA


49、设置Atom引脚PWM输出

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X06
Data[3] 指令帧 0X64
Data[4] 通道 Pin_no
Data[5] 晶振频率_高 freq_high
Data[6] 晶振频率_低 freq_low
Data[7] 占空比 pin_val
Data[8] 结束帧 0XFA

设置atom 23号引脚 输出晶振频率为10000,占空比为50%的PWM波形

串口发送示例:FE FE 06 64 17 27 10 32 FA

无返回值


50、读取夹爪角度

数据域 说明 数据
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] 数据长度帧 0X04
Data[3] 指令帧 0X65
Data[4] 电位值高位 Angle_high
Data[5] 电位值低位 Angle_low
Data[6] 结束帧 0XFA

串口返回示例:FE FE 04 65 08 00 FA


51、设置夹爪模式

数据域 说明 数据
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

无返回值


52、设置夹爪角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 指令帧 0X67
Data[4] 角度值高位 encoder_high
Data[5] 角度值低位 encoder_low
Data[6] 速度 Sp
Data[7] 结束帧 0XFA

串口发送示例:FE FE 05 67 08 00 3C FA

无返回值


53、夹爪设置零点

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X68
Data[4] 结束帧 0XFA

设置夹爪当前位置为零点

串口发送示例:FE FE 02 68 FA


54、检测夹爪是否运动(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X69
Data[4] 结束帧 0XFA

55、检测机器人版本(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X01
Data[4] 结束帧 0XFA

56、读取软件版本(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X02
Data[4] 结束帧 0XFA

57、检查本机器人ID(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X03
Data[4] 结束帧 0XFA

58、设置本机器人ID(暂未开发)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X04
Data[4] ID ID
Data[5] 结束帧 0XFA

59、设置底座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(测)


60、读取底座IO输出(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0Xa1
Data[4] 引脚序号 Pin_no
Data[5] 结束帧 0XFA

61、设置碰撞电流(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 指令帧 0X90
Data[4] 舵机序号 Servo_no
Data[5] currentValue currentValue_high
Data[6] currentValue currentValue_low
Data[7] 结束帧 0XFA

62、读取碰撞电流(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 指令帧 0X91
Data[4] 舵机序号 Servo_no
Data[5] 结束帧 0XFA

63、设置碰撞电流开关(暂未开放)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X92
Data[4] OFF/ON 0X00/0X01
Data[5] 结束帧 0XFA

附录:

在ATOM库和运动学库中添加了相应的坐标变换程序,具体实现方式如下所述:

  1. 改变末端坐标系

  2. 通过setEndType和getEndType函数可以设置末端坐标系,EndType::FLANGE为将末端设置为法兰,EndType::TOOL为将末端设置为工具末端。

  3. 通过setToolReference和getToolReference函数可以设置读取工具的坐标信息。设置时是以法兰坐标系为相对坐标系,工具末端信息是相对于法兰坐标系的。

  4. 将EndType设置为FLANGE后,GetCoords和WriteCoords方法均以法兰位置计算。

  5. 将EndType设置为TOOL后,GetCoords和WriteCoords方法均以工具末端位置计算。

  6. 改变基坐标系

  7. 通过setReferenceFrame函数可以设置基坐标系,RFType::BASE为将机器人基座作为基坐标,RFType::WORLD为将世界坐标系作为基坐标。getReferenceFrame函数为读取当前基坐标系种类。

  8. 通过setWorldReference和getWorldReference函数可以设置读取基坐标系信息。设置时是以世界坐标系为相对坐标系,输入机器人的基座相对于世界坐标系的位置信息。

  9. 当基坐标系为基座时,GetCoords和WriteCoords方法均以基座为参考坐标系。

  10. 当基坐标系为世界坐标系时,GetCoords和WriteCoords方法均以世界坐标系作为参考坐标系。

通信相关更改(暂时)

现增加末端坐标系的设置与读取,世界坐标系的设置与读取,当前参考坐标系的设置与读取,末端类型的设置与读取,移动方式的设置与读取,机械臂信息的发送接收。

这些通信暂时设置为0x80至0x8A

在ParameterList.h文件中新增roboticMessages空间用于添加机械臂通信信息,现只暂时增加“没有逆解”的提示,后续可陆续增加。

MOVEL功能简单设计思想如下:

求出初始点位和目标点位之间的欧式距离,以欧式距离为基准,每隔10mm插入一个插值点,如果插值点没有逆解,搜索位置不变三个方向姿态正负PI/30的临近空间内是否有逆解,主要是避免奇异值以及一些恰好不能求出解的特殊位置。

MOVEL和JOG的点位发送间隔时间改为动态时间,根据两点之间最大关节移动距离计算移动时间,再讲该移动时间减去特定时长作为时间间隔。

results matching ""

    No results matching ""