Problem - 赛题背景
第二十四届ROBOCON“飞身上篮” 需要机器人完成投篮、运球与扣篮动作。
- 底盘功能迭代:第一版采用 4 轮全向轮底盘,无法适配全套动作;为了实现全功能,整车重构为中空底盘。
- 自瞄方案选择:初期尝试使用纯物理方法解算篮球轨迹,但实际效果不佳,主要原因是机器人机构自身的很多影响参数(如弹射刚度波动、空气属性等)难以精确测得。
- 数据传输链路:上位机需要获取高频位置与传感器数据,且需要兼顾下位机的实时性与资源占用。
Action - 工程实现
1. 硬件架构与底盘演进
-
第一版 (2024.12 - 2025.2)
R1 宇树 Go-m8010 电机组成的连杆机构(用于完成抛投动作),侧置驱动云台。 底盘为 4*T-Motor U10 内嵌全向轮,具备电动起跳能力。
- 上位机仅作LIO处理、与下位机STM32通过USBCDC连接,传输位置数据。
- STM32H723 运行 FreeRTOS,同时进行整车运动控制和电机通信。
- 自主设计 RS485-UART 转换模块、下位机 STM32 分控板 PCB。
-
第二版 (2025.3 - 比赛)

对 R1 整车重构改为中空底盘,目的在于实现投篮 运球 扣篮全功能。 底盘为 3*全向轮底盘,具备气缸起跳能力。
2. STM32固件开发 (下位机)
实现面向上位机的多外设 USB 实时桥接:统一转发 3 路 CAN、多个 UART 与 BMI088 IMU 数据。
- 基于 STM32 HAL 与 C++20 开发裸机固件,以保证实时性和资源可控
- 使用中断安全缓冲区与对象延迟加载
- USB通信Bulk模式传输自定义帧
- 使用
xmake构建、arm-none-eabi编译、Ozone调试
3. ROS开发与调试 (上位机)
- 采用 Ubuntu 20.04 的 miniPC 作为机器人上层主控,上层运算部分在 ROS C++ 节点下运行
- 安装
preempt_rt实时内核补丁,优化系统实时性 - 方案优势:基于上位机主控的这一方案支持使用
rviz/rqt_plot等可视化工具,大大提升了整车的调参效率,同时简化了 LIO 节点与控制节点之间的通信维护(基于话题通信)。
4. R2 投篮自瞄方案迭代
针对物理解算效果不佳的问题,后期改为对投篮数据进行拟合:采集投篮电机速度、俯仰角、机器人位置等数据,使用 MATLAB 进行多项式函数拟合,生成映射表格调用。
Result - 成果展示
- 实现稳定的自瞄投篮动作,助力团队获得 ROBOCON2025 投篮赛 全国冠军。
- 基于ROS的方案大幅降低现场比赛与测试时的调试成本。
R1扣篮动作展示

Technology - 技术栈
- 下位机:STM32H723, C++20, FreeRTOS, HAL, USB FS Bulk, CAN, RS485, EasyEDA/KiCad
- 上位机:Ubuntu 22.04, PREEMPT_RT, ROS (C++), RViz, rqt_plot, MATLAB (多项式拟合)
- 工具链:xmake, arm-none-eabi-gcc, Ozone, GitHub Actions