Robocon2025 R1机器人

26 年 7 月 22 日 星期三
778 字
4 分钟

Problem - 赛题背景

第二十四届ROBOCON“飞身上篮” 需要机器人完成投篮、运球与扣篮动作

  1. 底盘功能迭代:第一版采用 4 轮全向轮底盘,无法适配全套动作;为了实现全功能,整车重构为中空底盘。
  2. 自瞄方案选择:初期尝试使用纯物理方法解算篮球轨迹,但实际效果不佳,主要原因是机器人机构自身的很多影响参数(如弹射刚度波动、空气属性等)难以精确测得。
  3. 数据传输链路:上位机需要获取高频位置与传感器数据,且需要兼顾下位机的实时性与资源占用。

Action - 工程实现

1. 硬件架构与底盘演进

  • 第一版 (2024.12 - 2025.2)

    R1 宇树 Go-m8010 电机组成的连杆机构(用于完成抛投动作),侧置驱动云台。 底盘为 4*T-Motor U10 内嵌全向轮,具备电动起跳能力。

    • 上位机仅作LIO处理、与下位机STM32通过USBCDC连接,传输位置数据。
    • STM32H723 运行 FreeRTOS,同时进行整车运动控制和电机通信。
    • 自主设计 RS485-UART 转换模块、下位机 STM32 分控板 PCB。
  • 第二版 (2025.3 - 比赛) rc2025

    对 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扣篮动作展示 dunk

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

文章标题:Robocon2025 R1机器人

文章作者:xyla

文章链接:https://xylaalyx.github.io/posts/proj_rc25[复制]

最后修改时间:


Layer 1

商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。