灵犀 Gloria-D 系列舵机通信协议手册
1. 概述
本文档适用于灵犀 Gloria-D 系列机械臂的舵机通信控制。
2. 通信协议规范
2.1 基本通信参数
- 波特率: 1000000 bps (默认)
- 数据位: 8 位
- 停止位: 1 位
- 校验位: 无
- 通信方式: 半双工 UART 通信
2.2 数据包格式
通信数据包采用以下格式:
Header (1字节) + ID (1字节) + Length (1字节) + Instruction (1字节) + Parameters (N字节) + Checksum (1字节)
- Header: 固定为 0xFF
- ID: 舵机ID (0-254, 0xFE为广播ID)
- Length: 参数长度 + 3 (Instruction + Checksum)
- Instruction: 命令类型
- Parameters: 命令参数
- Checksum: 校验和
2.3 校验和计算
校验和计算公式:
Checksum = ~(ID + Length + Instruction + Parameter1 + ... + ParameterN) & 0xFF
3. 主要命令说明
3.1 PING 指令
功能: 测试舵机是否正常连接
指令格式:
| Header | ID | Length | Instruction | Checksum
| ------ | -- | ------ | ----------- | --------
| 0xFF | ID | 0x02 | 0x01 | Checksum
响应:
| Header | ID | Length | Error | Checksum
| ------ | -- | ------ | ----- | --------
| 0xFF | ID | 0x02 | Error | Checksum
3.2 READ 指令
功能: 读取舵机数据
指令格式:
| Header | ID | Length | Instruction | Address | Length | Checksum
| ------ | -- | ------ | ----------- | ------- | ------ | --------
| 0xFF | ID | 0x04 | 0x02 | Address | Length | Checksum
参数说明:
- Address: 读取起始地址
- Length: 读取数据长度
3.3 WRITE 指令
功能: 写入数据到舵机
指令格式:
| Header | ID | Length | Instruction | Address | Data1 | Data2 | ... | Checksum
| ------ | -- | ------ | ----------- | ------- | ----- | ----- | --- | --------
| 0xFF | ID | Length | 0x03 | Address | Data | Data | ... | Checksum
3.4 REG WRITE 指令
功能: 写入数据并等待 ACTION 指令执行
指令格式:
| Header | ID | Length | Instruction | Address | Data1 | Data2 | ... | Checksum
| ------ | -- | ------ | ----------- | ------- | ----- | ----- | --- | --------
| 0xFF | ID | Length | 0x04 | Address | Data | Data | ... | Checksum
3.5 ACTION 指令
功能: 触发已写入的动作
指令格式:
| Header | ID | Length | Instruction | Checksum
| ------ | -- | ------ | ----------- | --------
| 0xFF | ID | 0x02 | 0x05 | Checksum
3.6 RESET 指令
功能: 重置舵机设置
指令格式:
| Header | ID | Length | Instruction | Checksum
| ------ | -- | ------ | ----------- | --------
| 0xFF | ID | 0x02 | 0x06 | Checksum
4. 控制表说明
4.1 基本信息区域 (Address 0-23)
| 地址 | 名称 | 描述 | 长度 | 访问 |
|---|---|---|---|---|
| 0 | Model Number L | 型号低字节 | 1 | 只读 |
| 1 | Model Number H | 型号高字节 | 1 | 只读 |
| 2 | Version | 固件版本 | 1 | 只读 |
| 3 | ID | 舵机ID | 1 | 读写 |
| 4 | Baud Rate | 波特率 | 1 | 读写 |
| 5 | Return Delay Time | 返回延迟时间 | 1 | 读写 |
| 6 | CW Angle Limit L | 顺时针角度限制低字节 | 1 | 读写 |
| 7 | CW Angle Limit H | 顺时针角度限制高字节 | 1 | 读写 |
| 8 | CCW Angle Limit L | 逆时针角度限制低字节 | 1 | 读写 |
| 9 | CCW Angle Limit H | 逆时针角度限制高字节 | 1 | 读写 |
| 10 | System Data2 | 系统数据2 | 1 | 只读 |
| 11 | Limit Temperature | 最高温度限制 | 1 | 读写 |
| 12 | Down Limit Voltage | 最低电压限制 | 1 | 读写 |
| 13 | Up Limit Voltage | 最高电压限制 | 1 | 读写 |
| 14 | Max Torque L | 最大扭矩低字节 | 1 | 读写 |
| 15 | Max Torque H | 最大扭矩高字节 | 1 | 读写 |
| 16 | Return Level | 返回状态等级 | 1 | 读写 |
| 17 | Alarm LED | LED报警 | 1 | 读写 |
| 18 | Alarm Shutdown | 关机报警 | 1 | 读写 |
| 19 | Operating Mode | 运行模式 | 1 | 读写 |
| 20 | Down Calibration L | 下限校准低字节 | 1 | 读写 |
| 21 | Down Calibration H | 下限校准高字节 | 1 | 读写 |
| 22 | Up Calibration L | 上限校准低字节 | 1 | 读写 |
| 23 | Up Calibration H | 上限校准高字节 | 1 | 读写 |
4.2 状态信息区域 (Address 24-35)
| 地址 | 名称 | 描述 | 长度 | 访问 |
|---|---|---|---|---|
| 24 | Torque Enable | 扭矩使能 | 1 | 读写 |
| 25 | LED | LED状态 | 1 | 读写 |
| 26 | CW Compliance Margin | 顺时针顺从裕度 | 1 | 读写 |
| 27 | CCW Compliance Margin | 逆时针顺从裕度 | 1 | 读写 |
| 28 | CW Compliance Slope | 顺时针顺从斜率 | 1 | 读写 |
| 29 | CCW Compliance Slope | 逆时针顺从斜率 | 1 | 读写 |
| 30 | Goal Position L | 目标位置低字节 | 1 | 读写 |
| 31 | Goal Position H | 目标位置高字节 | 1 | 读写 |
| 32 | Moving Speed L | 移动速度低字节 | 1 | 读写 |
| 33 | Moving Speed H | 移动速度高字节 | 1 | 读写 |
| 34 | Torque Limit L | 扭矩限制低字节 | 1 | 读写 |
| 35 | Torque Limit H | 扭矩限制高字节 | 1 | 读写 |
4.3 反馈信息区域 (Address 36-49)
| 地址 | 名称 | 描述 | 长度 | 访问 |
|---|---|---|---|---|
| 36 | Present Position L | 当前位置低字节 | 1 | 只读 |
| 37 | Present Position H | 当前位置高字节 | 1 | 只读 |
| 38 | Present Speed L | 当前速度低字节 | 1 | 只读 |
| 39 | Present Speed H | 当前速度高字节 | 1 | 只读 |
| 40 | Present Load L | 当前负载低字节 | 1 | 只读 |
| 41 | Present Load H | 当前负载高字节 | 1 | 只读 |
| 42 | Present Voltage | 当前电压 | 1 | 只读 |
| 43 | Present Temperature | 当前温度 | 1 | 只读 |
| 44 | Registered Instruction | 注册指令 | 1 | 只读 |
| 45 | Reserved | 保留 | 1 | 只读 |
| 46 | Moving | 移动状态 | 1 | 只读 |
| 47 | Lock | 锁定 | 1 | 只读 |
| 48 | Punch L | 冲击低字节 | 1 | 读写 |
| 49 | Punch H | 冲击高字节 | 1 | 读写 |
5. 角度与位置转换
5.1 角度范围
- 最小角度: 0°
- 最大角度: 300° (根据具体型号而定)
- 分辨率: 0.29°
5.2 位置值计算
位置值范围:0 - 1023
角度转位置值:
Position = (Angle / 300) * 1023
位置值转角度:
Angle = (Position / 1023) * 300
6. 完整示例:机械臂各舵机的角度控制与角度反馈
请用户详细参阅以下完整协议,并熟悉各部分的释义:
1. 帧头
默认为0xFF:
| 0xFF | 0x01 | 0x02 | 0x01 | 0xFB |
2. 指令ID
0x01,执行PING指令:
| 0xFF | 0x01 | 0x02 | 0x01 | 0xFB |
3. 指令长度
0x02,表示指令长度为2字节:
| 0xFF | 0x01 | 0x02 | 0x01 | 0xFB |
4. 指令类型
0x01,PING指令:
| 0xFF | 0x01 | 0x02 | 0x01 | 0xFB |
5. 校验位
0xFB,校验和计算:
| 0xFF | 0x01 | 0x02 | 0x01 | 0xFB |
6. 响应帧
| 0xFF | 0x01 | 0x02 | 0x00 | 0xFB |
7. 完整示例:读取舵机当前位置
请用户详细参阅以下完整协议,并熟悉各部分的释义:
1. 帧头
默认为0xFF:
| 0xFF | 0x01 | 0x04 | 0x02 | 0x24 | 0x02 | 0xD9 |
2. 指令ID
0x01,执行READ指令:
| 0xFF | 0x01 | 0x04 | 0x02 | 0x24 | 0x02 | 0xD9 |
3. 指令长度
0x04,表示参数长度为4字节:
| 0xFF | 0x01 | 0x04 | 0x02 | 0x24 | 0x02 | 0xD9 |
4. 指令类型
0x02,READ指令:
| 0xFF | 0x01 | 0x04 | 0x02 | 0x24 | 0x02 | 0xD9 |
5. 参数
0x24,读取起始地址(当前位置):
| 0xFF | 0x01 | 0x04 | 0x02 | 0x24 | 0x02 | 0xD9 |
6. 读取长度
0x02,读取2字节:
| 0xFF | 0x01 | 0x04 | 0x02 | 0x24 | 0x02 | 0xD9 |
7. 校验位
0xD9,校验和计算:
| 0xFF | 0x01 | 0x04 | 0x02 | 0x24 | 0x02 | 0xD9 |
8. 响应帧示例
| 0xFF | 0x01 | 0x04 | 0x00 | 0xE8 | 0x03 | 0x16 |
9. 响应解析
- 0xFF: 帧头
- 0x01: 舵机ID
- 0x04: 数据长度
- 0x00: 错误码(无错误)
- 0xE8: 位置低字节
- 0x03: 位置高字节
- 0x16: 校验和
8. 错误代码
| 错误值 | 含义 |
|---|---|
| 0 | 无错误 |
| 1 | 输入电压错误 |
| 2 | 角度限制错误 |
| 4 | 过热错误 |
| 8 | 角度范围错误 |
| 16 | 负载过大错误 |
| 32 | 指令错误 |
| 64 | 校验和错误 |
9. 注意事项
- 通信时序: 相邻两个数据包之间应有至少 1ms 的间隔
- 舵机ID: 建议使用 1-253 之间的ID,避免使用广播ID(0xFE)进行写操作
- 波特率设置: 修改波特率后需要重启舵机
- 温度监控: 长时间工作时注意监控舵机温度
- 负载限制: 确保舵机负载不超过额定值
- 固件升级: 定期检查并升级舵机固件
10. 故障排除
常见问题:
- 通信失败:检查波特率、舵机ID、连接线缆
- 舵机不响应:检查电源电压、舵机是否锁定
- 位置不准确:检查角度限制设置、校准参数
- 过热保护:降低负载、增加散热
本文档基于 FEETECH 舵机协议手册编写,适用于磁编码版本舵机。如有疑问,请参考官方最新文档。