设计并实现一套面向复杂地形的串联型轮腿机器人控制系统(整车约 25 kg),完成从状态估计、运动控制到视觉感知与决策的全链路闭环开发。
- 控制侧基于 LQR + TinyMPC 构建轮腿系统控制器,实现底盘平衡与双腿伸缩调节,引入 VMC 提升地形适应能力,支持越障与动态跳跃(实测约 30 cm);同时建立世界 / 底盘 / 云台多坐标系变换模型,实现底盘高速旋转下云台姿态稳定。
- 状态估计方面基于 BMI088 IMU 构建 QEKF + AHRS 姿态解算链路,支撑高频闭环控制;功率侧通过 RLS 建模与分配策略结合超级电容优化瞬态功率输出。
- 视觉侧基于 YOLO + PnP + MPC + 弹道模型 构建“感知 → 预测 → 控制”链路,实现目标识别与自动瞄准。
主要性能指标:
- 控制频率 1k Hz
- 系统延迟 < 2 ms
- 视觉处理延迟 10 ms(100 FPS)
系统实现方面,基于 HPM6754 双核 MCU(816 MHz) 进行异构任务划分:CPU1 负责控制算法与状态估计,CPU0 负责外设驱动与通信调度,并设计核间通信(IPC)实现低延迟数据同步。
在软件架构上基于 Zephyr RTOS + zbus 构建模块化发布-订阅系统,实现控制、感知与通信多线程解耦与并行执行;同时基于 Zephyr Shell 构建调试接口,结合 MAVLink + QGroundControl 实现实时数据可视化与在线参数调优,并支持参数 Flash 持久化。
- 核间通信延迟 < 10 μs
- 调参响应时间 < 20 ms
| 层级 | 职责 |
|---|---|
src/ |
Zephyr 入口,main() 仅做启动转发 |
bootstrap/ |
启动编排、模块注册与拉起 |
modules/ |
业务模块(remote_input、chassis 等) |
services/ |
执行器抽象、调参服务、运行时初始化 |
channels/ |
zbus 消息主题定义 |
protocols/ |
电机协议(DJI、DM、Cubemars) |
platform/ |
板级、驱动、存储适配 |
debug/shell/ |
Shell 调试命令 |
uart_dispatch 收到遥控器数据
↓
remote_input_module 解析并发布 zbus channel
↓
chassis_module 订阅并计算,发布底盘指令
↓
actuator_service 转换为 CAN 帧下发到电机
# 1. 安装 Python 虚拟环境和 West
python -m venv .venv
source .venv/bin/activate # 或 .venv\Scripts\activate
pip install west
# 2. 新建 workspace 并 clone 工程
mkdir rm_test_ws
cd wbr_control_ws
west init -m https://github.com/NoneOfEver/wbr_control.git
# 3. 拉取依赖
west update# 构建
west build -p always -b hpm6e00evk_v2 -s .
# 烧录
west flash