Files
Simba-OmniInfantry/电机配置.md
T

8.7 KiB
Raw Blame History

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)