Go to file
2026-02-25 15:43:18 +08:00
.cache/clangd/index 完成上层 2025-10-07 03:51:47 +08:00
.settings 重构底层 2026-01-07 16:48:18 +08:00
.vscode 更新config 2026-02-23 18:13:20 +08:00
cmake 合并 balance_infantry 到 MC_02 2026-02-25 15:43:10 +08:00
CMakeFiles cmake启动 2025-09-19 15:33:41 +08:00
Core 合并 balance_infantry 到 MC_02 2026-02-25 15:43:10 +08:00
Drivers 合并 balance_infantry 到 MC_02 2026-02-25 15:43:10 +08:00
MDK-ARM 合并 balance_infantry 到 MC_02 2026-02-25 15:43:10 +08:00
Middlewares 合并 balance_infantry 到 MC_02 2026-02-25 15:43:10 +08:00
USB_DEVICE Merge branch 'upper' into 准备重构 2025-10-07 03:51:28 +08:00
User 合并 main 到 MC_02 2026-02-25 15:43:18 +08:00
utils 准备改 2026-02-10 17:45:13 +08:00
.clangd 生成代码 2026-01-01 16:31:25 +08:00
.DS_Store 更新config 2026-02-23 18:13:20 +08:00
.gitignore 准备改 2026-02-10 17:45:13 +08:00
.mxproject 腿长好了 2026-02-12 17:37:15 +08:00
build.ninja 电机修好了 2025-09-26 15:09:20 +08:00
cmake_install.cmake cmake启动 2025-09-19 15:33:41 +08:00
CMakeCache.txt cmake启动 2025-09-19 15:33:41 +08:00
CMakeLists.txt 加一个调试线程 2026-02-19 12:38:12 +08:00
CMakePresets.json 生成代码 2026-01-01 16:31:25 +08:00
comp_vmc.cpp 提交 2025-09-17 03:41:35 +08:00
compile_commands.json 电机修好了 2025-09-26 15:09:20 +08:00
CtrBoard-H7_ALL.ioc 腿长好了 2026-02-12 17:37:15 +08:00
debug.jdebug 更新shoot 2025-10-02 01:19:13 +08:00
DevC.ioc Merge branch 'upper' into 准备重构 2025-10-07 03:51:28 +08:00
infantry.jdebug 优化freertos堆 2025-09-28 16:10:40 +08:00
mod_wheelleg_chassis.cpp 重构 2025-10-02 16:59:28 +08:00
README.md feat(balance_chassis): enable wheel-leg balance mode and adjust parameters 2026-02-09 14:59:50 +08:00
startup_stm32f407xx.s 底层配置 2025-09-28 16:26:18 +08:00
startup_stm32h723xx.s 生成代码 2026-01-01 16:31:25 +08:00
STM32F407XX_FLASH.ld Merge branch 'upper' into 准备重构 2025-10-07 03:51:28 +08:00
STM32H723XG_FLASH.ld 可以啊 2026-01-07 19:35:53 +08:00
update_cmake_sources.py cmake启动 2025-09-19 15:33:41 +08:00
update_sources.sh cmake启动 2025-09-19 15:33:41 +08:00
USAGE.md feat(balance_chassis): enable wheel-leg balance mode and adjust parameters 2026-02-09 14:59:50 +08:00
virtual_chassis_example.c 有反馈了 2025-10-05 12:04:46 +08:00
virtual_chassis_protocol.h 有反馈了 2025-10-05 12:04:46 +08:00

平衡轮足机器人电控系统

基于 STM32H723 的平衡轮腿机器人电控系统,采用 FreeRTOS 实时操作系统,支持 LQR、VMC 等先进控制算法。

项目简介

本项目是一个高性能的平衡轮腿机器人电控系统,实现了机器人的平衡控制、运动控制、云台控制、发射机构控制等功能。系统采用模块化设计,具有良好的可扩展性和可维护性。

主要特性

  • 高性能硬件平台STM32H723 微控制器480MHz 主频
  • 实时操作系统FreeRTOS多任务并发处理
  • 先进控制算法
    • LQR线性二次调节器平衡控制
    • VMC虚拟模型控制五连杆运动学解算
    • PID 控制器
    • 卡尔曼滤波器
  • 多种功能模块
    • 平衡底盘控制(轮腿结构)
    • 云台控制Yaw/Pitch
    • 发射机构控制
    • 遥控接收DR16
    • AI 视觉系统
  • 丰富的外设接口
    • CAN/FDCAN 总线
    • SPI 接口
    • UART 串口
    • PWM 输出
    • ADC 采集
  • 调试工具
    • CLI 命令行接口
    • VOFA+ 数据可视化
    • 监控任务

硬件架构

主控板

  • 型号STM32H723XG
  • 主频480MHz
  • Flash1MB
  • RAM1.4MB

传感器

  • IMUBMI088加速度计 + 陀螺仪)
  • 遥控器:大疆 DR16
  • 电机
    • LZ 直流无刷电机(关节电机)
    • LK 直流无刷电机(轮子电机)
    • DM 直流无刷电机(云台电机)

通信接口

  • CAN/FDCAN:电机通信、视觉通信
  • SPIIMU 数据读取
  • UART遥控接收、CLI、VOFA+

软件架构

目录结构

├── Core/                 # STM32 HAL 库生成的核心代码
│   ├── Inc/             # 头文件
│   └── Src/             # 源文件
├── Drivers/              # STM32 驱动库
├── User/                # 用户代码
│   ├── bsp/             # 板级支持包
│   │   ├── can.h/.c     # CAN/FDCAN 驱动
│   │   ├── uart.h/.c    # UART 驱动
│   │   ├── spi.h/.c     # SPI 驱动
│   │   ├── gpio.h/.c    # GPIO 驱动
│   │   ├── flash.h/.c   # Flash 操作
│   │   └── ...
│   ├── component/       # 通用组件
│   │   ├── lqr.h/.c     # LQR 控制器
│   │   ├── vmc.h/.c     # VMC 虚拟模型控制
│   │   ├── pid.h/.c     # PID 控制器
│   │   ├── kalman_filter.h/.c  # 卡尔曼滤波
│   │   ├── ahrs.h/.c    # 姿态解算
│   │   ├── filter.h/.c  # 滤波器
│   │   ├── limiter.c    # 限幅器
│   │   └── ...
│   ├── device/          # 设备驱动
│   │   ├── motor_lz.h/.c     # LZ 电机驱动
│   │   ├── motor_lk.h/.c     # LK 电机驱动
│   │   ├── motor_dm.h/.c     # DM 电机驱动
│   │   ├── dr16.h/.c         # 遥控器驱动
│   │   ├── bmi088.h/.c       # IMU 驱动
│   │   ├── vision_bridge.c   # 视觉通信
│   │   ├── vofa.h/.c         # VOFA+ 调试
│   │   └── ...
│   ├── module/          # 功能模块
│   │   ├── balance_chassis.h/.c  # 平衡底盘
│   │   ├── gimbal.h/.c          # 云台
│   │   ├── shoot.h/.c           # 发射机构
│   │   └── config.h/.c          # 配置管理
│   └── task/            # 任务管理
│       ├── user_task.h/.c  # 任务框架
│       ├── rc.c            # 遥控任务
│       ├── ctrl_chassis.c  # 底盘控制任务
│       ├── ctrl_gimbal.c   # 云台控制任务
│       ├── ctrl_shoot.c    # 发射控制任务
│       ├── ai.c            # AI 任务
│       ├── monitor.c       # 监控任务
│       ├── cli.c           # CLI 任务
│       └── ...
├── utils/               # 工具和仿真
├── MDK-ARM/            # Keil MDK 工程文件
├── build/              # CMake 构建目录
└── CMakeLists.txt      # CMake 构建配置

任务调度

系统采用 FreeRTOS 实时多任务调度,主要任务包括:

任务名称 频率 功能描述
Task_rc 500Hz 遥控器数据处理
Task_atti_esit - 姿态估计
Task_ctrl_chassis 500Hz 底盘控制
Task_ctrl_gimbal 500Hz 云台控制
Task_ctrl_shoot 500Hz 发射控制
Task_ai 500Hz AI 视觉处理
Task_monitor 500Hz 系统监控
Task_vofa 500Hz VOFA+ 数据发送
Task_cli - CLI 命令行处理
Task_blink 500Hz LED 指示灯

核心算法

1. LQR 控制

线性二次调节器Linear Quadratic Regulator用于实现轮腿机器人的平衡控制。

状态向量

  • theta摆杆角度
  • d_theta摆杆角速度
  • x驱动轮位移
  • d_x驱动轮速度
  • phi机体俯仰角
  • d_phi机体俯仰角速度

控制输出

  • T轮毂力矩
  • Tp髋关节力矩

2. VMC 控制

虚拟模型控制Virtual Model Control实现五连杆运动学解算和力矩分配。

功能

  • 五连杆正运动学解算(关节角度 → 足端位置)
  • 五连杆逆运动学解算(虚拟力 → 关节力矩)
  • 等效摆动杆参数计算
  • 地面接触检测

3. 平衡控制流程

遥控输入 → 运动指令 → LQR 控制 → VMC 解算 → 电机输出 → 平衡控制
              ↓
         姿态反馈

编译环境

推荐开发环境

  1. IDE

    • Keil MDK-ARM 5.x
    • VS Code + Cortex-Debug 插件
  2. 编译工具链

    • ARM GCC Toolchain (arm-none-eabi-gcc)
    • CMake 3.22+
  3. 调试工具

    • ST-Link V2/V3
    • J-Link

依赖库

  • STM32 HAL 库
  • FreeRTOS
  • CMSIS DSP 库

快速开始

1. 克隆项目

git clone ssh://git@gitea.qutrobot.top:222/robofish/rm_balance.git
cd balance_infantry

2. 使用 Keil MDK 编译

  1. 打开 MDK-ARM/CtrBoard-H7_ALL.uvprojx
  2. 选择正确的编译配置Debug/Release
  3. 点击编译F7
  4. 下载到开发板F8

3. 使用 CMake 编译

# 创建构建目录
mkdir -p build && cd build

# 配置 CMake
cmake ..

# 编译
make -j4

# 生成 HEX 文件位于 build 目录

4. 使用 VS Code 开发

项目已配置 .clangd,支持:

  • 智能代码补全
  • 语法检查
  • 跳转到定义
  • 重构功能

配置说明

参数配置

主要参数配置文件位于 User/module/config.c,包括:

  • 底盘参数Chassis_Params_t

    • 电机参数
    • VMC 参数
    • LQR 增益矩阵
    • PID 参数
    • 跳跃参数
  • 云台参数Gimbal_Params_t

    • 电机参数
    • PID 参数
  • 发射参数Shoot_Params_t

    • 摩擦轮参数
    • 拨弹轮参数

配置文件格式

项目使用 YAML 格式的配置文件(部分模块):

  • User/task/config.yaml
  • User/bsp/bsp_config.yaml
  • User/component/component_config.yaml
  • User/device/device_config.yaml

调试工具

1. CLI 命令行

通过串口连接,可使用以下命令:

help                    # 显示帮助信息
status                  # 显示系统状态
motor                   # 电机控制
chassis                 # 底盘控制
gimbal                  # 云台控制

2. VOFA+ 数据可视化

支持实时数据监控和绘图,配置串口参数后即可使用。

3. 监控任务

Task_monitor 实时监控系统状态,包括:

  • 电池电压
  • CPU 温度
  • 任务运行频率
  • 栈使用情况

注意事项

安全事项

⚠️ 重要

  1. 首次运行前务必检查电机方向和限位
  2. 调试时使用低电压,避免失控
  3. 确保 IMU 安装正确,校准零点
  4. 测试跳跃功能时做好防护

常见问题

  1. 编译错误

    • 检查 ARM GCC 工具链是否正确安装
    • 确认 CMake 版本 >= 3.22
  2. 下载失败

    • 检查 ST-Link/J-Link 连接
    • 确认 BOOT 模式设置正确
  3. 平衡控制失效

    • 检查 IMU 数据是否正常
    • 确认 LQR 参数是否合理
    • 验证电机反馈数据

贡献指南

欢迎提交 Issue 和 Pull Request

许可证

本项目采用 MIT 许可证。

联系方式

  • 项目地址ssh://git@gitea.qutrobot.top:222/robofish/rm_balance.git

祝您使用愉快!