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 赛季使用。

Description
25-26 赛季哨兵底盘代码
Readme 5.2 MiB
Languages
C 95.3%
Assembly 4.5%
CMake 0.2%