UART总线伺服舵机通信协议¶
版本历史¶
版本号 | 发布日期 | 主要变更 |
---|---|---|
v1.0.25 | 2025-02-21 | 添加全新功能 同步命令 / 三种停止指令 / 数据监控 / 异步命令 ,详情见14,13 ,11 ,10 详细介绍 |
v1.0.21 | 2024-07-03 | 优化文档描述 |
1. 串口通信配置¶
参数名称(en) | 参数名称(cn) | 参数数值 | 备注 |
---|---|---|---|
baudrate | 波特率 | 115200 | 舵机支持多种波特率,参见<参数>波特率选项 |
parity | 奇偶校验 | 无 | |
stopbits | 停止位 | 1 | |
bytesize | 字节长度 | 8 |
2. 数据类型说明¶
通讯协议里用到的数据类型 (字节大小,取值范围)
数据类型 | 数据名称(en) | 数据名称(cn) | 字节长度 | 最小值 | 最大值 |
---|---|---|---|---|---|
uint8_t | byte | 字节 | 1 | 0 | 255 |
uint16_t | unsigned short | 无符号短整型 | 2 | 0 | 65535 |
int16_t | signed short | 有符号短整数 | 2 | -32768 | 32767 |
uint32_t | unsigned long | 无符号长整数 | 4 | 0 | 4294967295 |
int32_t | signed long | 有符号长整数 | 4 | -2147483648 | 2147483647 |
uint8_t[n] | byte array | 变长字节数组 | n |
注意事项:
- 舵机通讯协议里面使用的字节序为 小端字节序,例如一个
uint16_t
的数值4660
,它的十六进制表示为0x1234
。在发送/接收时,低位字节在前,高位字节在后,即以0x34 0x12
形式发送。
计算机电路先处理低位字节,效率比较高,所以在大部分的MCU里面(例如STM32),默认字节序也是小端字节序。
拓展阅读: 理解字节序 大端字节序和小端字节序
3. 舵机控制指令¶
支持20种舵机控制指令。其中9种为通用指令,余下11种指令仅限于 磁编码系列舵机
通用指令
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
1 | PING | 通讯检测 | 检查舵机是否在线 |
2 | RESET_USER_DATA | 自定义参数重置 | 重新将用户参数设置为默认值 |
3 | READ_DATA | 参数&状态数据读取 | 单个读取参数&状态数据 |
4 | WRITE_DATA | 自定义参数写入 | 单个写入舵机参数 |
8 | MOVE_ON_ANGLE_MODE(ROTATE) | 角度模式控制-设置舵机角度 | 设置舵机旋转的目标角度,时间间隔,执行功率 |
9 | MOVE_ON_DAMPING_MODE(DAMPING) | 阻尼模式控制 | 阻尼模式,设置舵机保持的功率 |
10 | READ_ANGLE | 读取舵机角度 | |
11 | MOVE_ON_ANGLE_MODE_EX_BY_INTERVAL | 角度模式控制-指定时间 | 带加减速控制的角度模式, 设置加减速时间,时间间隔,目标角度,执行功率 |
12 | MOVE_ON_ANGLE_MODE_EX_BY_VELOCITY | 角度模式控制-指定速度 | 带加减速控制的角度模式, 设置加减速时间,目标速度,目标角度,执行功率 |
特定指令,仅限于磁编码系列舵机
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
13 | MOVE_ON_MULTI_TURN_ANGLE_MODE(ROTATE) | 多圈角度控制 | 设置舵机旋转的目标角度,时间间隔,执行功率 |
14 | MOVE_ON_MULTI_TURN_ANGLE_MODE_EX_BY_INTERVAL | 多圈角度控制-指定时间 | 带加减速控制的多圈角度模式, 设置加减速时间,时间间隔,目标角度,执行功率 |
15 | MOVE_ON_MULTI_TURN_ANGLE_MODE_EX_BY_VELOCITY | 多圈角度控制-指定速度 | 带加减速控制的多圈角度模式, 设置加减速时间,目标速度,目标角度,执行功率 |
16 | READ_MULTI_TURN_ANGLE | 多圈角度读取 | |
17 | RESET_MULTI_TURN_ANGLE | 清除当前圈数 | 清除后角度范围为[-180,180] |
18 | BEGIN_ASYNC | 异步写入指令 | |
19 | END_ASYNC | 异步执行指令 | |
22 | SERVO_MONITOR | 数据监控 | 批量读取工作状态数据 |
23 | SET_ORIGIN_POINT | 原点设置 | 设置当前角度位置为原点(0°) |
24 | STOP_ON_CONTROL_MODE | 停止指令 | 停止后可选择进入锁定、失锁、阻尼三种状态 |
25 | SYNC_COMMAND | 同步指令 |
注意事项:
- 发送控制指令之前,请确保串联在一起的舵机每个舵机的ID号都不一样。
4. 数据包¶
4.1 请求数据包¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
0 | uint8_t | 0x12 | 请求头标识 | 1 |
1 | uint8_t | 0x4C | 请求头标识 | 1 |
2 | uint8_t | cmd_id | 舵机控制指令ID,详情见 舵机指令 | 1 |
3 | uint8_t | n | 数据包内容的字节长度 | 1 |
[4,4+n-1] | uint8_t[n] | content | 数据包的內容部分,变长 | n |
4+n | uint8_t | checksum | 数据包的校验和。计算方法:对之前所有的字节数据求和 (0号到4+N-1号字节),然后跟256取余 |
1 |
4.2 响应数据包¶
请求数据包跟响应数据包数据结构的唯一区别就在于前两个字节的标识符。
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
0 | uint8_t | 0x05 | 响应头标识 | 1 |
1 | uint8_t | 0x1C | 响应头标识 | 1 |
2 | uint8_t | cmd_id | 舵机控制指令ID,详情见 舵机指令 | 1 |
3 | uint8_t | n | 数据包内容的字节长度 | 1 |
[4,4+n-1] | uint8_t[n] | content | 数据包的內容部分 | n |
4+n | uint8_t | checksum | 数据包的校验和。计算方法:对之前所有的字节数据求和 (0号到4+N-1号字节),然后跟256取余 |
1 |
注意事项:
- 封包内容的第一个字节,往往是舵机的ID号,舵机的ID号取值范围为[0, 254] ,255是舵机广播地址。
- 字节序号是从0开始算的。
- 请求包的
cmd_id
跟响应包的cmd_id
一致。 - 响应数据的接收流程。
如果你需要自己写舵机的通讯协议,可参考的响应数据包获取流程如下:
响应数据包数据读取伪代码
- 读取帧头:读取数据帧
0x05 0x1c
如果不匹配就继续向下读,直到匹配。 - 读取控制指令
cmd_id
:读入下一个字节赋值给cmd_id
,检查ID是否在[1, 10]之间。 - 读取字节长度
n
:读入下一个字节赋值给n
。 - 读取数据包的内容
content
:读入后续的连续n
个字节,赋值给content
。 - 读取校验和
checksum
:读取一个字节,赋值给checksum
,并验证checksum
是否正确。 - 数据包的样例可以参阅#5.1. <指令>舵机通讯检测, #7.1<指令>设置舵机角度 等。
5. 舵机通讯检测¶
5.1 <指令>舵机通讯检测¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
1 | PING | 舵机通讯检测 | 检查舵机是否在线 |
检查舵机是否在线,就需要用到PING指令。PING数据包的内容部分是舵机的ID。
如果ID号的舵机存在且在线,串口舵机在接收到PING指令时,会发送一个响应包。如果ID号的舵机不存在或者掉线,就不会有舵机发送响应数据包。在系统实现时,可以设置一个最大等待时间 timeout
, 如果等待超过 timeout ms
就认为该ID号的舵机不在线。
5.1.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5.1.2 响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5.1.3 数据包示例¶
ping一下3号舵机
请求数据包
功能描述 检查一下3号舵机是否在线。
这就需要 PING(舵机通讯检测)一下编号为3的串口舵机。
- PING指令对应的指令ID
cmd_id = 0x01
- 数据包的内容因为只有舵机的ID
servo_id = 0x03
,所以数据包内容的字节长度n = 0x01
- 计算校验和
checksum = (0x12 + 0x4c + 0x01 + 0x01 + 0x03)%256 = 99 = 0x63
接下来分析一下回传数据,假设舵机存在并在线,返回的字节数据为
0x05 0x1c
: 响应头标识符0x01
:cmd_id
这个包是PING指令的响应数据包0x01
:n
响应数据包内容的长度是10x03
:servo_id
舵机的ID是3
0x26
:checksum
校验和
我们拿到响应数据之后,要通过计算校验和 checksum
判断响应数据包的合法性。
(0x05 + 0x1c + 0x01 + 0x01 + 0x03)%256 = 38 = 0x26
校验和相等, 所以响应包的数据为合法。
6. 舵机参数¶
舵机参数整体上分为用户只读参数(舵机型号,舵机状态等)和用户自定义参数两大类。
6.1. 舵机参数设置/修改¶
6.1.1. <指令>用户自定义参数重置¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
2 | RESET_USER_DATA | 用户自定义参数重置 | 重新将用户参数设置为默认值 |
请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 重置结果(0重置失败, 1 重置成功) | 1 |
6.1.2. <指令>参数&数据读取¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
3 | READ_DATA | 舵机参数&状态数据读取 | 单个读取 |
请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | data_id | 舵机参数的ID , 定义参见舵机只读参数列表 与 舵机用户自定义参数列表 | 1 |
响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | data_id | 舵机参数的ID | 1 |
[6,6+ n -1] | uint8_t[n] | data | 舵机参数的取值 | n |
6.1.3. <指令>用户自定义参数写入¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
4 | WRITE_DATA | 用户自定义参数写入 | 单个写入舵机参数 |
请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | data_id | 舵机参数的ID,定义参见舵机用户自定义参数列表 | 1 |
[6,6+n-1] | uint8_t[n] | data | 舵机参数的取值 | n |
响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | data_id | 舵机参数的ID | 1 |
6 | uint8_t | result | 参数设置结果: (0写入失败, 1 写入成功) | 1 |
6.2. 舵机只读参数¶
舵机只读参数是指用户只能读取不能写入的数值。只读参数包括舵机当前的电气状态,舵机工作状态以及舵机的自身信息。
6.2.1. 舵机只读参数列表¶
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 备注 |
---|---|---|---|---|---|---|
1 | voltage | 舵机电压 | uint16_t | 2 | mV | |
2 | current | 舵机电流 | uint16_t | 2 | mA | |
3 | power | 舵机动率 | uint16_t | 2 | mW | |
4 | temprature | 舵机温度 | uint16_t | 2 | ADC | |
5 | servo_status | 舵机工作状态 | uint8_t | 1 | ||
6 | servo_type | 舵机型号 | uint16_t | 2 | ||
7 | firmware_version | 舵机固件版本 | uint16_t | 2 | ||
8 | serial_number | 舵机序列号 | uint32_t | 4 |
注意事项:
- 舵机序列号(serial_number)并不是舵机ID,它是舵机的唯一识别符。
- 部分字段会在后文做详细介绍。
- 温度输出值与实际温度需要做转换,如下为转换公式(本文其他有关温度值转换内容同如下)
NTC温度传感器参数 R_UP = 10000
上拉电阻值(接VCC侧) R25 = 10000
25℃标称电阻值 B = 3435
B值(热敏指数,单位K)
T0 = 273.15 绝对零度(单位:K)
Steinhart-Hart方程温度计算:
[正算] 已知目标温度To,求ADC值:Rt = R25 * math.exp(B * (1/(T0 + To) - 1/(T0 + 25))) adc_val = Rt * 4096 / (Rt + R_UP)
[反算] 已知ADC采样值,求实际温度: Rt = R_UP * adc_val / (4096 - adc_val) To = 1/(math.log(Rt/R25)/B + 1/(T0 + 25)) - T0
温度(℃) | ADC | 温度(℃) | ADC | 温度(℃) | ADC |
---|---|---|---|---|---|
50 | 1191 | 60 | 941 | 70 | 741 |
51 | 1164 | 61 | 918 | 71 | 723 |
52 | 1137 | 62 | 897 | 72 | 706 |
53 | 1110 | 63 | 876 | 73 | 689 |
54 | 1085 | 64 | 855 | 74 | 673 |
55 | 1059 | 65 | 835 | 75 | 657 |
56 | 1034 | 66 | 815 | 76 | 642 |
57 | 1010 | 67 | 796 | 77 | 627 |
58 | 986 | 68 | 777 | 78 | 612 |
59 | 963 | 69 | 759 | 79 | 598 |
- 以上为50-79℃ 温度/ADC参照表
6.2.2. <参数>舵机工作状态¶
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 备注 |
---|---|---|---|---|---|---|
5 | servo_status | 舵机工作状态 | uint8_t | 1 |
6.3. 舵机用户自定义参数¶
6.3.1. 舵机用户自定义参数列表¶
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 备注 |
---|---|---|---|---|---|---|
33 | response_switch | 指令响应开关 | uint8_t | 1 | 具体介绍 | |
34 | servo_id | 舵机ID | uint8_t | 1 | 具体介绍 | |
36 | baudrate | 波特率选项 | uint8_t | 1 | 具体介绍 | |
37 | stall_protect_mode | 堵转保护开关 | uint8_t | 1 | 具体介绍 | |
38 | stall_power_limit | 堵转功率上限 | uint16_t | 2 | mW | |
39 | over_volt_low | 保护电压下限 | uint16_t | 2 | mV | |
40 | over_volt_high | 保护电压上限 | uint16_t | 2 | mV | |
41 | over_temprature | 保护温度 | uint16_t | 2 | ADC | |
42 | over_power | 功率保护值 | uint16_t | 2 | mW | |
43 | over_current | 电流保护值 | uint16_t | 2 | mA | |
46 | po_lock_switch | 舵机上电锁力开关 | uint8_t | 1 | 具体介绍 | |
48 | angle_limit_switch | 角度限制开关 | uint8_t | 1 | 具体介绍 | |
49 | soft_start_switch | 上电缓启动开关 | uint8_t | 1 | 具体介绍 | |
50 | soft_start_time | 上电缓启动时间 | uint16_t | 2 | ms | |
51 | angle_limit_high | 舵机角度上限 | int16_t | 2 | 0.1度 | |
52 | angle_limit_low | 舵机角度下限 | int16_t | 2 | 0.1度 |
注意事项:
- 舵机用户自定义参数列表里面的参数均可读可写。
data_id
只是参数的ID号,并不是寄存器地址。- 角度的单位是
0.1度
,例如角度值90.5度,转换为0.1度的意思就是将角度原数值乘10,90.5 * 10 = 905
。 - 部分字段会在后文做详细介绍。
- 用户自定义区块的总的字节数为
32
,批量读写指令操作的就是这部分数据。 - 推荐通过上位机软件进行用户参数设置。
6.3.2. <参数>响应开关¶
此项设置同时具备两个功能,用于控制在轮式模式与角度控制模式下,舵机指令是否可以中断(interruptable),以及是否产生反馈数据。
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 默认值 |
---|---|---|---|---|---|---|
33 | response_switch | 响应开关 | uint8_t | 1 | 0x00 |
序号 | 模式 |
---|---|
0x00 | 舵机控制指令执行可以被中断,新的指令覆盖旧的指令,无反馈数据。 |
0x01 | 舵机控制指令不可以被中断,指令执行结束之后发送反馈数据。 |
注意事项:
- 部分舵机指令,是否有返回数据是可选的。响应开关里面定义的是否有反馈数据指的就是这部分的指令。并不是所有的指令都没有反馈数据。
- 当设置为
0x01
的时候,新的指令添加到等候队列里,等候队列的长度是1,需要自己在程序里面维护一个队列。当新的控制指令超出了缓冲区的大小后,新添加的指令被忽略。
6.3.3. <参数>舵机ID¶
舵机的ID号,取值范围是[0, 254]
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 默认值 |
---|---|---|---|---|---|---|
34 | servo_id | 舵机ID | uint8_t | 1 | 0x00 |
注意事项:
- 舵机的ID号初始默认设置为
0
。 - 相同ID号的舵机不能串联在一起,串联的舵机每一个都需要独立分配ID。(注:相同ID的舵机串联可能会引起上位机卡死,使用时请注意。)
- 可以通过舵机上位机修改舵机ID号,修改ID号的时候, 一次就连一个舵机。
- 0xFF=255 号为广播地址,不能赋值给舵机。
6.3.4. <参数>波特率选项¶
串口通讯的波特率选项,取值范围 [0x01,0x08]
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 默认值 |
---|---|---|---|---|---|---|
36 | baudrate | 波特率选项 | uint8_t | 1 | 0x05 |
波特率选项 | 波特率 |
---|---|
0x01 | 9600 |
0x02 | 19200 |
0x03 | 38400 |
0x04 | 57600 |
0x05 | 115200 |
0x06 | 250000 |
0x07 | 500000 |
0x08 | 1000000 |
注意事项:
- 波特率设置时即生效。
- 默认波特率为115200。
- 这里是波特率选项,而不是波特率的实际的数值。
6.3.5. <参数>舵机堵转保护开关¶
这里的舵机堵转保护开关指的是当发生舵机堵转时,用什么样的策略来应对。
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 默认值 |
---|---|---|---|---|---|---|
37 | stall_protect_mode | 舵机堵转保护开关 | uint8_t | 1 | 0x00 |
序号 | 模式 |
---|---|
0x00 | 将舵机功率降低到功率上限 |
0x01 | 释放舵机锁力(舵机卸力) |
注意事项:
- 释放舵机锁力 的意思是,不再驱动舵机维持在一个特定的角度,此时可以自由转动舵机的主轴。
6.3.6. <参数>舵机上电锁力开关¶
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 默认值 |
---|---|---|---|---|---|---|
46 | po_lock_switch | 舵机上电锁力开关 | uint8_t | 1 | 0x00 |
序号 | 模式 |
---|---|
0x00 | 上电舵机释放锁力 |
0x01 | 上电舵机保持锁力 |
注意事项:
- 上电舵机保持锁力 的意思是,舵机上电时,读取舵机当前所在的角度,并让舵机维持在这一角度。
- 释放舵机锁力 的意思是,不再驱动舵机维持在一个特定的角度,此时可以自由转动舵机的主轴。
6.3.7. <参数>角度限制开关¶
只有打开角度限制开关,舵机角度限制相关的参数才会有效。
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 默认值 |
---|---|---|---|---|---|---|
48 | angle_limit_switch | 角度限制开关 | uint8_t | 1 | 0x01 |
序号 | 模式 |
---|---|
0x00 | 关闭角度限制 |
0x01 | 开启角度限制 |
注意事项:
建议在主控上做舵机角度约束。
6.3.8. <参数>上电缓启动开关¶
舵机在刚开始上电时,执行第一个角度控制指令时,选择是否开启缓慢执行模式。
举例来讲,机械臂刚开始上电时,需要旋转到初始位置,假如原先设定的执行周期是 100ms
,开启这个模式之后,执行周期会被修改为 上电首次执行时间
。
data_id | 参数名称(en) | 参数名称(cn) | 字节类型 | 字节长度 | 单位 | 默认值 |
---|---|---|---|---|---|---|
49 | soft_start_switch | 上电缓启动开关 | uint8_t | 1 | 0x00 |
序号 | 模式 |
---|---|
0x00 | 关闭上电缓启动 |
0x01 | 开启上电缓启动 |
7. 单圈角度控制¶
7.1. <指令>设置舵机角度¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
8 | MOVE_ON_ANGLE_MODE(ROTATE) | 设置舵机角度 | 设置舵机旋转的目标角度与时间间隔 |
7.1.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,6] | int16_t | angle | 舵机角度,数值正负代表方向( 单位0.1度,举例 angle=900 就等于90度) |
2 |
[7,8] | uint16_t | interval | 到达目标角度的时间 (单位ms) | 2 |
[9,10] | uint16_t | power | 执行功率(单位mW) 如果power=0或者大于功率保持值,按照功率保持值操作 | 2 |
7.1.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
注意事项:
- 默认没有响应包,只有打开 响应开关 的时候,才会有响应包。
- 打开 响应开关 后,舵机在旋转到目标角度后,才会发送响应包。
- 在通讯时,字节顺序使用的是 小端字节序 。要注意两个字节的数据,例如角度
angle = 900 = 0x0384
,在发送时就变成了0x84 0x03
。
7.1.3数据包示例¶
设置2号舵机在500ms内,旋转到90度
请求数据包
- 角度模式控制-设置舵机角度的指令
cmd_id = 0x08
- 舵机ID
servo_id = 2 = 0x02
- 舵机的目标角度为90度,但是
angle
的单位是0.1
度,所以angle = 900= 0x84 0x03
- 时间间隔
interval=500 = 0xf4 0x01
- 执行功率一般设置为0
power=0x00 0x00
- 字节长度
n= 1+2+2+2 = 7 = 0x07
- 校验和
checksum= (0x12 + 0x4c + 0x08 + 0x07 + 0x02 + 0x84 + 0x03 + 0x0F4 + 0x01 + 0x00 + 0x00)%256 = 235 =0xEB
7.2. <指令>单圈角度读取¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
10 | READ_ANGLE | 读取舵机角度 |
7.2.1. 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
7.2.2. 响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,6] | int16_t | angle | 舵机角度,数值正负代表方向( 单位0.1度,举例 angle=900 就等于90度) |
2 |
7.2.3. 数据包示例¶
查询舵机 0x00
的角度
请求数据包
响应数据包
0x86 0x03
是当前的舵机角度,解包后是902,转换为角度制就是90.2度。
7.3. <指令>舵机角度控制-指定时间¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
11 | MOVE_ON_ANGLE_MODE_EX_BY_INTERVAL | 舵机角度控制-指定时间 |
7.3.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,6] | int16_t | angle | 舵机角度,数值正负代表方向( 单位0.1度,举例 angle=900 就等于90度) |
2 |
[7,8] | uint16_t | interval | 到达目标角度的时间 (单位ms) | 2 |
[9,10] | uint16_t | accInterval | 单位:ms,启动时加速段的时间 | 2 |
[11,12] | uint16_t | decInterval | 单位:ms,运动到接近目标的减速段时间 | 2 |
[13,14] | uint16_t | power | 执行功率(单位mW) 如果power=0或者大于功率保持值,按照功率保持值操作 | 2 |
7.3.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
7.3.3 数据包示例¶
设置0号舵机 600ms旋转到90度,其中加速时间 100ms,减速时间 100ms
请求数据包
- 角度模式控制-舵机角度控制-指定时间
cmd_id = 0x0b
- 舵机ID
servo_id = 0 = 0x00
- 舵机的目标角度为90度,但是
angle
的单位是0.1
度,所以angle = 900= 0x84 0x03
- 时间间隔
interval= 600 = 0x58 0x02
- 加速段的时间
accInterval = 100 = 0x64 0x00
- 减速段时间的时间
decInterval = 100 = 0x64 0x00
- 执行功率一般设置为0
power=0x00 0x00
- 字节长度
n = 1+2+2+2+2+2 = 11 = 0x0b
- 校验和
checksum = (0x12 + 0x4c + 0x0b + 0x0b + 0x00 + 0x84 + 0x03 + 0x58 + 0x02 + 0x64 + 0x00 + 0x64 + 0x00 + 0x00 + 0x00)%256 = 29 = 0x1d
7.4. <指令>舵机角度控制-指定速度¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
12 | MOVE_ON_ANGLE_MODE_EX_BY_VELOCITY | 舵机角度控制-指定速度 |
7.4.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,6] | int16_t | angle | 舵机角度,数值正负代表方向( 单位0.1度,举例 angle=900 就等于90度) |
2 |
[7,8] | uint16_t | targetVelocity | 目标速度 | 2 |
[9,10] | uint16_t | accInterval | 单位:ms,启动时加速段的时间 | 2 |
[11,12] | uint16_t | decInterval | 单位:ms,运动到接近目标的减速段时间 | 2 |
[13,14] | uint16_t | power | 执行功率(单位mW) | 2 |
7.4.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
7.4.3. 数据包示例¶
设置0号舵机以目标速度200°/s旋转到90度,其中加速时间100ms,减速时间100ms
请求数据包
- 角度模式控制-舵机角度控制-指定时间
cmd_id = 0x0c
- 舵机ID
servo_id = 0 = 0x00
- 舵机的目标角度为90度,但是
angle
的单位是0.1
度,所以angle = 900= 0x84 0x03
- 目标速度,单位是
0.1
°/s,所以targetVelocity = 2000 = 0xd0 0x07
- 加速段的时间
accInterval = 100 = 0x64 0x00
- 减速段时间的时间
decInterval = 100 = 0x64 0x00
- 执行功率一般设置为0
power=0x00 0x00
- 字节长度
n = 1+2+2+2+2+2 = 11 = 0x0b
- 校验和
checksum = (0x12 + 0x4c + 0x0c + 0x0b + 0x00 + 0x84 + 0x03 + 0xd0 + 0x07 + 0x64 + 0x00 + 0x64 + 0x00 + 0x00 + 0x00)%256 = 155 = 0x9b
8. 阻尼模式¶
8.1. <指令> 阻尼模式控制¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
9 | MOVE_ON_DAMPING_MODE(DAMPING) | 阻尼模式控制 | 阻尼模式,设置舵机保持的功率 |
8.1.1. 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,6] | uint16_t | power | 执行功率(单位mW) | 2 |
servo_id
如果设置 servo_id = 0xFF
(广播地址) ,则所有的舵机都会被设置为阻尼模式。
power
如果保持功率 power
设置为0,或者大于功率上限,则按照功率上限处理。
功率上限的设定请参阅 舵机用户自定义参数列表
8.1.2. 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
注意事项:
- 默认没有响应包,只有打开 响应开关 的时候,才会有响应包。
- 打开 响应开关 后,舵机在旋转到目标角度之后,才会发送响应包。
8.1.3. 数据包示例¶
设置0号舵机的阻尼模式的保持功率为500mW
请求数据包
9. 多圈角度控制¶
注:仅适用于磁编码舵机
9.1. <指令>设置舵机角度¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
13 | MOVE_ON_MULTI_TURN_ANGLE_MODE(ROTATE) | 多圈角度模式控制-设置舵机角度 |
9.1.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,8] | int16_t | angle | 舵机角度,数值正负代表方向(单位0.1度),数值范围:-3686400~3686400 | 4 |
[9,12] | uint16_t | interval | 到达目标角度的时间 (单位ms),最大值为 4096000 | 4 |
[13,14] | uint16_t | power | 执行功率(单位mW), 如果power=0或者大于功率保持值,按照功率保持值操作 | 2 |
9.1.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
9.1.3 数据包示例¶
设置0号舵机在5000ms内,旋转到400度
请求数据包
- 角度模式控制-设置舵机角度的指令
cmd_id = 0x0d
- 舵机ID
servo_id = 0 = 0x00
- 舵机的目标角度为400度,但是
angle
的单位是0.1
度,所以angle = 4000= 0xa0 0x0f 0x00 0x00
- 时间间隔
interval=5000 = 0x88 0x13 0x00 0x00
- 执行功率一般设置为0
power = 0x00 0x00
- 字节长度
n= 1 + 4 + 4 + 2 = 11 = 0x0b
- 校验和
checksum= (0x12 + 0x4c + 0x0d + 0x0b + 0x00 + 0xa0 + 0x0f + 0x00 + 0x00 + 0x88 + 0x13 + 0x00 + 0x00 0x00 + 0x00)%256 = 192 =0xc0
9.2. <指令>多圈角度控制-指定时间¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
14 | MOVE_ON_MULTI_TURN_ANGLE_MODE_EX_BY_INTERVAL | 多圈角度控制-指定时间 |
9.2.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,8] | int16_t | angle | 舵机角度,数值范围:-3686400~3686400 | 4 |
[9,12] | uint16_t | interval | 到达目标角度的时间 (单位ms),最大值为 4096000 | 4 |
[12,13] | uint16_t | accInterval | 单位:ms,启动时加速段的时间 | 2 |
[14,15] | uint16_t | decInterval | 单位:ms,运动到接近目标的减速段时间 | 2 |
[13,14] | uint16_t | power | 执行功率(单位mW) | 2 |
9.2.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
9.2.3. 数据包示例¶
设置0号舵机1200ms旋转到600度,其中加速时间100ms,减速时间100ms
请求数据包
- 多圈角度控制-指定时间
cmd_id = 0x0e
- 舵机ID
servo_id = 0 = 0x00
- 舵机的目标角度为600度,但是
angle
的单位是0.1
度,所以angle = 6000= 0x70 0x17 0x00 0x00
- 时间间隔
interval= 1200 = 0xb0 0x04 0x00 0x00
- 加速段的时间
accInterval = 100 = 0x64 0x00
- 减速段时间的时间
decInterval = 100 = 0x64 0x00
- 执行功率一般设置为0
power=0x00 0x00
- 字节长度
n = 1+4+4+2+2+2 = 15 = 0x0f
- 校验和
checksum = (0x12 + 0x4c + 0x0e + 0x0f + 0x00 + 0x70 + 0x17 + 0x00 + 0x00 + 0xb0 + 0x04 + 0x00 + 0x00 + 0x64 + 0x00 + 0x64 + 0x00 + 0x00 + 0x00)%256 = 126 = 0x7e
9.3. <指令>多圈角度控制-指定速度¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
15 | MOVE_ON_MULTI_TURN_ANGLE_MODE_EX_BY_VELOCITY | 多圈角度控制-指定速度 |
9.3.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,8] | int16_t | angle | 舵机角度,数值范围:-3686400~3686400 | 4 |
[9,10] | uint16_t | targetVelocity | 目标速度 | 2 |
[11,12] | uint16_t | accInterval | 单位:ms,启动时加速段的时间 | 2 |
[13,14] | uint16_t | decInterval | 单位:ms,运动到接近目标的减速段时间 | 2 |
[15,16] | uint16_t | power | 执行功率(单位mW) | 2 |
9.3.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
9.3.3. 数据包示例¶
设置0号舵机以目标速度200°/s旋转到600度,其中加速时间100ms,减速时间100ms
请求数据包
- 多圈角度控制-指定时间
cmd_id = 0x0f
- 舵机ID
servo_id = 0 = 0x00
- 舵机的目标角度为600度,但是
angle
的单位是0.1
度,所以angle = 6000= 0x70 0x17 0x00 0x00
- 目标速度,单位是
0.1
°/s,所以targetVelocity = 2000 = 0xd0 0x07
- 加速段的时间
accInterval = 100 = 0x64 0x00
- 减速段时间的时间
decInterval = 100 = 0x64 0x00
- 执行功率一般设置为0
power=0x00 0x00
- 字节长度
n = 1+4+2+2+2+2 = 13 = 0x0d
- 校验和
checksum = (0x12 + 0x4c + 0x0f + 0x0d + 0x00 + 0x70 + 0x17 + 0x00 + 0x00 + 0xd0 + 0x07 + 0x64 + 0x00 + 0x64 + 0x00 + 0x00 + 0x00)%256 = 160 = 0xa0
9.4. <指令>多圈角度读取¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
16 | READ_MULTI_TURN_ANGLE | 读取多圈角度 |
9.4.1. 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
9.4.2. 响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,8] | int16_t | angle | 舵机角度,数值正负代表方向( 单位0.1度,举例 angle=900 就等于90度) |
4 |
[9,10] | uint16_t | turn | 转动圈数 | 2 |
9.4.3. 数据包示例¶
查询舵机 0x00
的角度
请求数据包
响应数据包
0x23 0x13 0x00 0x00
是当前的舵机角度,解包后是4899,转换为角度制就是489.9度。
0x01 0x00
是当前圈数,解包后是1,即为1圈。
9.5. <指令>清除当前圈数¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
17 | RESET_MULTI_TURN_ANGLE | 清除当前圈数 |
9.5.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
9.5.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
注意事项:
重设多圈命令必须在舵机释放状态有效(即不在角度控制下)。
9.5.3. 数据包示例¶
重设0号舵机圈数
请求数据包
- 重设多圈角度
cmd_id = 0x11
- 舵机ID
servo_id = 0 = 0x00
- 字节长度
n = 1 = 0x01
- 校验和
checksum = (0x12 + 0x4c + 0x11 + 0x01 + 0x00)%256 = 112 = 0x70
10. 异步指令¶
10.1. <指令>异步写入指令¶
注:仅适用于无刷磁编码舵机V316及之后的版本
本指令发送后,在线的舵机将对下一个收到的指令进行缓存;收到 异步执行指令 后,立即执行。详细规则如下:
- 对在线所有舵机生效,接收本指令后开启缓存区。
- 可缓存指令如下:
数据包编号 | 数据包命名 | 功能 |
---|---|---|
8 | MoveOnAngleMode(Rotate) | 角度模式控制 |
11 | MoveOnAngleModeExByInterval | 角度模式控制(基于加减速时间) |
12 | MoveOnAngleModeExByVelocity | 角度模式控制(基于目标速度) |
13 | MoveOnMultiTurnAngleMode(Rotate) | 多圈角度模式控制 |
14 | MoveOnMultiTurnAngleModeExByInterval | 多圈角度模式控制(基于加减速时间) |
15 | MoveOnMultiTurnAngleModeExByVelocity | 多圈角度模式控制(基于目标速度) |
- 缓冲区仅允许暂存 单条指令 ,在收到 异步执行指令 终止异步操作指令前,若接收到其他指令,将作为常规指令立即执行。
- 舵机接收 异步执行指令 后,立即执行缓冲区内指令并清空缓冲区。
- 若缓存区为空,则仅关闭缓存区,无其他动作。若缓冲区处于空闲状态,仅执行缓冲区关闭操作,不触发其他行为。
- 若参数 cancel非零 时,强制清空缓冲区且不执行指令,同时关闭缓冲区功能。
- 异步操作过程中发生断电,重新上电后缓冲区存储内容自动失效。
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
18 | BeginAsync | 异步写入指令 |
10.1.1. 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
无 | uint8_t | 无 | 无 | 0 |
10.1.2. 响应包内容格式¶
无
10.2. <指令>异步执行指令¶
注:仅适用于无刷磁编码舵机V316及之后的版本
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
19 | EndAsync | 异步执行指令 |
10.2.1. 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | cancel | 0:执行;1:取消 | 1 |
10.2.2. 响应包内容格式¶
无
10.2.4. 数据包示例¶
异步写入数据包(固定)
请求数据包 例:2号舵机500ms旋转到90度
异步执行数据包(固定)收到这条指令立刻执行请求数据包
11. 数据监控¶
注:仅适用于无刷磁编码舵机V316及之后的版本
11.1. <指令>数据监控¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
22 | ServoMonitor | 数据监控 |
11.1.1. 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID (0xff为在线所有舵机) | 1 |
11.1.2. 响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
[5,6] | uint16_t | voltage | 舵机电压 | 2 |
[7,8] | uint16_t | current | 舵机电流 | 2 |
[9,10] | uint16_t | power | 舵机功率 | 2 |
[11,12] | uint16_t | temperature | 舵机温度 | 2 |
13 | uint8_t | status | 舵机状态 | 1 |
[14,17] | int32_t | angle | 舵机角度,单位:0.1度 | 4 |
[18,19] | int16_t | turns | 圈数 | 2 |
11.1.3. 数据包示例¶
请求数据包 例:获取0号舵机数据
响应包
0x05 0x1c 0x16 0x10 0x00 0x83 0x1e 0x1e 0x00 0xea 0x00 0x2c 0x07 0x01 0xaf 0x0b 0x00 0x00 0x00 0x00 0xde
- ID: 0x00 = 0
- 电压:
0x1E 0x83 = 7811
mV - 电流:
0x00 0x1E = 30
mA - 功率:
0x00 0xEA = 234
mW - 温度:
0x07 0x2C = 1836
adc值 - 状态:
0x01 = 1
- 角度:
0x00 0x00 0x0B 0xAF = 2991
299.1度 - 圈数:
0x00 0x00 = 0
12. 原点设置¶
注:仅适用于无刷磁编码舵机V311及之后的版本
12.1. <指令>设置当前角度位置为原点¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
23 | SetOriginPoint | 设置当前舵机角度为原点 |
12.1.1. 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | reset | 预设值,默认为0 | 1 |
12.1.2. 响应包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
注意事项:
原点设置命令必须在舵机释放状态有效(即不在角度控制下)。
12.1.3. 数据包示例¶
设置1号舵机当前角度为原点
请求数据包
- 设置当前舵机角度为原点
cmd_id = 0x17
- 字节长度
n = 1+1 = 0x02
- 舵机ID
servo_id = 1 = 0x01
- 预设值
reset = 0 = 0x00
- 校验和
checksum = (0x12 + 0x4c + 0x17 + 0x02 + 0x01 + 0x00)%256 = 120 = 0x78
13. 停止指令¶
仅适用于无刷磁编码舵机V316及之后的版本
13.1. <指令>停止指令¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
24 | StopOnControlMode | 停止指令 |
13.1.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | method | 停止指令执行方式。 0x10-停止后卸力(失锁) 0x11-停止后保持锁力 0x12-停止后进入阻尼状态。 |
1 |
[6,7] | uint16_t | power | 扭矩开关后功率单位:mW, 如果为0或大于功率保护值, 则按功率保护值操作。 |
2 |
13.1.2 响应包内容格式(可选)¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | servo_id | 舵机ID | 1 |
5 | uint8_t | result | 设置结果(0:失败,1:成功) | 1 |
注意事项:
默认没有响应包,只有打开 响应开关 的时候,才会有响应包。
13.1.3数据包示例¶
设置1号舵机停止后保持锁力 功率6000mW
请求数据包
14. 同步指令¶
仅适用于无刷磁编码舵机V316及之后的版本
一条指令控制所有舵机动作,每个舵机执行自己对应ID的内容。
14.1. <指令>同步指令¶
指令ID | 指令名称(EN) | 指令名称(CN) | 备注 |
---|---|---|---|
25 | SyncCommand | 同步命令 |
14.1.1 请求包内容格式¶
字节序号 | 数据类型 | 字段名称 | 字段功能描述 | 字节长度 |
---|---|---|---|---|
4 | uint8_t | id | 命令编号 | 1 |
5 | uint8_t | length | 命令内容长度%d | 1 |
6 | uint8_t | count | 舵机个数%n | 1 |
[7,%n * %d+6] | 资料区块 | data | 命令内容 | %d*%n |
支持的命令编号
命令编号。需要是有效指令,禁止在指令体中包含相同指令ID。
数据包编号 | 数据包命名 | 功能 |
---|---|---|
8 | MoveOnAngleMode(Rotate) | 角度模式 |
11 | MoveOnAngleModeExByInterval | 角度模式(基于加减速时间) |
12 | MoveOnAngleModeExByVelocity | 角度模式(基于目标速度) |
13 | MoveOnMultiTurnAngleMode(Rotate) | 多圈角度控制 |
14 | MoveOnMultiTurnAngleModeExByInterval | 多圈角度控制(基于加减速时间) |
15 | MoveOnMultiTurnAngleModeExByVelocity | 多圈角度控制(基于目标速度) |
22 | ServoMonitor | 舵机数据监控 |
14.1.2 响应包内容格式¶
无
14.1.3数据包示例¶
请求数据包
0x12 0x4c 0x19 0x17 0x08 0x07 0x02 0x01 0x2c 0x01 0xe8 0x03 0x00 0x00 0x02 0x58 0x02 0xd0 0x07 0x00 0x00 0xE5
- 内容长度:
17
- 舵机数据监命令ID:
8
- 舵机数据监命令长度:
7
- 舵机总数:
02
- 舵机1,舵机2 指令 :