8.7 KiB
8.7 KiB
Simba-OmniInfantry 电机配置与 CAN 通信地址总表
本文档汇总整车(云台主控板 + 底盘主控板)所有电机的硬件拨码、通信总线分配、CAN 报文帧头(StdId)、数据槽位(Byte 位)、控制模式与发包上下限。
1. 整车物理通信拓扑
整车采用双主控板(云台板 + 底盘板)分布式架构,物理走线分为三组总线回路:
graph TD
subgraph 云台主控板
G_CAN1[云台 CAN1 独立总线]
G_CAN2[云台 CAN2 总线]
end
subgraph 底盘主控板
C_CAN1[底盘 CAN1 独立总线]
C_CAN2[底盘 CAN2 总线]
end
G_CAN1 --- M_FL[左摩擦轮 M3508]
G_CAN1 --- M_FR[右摩擦轮 M3508]
G_CAN1 --- M_PIT[Pitch 轴 GM6020]
C_CAN1 --- W_RF[右前轮 RF M3508]
C_CAN1 --- W_LF[左前轮 LF M3508]
C_CAN1 --- W_LR[左后轮 LR M3508]
C_CAN1 --- W_RR[右后轮 RR M3508]
G_CAN2 ===|跨板双绞线互联| C_CAN2
G_CAN2 --- M_YAW[Yaw 轴 GM6020]
G_CAN2 --- M_RAM[拨弹盘 M2006]
G_CAN2 -.- C_TOC[CToC 板间通讯数据帧]
- 云台 CAN1(独立总线):摩擦轮(2×M3508)+ 俯仰 Pitch(GM6020 电流环);
- 底盘 CAN1(独立总线):四轮麦克纳姆轮驱动(4×M3508);
- 云台 CAN2 ⟷ 底盘 CAN2(跨板直连互联总线):偏航 Yaw(GM6020 电流环)+ 拨弹(M2006)+ 底盘/云台板间通讯(CToC)。
2. 各物理总线电机配置明细表
2.1 【云台 CAN1】发射与俯仰机构
| 机构名称 | 电机型号 | 电调/电机拨码 | 反馈 ID (Rx StdId) | 控制帧头 (Tx StdId) | 控制数据槽位 (Bytes) | 控制模式 | 发包上下限 (数值) | 物理对应量程 | 代码发送函数 |
|---|---|---|---|---|---|---|---|---|---|
| 左摩擦轮 | M3508 | ID 1 | 0x201 |
0x200 |
槽 1 (DATA[0..1]) |
速度环→电流 | [-15000, 15000] |
\pm 18.3\,\text{A} |
shoot_send_cmd() |
| 右摩擦轮 | M3508 | ID 2 | 0x202 |
0x200 |
槽 2 (DATA[2..3]) |
速度环→电流 | [-15000, 15000] |
\pm 18.3\,\text{A} |
shoot_send_cmd() |
| Pitch 轴 | GM6020 | ID 2 | 0x206 |
0x1FE |
槽 2 (DATA[2..3]) |
电流环 | [-16384, 16384] |
\pm 3.0\,\text{A} |
gimbal_control() |
云台 CAN1 下发报文打包格式:
0x200帧:[左摩擦轮电流 (int16), 右摩擦轮电流 (int16), 0, 0](2ms 周期)0x1FE帧:[0, Pitch轴电流 (int16), 0, 0](2ms 周期)
2.2 【底盘 CAN1】四轮底盘行走机构
| 机构名称 | 电机型号 | 电调拨码 | 反馈 ID (Rx StdId) | 控制帧头 (Tx StdId) | 控制数据槽位 (Bytes) | 控制模式 | 发包上下限 (数值) | 物理对应量程 | 代码发送函数 |
|---|---|---|---|---|---|---|---|---|---|
| 右前轮 (RF) | M3508 | ID 1 | 0x201 |
0x200 |
槽 1 (DATA[0..1]) |
速度环→电流 | [-15000, 15000] |
\pm 18.3\,\text{A} |
chassis_control() |
| 左前轮 (LF) | M3508 | ID 2 | 0x202 |
0x200 |
槽 2 (DATA[2..3]) |
速度环→电流 | [-15000, 15000] |
\pm 18.3\,\text{A} |
chassis_control() |
| 左后轮 (LR) | M3508 | ID 3 | 0x203 |
0x200 |
槽 3 (DATA[4..5]) |
速度环→电流 | [-15000, 15000] |
\pm 18.3\,\text{A} |
chassis_control() |
| 右后轮 (RR) | M3508 | ID 4 | 0x204 |
0x200 |
槽 4 (DATA[6..7]) |
速度环→电流 | [-15000, 15000] |
\pm 18.3\,\text{A} |
chassis_control() |
底盘 CAN1 下发报文打包格式:
0x200帧:[RF轮电流 (int16), LF轮电流 (int16), LR轮电流 (int16), RR轮电流 (int16)](2ms 周期)
2.3 【云台 CAN2 ⟷ 底盘 CAN2】互联总线(偏航、拨弹与板间通信)
此总线为跨板物理直连,挂载了 2 台电机以及板间双向通讯帧。所有报文 ID 全局唯一、互不干扰:
| 通信对象 / 机构 | 设备类型 | 硬件拨码 ID | 报文帧 ID (StdId) | 方向 / 槽位 | 控制量限幅 (数值) | 报文功能与用途说明 |
|---|---|---|---|---|---|---|
| 拨弹盘控制 | M2006 | ID 1 | 0x200 |
云台下发 / 槽 1 (DATA[0..1]) |
[-10000, 10000] |
拨弹电流($\pm 10.0,\text{A}$) |
| Yaw 轴控制 | GM6020 | ID 1 | 0x1FE |
云台下发 / 槽 1 (DATA[0..1]) |
[-16384, 16384] |
Yaw 电流($\pm 3.0,\text{A}$) |
| 拨弹盘反馈 | M2006 | ID 1 | 0x201 |
电机回传 → 云台板 | — | M2006 角度、转速、转矩反馈 |
| Yaw 轴反馈 | GM6020 | ID 1 | 0x205 |
电机回传 → 双板接收 | — | GM6020 角度反馈(云台闭环 + 底盘跟随) |
| 底盘状态回传 | CToC 数据 | — | 0x019 |
底盘板 → 云台板 | — | 发射机构上电状态、底盘离线/故障位 |
| 遥控摇杆数据 | CToC 数据 | — | 0x149 |
云台板 → 底盘板 | — | DR16 遥控器四路摇杆通道量 |
| 控制状态信号 | CToC 数据 | — | 0x189 |
云台板 → 底盘板 | — | 遥控状态、小陀螺使能、云台故障位 |
| 世界系姿态角 | CToC 数据 | — | 0x1A9 |
云台板 → 底盘板 | — | 云台世界系 yaw(float)供底盘双 INS 跟随 |
互联总线零冲突机制:
- 控制下发:M2006 接收
0x200槽 1;GM6020 接收0x1FE槽 1,电调/电机内部硬件过滤器各自接收,互不干扰;- 反馈回传:M2006 回传
0x201;GM6020 回传0x205;CToC 回传0x019,仲裁 ID 全网唯一。
3. 电机硬件拨码与接线操作防错清单
| 电机机构名称 | 电机型号 | 物理接线接口 | 硬件拨码开关设定 | 对应反馈 ID | 调车注意事项 |
|---|---|---|---|---|---|
| 左摩擦轮 | M3508 (C620) | 云台板 CAN1 | ID 1 | 0x201 |
保持不变 |
| 右摩擦轮 | M3508 (C620) | 云台板 CAN1 | ID 2 | 0x202 |
保持不变 |
| Pitch 轴 | GM6020 | 云台板 CAN1 | ID 2 | 0x206 |
保持不变 |
| Yaw 轴 | GM6020 | 云台板 CAN2 | ID 1 | 0x205 |
保持不变 |
| 拨弹盘 | M2006 (C610) | 云台板 CAN2 | ID 1 | 0x201 |
⚠️ 需修改:拨码从 7 改为 1,插头换插到云台 CAN2 |
| 底盘右前 (RF) | M3508 (C620) | 底盘板 CAN1 | ID 1 | 0x201 |
保持不变 |
| 底盘左前 (LF) | M3508 (C620) | 底盘板 CAN1 | ID 2 | 0x202 |
保持不变 |
| 底盘左后 (LR) | M3508 (C620) | 底盘板 CAN1 | ID 3 | 0x203 |
保持不变 |
| 底盘右后 (RR) | M3508 (C620) | 底盘板 CAN1 | ID 4 | 0x204 |
保持不变 |
4. 大疆 DJI 电机 CAN 协议控制帧标准速查
4.1 控制帧标识符(StdId)与数据槽位定义
| 控制标识符 (StdId) | 目标电机类型与编号 | 槽 1 (DATA[0..1]) |
槽 2 (DATA[2..3]) |
槽 3 (DATA[4..5]) |
槽 4 (DATA[6..7]) |
数据取值范围 |
|---|---|---|---|---|---|---|
0x200 |
M3508 / M2006 (ID 1 ~ 4) | 电机 ID 1 | 电机 ID 2 | 电机 ID 3 | 电机 ID 4 | [-16384, 16384] (电流) |
0x1FF |
M3508 / M2006 (ID 5 ~ 8) | 电机 ID 5 | 电机 ID 6 | 电机 ID 7 | 电机 ID 8 | [-16384, 16384] (电流) |
0x1FE |
GM6020 (ID 1 ~ 4) 电流控制 | GM6020 ID 1 | GM6020 ID 2 | GM6020 ID 3 | GM6020 ID 4 | [-16384, 16384] (电流) |
0x2FE |
GM6020 (ID 5 ~ 7) 电流控制 | GM6020 ID 5 | GM6020 ID 6 | GM6020 ID 7 | 保留 | [-16384, 16384] (电流) |
0x1FF |
GM6020 (ID 1 ~ 4) 旧电压控制 | GM6020 ID 1 | GM6020 ID 2 | GM6020 ID 3 | GM6020 ID 4 | [-25000, 25000] (电压) |
0x2FF |
GM6020 (ID 5 ~ 7) 旧电压控制 | GM6020 ID 5 | GM6020 ID 6 | GM6020 ID 7 | 保留 | [-25000, 25000] (电压) |
4.2 电机反馈报文格式(Rx 反馈,全电机统一 DLC = 8)
DATA[0..1] : 机械角度 raw_angle (uint16_t, 0 ~ 8191 对应 0 ~ 360°)
DATA[2..3] : 转子转速 rotor_speed (int16_t, 单位 RPM)
DATA[4..5] : 实际转矩 raw_torque (int16_t, 反馈转矩电流值)
DATA[6] : 电机温度 temperature (uint8_t, 单位 ℃)
DATA[7] : 保留字节 (NULL)
5. 代码实现与参数映射对照
5.1 参数配置文件:robot_param.h
- 拨弹盘 CAN 反馈 ID:
#define GIMBAL_RAMMER_CAN_ID 0x201 // M2006 反馈 ID (CAN2 0x200 帧槽 1) - Pitch 轴电流环限幅:
#define GIMBAL_PITCH_SPEED_OUT_LIMIT 16384.0f // GM6020 电流满量程 (±3A) - Yaw 轴电流环限幅:
#define GIMBAL_YAW_SPEED_OUT_LIMIT 16384.0f // GM6020 电流满量程 (±3A)