origintank ROS 机器人通信协议
1. 通信方式
上位机与下位机之间采用 串口通信:
- 波特率:115200
- 停止位:1
- 数据位:8
- 校验:无校验
- 通信频率:建议 ≥ 5Hz
⚠️ 若上位机与底盘连接后超过 500ms 未收到新的协议数据,底盘将判定连接断开并主动停止电机运动。
底盘支持:
- 串口通信
- 蓝牙通信(双模式控制)
2. 异或校验计算方法
将每一个字节数据(两个 16 进制字符)依次异或后得到校验码。
示例:
- 数据:01 A0 7C FF 02
- 计算:01 xor A0 xor 7C xor FF xor 02 = 20
- 校验码:20
3. 协议整体结构
上位机 → 下位机
| 报头 | 报文长度 | 功能位 | 数据位 | 异或校验 |
|---|---|---|---|---|
| CD | XorCheck |
下位机 → 上位机
| 报头 | 报文长度 | 功能位 | 数据位 | 异或校验 |
|---|---|---|---|---|
| FD | XorCheck |
- 异或校验:对功能位和数据位进行异或校验
- 报文长度:功能位与数据位的总长度
4. 单位与精度
| 参数 | 单位 | 说明 |
|---|---|---|
| 线速度 | mm/s | |
| 转向角度 | °(1度) | |
| 角速度 | 0.01 rad/s | |
| 电压 | 0.1 V | |
| Pitch / Roll / Yaw | 0.01° |
5. 车辆方向定义
| 轴向 | 含义 |
|---|---|
| X 轴 | 小车纵向方向 |
| Y 轴 | 小车横向方向 |
6. 功能位定义
(1)0x01 运动控制
建议控制频率为 5~20Hz
| 01 | 02 | 03 | 04 | 05~06 | 07 | 08~09 | 10 | 11~12 | 13 |
|---|---|---|---|---|---|---|---|---|---|
| 报头 | 报文长度 | 功能位 | X轴运动方向 | X轴线速度 | Y轴运动方向 | Y轴线速度 | 转动方向 | 转动角速度 | 异或校验 |
| CD | 0A | 01 | 00/01 | MSB LSB | 00/01 | MSB LSB | 00/01 | MSB LSB | XorCheck |
说明:
- 仅麦克纳姆轮车支持 Y 轴横向运动;
- 四轮差速、履带、阿克曼车型给 Y 轴指令无效;
- 转动角速度范围:
0~540 × 0.01 rad/s; - 阿克曼车型中第 11、12 字节表示转向角度(最大 25°)。
示例: CD 0A 01 01 03 20 00 00 00 00 00 19 3A
解释:
小车以 800 mm/s 速度后退,同时以 0.25 rad/s 向左转弯。
(2)0x02 小车车速及转动角速度反馈(20Hz 自动反馈)
| 报头 | 报文长度 | 功能位 | X轴运动方向 | X轴线速度 | Y轴运动方向 | Y轴线速度 | 转动方向 | 转动角速度 | 异或校验 |
|---|---|---|---|---|---|---|---|---|---|
| CD | 0A | 02 | 00/01 | MSB LSB | 00/01 | MSB LSB | 00/01 | MSB LSB | XorCheck |
(3)0x03 电机转速反馈(20Hz 自动反馈)
| 报头 | 报文长度 | 功能位 | 电机1转速 | 电机2转速 | 电机3转速 | 电机4转速 | 异或校验 |
|---|---|---|---|---|---|---|---|
| FD | 09 | 03 | MSB LSB | MSB LSB | MSB LSB | MSB LSB | XorCheck |
(4)0x04 电池电压反馈(5Hz 自动反馈)
| 报头 | 报文长度 | 功能位 | 电压(0.1V 精度) | 异或校验 |
|---|---|---|---|---|
| FD | 02 | 04 | 数据 | XorCheck |
(5)0x05 IMU 数据反馈(20Hz 自动反馈)
| 报头 | 报文长度 | 功能位 | Pitch正负 | Pitch值 | Roll正负 | Roll值 | Yaw正负 | Yaw值 | 异或校验 |
|---|---|---|---|---|---|---|---|---|---|
| FD | 0A | 05 | 00/01 | MSB LSB | 00/01 | MSB LSB | 00/01 | MSB LSB | XorCheck |
0x00表示正方向0x01表示负方向
(6)0x06 IMU 原始数据反馈(40Hz 自动反馈)
报文格式:
| 字节 | 含义 |
|---|---|
| 01 | 报头(FD) |
| 02 | 报文长度(1F) |
| 03 | 功能位(06) |
| 04~34 | 各传感器原始数据 |
| 34 | 异或校验 |
数据内容:
| 数据 | 正负位 | 高位 | 低位 | 单位 |
|---|---|---|---|---|
| GyroX | 00/01 | MSB | LSB | (1/1000) rad/s |
| GyroY | 00/01 | MSB | LSB | (1/1000) rad/s |
| GyroZ | 00/01 | MSB | LSB | (1/1000) rad/s |
| AccelX | 00/01 | MSB | LSB | (1/10000) g/s |
| AccelY | 00/01 | MSB | LSB | (1/10000) g/s |
| AccelZ | 00/01 | MSB | LSB | (1/10000) g/s |
| QuatW | 00/01 | MSB | LSB | (1/10000) |
| QuatX | 00/01 | MSB | LSB | (1/10000) |
| QuatY | 00/01 | MSB | LSB | (1/10000) |
| QuatZ | 00/01 | MSB | LSB | (1/10000) |
高位在前,低位在后;
0x00 表示正,0x01 表示负。
(7)0x07 底盘型号反馈(5Hz 自动反馈)
| 报头 | 报文长度 | 功能位 | 底盘型号 | 异或校验 |
|---|---|---|---|---|
| FD | 02 | 07 | 01/02/03/04 | XorCheck |
底盘型号定义:
| 值 | 类型 |
|---|---|
| 0x01 | 阿克曼车型 |
| 0x02 | 四轮差速车 |
| 0x03 | 麦克纳姆轮车 |
| 0x04 | 履带车 |
附录:通信安全机制
- 若 500ms 内未接收到控制数据,底盘立即停止;
- 建议控制频率 ≥ 5Hz;
- 建议上位机发送前进行完整异或校验计算。
