# RM-2026-Chassis RoboMaster 2026 赛季底盘控制固件,基于 STM32F407IGHx + Keil MDK 开发。 ## 项目概述 本项目为 RoboMaster 步兵/英雄机器人底盘控制器固件,支持麦克纳姆轮全向移动、多电机协同控制、遥控器/键鼠操控及 IMU 姿态反馈。 | 项目信息 | 内容 | |---------|------| | MCU | STM32F407IGHx | | 开发环境 | Keil MDK-ARM (UV5) | | HAL 库 | STM32CubeF4 HAL | | 遥控器 | DJI DT7 (SBUS 协议) | | 电机 | DJI M3508 × 4 (底盘驱动) | | IMU | BMI088 (加速度计 + 陀螺仪) | | 通信 | CAN1 / CAN2 | ## 代码架构 采用三层架构设计,职责分离: ``` 00-Driver/ // 底层驱动 —— "怎么做",不关心业务逻辑 ├── BSP_CAN.c/h CAN 总线底层封装 ├── BSP_USART.c/h 串口底层封装 ├── BMI088driver.c/h BMI088 寄存器级驱动 └── Parameter.h 全局参数/宏定义 01-Device/ // 设备层 —— 绑定具体硬件,抽象硬件接口 ├── Motor.c/h DJI 电机 (M3508/GM6020/M2006) 管理与 CAN 数据解析 ├── Remote.c/h DT7 遥控器 SBUS 数据接收与解析 └── BMI088.c/h BMI088 姿态数据处理与 CAN 转发 02-Application/ // 应用层 —— "做什么",专注功能与算法 ├── Classis_Wheels.c/h 麦轮底盘运动学解算与速度控制 ├── Chassis_CtoC.c/h 遥控器/键鼠数据映射与 CAN 转发 (Chassis to Chassis) ├── Chassis_Yaw_Big.c/h 底盘Yaw控制 (预留) └── PID.c/h 位置式 / 增量式 PID 控制器 ``` ### 架构原则 - **Driver 层**:仅实现硬件操作的“怎么做”,如寄存器读写、时序控制、总线收发。 - **Device 层**:依赖 HAL/Driver,将硬件原始数据封装为可直接使用的设备状态(电机转速、遥控器通道值、IMU 姿态角)。 - **Application 层**:专注功能算法与业务逻辑,完全不关心底层硬件细节。 ## 硬件连接 | 功能模块 | 接口 | 说明 | |---------|------|------| | 底盘电机 (M3508 × 4) | CAN1 | ID: 0x201 ~ 0x204 | | BMI088 | CAN2 | 姿态数据回传 | | DT7 遥控器 | USART1 | SBUS 协议,100 Hz | | 看门狗 (IWDG) | 内部 | 用于遥控器断连保护 | ## 核心功能 ### 1. 麦克纳姆轮运动控制 (`Classis_Wheels`) - 支持遥控器摇杆控制底盘前后、左右、旋转运动 - 麦轮速度解算,输出到四个 M3508 电机 - 基于增量式 PID 的闭环速度控制 ### 2. 遥控器/键鼠输入 (`Remote` / `Chassis_CtoC`) - DT7 遥控器 SBUS 信号解析(16 通道 + 拨杆 + 鼠标 + 键盘) - 支持键鼠操控模式(WASD 移动、鼠标控制) - 将控制指令通过 CAN 转发给底盘各模块 ### 3. 电机驱动 (`Motor`) - 支持 DJI M3508 / GM6020 / M2006 三种电机 - 自动编码器圈数累加、角度/转速/电流换算 - 标准 CAN 帧发送电流/电压控制指令 ### 4. PID 控制器 (`PID`) - 位置式 PID:适用于角度/位置控制 - 增量式 PID:适用于速度/电流控制 - 支持输出限幅、误差死区、积分清零 ### 5. IMU 姿态 (`BMI088`) - 读取加速度、陀螺仪原始数据 - 计算 Yaw / Pitch / Roll 姿态角 - 通过 CAN 转发给云台或上位机 ## 开发日志 | 日期 | 内容 | |------|------| | 2026.01.23 | 新建工程,确立三层架构;完成底盘轮子驱动代码 | | 2026.01.24 | 实现麦轮转向移动逻辑,接入遥控器控制 | | 2026.01.25 | 加入独立看门狗 (IWDG) 用于遥控器断连检测;调整 CAN 设备 ID | | 2026.02.06 | 代码阶段性整理,基础功能趋于完善 | ## 编译与烧录 1. 使用 Keil MDK 打开 `MDK-ARM/RM-2026-Classis.uvprojx` 2. 确认 Debug 配置为 ST-Link / J-Link 3. 点击 **Build** 编译,**Download** 烧录 > 注意:`.uvguix.*` 和 `.uvoptx` 为用户本地配置文件,已加入 `.gitignore`,无需提交。 ## 注意事项 - 看门狗用于检测遥控器连接状态,若遥控器断连将触发复位,**后续需加入软硬件结合的功率限制** - CAN 总线终端电阻需根据实际布线确认 - 电机 ID 与 `Motor.h` 中的枚举定义保持一致 ## 许可证 本项目为 Simba Robotics 内部开发,仅供 RoboMaster 2026 赛季使用。