项目>Microduck>Microduck 开源生态与策略训练

Microduck 开源生态与策略训练

摘要:Microduck 开源的不只是两份源码,而是一条能读、能改、能重新训练、能发布再装回机器的完整链路。本页把主仓库、训练仓库、官方策略集和社区发布四层拆开讲清楚,并列出许可证与商用的边界。

开源的不只是源码

很多人对 Microduck「开源」的理解,就是 GitHub 上放着两个仓库。真把机器拿在手上你会发现开放的远不止源码:机器上跑的代码都能读,出厂带的每个动作本身就是一条策略,这条策略你能拿到、能在仿真里重新训练,练好了还能发布出去,别人一条命令就能装回自己的机器。官方发布机器时就把 7 个出厂策略全部放出来了,每一条都可以重训。

中文资料大多停在「哪几个仓库开源」这一层,再往下就不多了:哪些东西是官方发的,哪些是玩家自己搭的,哪些文件看着在仓库里、其实不能拿去商用。这一页把整条链路串一遍,按「机器上跑什么、策略从哪来、策略怎么发出去又装回来」的顺序讲,最后集中列一次边界。

四个入口,各管一段

官方放出的一共四类东西。先分清谁管什么,再进仓库翻,会省不少时间。

对象 管什么 玩家能做什么 关键入口
主仓库 pollen-robotics/microduck 机器鸭的大脑:运行时与 SDK 读实现、写自定义行为、管理更新、没有硬件也能跑仿真 robotctl 命令族、scripts/duck-sim、docs/design 与 docs/project
训练仓库 pollen-robotics/microduck_rl 策略产地:仿真训练与 ONNX 导出 训练新步态、导出策略、发布给社区 uv run train、scripts/export.py、uv run publish、--hf-jobs
官方策略集 pollen-robotics/microduck-policies 7 个出厂策略与阶段驱动动作 装机、换策略、当自己训练的基线 robotctl policy add / load、manifest schema 2
Hugging Face Hub 上的社区策略 玩家上传的 policy.onnx 下载别人练好的动作,或发布自己的 uv run publish、robotctl robot do

主仓库:机器的大脑

主仓库 README 开头第一句就是「This repo is the duck's brain」。机器约 25 厘米高、800 克重,大脑是一块 Rockchip RK3566,上面跑一组 Rust 写的 daemon:robotd 以 50 Hz 的频率跑控制回路,用神经策略驱动 15 个舵机;updaterd 管签名版本的安装和出问题时的回滚;configd、btd、padd、mediad、tofd 分别管 WiFi、蓝牙、手柄、摄像头和深度传感器。daemon 之间走同一份 Unix socket 上的 JSON-RPC 契约。

平时真正会敲的是 robotctl 这一族命令:configure、update、monitor 管日常,policy add 和 policy load 换动作,robot do 让它当场做一个动作。手头没有机器也能玩软件这半边:scripts/duck-sim 用真实的 daemon 去控制 MuJoCo 里的身体,开一只可以,开四只当四台机器登录也可以;cheat sheet 把命令列全了,duckctl 支持从笔记本走蓝牙直连,不依赖网络和 ssh。

训练仓库:策略怎么练出来

训练仓库的全名是「RL training environments for Microduck (mjlab)」,技术栈是 mjlab(MuJoCo Warp)加 PPO,别笼统记成「MuJoCo 训练」。它对 sim2real 下的功夫比较认真:BAM 执行器模型照着 Dynamixel XL330 的电压控制律、反电动势和随负载变化的摩擦建模,再叠加域随机化,每个主任务还配了一个带 ±1° 齿轮游隙的 Backlash 孪生任务。README 里有一句话说得很实在:在 800 克这个量级,执行器建模的保真度基本决定了 sim2real 的差距,所以官方没有用理想 PD 应付过去。

所有策略共用 61 维观测、14 维动作的契约,运行时靠它在走路、恢复、特技几条策略之间热切换;导出时观测归一化会被烘焙进 ONNX 图。所以部署只用 scripts/export.py 的产物,别自己转 checkpoint——手工转出来的图没有归一化,运行时喂进去的观测就是错的。发布前 uv run publish 还会做一遍检查:图必须 61 维进、14 维出,跑一遍合理输入,出现 NaN 或输出恒定会直接拒收。

官方策略集和社区发布

官方产品页把玩法概括成四步:仿真里训练、部署到真机、精调后重新训练、把新行为分享给社区。训练仓库把这四步都做成了能敲的命令。有一个限制要先知道:uv run publish 只能发布 constant-command 类策略;地面拾取这种阶段驱动的动作,以及靠姿态标志位切换的坐站策略,是 daemon 自己驱动的,只存在于官方策略集里,个人发布复现不了。发布出去的东西包括带观测归一化的 policy.onnx、一份按主仓库 policy-manifest schema 2 写的 manifest.json 和一份说明 README,仓库默认建成私有。

代码是 Apache-2.0,不等于整个仓库都能商用。训练仓库的 3D .stl 网格按 CC BY-NC-SA 4.0 授权,社区 ROS 2 / Isaac 集成仓库也明说「A distribution containing both is not Apache-only」。再分发或商用之前,先把各自的 LICENSE-MODELS.md 和 NOTICE-MICRODUCK.md 读一遍。

从训练到发布的四步命令

下面这张表把官方的四步和训练仓库 README 里的命令对上。流程是按官方文档整理的,不是本站真机实测;命令参数以你手头仓库的版本为准。

步骤 官方表述 可核验入口 预期结果
01 训练 Train in simulation,本机或 Hugging Face Jobs uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096;没有 GPU 就加 --hf-jobs 约 1–2 小时得到一条可用步态,可以用 uv run play 在 viewer 里回看
02 导出 一步从仿真到真机 uv run scripts/export.py 导出 ONNX;uv run scripts/infer_policy.py 在 CPU MuJoCo 里用键盘驱动验证 得到带归一化、图结构合规的 ONNX,键盘能驱动动作
03 精调 Tune、re-train、re-deploy 从 checkpoint 续训,重复导出和回放 新版本策略可以和基线步态对比,不满意就退回上一版
04 发布 Publish the policy,分享给社区 uv run publish --onnx output.onnx --repo 你的仓库 --kind episodic --duration-s 4.0;装机用 sudo robotctl policy add 或 robotctl policy load Hub 上生成别人一条命令就能装的策略,机器人上能触发

Quickstart 里还有两条现实条件:训练需要 CUDA GPU,依赖用 uv 管理;在 DGX Spark、GB10、Jetson 这类 ARM 设备上,第一次 uv sync 要拉大约 2 GB 的 CUDA wheel,先设 UV_HTTP_TIMEOUT=600,不然默认 30 秒超时会在下载中途断掉。本地没有显卡,就用 --hf-jobs 把训练丢到 Hugging Face Jobs 上跑。官方和 NVIDIA 还公布过另一条路:用 Isaac Lab 在 Linux 加 NVIDIA GPU 上训练新步态再导出。

几个容易踩的边界

这一页最容易踩坑的地方不在命令,在边界。下面逐条列出来,看任何第三方教程之前先对一遍。

边界项 可核实的事实 玩家要做的核对
许可证混合 代码 Apache-2.0;训练仓库 3D .stl 网格 CC BY-NC-SA 4.0;社区集成仓库原创代码 Apache-2.0、上游 STL 与转换网格 CC BY-NC-SA 4.0 再分发、商用或打包之前读 LICENSE 与 NOTICE,不能按「全站 Apache」处理
导出路径只有一条 观测归一化烘焙进 ONNX,publish 校验 61 维进 14 维出,拒收 NaN 和常量输出 只用 scripts/export.py 的产物部署,不手工转 checkpoint
发布能力有上限 uv run publish 只支持 constant-command 策略;ground pick、sit 与 stand 由 daemon 驱动,只在官方策略集里 想复现这两类动作去看官方集,个人发布做不出来
社区集成不是官方发布物 osrbot/microduck-ros2-isaac 自述 independent、未获 Pollen Robotics 背书,不含物理驱动或 ros2_control,Isaac 任务也明确不是 sim-to-real 声明 拿它的中文教程学 RViz 和 Isaac Sim 没问题,别当成官方硬件方案或真机能力证明
版本对齐 该社区仓库 2026-10-10 起按官方 Hugging Face v7 不可变策略集做 SHA-256 校验下载;随附的 Isaac USD 和原生训练输入还是历史基线,等新的转换和 GPU 回放验证 先读 upstream-alignment 说明确认版本,历史基线的结果不代表当期官方表现
硬件没有开源 官方明确未开放 BOM、3D 打印结构件和接线图;主仓库里没有 BOM 与 CAD,也没有舵机型号清单 社区复刻的物料和图纸以各自仓库为准,别拿官方规格去要求复刻机

硬件不开源还带出一个容易被忽略的后果:官方后续放出的新动作,走的是官方策略集和 daemon 的更新通道;自己量化导出的策略停在导出那天,不会跟着升级。这是复刻路线自带的代价,调参解决不了。

没有硬件、没有显卡,分别先走哪条

  • 没有机器:主仓库的 scripts/duck-sim 用真实 daemon 跑 MuJoCo 里的身体,训练仓库的 infer_policy.py 在 CPU 上用键盘驱动已导出的 ONNX,都不需要真机。
  • 没有显卡:给任意 train 命令加 --hf-jobs,训练放到 Hugging Face Jobs 上跑;本地只有 ARM 小盒子的话,先处理 uv 的超时和 CUDA wheel 体积。
  • 只想换动作、不想训练:用 robotctl policy add 装一条社区策略,或者把官方 7 个出厂策略挨个试一遍当基线,再决定要不要自己训。
  • 只想先读懂:主仓库的 docs/design 讲「为什么这样设计」,docs/project 讲「哪里出过错」,比翻提交记录快。

下一步

生态和边界弄清楚之后:花钱买机器或复刻件之前,看《Microduck 复刻版与官方渠道怎么分》;想直接上手改动作,走《Microduck 强化学习训练与真机部署》和《Microduck 编程:Python 与 JavaScript 自定义动作》;想找现成策略互换,看《Microduck 玩法扩展与社区资源》。

资料来源

  • Pollen Robotics 官方产品页
  • GitHub pollen-robotics/microduck
  • GitHub pollen-robotics/microduck_rl
  • GitHub pollen-robotics/microduck-policies
  • GitHub osrbot/microduck-ros2-isaac

相关内容

机器鸭概念股又被炒起来了:AI硬件是不是又在割韭菜?问答机器人靠强化学习「自己学走路」了,工程师以后还要一行行写动作代码吗?问答机器鸭Microduck火了:买成品、自己攒、还是云养,你选哪个?问答fanhao375机器鸭调试——从烧录到首次行走实践fanhao375复刻多少钱——飞特HD-1910完整账单实践fanhao375范浩鸭子复刻教程——从图纸到整机实践