通信与报文命令

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

communication

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] 数据长度帧 0X02
Data[3] 指令帧 0X15
Data[4] 结束帧 0XFA

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

返回数据结构

数据域 说明 数据
Data[0] 返回帧头 0XFE
Data[1] 返回帧头 0XFE
Data[2] 返回长度帧 0X09
Data[3] 返回指令帧 0X15
Data[4] 关节1状态 J1_angle
Data[4] 关节2状态 J1_angle
Data[4] 关节3状态 J1_angle
Data[4] 关节4状态 J1_angle
Data[4] 关节5状态 J1_angle
Data[4] 关节6状态 J1_angle
Data[4] atom状态 atom
Data[5] 结束帧 0XFA

bit1-7:1-6关节,7:atom 状态码:0--无异常; 1--急停被按下; 16-31:通信有问题:16-22:通信断开,j1:16,j2:17; 23-28:通信不稳定; 32-111:舵机问题:32-47:电压过/欠压; 48-63:磁编码异常;64-79:温度过热; 80-95:电流过流;96-111:负载过载 当机器人异常时, 不会响应机器人运动指令(atom异常时,不会影响机器人运动)

假设无异常

串口返回示例:FE FE 09 15 00 00 00 00 00 00 00 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] 返回长度帧 0X10
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] 7号舵机角度高位 Angle7_high
Data[17] 7号舵机角度低位 Angle7_low
Data[18] 结束帧 0XFA

串口返回示例:FE FE 10 20 27 10 00 00 00 00 00 00 00 00 00 00 00 00 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[6] 角度值高位 angle_high
Data[5] 角度值低位 angle_low
Data[7] 指定速度 sp
Data[8] 结束帧 0XFA

使1号舵机以20%速度移动到零位

串口发送示例:FE FE 06 21 01 00 00 14 FA

joint_no取值范围: 1~7

angle_high:数据类型byte

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

angle_low:数据类型byte

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

无返回值


发送全部角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X11
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] 7号舵机角度值高字节 Angle7_ high
Data[17] 7号舵机角度值低字节 Angle7_ low
Data[18] 指定速度 Sp
Data[19] 结束帧 0XFA

发送全部角度均为零/让机械恢复到零位,以30%速度移动

串口发送示例:FE FE 11 22 00 00 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] 返回长度帧 0X10
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 10 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 27 01 FA


程序恢复

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

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

无返回值


程序停止

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

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

无返回值


是否达到点位

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X11
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 11 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


程序停止

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

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

无返回值


获取零空间偏转角度值

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

串口发送示例:FE FE 02 2E FA

返回数据结构

数据域 说明 数据
Data[0] 返回帧头 0XFE
Data[1] 返回帧头 0XFE
Data[2] 返回长度帧 0X04
Data[3] 返回指令帧 0X2E
Data[4] 1号关节偏转角度值高字节 J1_Angle_high
Data[5] 1号关节偏转角度值低字节 J1_Angle_low
Data[6] 结束帧 0XFA

假设获取零空间偏转角度值

串口返回示例:FE FE 04 2E 46 4C FA


设置零空间偏转角度值

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 指令帧 0X2F
Data[4] 1关节舵机角度值高字节 J1_Angle_high
Data[5] 1关节舵机角度值低字节 J1_Angle_low
Data[7] 指定速度 sp
Data[4] 结束帧 0XFA

速度20

串口发送示例:FE FE 04 2F 00 00 14 FA

无返回值


关节控制

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 指令帧 0X30
Data[4] 关节舵机序号 Joint
Data[5] 关节舵机方向 direction
Data[7] 指定速度 sp
Data[8] 结束帧 0XFA

设定1号舵机转到45°,速度20

串口发送示例: FE FE 05 30 01 01 14 FA

无返回值


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~7

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] 关节舵机方向 direction
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] 数据长度帧 0X05
Data[3] 指令帧 0X33
Data[4] 关节舵机序号 Joint
Data[5] 模式 stepper_mode
Data[6] 指定速度 sp
Data[7] 结束帧 0XFA

设定1号舵机角度增加45,以20%速度转动

串口发送示例: FE FE 05 33 01 01 14 FA

关节序号取值范围: 1~7

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] 数据长度帧 0X06
Data[3] 指令帧 0X3A
Data[4] 关节舵机序号 Joint
Data[5] 电位值高位 Encoder_high
Data[6] 电位值低位 Encoder_low
Data[7] 指定速度 Sp
Data[8] 结束帧 0XFA

示例,设定5号关节到2048电位。

串口发送示例: FE FE 06 3A 05 08 00 14 FA

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

Joint:数据类型byte

Encoder_high:数据类型byte

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

Encoder_low:数据类型byte

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

无返回值


获取电位值

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

返回数据结构

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

串口返回示例: FE FE 04 3B 08 07 FA

如何计算电位值

电位值 = 电位值低位 + 电位值高位 * 256


发送七个舵机的电位值

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X11
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] 7号舵机电位值高字节 encoder_7_high
Data[17] 7号舵机电位值低字节 encoder_7_low
Data[18] 指定速度 Sp
Data[19] 结束帧 0XFA

发送所有电机的电位值均为2048,速度为20

串口发送示例:FE FE 11 3C 08 00 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] 7号舵机电位值高字节 encoder_7_high
Data[17] 7号舵机电位值低字节 encoder_7_low
Data[18] 结束帧 0XFA

假设当前机械臂各关节都处于0位

串口返回示例: FE FE 0E 3D 08 00 08 00 08 00 08 00 08 00 08 00 08 00 FA

如何计算电位值

电位值 = 电位值低位 + 电位值高位 * 256


设置关节电位值、速度值

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X1E
Data[3] 指令帧 0X3E
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] 7号舵机电位值高字节 encoder_7_high
Data[17] 7号舵机电位值低字节 encoder_7_low
Data[18] 1号舵机速度值高字节 speed_1_high
Data[19] 1号舵机速度值低字节 speed_1_low
Data[20] 2号舵机速度值高字节 speed_2_high
Data[21] 2号舵机速度值低字节 speed_2_low
Data[22] 3号舵机速度值高字节 speed_3_high
Data[23] 3号舵机速度值低字节 speed_3_low
Data[24] 4号舵机速度值高字节 speed_4_high
Data[25] 4号舵机速度值低字节 speed_4_low
Data[26] 5号舵机速度值高字节 speed_5_high
Data[27] 5号舵机速度值低字节 speed_5_low
Data[28] 6号舵机速度值高字节 speed_6_high
Data[29] 6号舵机速度值低字节 speed_6_low
Data[30] 7号舵机速度值高字节 speed_7_high
Data[31] 7号舵机速度值低字节 speed_7_low
Data[32] 结束帧 0XFA

读取速度

数据域 说明 数据
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] 数据长度帧 0X02
Data[3] 指令帧 0X44
Data[4] 结束帧 0XFA

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

返回数据结构

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

假设当前速度为50%

串口返回示例:FE FE 03 44 32 FA


设置加速度

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

Sp:数据类型byte 取值范围:0~100

设定当前速度为50%

串口发送示例:FE FE 03 45 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-7

返回数据结构

数据域 说明 数据
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 04 4A 02 F2 F9 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-7

读取2号关节的最大角度

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

返回数据结构

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

串口返回示例: FE FE 04 4B 02 72 06 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-7

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

joint_no取值范围:1-7

angle1_high:数据类型byte

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

angle1_low:数据类型byte

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

串口发送示例: FE FE 05 4D 02 94 11 FA

无返回值


查看连接

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

joint_no取值范围:1-7

查看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~7

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] 返回数据长度帧 0X04
Data[3] 返回指令帧 0X53
Data[4] 返回数据 data
Data[5] 结束帧 0XFA

串口返回示例:FE FE 04 53 10 FA


设置舵机伺服参数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X06
Data[3] 指令帧 0X52
Data[4] 关节舵机序号 joint_no
Data[5] 数据地址 data_id
Data[6] 数据 data
Data[7] 结束帧 0XFA

设置1号舵机位置P比例参数为1

串口发送示例:FE FE 06 52 01 15 01 FA

joint_no取值范围:1~7

无返回值

​ 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~7

无返回值


刹车单个电机

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

刹车1号舵机

joint_number:1~7

串口发送示例: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~7

无返回值


单个电机上电

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

无返回值


获取关节运行速度

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

给1号舵机上电

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

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X10
Data[3] 返回指令帧 0XE1
Data[4] 1号关节速度值低字节 speed_1_low
Data[5] 1号关节速度值高字节 speed_1_high
Data[6] 2号关节速度值低字节 speed_2_low
Data[7] 2号关节速度值高字节 speed_2_high
Data[8] 3号关节速度值低字节 speed_3_low
Data[9] 3号关节速度值高字节 speed_3_high
Data[10] 4号关节速度值低字节 speed_4_low
Data[11] 4号关节速度值高字节 speed_4_high
Data[12] 5号关节速度值低字节 speed_5_low
Data[13] 5号关节速度值高字节 speed_5_high
Data[14] 6号关节速度值低字节 speed_6_low
Data[15] 6号关节速度值高字节 speed_6_high
Data[16] 7号关节速度值低字节 speed_7_low
Data[17] 7号关节速度值高字节 speed_7_high
Data[18] 结束帧 0XFA

假设当前速度为0%

串口返回示例:FE FE 0E E1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FA


获取关节电压

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

给1号舵机上电

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

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X09
Data[3] 返回指令帧 0XE3
Data[4] 1号关节电压值 voltage_1
Data[5] 2号关节电压值 voltage_2
Data[6] 3号关节电压值 voltage_3
Data[7] 4号关节电压值 voltage_4
Data[8] 5号关节电压值 voltage_5
Data[9] 6号关节电压值 voltage_6
Data[10] 7号关节电压值 voltage_7
Data[11] 结束帧 0XFA

串口返回示例:FE FE 09 E3 79 78 7B 79 4B 4a 50 FA


获取关节状态

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

给1号舵机上电

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

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X09
Data[3] 返回指令帧 0XE4
Data[4] 1号关节状态 status_1
Data[5] 2号关节状态 status_2
Data[6] 3号关节状态 status_3
Data[7] 4号关节状态 status_4
Data[8] 5号关节状态 status_5
Data[9] 6号关节状态 status_6
Data[10] 7号关节状态 status_7
Data[11] 结束帧 0XFA

假设各关节状态正常

0表示各关节正常

串口返回示例:FE FE 09 E4 00 00 00 00 00 00 00 FA


获取关节温度

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

给1号舵机上电

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

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X09
Data[3] 返回指令帧 0XE5
Data[4] 1号关节温度 temp_1
Data[5] 2号关节温度 temp_2
Data[6] 3号关节温度 temp_3
Data[7] 4号关节温度 temp_4
Data[8] 5号关节温度 temp_5
Data[9] 6号关节温度 temp_6
Data[10] 7号关节温度 temp_7
Data[11] 结束帧 0XFA

假设获取各关节状态

关节温度范围0-255

串口返回示例:FE FE 08 E5 00 00 00 00 00 00 00 FA


设置atom引脚模式

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 指令帧 0X60
Data[4] 引脚序号 pin_no
Data[5] 输入/输出 00X00/00X01/00X10
Data[6] 结束帧 0XFA

设置atom pin22为输入模式

串口发送示例:FE FE 04 60 16 00 FA

Pin_no:数据类型byte

Pin_mode:0/1/2

无返回值


设置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] 返回数据长度帧 0X03
Data[3] 返回指令帧 0X62
Data[4] 引脚序号 pin_no
Data[5] 电平信号 0X00/0X01
Data[6] 结束帧 0XFA

假设引脚P22为高电平

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

返回数据结构

数据域 说明 数据
Data[0] 返回识别帧 0XFE
Data[1] 返回识别帧 0XFE
Data[2] 返回数据长度帧 0X03
Data[3] 返回指令帧 0Xa1
Data[4] 引脚序号 pin_no
Data[5] 电平信号 0X00/0X01
Data[6] 结束帧 0XFA

假设引脚P22为高电平

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



设置 IO输出的PWM信号开关

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

设置引脚P23为高电平

串口发送示例:FE FE 03 63 17 01 FA

无返回值


设置 IO输出的PWM信号配置信息

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X06
Data[3] 指令帧 0X64
Data[4] 引脚序号 pin_Number
Data[5] PWM高信号 frequency_high
Data[6] PWM低信号 frequency_low
Data[7] 工作周期 duty_cycle
Data[8] 结束帧 0XFA

串口发送示例:FE FE 06 64 00 01 00 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/0X10
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] 指令帧 0X70
Data[4] R 0X00/0XFF
Data[5] G 0X00/0XFF
Data[6] B 0X00/0XFF
Data[7] 结束帧 0XFA

设置RGB为蓝色

串口发送示例:FE FE 05 70 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 04 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] 返回数据长度帧 0X03
Data[3] 返回指令帧 0Xa1
Data[4] 引脚序号 Pin_no
Data[5] 电平信号 0X00/0X01
Data[6] 结束帧 0XFA

假设引脚2为高电平

串口返回示例:FE FE 03 a1 02 01 FA


设置工具坐标系

数据域 说明 数据
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] 指令帧 0X87
Data[4] 移动类型 J/I 00/01
Data[5] 结束帧 0XFA

假设设置移动类型move_J

串口发送示例:FE FE 03 87 00 FA

无返回值


获取移动类型

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X88
Data[4] 移动类型 J/I 00/01
Data[5] 结束帧 0XFA

假设获取移动类型move_J

串口发送示例:FE FE 02 88 00 FA

返回数据结构

数据域 说明 数据
Data[0] 返回帧头 0XFE
Data[1] 返回帧头 0XFE
Data[2] 返回长度帧 0X03
Data[3] 返回指令帧 0X88
Data[4] 移动类型 00/01
Data[4] 结束帧 0XFA

串口返回示例:FE FE 03 88 00 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 8a 01 FA


获取串口透传模式配置信息

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

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

返回数据结构

数据域 说明 数据
Data[0] 返回帧头 0XFE
Data[1] 返回帧头 0XFE
Data[2] 返回长度帧 0X03
Data[3] 返回指令帧 0Xb0
Data[4] 返回透传模式 0X00/0X01/0X10
Data[5] 结束帧 0XFA

bits1: mode(0-1-2) 串口返回示例:FE FE 03 b0 00 FA


设置串口透传模式

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

bit0:0/1/2 0关闭透传,1打开透传,校验所有数据,2打开透传,只校验通讯转发模式配置信息 (默认为0) 串口发送示例:FE FE 03 b1 00 FA

无返回值

附录:

在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 ""