RoboChassis_F427 is a universal electronic control software architecture built on the hardware framework of the Robocon 2020 competition chassis (equipped with the STM32F427 series microcontroller). Based on this self-developed framework, we optimized Robot No. 1 (referred to as R1 for short) used by the MTI Robot Team in the 2024 season.
The core objective of this project is to construct a blank, stable, and easily extensible underlying platform. It eliminates redundant functions, focuses on chassis motion control, sensor integration, and communication modules, and undergoes version iterations following programming standards that prioritize high readability and easy maintainability.
- Core MCU: STM32F427
- Basic Functions: Mecanum wheel chassis motion control, CAN communication driver
- Communication Interfaces:
- UART 2: Communication with self-developed 2.4G wireless remote controller
- UART 6: Laser radar (Lidar) data reception
- UART 7: RS485 absolute encoder-based axis positioning system
- UART 8: Positioning system zero-reset signal transmission
- Control Inputs: RoboMaster Remote Control / Keyboard Control
| Description | Modifications | Remarks |
|---|---|---|
| Basic Architecture | Based on the Robocon 2020 chassis project files. | All functional codes are removed, with only underlying drivers retained. |
| Platform | F427 underlying architecture. | Ensure the correct basic configuration of F427. |
| Rectification | Rectify all compiler warnings. | Improve code quality and stability. |
| Core | Establish a blank project architecture. | Provide a clean environment for subsequent function integration. |
| Description | Modifications | Remarks |
|---|---|---|
| Function Names | Modify most function names. | Adopt more semantic and user-friendly naming conventions (e.g., Module_Function_Action()). |
| Function Bodies | Improve function implementations. | Ensure the robustness of basic drivers. |
| Comments | Improve comments. | Enhance code readability and provide clear guidance for subsequent developers. |
| Description | Modifications | Remarks |
|---|---|---|
| Remote Controller | Modify the remote file. |
Integrate data parsing for the RoboMaster remote controller. |
| Control | Add keyboard control option. | Compatible with keyboard input from the RoboMaster client for convenient debugging and control. |
| Notes | The logic for modifying and deleting keys of the remote controller and keyboard is centralized in the remote module. |
| Description | Modifications | Remarks |
|---|---|---|
| Module | Add laser radar module. | Implement Lidar data frame reception and parsing. |
| Hardware | Lidar is connected to UART 6. | Configure communication parameters (baud rate, interrupt, etc.) of UART 6. |
| Description | Modifications | Remarks |
|---|---|---|
| Positioning System | Add positioning system functions. | Used to receive external positioning data. |
| Data Structure | Introduce the Rabbit structure and the PointRabbit function library. |
Standardize the storage and processing of positioning data. |
| Hardware | Original UART 7 is configured as a WiFi controller (ESP8266) for receiving positioning data. | Data received via WiFi is verified with identifiers. |
| Zero-Reset | Add the zero-reset function of the positioning system. | Zero-reset transmission port is modified to UART 8. |
| Zero-Reset | Implement automatic zero-reset upon power-on. | Ensure the consistent state of the positioning system at each startup. |
| Description | Modifications | Remarks |
|---|---|---|
| Chassis Control | Modify and improve chassis rotation issues. | Optimize the kinematic resolution and control of the Mecanum wheel chassis to enhance rotation accuracy and stability. |
| Remote Controller | Add self-developed remote control. | Implement data reception and parsing for the self-developed 2.4G wireless transmission remote controller. |
| Hardware | The self-developed remote controller is connected to UART 2. | Independent of the RoboMaster remote controller, providing an alternative or customized control method. |
| Description | Modifications | Remarks |
|---|---|---|
| Positioning System | Remove the WiFi controller (ESP8266) from UART 7. | Discontinue the WiFi solution from V0.4. |
| Hardware | Add RS485 absolute encoder-based axis positioning system based on C8T6. | Adopt a more reliable and high-precision encoder positioning scheme. |
| Hardware | The RS485 encoder is connected to UART 7. | Used to receive absolute position information from the encoder. |
| Application | Data is stored in the Positioning_system[20] array. |
Uniformly manage encoder data. |
This project was initially developed by kizuna (2023 ROBOCON Electronic Control Team) and subsequently organized and iterated by Liangchen Jason (2024 ROBOCON Electronic Control Team).
Future versions will continue to focus on architecture improvement, function enhancement, and performance optimization.
Message from kizuna (2023 ROBOCON Electronic Control Team):
No matter how difficult it is, we will never give up. Pursuing dreams is precisely the challenge we face ―― LoveLive!
Message from Liangchen Jason (2024 ROBOCON Electronic Control Team):
The harder you work, the luckier you get.
RoboChassis_F427 是一个基于 Robocon 2020 比赛底盘硬件框架(搭载 STM32F427 系列微控制器)建立的通用电控软件架构。我们基于此自研框架完善了MTI机器人战队在2024赛季使用的机器人1号(简称R1)
本项目的核心目标是构建一个空白、稳定、易于扩展的底层平台,去除多余功能,专注于底盘运动控制、传感器集成和通信模块,并遵循高可读性、易于维护的编程规范进行版本迭代。
- 核心MCU: STM32F427
- 基础功能: 麦克纳姆轮底盘运动控制、CAN通信驱动
- 通信接口:
- 串口 2: 自制 2.4G 无线遥控器通信
- 串口 6: 激光雷达 (Lidar) 数据接收
- 串口 7: RS485 绝对值编码器基轴定位系统
- 串口 8: 定位系统归零信号发送
- 控制输入: RoboMaster 遥控器 (Remote Control) / 键盘控制
| 描述 | 变动点 | 备注 |
|---|---|---|
| 基础架构 | 基于 Robocon 2020 底盘项目文件。 | 移除了所有功能性代码,仅保留底层驱动。 |
| 平台 | F427 底层架构。 | 确保 F427 的基础配置正确。 |
| 修缮 | 修缮所有编译器警告 (Warnings)。 | 提高代码质量和稳定性。 |
| 核心 | 建立空白工程架构。 | 为后续功能添加提供干净的环境。 |
| 描述 | 变动点 | 备注 |
|---|---|---|
| 函数名 | 修改大部分函数名。 | 采用更具语义化、方便使用的命名规范 (如 Module_Function_Action())。 |
| 函数体 | 完善函数实现。 | 确保基础驱动的健壮性。 |
| 注释 | 完善注释。 | 提高代码可读性,为后续开发者提供清晰指导。 |
| 描述 | 变动点 | 备注 |
|---|---|---|
| 遥控器 | 修改 remote 文件。 |
集成 RoboMaster 遥控器数据解析。 |
| 控制 | 加入键盘控制选项。 | 兼容 RoboMaster 客户端的键盘输入,方便调试和控制。 |
| 注意 | 遥控器和键盘的按键修改和删除逻辑集中在 remote 模块。 |
| 描述 | 变动点 | 备注 |
|---|---|---|
| 模块 | 加入激光雷达模块。 | 实现 Lidar 数据帧接收和解析。 |
| 硬件 | Lidar 连接至 串口 6。 | 配置串口 6 的通信参数 (波特率、中断等)。 |
| 描述 | 变动点 | 备注 |
|---|---|---|
| 定位系统 | 加入定位系统功能。 | 用于接收外部定位数据。 |
| 数据结构 | 引入 Rabbit 结构体,PointRabbit 函数库。 |
规范定位数据的存储和处理。 |
| 硬件 | 原串口 7 配置为 WiFi 控制器 (ESP8266) 接收定位数据。 | WiFi 接收数据加入标识符进行数据校验。 |
| 归零 | 增加定位系统归零功能。 | 归零发送端口修改为 串口 8。 |
| 归零 | 实现上电自动归零。 | 确保每次启动定位系统状态一致。 |
| 描述 | 变动点 | 备注 |
|---|---|---|
| 底盘控制 | 修改完善底盘旋转问题。 | 优化麦克纳姆轮底盘的旋转运动解算和控制,提高旋转精度和稳定性。 |
| 遥控器 | 加入自制遥控。 | 实现对自制 2.4G 无线传输遥控器数据的接收和解析。 |
| 硬件 | 自制遥控器连接至 串口 2。 | 独立于 RoboMaster 遥控器,提供备用或定制控制方式。 |
| 描述 | 变动点 | 备注 |
|---|---|---|
| 定位系统 | 删除串口 7 的 WiFi 控制器 (ESP8266)。 | 移除 V0.4 的 WiFi 方案。 |
| 硬件 | 加入基于 C8T6 的 RS485 绝对值编码器基轴定位系统。 | 采用更可靠、精度更高的编码器定位方案。 |
| 硬件 | RS485 编码器连接至 串口 7。 | 用于接收编码器的绝对位置信息。 |
| 应用 | 数据存储于 Positioning_system[20] 数组。 |
统一管理编码器数据。 |
本项目由 kizuna (2023 ROBOCON 电控) 奠定基础,并由 良辰Jason (2024 ROBOCON 电控) 进行整理和版本迭代。
未来的版本将持续进行架构完善、功能增强和性能优化。
kizuna (2023 ROBOCON 电控) 赠语:
无论多么艰难也不愿放弃,追梦正是对我们的挑战 ――《lovelive》
良辰Jason (2024 ROBOCON 电控) 赠语:
越努力,越幸运。