开源强化学习机器鸭microduck-policies:9个ONNX策略模型带你玩转MicroDuck机器人(完整入门指南)
开源强化学习机器鸭microduck-policies:9个ONNX策略模型带你玩转MicroDuck机器人(完整入门指南)
🦆microduck-policies是开源项目 pollen-robotics 发布的MicroDuck 强化学习机器鸭策略模型仓库,收录了机器鸭出厂标配的一整套 ONNX 神经网络策略文件:走路、站立、坐下站起、地面捡物、翻滚、踢足球等动作全部由强化学习训练得到。无论你是想把自己的机器鸭跑起来,还是想学习「强化学习 → 部署到真实机器人」的完整链路,这份指南都能帮你在 10 分钟内搞清楚每个模型是干什么的。
一、microduck-policies 是什么?
一句话概括:它是 MicroDuck 机器鸭的"动作大脑"集合。
MicroDuck 是一款四足机器鸭机器人,采用xl330系列舵机驱动,以50Hz的控制频率运转。而让一条机械鸭"稳稳站起来、自然走路、还能踢足球"的核心,不是舵机本身,而是运行在板上的策略网络。本仓库就存放着这些网络的最终产物——10 个 ONNX 格式的策略模型,由 manifest.json 统一描述:
| 关键参数 | 值 | 含义 |
|---|---|---|
obs_len | 61 | 每个模型接收的观测向量长度(姿态、速度、指令等) |
action_len | 14 | 每个模型输出的动作维度(对应 14 个舵机目标值) |
servos | xl330 | 舵机型号 |
control_hz | 50 | 控制回路频率 50Hz |
schema_version/model_api | 2 / 1 | 清单与模型接口版本 |
模型训练于pollen-robotics/microduck_rl仓库(基于 MJLab 强化学习框架),训练完成后通过导出脚本转换为 ONNX,再用Git LFS存储——所以你在 .gitattributes 中能看到*.onnx filter=lfs配置。单个模型大小仅约775KB,对嵌入式设备极其友好。
二、快速上手:如何获取策略模型
克隆仓库即可拿到全部策略文件:
git clone https://gitcode.com/hf_mirrors/pollen-robotics/microduck-policies克隆下来的目录结构非常简洁:
- manifest.json — 策略清单,机器人固件/上位机靠它识别每个模型的用途
- velstand.onnx — 默认行走策略(v5 起取代了单独的站立网络)
- alpha_walking.onnx / alpha_stand.onnx — 早期行走与站立策略
- alpha_sitstand.onnx — 坐下/站起脚本策略
- alpha_ground_pick.onnx — 地面捡物动作
- roller.onnx / roller_crouch.onnx — 滚轮模式与下蹲
- roulade.onnx — 原地侧翻(翻筋斗)
- ball_kick_left.onnx / ball_kick_right.onnx — 左/右腿踢球
💡 小贴士:.onnx文件通过 Git LFS 下载,普通git clone会自动处理,无需额外安装 LFS 插件。
三、9类策略逐个拆解:每只机器鸭都会什么"技能"?
manifest.json 把策略分为三大类,这也是理解 MicroDuck 动作系统的钥匙:
3.1 常驻策略(perpetual)——"持续运行"的底层能力
这类模型一直挂在控制循环里,根据传感器反馈实时调整 14 个舵机:
- velstand(v8 版,当前默认):行走步态网络,但命令速度为零时它会稳稳站住,因此 v5 起不再需要单独的站立网络。v7 之后站立时躯干还支持 roll/pitch 倾斜(约 ±10°);v8 版本(即 velstand.onnx 最新提交)让机器鸭摔倒后能平滑、可靠地自己爬起来,原地转向和行走中的转向都能精确跟踪 yaw 指令。
- 训练信息:任务
Mjlab-VelStand-Rough-Backlash-MicroDuck(带地面粗糙度与舵机回差),检查点 2749,2026-10-12 导出。
- 训练信息:任务
- alpha_walking / alpha_stand:经典的"行走网 + 站立网"双网络方案,属于 velstand 出现前的历史版本,现在主要用于对比和回退。
- roller:滚轮模式(
action_scale: 0.8),配合 roller_crouch.onnx 使用。
3.2 脚本策略(scripted)——"坐与站的优雅过渡"
- sitstand(alpha_sitstand.onnx):通过
posture_flag指令编码控制——1.0坐下、0.0站起,配合 2 秒渐变(ramp_s)和 1 秒收尾(unwind_s),实现温柔的坐下与站起,坐姿时头部还可转向。v6 版本修复了坐姿时头部猛转导致后仰摔倒的问题。- 训练信息:任务
Mjlab-SitStand-Flat-MicroDuck,检查点 2250。
- 训练信息:任务
3.3 一次性动作(episodic)——"按键即触发"的花式动作
这些模型跑完规定时长就自动退出,对应机器鸭按钮触发的特效动作:
| 模型 | 动作 | 时长 | 说明 |
|---|---|---|---|
| alpha_ground_pick.onnx | 🫳 地面捡物 | 2.8s | 用相位指令控制幅度 |
| roller_crouch.onnx | 🧎 滚轮下蹲 | 3.5s | 滚轮模式 + 0.8 动作缩放 |
| roulade.onnx | 🤸 原地侧翻 | 1.0s | 支持chain连招 |
| ball_kick_left.onnx | ⚽ 左腿踢球 | 0.5s | 0.5 秒完成一记射门 |
| ball_kick_right.onnx | ⚽ 右腿踢球 | 0.5s | 左右脚交替踢球 |
四、策略模型是如何炼成的?
从 manifest.json 的training字段可以还原完整的强化学习流水线:
- 建任务:在 MJLab(MuJoCo 的 RL 训练框架)中定义任务,如
Mjlab-VelStand-Rough-Backlash-MicroDuck——任务名直接写明了仿真条件:粗糙地面(Rough)+ 舵机回差(Backlash),保证策略在真实硬件上依然鲁棒; - 跑训练:提交训练 run(如
pollen-robotics/mjlab_microduck/0045i2si),迭代数千步(velstand 跑到 checkpoint 2749,sitstand 跑到 2250); - 导出 ONNX:通过
scripts/export.py把 PyTorch 检查点导出为 ONNX,并记录导出时间戳; - 版本化发布:连同清单一起提交到本仓库,每个模型都标注了训练仓库、commit、分支和是否
dirty,保证每个 .onnx 文件可追溯到确切的训练配置。
这种"清单 + 可追溯训练信息"的做法,正是机器人模型仓库工程化的最佳实践——你不需要重新训练,直接下载就能复现。
五、常见问题 FAQ
Q1:为什么模型只有 775KB 左右?ONNX 策略是轻量 MLP 结构,输入 61 维观测、输出 14 维舵机目标,参数量很小,适合在 MicroDuck 的嵌入式控制板上以 50Hz 实时推理。
Q2:velstand 和 alpha_walking 我该用哪个?用 velstand.onnx。它是 v5 起的默认行走策略,一个网络同时搞定"走"和"站",且 v8 版本自带平滑的摔倒自恢复能力。
Q3:清单里的slot、phase、posture_flag是什么?这是指令编码方式:slot表示速度指令映射到哪个控制槽位;phase表示一次性动作的相位进度(配合period_s/end_phase);posture_flag则是 sitstand 用的姿势标志位(1=坐,0=站)。
Q4:我可以基于这些模型二次开发吗?可以。模型以 Apache-2.0 协议开源,manifest.json 中model_api: 1定义了统一的观测/动作接口,你可以在microduck_rl训练仓库中修改任务后重新训练并导出新策略。
六、写在最后
🎉microduck-policies用不到 8MB 的空间,装下了一整只机器鸭的运动能力——从稳稳站立到 0.5 秒的闪电踢球,每一个 ONNX 文件背后都是"仿真训练 → 导出 → 真机部署"的完整强化学习工程实践。
新手建议的探索路线:
- 先通读 manifest.json,理解策略分类体系;
- 克隆仓库,用 ONNX 运行时(如 onnxruntime)加载 velstand.onnx 打印网络结构;
- 对照
training字段,回到microduck_rl训练仓库复现训练任务; - 尝试为机器鸭训练一个全新动作(比如"鞠躬"),加入你自己的策略集。
祝你的机器鸭早日学会新动作!🦆
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考