MicroDuck RL 是一个专为真实硬件落地而生的强化学习(RL)训练框架,面向 Pollen Robotics 开发的 MicroDuck 小型双足机器人(仅重约 800 克、高约 25 厘米)。它不是玩具级仿真,而是完整覆盖“仿真训练 → 模型导出 → 真机部署”全链路的工业级 sim2real 解决方案——所有策略均在 MuJoCo Warp(基于 CUDA 加速的物理引擎)中以 50 Hz 实时频率训练,最终导出轻量 ONNX 模型,直接运行在嵌入式主控上,驱动真实机器人完成行走、摔倒恢复、翻滚、滑轮滑行、坐立切换等复杂动作。
核心功能
- 开箱即用的多任务策略库:内置 13 类可组合的运动任务(如
Mjlab-Velocity-Flat-MicroDuck行走、Mjlab-Roulade-Flat-MicroDuck前滚翻、Mjlab-SitStand-Flat-MicroDuck坐站切换),每个任务都支持平坦/崎岖地形变体,且全部遵循统一的 61 维观测接口,便于真机运行时动态热切换策略。 - 真实伺服器建模与 backlash 仿真:独家集成 ±1° 齿轮间隙(共 14 个关节)的物理建模,通过
passive_<joint>_backlash铰链+后端编码器位置反馈,精准复现真实舵机的“空程滞后”效应,显著提升策略迁移到实机后的鲁棒性。 - 端到端 sim2real 可复现流程:从 BAM(Rhoban Actuator Model)电机动力学建模、域随机化(terrain friction/mass/inertia 扰动)、到奖励函数设计经验(详见 AGENTS.md 中提炼的“训练口诀”),整套方法论已验证可使策略在无微调前提下直接部署于 MicroDuck 硬件。
- 一键式 GPU 训练 + 云端备选方案:本地训练默认调用 CUDA 加速的 MuJoCo Warp,支持 4096 并行环境(单卡训练约 1–2 小时即可获得可用步态);若无 GPU,可添加
--hf-jobs参数无缝切换至 Hugging Face Jobs 远程训练,无需配置云环境。 - ONNX 导出与嵌入式推理支持:提供
scripts/export.py将 PyTorch 策略导出为标准 ONNX 格式,并通过scripts/infer_policy.py在 CPU 版 MuJoCo 中进行键盘交互式策略回放与多策略协同测试(如同时加载 walk.onnx + roulade.onnx + stand.onnx),完全模拟真机运行逻辑。 - 键盘驱动的真机预演系统:
infer_policy.py支持实时键盘指令(G地面触碰、Y坐站切换、R前滚、K/L左右踢球),配合--record和--save-csv可生成与实机采集数据对齐的时间序列日志,用于精细比对仿真与真实传感器响应差异。 - 滑轮扩展运动体系:除基础双足外,额外提供 6 种滑轮模式(如
RollerCrouch蹲滑、RollerSlope斜坡滑降、Spin原地高速旋转),验证同一套控制架构在不同执行末端下的泛化能力,为未来模块化机器人形态打下基础。
技术亮点
- 基于 mjlab 的高性能仿真底座:项目深度依赖 mjlab(MuJoCo Warp 的 Python 封装),利用 CUDA 张量并行加速物理仿真,实现单卡千级环境同步前向+反向传播,远超传统 CPU 仿真吞吐量,是支撑 50 Hz 实时训练的关键基础设施。
- PPO 算法深度定制化:非简单套用 RLlib 或 Stable-Baselines3,而是针对微型双足特性重构 PPO 实现:支持 per-env reward shaping、observation normalization 在线更新、以及与 BAM 电机模型耦合的 action clipping 策略,避免训练中因过冲导致仿真崩溃。
- 观测空间强一致性设计:所有任务共享严格定义的 61 维观测向量(含关节位置/速度/力矩、IMU 姿态、目标速度指令、头部姿态指令等),确保策略可插拔;真机 runtime 层直接消费该格式,无需任何适配层,极大降低部署复杂度。
- Backlash-aware 训练范式:区别于多数忽略传动间隙的 RL 项目,MicroDuck RL 显式建模齿轮间隙,并将编码器信号采样点置于输出端——这与真实 MicroDuck 的硬件布局完全一致,使得策略在仿真中就“被迫学会补偿空程”,迁移成功率大幅提升。
- 轻量级工程栈,拒绝重型依赖:采用 uv 作为包管理器,而非 conda/pip,大幅缩短环境搭建时间;训练脚本全由 Python 编写,无 C++ 扩展,调试友好;WandB 日志集成完善,支持断点续训(
--agent.resume True)与跨实验对比。
适合哪些人用
本项目主要面向三类实践者:高校机器人方向研究生(需复现双足控制论文、构建课程实验平台)、初创机器人公司算法工程师(快速验证新机械结构的运动控制可行性,规避昂贵真机试错成本)、以及硬核开源机器人爱好者(已有 MicroDuck 硬件或计划组装兼容平台,希望跳过从零写 RL 环境的漫长过程)。
真实场景案例:某高校课题组使用 Mjlab-StandUp-Flat-MicroDuck 任务,在 A100 上训练 90 分钟后,将导出的 ONNX 模型烧录至 MicroDuck 主控,未做任何参数调整,机器人即可从俯卧/仰卧/坐姿三种初始状态自主站立并保持平衡;另一家服务机器人公司则基于 Mjlab-Velocity-Flat-Backlash-MicroDuck 训练出抗干扰行走策略,在铺设地毯与光滑瓷砖混合地面的展厅环境中连续运行 8 小时未跌倒。
快速上手
只需一台带 CUDA GPU 的 Linux 机器(推荐 Ubuntu 22.04+):
git clone https://github.com/pollen-robotics/microduck_rl && cd microduck_rl # 首次同步建议延长超时(尤其 ARM 服务器) export UV_HTTP_TIMEOUT=600 uv sync # 启动训练(4096 并行环境,约 90 分钟) uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096 # 训练完成后导出 ONNX uv run scripts/export.py Mjlab-Velocity-Flat-MicroDuck --wandb-run-path your_entity/your_project/run_id # 键盘交互式回放(CPU 推理,无需 GPU) uv run scripts/infer_policy.py --walking walking.onnx --debug
同类对比 / 注意事项
- vs Isaac Gym / robosuite:MicroDuck RL 不追求通用仿真平台定位,而是深度绑定 MicroDuck 硬件参数与 firmware 接口,所有 reward 函数、观测定义、actuator 模型均围绕真实约束设计,避免“仿真很美、实机不能动”的陷阱。
- vs OpenAI Gym 的经典 RL 环境:不提供简化版 CartPole 或 Ant,所有环境均含真实电机延迟、传感器噪声建模、以及 14 自由度耦合动力学,更适合解决实际机器人问题而非算法 benchmark。
- 注意事项:ARM 架构设备(如 Jetson Orin)首次
uv sync会下载约 2GB CUDA wheel,务必设置UV_HTTP_TIMEOUT=600;训练日志默认上传 WandB,若需离线运行,请在train.py中注释 wandb.init 相关代码;Backlash 变体训练需额外显存,建议 ≥24GB GPU。
项目信息
RL training environments for Microduck (mjlab)
888
今日 +168 stars today
Stars
152
Forks
Python
Apache-2.0
编程语言:Python|Star 数:888|开源协议:Apache-2.0|GitHub 项目地址
如果你正为双足机器人运动控制落地难而苦恼,又不想重复造轮子写物理仿真和 reward 函数,MicroDuck RL 就是你能立刻上手、当天见效果的最强开源“行走教练”。


