通信与报文命令

注意:使用通信协议直接通信,需要在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] 数据长度帧 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库和运动学库中添加了相应的坐标变换程序,具体实现方式如下所述:

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