Microduck RL:800 克双足机器人的 Sim2Real 全食谱

训练一个双足机器人走路,传统路径是:在仿真里训练 → 部署到真机 → 发现真机和仿真对不上 → 调参 → 再训练 → 再部署 → 再对不上。这个循环可能持续几个月。

目录
  1. Microduck RL:800 克双足机器人的 Sim2Real 全食谱
  2. 场景开篇
  3. Microduck 是什么
  4. Sim2Real 的完整食谱
  5. 1. BAM 执行器物理
  6. 2. 域随机化(Domain Randomization)
  7. 3. 齿轮间隙模拟
  8. 4. MuJoCo Warp 加速
  9. 5. ONNX 导出 + 真机部署
  10. 13 个任务:从走路到翻跟头
  11. 类比:训练拳击手的三种方式
  12. 齿轮间隙的哲学
  13. 技术栈
  14. 数据
  15. 为什么这很重要
  16. 1. Sim2real 食谱的开源
  17. 2. 小型机器人的民主化
  18. 3. 多策略热切换的工程实践
  19. 4. Backlash 建模的示范
  20. 结语

Microduck RL:800 克双足机器人的 Sim2Real 全食谱

场景开篇

训练一个双足机器人走路,传统路径是:在仿真里训练 → 部署到真机 → 发现真机和仿真对不上 → 调参 → 再训练 → 再部署 → 再对不上。这个循环可能持续几个月。

Pollen Robotics 的 Microduck RL 仓库给出了一个不同的答案:把真机的所有不完美——齿轮间隙、编码器位置、执行器物理——全部在仿真里建模,然后训练策略时就把这些不完美当作环境的一部分。

结果:策略在仿真里学会应对齿轮间隙,部署到真机时,真机的齿轮间隙对策略来说不是"新问题",而是"老朋友"。

Microduck 是什么

Microduck 是 Pollen Robotics(Reachy 机器人的制造商)推出的一款小型双足机器人:

  • 重量:约 800 克
  • 身高:约 25 厘米
  • 执行器:14 个舵机关节
  • 控制频率:50 Hz
这不是一个大型研究平台。这是一个可以放在桌面上、用笔记本就能训练的小型机器人。但它的训练食谱却包含了 sim2real 的所有关键要素。

Sim2Real 的完整食谱

Microduck RL 仓库的核心价值不是"又一个 RL 训练环境",而是它把 sim2real 的每一个环节都显式建模了。这不是黑魔法,是一份可复现的食谱。

1. BAM 执行器物理

BAM(Backlash Actuator Model)是 Rhoban 实验室开发的执行器物理模型。传统的 RL 训练用理想的扭矩控制,但真实舵机有摩擦、有齿轮间隙、有电机响应延迟。BAM 把这些物理特性建模进仿真,让策略在训练时就"感受"到真实舵机的行为。

2. 域随机化(Domain Randomization)

在训练时随机化物理参数:摩擦系数、质量分布、关节阻尼。策略学会的不是"在某个特定参数下走路",而是"在参数的某个分布下走路"。部署到真机时,真机的参数在这个分布内,策略就能工作。

3. 齿轮间隙模拟

这是 Microduck RL 最有意思的设计。每个舵机关节都有一个 ±1° 的齿轮间隙(2° 总间隙)。在仿真里,这个间隙被建模为一个未驱动的铰链关节(passive__backlash),串联在舵机驱动关节之后。

关键细节:真实编码器在齿轮的输出端,所以仿真里的编码器读数也是"穿过间隙"的——qpos[servo] + qpos[backlash]。这意味着策略看到的关节位置和真实位置之间有一个未知的偏移,策略必须学会处理这个偏移。

每个主要任务都有 Backlash 孪生版本:Mjlab-Velocity-Flat-Backlash-MicroDuck。同样的任务,在有齿轮间隙的环境下训练。

4. MuJoCo Warp 加速

训练用 MuJoCo Warp(mjlab),这是 MuJoCo 的 GPU 加速版本。4096 个并行环境,1-2 小时就能训练出一个可用的步态。没有 GPU?--hf-jobs 可以在 Hugging Face Jobs 上跑。

5. ONNX 导出 + 真机部署

训练好的策略导出为 ONNX 格式,由 pollen-robotics/microduck 仓库里的 runtime 加载。50 Hz 控制频率,在真机上实时推理。

13 个任务:从走路到翻跟头

Microduck RL 不只是训练走路。它有 13 个任务,覆盖了双足机器人的各种行为:

任务地形描述
Velocity平地/粗糙主任务:速度命令 + 头部姿态控制
VelStand平地/粗糙走路 + 摔倒恢复在一个策略里
StandUp平地/粗糙从趴着/仰着/坐着站起来
SitStand平地/粗糙命令式坐下 ↔ 站起
GroundPick平地/粗糙蹲下用嘴尖触地再站起
BallKick平地踢一个 70mm/15g 的球(策略看不到球)
Roulade平地前滚翻:头顶着地翻过去再站起
Rollers平地穿轮滑鞋的速度跟踪
Swizzle平地经典对称滑冰步法
RollerCrouch平地滑行中蹲下
RollerSlope斜坡滑下斜坡
RollerStandUp平地从地面站起来到轮子上
Spin平地穿轮滑鞋原地旋转
这些任务不是孤立的。部署时,runtime 通过一个共享的 61 维观测契约在策略间热切换。走路策略发现机器人要摔了?切换到恢复策略。用户按了"Y"键?切换到坐站策略。

scripts/infer_policy.py 可以排练这种切换:

uv run scripts/infer_policy.py --walking walk.onnx --standing stand.onnx \
    --sitstand sitstand.onnx --roulade roulade.onnx --new-cmd-obs

键盘控制:速度命令、G 地面拾取、Y 坐/站、R 翻滚、K/L 踢球。

类比:训练拳击手的三种方式

训练一个机器人走路,有三种思路:

方式一:理想环境训练。在完美的仿真里训练,然后期望真机也完美。就像在跑步机上训练拳击手——心肺功能上去了,但第一次挨拳头就懵了。

方式二:域随机化。在仿真里随机化所有参数,让策略学会适应各种情况。就像让拳击手和不同体型的对手对练——适应能力上去了,但遇到没见过的情况还是可能翻车。

方式三:Microduck 的方式。把真机的所有已知不完美(齿轮间隙、编码器位置、执行器物理)都建模进仿真,然后在这些不完美之上再做域随机化。就像让拳击手戴着有缝隙的手套训练、站在有微微弹性的地板上、面对会突然变重的沙袋——训练环境和真实比赛的每一个不完美都对齐了。

这不是"更难的训练",而是"更真实的训练"。策略在训练时已经经历了真机的不完美,部署时这些不完美就不是"新问题"。

齿轮间隙的哲学

齿轮间隙(backlash)是机械工程里一个经典问题。两个齿轮啮合时,齿和齿之间有微小的间隙。这意味着当你转动输入齿轮时,输出齿轮不会立刻跟着动——有一段"空行程"。

对于控制算法来说,齿轮间隙是个噩梦。你的编码器告诉你"关节在 30 度",但实际上关节可能在 29 度到 31 度之间的任何位置。你的 PD 控制器以为自己在控制一个确定的系统,但实际上系统有一个不确定的偏移。

Microduck RL 的处理方式很优雅:不试图消除间隙,而是让策略学会和间隙共存。在仿真里建模间隙,让策略在训练时就经历这种不确定性。策略学会的不是"精确控制关节角度",而是"在关节角度有不确定性的情况下依然保持平衡"。

这就像学骑自行车:你不需要知道轮胎的确确抓地力是多少,你只需要学会在各种抓地力下都能保持平衡。

技术栈

  • 仿真器:MuJoCo Warp(mjlab),GPU 加速
  • RL 算法:PPO
  • 执行器模型:BAM(Rhoban 实验室)
  • 策略格式:ONNX
  • 训练环境数:4096 并行环境
  • 训练时间:1-2 小时(4096 envs,GPU)
  • 控制频率:50 Hz(训练和部署一致)

数据

  • 语言:Python
  • Stars:147 today(2026-08-30 首次上榜)
  • 机器人重量:~800g
  • 机器人身高:~25cm
  • 关节数:14 个舵机
  • 齿轮间隙:±1°(2° 总)
  • 仓库:https://github.com/pollen-robotics/microduck_rl

为什么这很重要

1. Sim2real 食谱的开源

大多数 sim2real 论文只描述方法,不公开完整实现。Microduck RL 把整个食谱——从执行器物理到域随机化到齿轮间隙——全部开源。这是可复现的 sim2real,不是"相信我我调通了"。

2. 小型机器人的民主化

800 克、25 厘米高的机器人,用笔记本就能训练。这不是波士顿动力那种百万美元级的研究平台。这是可以放在教室里、让学生亲手训练 sim2real 策略的教育工具。

3. 多策略热切换的工程实践

13 个策略通过 61 维共享观测契约热切换,这是一个很好的工程模式。不是训练一个"什么都会"的巨型策略,而是训练多个专门策略,在运行时根据状态切换。这更模块化、更可调试、更安全。

4. Backlash 建模的示范

把齿轮间隙显式建模进仿真,这是一个值得所有 sim2real 项目学习的设计。不是所有机器人都有齿轮间隙问题,但"把已知的物理不完美建模进仿真"这个思路是通用的。

结语

Microduck RL 的价值不在于它训练了一个会走路的机器人。而在于它把 sim2real 的每一个环节——执行器物理、域随机化、齿轮间隙、策略导出、真机部署——都显式地、可复现地实现了。

这不是黑魔法,是工程。每一个设计决策都有文档,每一个物理建模都有代码,每一个假设都可以在仿真里验证。

当 sim2real 的食谱被完整公开时,双足机器人研究就从"实验室秘方"变成了"社区知识"。Microduck RL 是这个转变的一个缩影。

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(1)

Q

齿轮间隙那段最精彩,我顺着代码查了。±1° 间隙在 XML 里是一个不驱动的被动铰链 passive__backlash,串在舵机关节后面;编码器读数是 qpos[servo]+qpos[backlash],也就是穿过间隙再量。仿真对策略撒的谎,和硬件对固件撒的谎,是同一句谎话。策略在训练里听惯了,上真机就不慌。

一个纠错:BAM 不是 Backlash Actuator Model,是 Rhoban 的 Better Actuator Models,ICRA 2025 的论文。这个缩写展开得太顺手了。顺手到我起疑,一查果然是帖子自己编的。

几个帖子没提的彩蛋。鸭子身上其实有 15 个舵机,第 15 个是嘴——XML 没给它配执行器,所以策略只驱 14 个。嘴是自由职业。任务列表里有穿轮滑鞋原地旋转的 Spin,还有专门的 RollerStandUp:从地上爬到轮子上站好。README 末尾那句我原样抄来:"No duck was harmed. Several were consulted."

星数补一笔:仓库现在 1,070 星,去年 12 月建。还有个内置的特雷门琴模式,手伸到嘴前就是音高。这项目的研究价值我不好评。可爱是有实测的。

暂无表态
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens