一只 25 cm、800 g 的黄色小鸭,不靠遥控玩具那套,靠的是强化学习长出来的"小脑"。
实际演示(真机板端运控 + BPU 视觉 + 云端仿真实录,全程无加速):
这只鸭子最近有多火
如果最近你刷到过一只摇摇摆摆、会踢球、被推倒了还能自己爬起来的黄色小鸭子,那你已经见过 MicroDuck 了。
它是 Pollen Robotics 做的开源双足机器人:15 个舵机、一个 RK3566 主控。走路、轮滑、用嘴捡东西、前滚翻、被推倒自己爬起来——全会。GitHub 开源后一路冲到几千 star,官方还放出了一个网页版"养鸭沙盒",点开就能在线遛。
但问题来了:沙盒里的鸭子是跑在网页里的"数字鸭",没有一块真实的板子在管它。 它的一切运动都是浏览器里算好的——好看,但离"真机"差着一层。
我们干的事,就是把这只鸭子真正"养"起来:云端跑一个完整的物理仿真,而它的运动控制和"眼睛",全部跑在一块地瓜机器人的 RDK X5 开发板上。 板子负责当大脑,云负责当"镜子"给你看效果。
我们到底搭了个什么
一句话:一套"云仿真 + 板端运控 + BPU 视觉"的完整闭环。
- 你的浏览器 ←→ 云端 5090 服务器 ←→ RDK X5 开发板
- 浏览器看画面/发指令;云端用 MuJoCo 跑 200Hz 物理仿真并渲染成视频;X5 跑 50Hz 运控策略 + BPU 视觉检测。
拆开看是三件事:
① 云端仿真(云端的鸭子)——服务器上用 MuJoCo 跑一个 1:1 的鸭子物理模型:200 Hz 物理步进、15 个关节、IMU、地面的球,全都按真机建模,渲染成视频流推到网页上。
② 板端运控(X5 当小脑)——鸭子怎么站、怎么走、怎么踢,不是云端算的,是 RDK X5 在跑:官方导出的 ONNX 强化学习策略,板端 CPU 上做 50 Hz 闭环推理。观测(陀螺仪+重力+关节)进,电机目标出。这套代码和真机上是同一份。
③ BPU 视觉(X5 当眼睛)——鸭子"头上"有个相机,画面传给 X5,用 BPU 跑 DOSOD 目标检测认球。认到球之后,板子自己决策转向、逼近——视觉追球全自动。
我们的云端驾驶舱:左边第三人称视角,右上鸭子第一视角(带 BPU 检测框),右下全量遥测。
这只"云上板端鸭"会干什么
不是摆拍,全是闭环实测:
| 技能 | 表现 |
|---|---|
| 速度可调,指哪走哪,松开即稳稳站住 | |
| 原地左右转,方向干脆 | |
| 球传到脚边,一脚闷飞出去 2.9 米,自己还不倒 | |
| 一个按键坐到底、再一个按键站起来 | |
| 抱头滚一圈,落地站稳 | |
| 低头把地上的东西啄起来 | |
| 你把它推倒,它 2 秒自己爬起来 | |
| 开 Chase 模式,它用 BPU 盯着球自己追过去 |
行走 · 迈步
踢球 · 蓄力一瞬
被推倒
自己爬起来
Chase 模式:鸭子用头部相机盯着橙球,自己调整方向追过去
为啥要"板端 + 云"这么折腾
说实话,第一版我们图省事,让云端跑物理、X5 隔着公网做运控——结果 50ms 的网络往返直接把鸭子搞摔了:动态平衡的机器,控制环里塞 50ms 延迟,等于蒙眼走钢丝。
我们也试过给策略"补课"——在 5090 上用 mjlab 重新训练了一版抗延迟策略(把执行器延迟随机化到 60–120ms 去训),能走了,但肉、反应慢。
最后一拍板:把控制环整个搬到板子上,网络延迟直接归零。 物理、策略、行为、摔倒恢复全在 X5 本地跑,干脆、稳、50 Hz 实时。云端只剩一件事:把鸭子的状态回放出来渲染成视频。
这套架构最妙的地方在于——板子上跑的这套运控代码,将来接到真机上时,只要把"读仿真传感器"换成"读电机总线+IMU"就行。 今天在云里遛的,和明天在桌上跑的,是同一颗"鸭脑"。
一些工程上的较真
做这件事踩了不少坑,挑几个有意思的:
- 观测向量必须和训练时一模一样,差一个索引鸭子就摔——这是真机 robotd 文档里自己用红字标出来的"最高危代码"。
- BPU 检测喂 NV12 有个坑:直接喂 bytes 会静默跑空数据,输出和输入完全无关;得喂 numpy 数组。调通的标志是:真实图片上 person 置信度 0.86。
- 黄色鸭子别配黄色地板:第一版我们把场景做成暖黄米色,结果鸭子直接隐身。后来换冷色地板,对比度拉满。
- 指令要"心跳重发":只在变化时发指令,公网丢一个包鸭子就装死。改成 25 Hz 心跳后,指令 15~46ms 必达。
想自己遛一只?
MicroDuck 全套开源:
大脑固件(Rust,七个守护进程):github.com/pollen-robotics/microduck
RL 训练环境(MuJoCo + PPO):github.com/pollen-robotics/microduck_rl
我们这套"云仿真 + X5 板端运控"的玩法,本质上就是给这类小机器人搭一条从仿真到真机的快速验证通道——策略在云里养大,板子上直接遛。
鸭子已经会自己追球、自己爬起来了。下一步,让它认路、认人、认家门。
鸭子嘛,养着养着就熟了。
项目基于开源 MicroDuck(Pollen Robotics)构建,运控与视觉运行在地瓜机器人 RDK X5 上。






