从宇树到399美元的Microduck,训练自己的机器宠物已经成了新玩法

Microduck 的吸引力不只是 399 美元的机器鸭,而是一套可以被个人开发者复现的开源具身智能训练闭环:用 MuJoCo 做仿真,用云端 GPU 训练强化学习策略,导出 ONNX 后发布到 Hugging Face,再在真实机器人上验证。以 UCloud 优刻得 V100S 32GB 为例,训练一个可用的走路策略通常需要 1 到 2 小时,GPU 成本约 12 到 25 元。真正需要认真判断的,不是“买哪张显卡”,而是训练规模、奖励函数、仿真到真机的差距,以及是否需要长期保存和批量复现实验。
先说结论:如果目标是低成本体验具身智能策略训练,Microduck 是一个很适合个人开发者入门的项目。没有真机,可以先在 MuJoCo 里回放社区策略;没有本地显卡,可以按小时租用 UCloud 优刻得 GPU;训练完成后,导出 ONNX、发布到 Hugging Face,整个流程可以被复现和共享。
但它并不意味着“有一张 GPU 就能稳定得到真机动作”。奖励函数是否合理、并行环境数量是否合适、仿真动作是否稳定,以及真实硬件的摩擦、重心、电池和舵机差异,都会影响最终结果。
一、Microduck 到底是什么,为什么值得玩
2026 年 8 月 27 日,Hugging Face 旗下 Pollen Robotics 开放双足机器鸭 Microduck 预购。它售价 399 美元,高 25 厘米,由 15 个舵机驱动,支持走路、跌倒后自行爬起、踢球和轮滑等动作。开放预购后 24 小时内,订单金额超过 260 万美元;首批售罄后,交付排期延后到圣诞节。
这些信息能说明它有关注度,但 Microduck 真正值得关注的地方不是外形,而是动作生成方式。
它的步态不是通过代码逐帧写死,而是由强化学习训练出的神经网络策略控制。强化学习可以理解为:让智能体在环境中不断尝试,根据奖励信号判断哪些行为更好,最终学会完成目标。在 Microduck 场景里,奖励可以对应前进速度、双脚离地高度、动作平滑度或抗干扰能力。
Pollen Robotics 已经开放 Microduck 的训练框架、仿真模型和预训练策略。开发者可以从 GitHub 获取训练代码,从 Hugging Face 下载模型,也可以把自己训练出的 ONNX 策略发布给社区。
!
二、官方动作只是起点,社区已经在持续扩展能力
Microduck 的出厂动作并不是终点。开源训练框架让社区可以围绕同一套硬件训练不同策略,再通过 Hugging Face 分发模型。这样一来,动作可以按照“训练—仿真验证—社区发布—真机运行”的路径持续迭代。
截至发稿,Hugging Face 上已有 30 多位社区成员发布 Microduck 动作策略,覆盖跑步、跳跃、单腿站立、地面捡物、踢球、前滚翻、鞠躬、太空步和旋转等方向。
2.1 代表性社区动作
| 动作 | 贡献者/来源 | 已知结果 | 可追溯来源 |
|---|---|---|---|
| 跑步 | HannesVonEssen | 最高 1.65 m/s;512 个并行环境压测存活率 98.8% | Hugging Face:HannesVonEssen/microduck-running |
| 开心跳跃 | joanfox | 已被 Pollen Robotics 在真实硬件上测试成功 | Hugging Face:joanfox/microduck-happy-hop |
| 火烈鸟单腿 | RemiFabre | 单腿站立平衡 | Hugging Face 社区策略合集 |
| 踢球 | 官方策略 | 左脚踢、右脚踢两种策略 | pollen-robotics/microduck-policies |
| 前滚翻 | 官方策略 | 完整前滚翻动作 | pollen-robotics/microduck-policies |
| 太空步 | fffiloni | 向后滑步动作 | Hugging Face 社区策略合集 |
microduck跑步1.65m/s
!
microduck跳跃-仿真
!
microduck跳跃-真机
这些策略说明了一件事:硬件不变,策略网络可以持续改变机器鸭的动作能力。对于开发者来说,Microduck 更像一个可共享的具身智能实验平台,而不只是一台固定功能的消费级机器人。
三、没有机器鸭,也可以先回放社区动作
不需要先买真机,也不需要本地 GPU。只要电脑能够安装 Python 环境,就可以在 MuJoCo 仿真器中回放社区策略。
MuJoCo 是常用于机器人与物理控制研究的仿真引擎,适合观察策略在物理环境中的动作表现。仿真不能替代真机测试,但可以先筛掉明显失效的策略,降低硬件试错成本。
3.1 安装环境并回放跑步策略
# 装环境(只需一次)
curl -LsSf https://astral.sh/uv/install.sh | sh && source ~/.zshrc
git clone https://github.com/pollen-robotics/microduck_rl && cd microduck_rl
export UV_HTTP_TIMEOUT=600 && uv sync
# 下载社区跑步策略并回放
uv run hf download HannesVonEssen/microduck-running policy.onnx --local-dir policies/running
.venv/bin/mjpython scripts/infer_policy.py --walking policies/running/policy.onnx --new-cmd-obs
macOS 必须使用 .venv/bin/mjpython 启动仿真器,不能使用 uv run。官方策略合集中的文件名通常是 alpha_walking.onnx,社区模型常见文件名是 policy.onnx。
跳跃策略和官方走路策略的流程基本相同:下载 ONNX 文件,再用 infer_policy.py 回放即可。ONNX 是开放神经网络交换格式,便于在不同训练框架、推理环境和机器人运行时之间复用同一份策略文件。
四、训练新动作,核心不是“堆显卡”,而是设计奖励函数
跑步和跳跃不是官方预设玩法的全部。社区开发者通过调整训练参数,定义“什么行为值得奖励”,就能让 Microduck 学出新动作。
例如:
- 走路任务可以奖励前进速度;
- 跳跃任务可以奖励双脚离地高度;
- 跑步任务可以提高目标速度;
- 动作平滑度可以减少暴力抖动;
- 随机推力、重心偏移和初始倾斜可以提高抗干扰能力。
这里的鲁棒性训练,是指在训练阶段主动加入扰动,让策略在真实硬件上更不容易失效。
Microduck 训练通常会同时运行 4096 个并行环境。并行环境越多,单位时间内获得的训练样本越多,但显存占用也越高。如果购买本地 RTX 40 系显卡,不仅硬件投入较高,还可能遇到驱动、CUDA、散热和显卡供货问题。
对个人开发者来说,云端 GPU 更适合一次性训练、参数试错和短期实验。需要长期稳定运行、反复调参或多人共享时,再考虑固定硬件或集群化方案。
五、为什么我会优先考虑 UCloud GPU
选择云端 GPU,主要看四件事:显存是否够用、环境是否容易启动、计费是否适合短任务,以及训练结束后能否及时释放资源。
UCloud 优刻得 GPU 云服务器适合按小时启动训练任务。选择预装驱动的镜像后,不需要购买显卡,也不需要手工处理完整的 CUDA 安装流程,开机后即可进入训练环境,用完释放实例即可停止主要 GPU 计费。
5.1 创建 GPU 实例
登录 UCloud 控制台,进入云主机并创建 GPU 云主机。以入门动作训练为目标,可以选择 V 系列中的 V100S,配置为 1 颗 GPU、10 核 CPU、32GB 内存。
V100S 32GB 提供 32GB 显存、1.13TB/s 显存带宽、5120 个 CUDA Core、640 个 Tensor Core 和 130 TFlops FP16 Tensor 算力。对于 Microduck 的 4096 并行环境训练,这一配置可以用于入门策略训练,且时租成本相对较低。
地域可以选择华东上海 2 可用区 A。操作系统选择预装驱动的 Ubuntu 20.04 64 位,集成软件显示 nvidia 550.90.12 与 CUDA 12.4。系统盘使用 40GB SSD 通常够用,但建议至少保留 20GB 可用空间,因为训练依赖包约占 8GB。
!
UCloud镜像选择
网络使用默认配置,并绑定一个 EIP。BGP 线路、5M 带宽通常足够 SSH 连接。登录方式选择密码登录,用户名为 ubuntu。计费方式选择按时付费,V100S 参考价格为 12.18 元/小时。
ssh ubuntu@<你的公网IP>
# 确认 GPU 可用
nvidia-smi
如果能够看到 V100、32GB 显存和 CUDA 12.4,说明基础训练环境已经就绪。若系统盘空间不足,可以先清理不需要的预装软件,例如 conda 和 jupyter。
5.2 GPU 选型怎么判断
| 需求 | 推荐卡型 | 理由 |
|---|---|---|
| 训练单个动作策略 | V100S 32GB | 时租低,FP16 130 TFlops 足够跑 4096 并行环境 |
| 更快迭代、同时调多组参数 | RTX 40 系 / 30 系 | FP16 算力约 330 TFlops,约为 V100S 的 2.5 倍;显存 24GB |
| 更大规模仿真、多任务并行训练 | A800 / H800 80GB 或同级国产算力卡 | 80GB 大显存,支持 800Gbps 高速网络、GPUDirect RDMA、RoCE 和 InfiniBand,可扩展到多卡集群 |
如果计划长期训练并积累大量 checkpoint,可以挂载 UCloud 高性能存储 UPFS。UPFS 读写吞吐可到百 GB/s,延迟低至微秒,并支持 GDS(GPUDirect Storage)。多人协作时,可以使用 UCloud 容器服务 UK8S 纳管 GPU 云主机,把环境封装为容器镜像后复用。
对于第一次训练,我不建议直接上多卡或大规格集群。先确认单个动作能否训练成功,再根据训练时间、并行任务数量和 checkpoint 管理需求升级配置,通常更容易控制成本。
六、从零训练第一个走路策略
开始前建议准备两个账号:
- Hugging Face 账号:在 Settings 的 Access Tokens 中创建 Write 权限 token,用于发布动作策略。
- wandb 账号:在 Settings 中获取 API Key,用于查看 reward 曲线。不需要在线曲线时,可以使用离线模式训练。
6.1 安装训练环境
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# 安装 Python 3.12
uv python install 3.12
# 克隆官方训练仓库并安装依赖
git clone https://github.com/pollen-robotics/microduck_rl
cd microduck_rl
# 首次会下载约 7-8GB,主要是 NVIDIA CUDA wheels
export UV_HTTP_TIMEOUT=600
uv sync
uv sync 通常需要 10 到 15 分钟,具体取决于网络速度。依赖安装完成且没有报错后,训练环境就绪。
wandb 和 huggingface_hub 已包含在项目依赖中,不需要单独安装。需要在线查看曲线时,运行 uv run wandb login 并粘贴 API Key;需要发布模型时,运行 uv run hf auth login 并粘贴 Hugging Face token。
6.2 开始训练走路策略
先训练官方默认走路任务,不需要修改参数。
# 方式 1:离线模式,不需要 wandb 账号
WANDB_MODE=offline uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096
# 方式 2:在线模式,需要先 wandb login,可在网页端看曲线
uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096
训练启动后,终端会持续输出迭代次数、reward 值和 GPU 利用率。通常可以观察到 reward 逐渐上涨并趋于平稳;使用 wandb 在线模式时,也可以在网页端查看曲线。
走路策略通常需要 1 到 2 小时才能得到可用步态。如果 4096 个并行环境触发显存不足,按下面的顺序降低环境数:
# 显存不够就降到 2048
uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 2048
# 还不够就继续降到 1024
uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 1024
环境数降低后,训练速度可能变慢,但更容易在显存限制内完成训练。
6.3 导出 ONNX 并在仿真器验证
训练完成后,把策略导出为 ONNX 格式。使用 wandb 在线模式时,从 wandb 找到 run path,格式为 用户名/项目名/run_id。
uv run scripts/export.py Mjlab-Velocity-Flat-MicroDuck \
--wandb-run-path <你的wandb用户名>/<项目名>/<run_id>
离线模式训练时,使用本地 checkpoint 导出,参数为 --checkpoint-file <checkpoint路径>。导出完成后,当前目录会生成 output.onnx。
仿真验证主要占用 CPU,不占 GPU。因此,策略导出后可以先释放 GPU 实例,降低成本。
# GPU 服务器是 Linux 系统,直接用 uv run
uv run scripts/infer_policy.py --walking output.onnx --new-cmd-obs
# 本地 macOS 回放需要用 mjpython
# .venv/bin/mjpython scripts/infer_policy.py --walking output.onnx
需要保存观测数据时,加上 --record 参数:
uv run scripts/infer_policy.py --walking output.onnx --new-cmd-obs --record recording.pkl
验证时不要只看“机器人有没有动”。至少要观察动作是否达到目标、是否频繁摔倒、速度是否稳定、关节是否出现异常抖动,以及 reward 曲线是否存在异常波动。
6.4 发布动作到 Hugging Face Hub
训练出满意效果后,可以用一行命令发布策略:
uv run publish --onnx output.onnx \
--repo <你的HF用户名>/microduck-walk \
--kind perpetual \
--slot walk \
--description 'My first microduck walking policy'
发布后,其他用户可以下载并回放你的策略:
uv run hf download <你的HF用户名>/microduck-walk policy.onnx --local-dir policies/my-walk
uv run scripts/infer_policy.py --walking policies/my-walk/policy.onnx --new-cmd-obs
真机到手后,可以使用下面两条命令加载并执行动作:
sudo robotctl policy load walk <你的HF用户名>/microduck-walk
robotctl robot do walk
七、进阶:通过改参数训练跑步动作
跑通官方走路策略后,可以进一步修改训练参数。社区跑步策略的思路,是提高目标速度、增加前进奖励,同时加入随机推力、重心偏移和初始倾斜等鲁棒性扰动。
官方走路策略的速度命令范围是 -0.4 到 0.4 m/s。HannesVonEssen 的跑步策略将目标速度范围提高到 2.2 m/s,同时加入随机推力、重心偏移和初始倾斜,让机器鸭从慢走转向跑步。
跑步策略使用社区扩展仓库 microduck-playground,它基于官方训练框架增加跑步任务配置,不需要改动核心代码,可以通过环境变量配置参数。
git clone https://github.com/Vottivott/microduck-playground.git
cd microduck-playground
export UV_HTTP_TIMEOUT=600
uv sync
MICRODUCK_RUNNING_TARGET_MAX_SPEED=2.2 \
MICRODUCK_RUNNING_SPEED_CAP=2.4 \
MICRODUCK_RUNNING_FORWARD_PROGRESS_WEIGHT=5.0 \
MICRODUCK_RUNNING_ROBUST_PUSH_MPS=0.10 \
MICRODUCK_RUNNING_ROBUST_TRUNK_COM_M=0.008 \
MICRODUCK_RUNNING_ROBUST_HEAD_COM_M=0.006 \
MICRODUCK_RUNNING_ROBUST_INITIAL_TILT_DEG=2.0 \
WANDB_MODE=offline uv run train Mjlab-Running-Flat-MicroDuck --env.scene.num-envs 4096
7.1 关键参数解释
| 参数 | 含义 | 示例值 |
|---|---|---|
MICRODUCK_RUNNING_TARGET_MAX_SPEED | 目标速度上限 | 2.2 m/s |
MICRODUCK_RUNNING_SPEED_CAP | 允许速度上限 | 2.4 m/s |
MICRODUCK_RUNNING_FORWARD_PROGRESS_WEIGHT | 前进奖励权重 | 5.0 |
MICRODUCK_RUNNING_ACTION_RATE_WEIGHT | 动作平滑度惩罚,避免暴力抖动 | -0.10 |
MICRODUCK_RUNNING_ROBUST_PUSH_MPS | 随机推力强度 | 0.10 |
MICRODUCK_RUNNING_ROBUST_TRUNK_COM_M | 躯干重心偏移 | 0.008 m |
MICRODUCK_RUNNING_ROBUST_HEAD_COM_M | 头部重心偏移 | 0.006 m |
MICRODUCK_RUNNING_ROBUST_INITIAL_TILT_DEG | 初始倾斜角度 | 2.0° |
跑步比走路更难训练。社区跑步策略从零训练 12,195 个 iteration,约 9 小时,最终得到 1.65 m/s 的稳定跑步效果。导出、仿真验证和发布流程与走路策略相同。
八、成本怎么估算:单个走路动作约十几到二十几元
以 UCloud V100S 按时付费为例:
| 项目 | 费用或资源 |
|---|---|
| UCloud V100S GPU 按时付费 | 12.18 元/小时 |
| 训练一个走路策略 | 约 1 到 2 小时 |
| 训练总成本 | 约 12 到 25 元 |
| EIP 带宽 5M | 约 0.06 元/小时 |
| 导出和仿真验证 | 不占 GPU,可提前释放实例 |
这里的成本只适用于给定配置和训练时长下的参考估算,不应理解为固定报价。实际费用还会受到地域、实例状态、网络、存储、训练失败重试和参数调整次数影响。
训练完成后应及时释放 GPU 实例。按时付费实例只要保持运行状态,就会持续计费。
九、不同方案怎么选
| 方案 | 优点 | 不足 | 适合人群 |
|---|---|---|---|
| 本地 GPU | 环境长期保留,反复实验方便 | 前期硬件投入高,需要自行处理驱动、CUDA、散热和维护 | 长期研究、持续训练、已有显卡的开发者 |
| UCloud 单卡 GPU | 按小时付费,启动快,不必购买显卡,适合短期试错 | 长时间运行会累积费用,需要管理实例和数据 | 个人开发者、课程实验、单个策略训练 |
| 多卡 GPU 集群 | 适合大规模仿真、多任务并行和批量调参 | 配置和使用复杂度更高,成本也更高 | 研究团队、企业研发和长期项目 |
| 仅使用 MuJoCo 仿真 | 无需真机,验证成本低 | 无法完全覆盖真实硬件差异 | 入门体验、策略筛选和前期调试 |
如果只是想验证一个动作创意,先用本地 CPU 或云端 GPU 回放社区策略;如果需要训练单个动作,V100S 32GB 是较平衡的起点;如果需要同时调多组参数,可以考虑 RTX 40 系或 30 系;如果涉及更大规模仿真、多任务训练或多卡协作,再考虑 A800、H800 80GB 或同级算力卡。
十、适合和不适合哪些场景
适合
- 想了解强化学习和具身智能,但不想先购买高价本地 GPU;
- 希望在 MuJoCo 中复现社区动作;
- 需要训练走路、跑步、跳跃等单个动作策略;
- 想把训练得到的 ONNX 模型发布到 Hugging Face 与他人共享;
- 需要短时间完成一次训练或参数试错;
- 希望把流程迁移到机器人、无人机或机械臂等其他具身智能项目。
不适合
- 需要仿真结果直接等同于真机效果;
- 没有时间调试奖励函数、环境参数和训练依赖;
- 需要开机即用、完全不涉及开发环境的消费体验;
- 计划长时间运行大量实验,却没有做好存储、版本和实例成本管理;
- 直接在真机上尝试高冲击的跑步、跳跃和翻滚动作。
十一、训练闭环里最容易被忽略的风险
云端 GPU 能解决算力和环境部署问题,但不能替代算法设计与硬件验证。
奖励函数设计不合理时,策略可能学会投机动作,例如只追求速度而忽略稳定性;仿真中看起来稳定的动作,也可能因为真实硬件的摩擦、重心、电池电量和舵机差异而表现下降。
建议至少设置三个验证点:
- MuJoCo 验证:确认动作是否达到目标,是否频繁摔倒或出现异常抖动;
- 训练曲线验证:检查 reward 是否稳定,而不是短暂升高后异常波动;
- 真机小步验证:真机到手后,从低速度、小幅度、低冲击动作开始测试。
跑步、跳跃和翻滚对硬件冲击更大,应优先在仿真器中充分验证,再逐步增加真机动作强度。
十二、Microduck 之外,这套工作流还能迁移什么
Microduck 的流程可以迁移到机器人、无人机和机械臂等具身智能场景。共同模式通常是:
- 在仿真器中构建任务和物理环境;
- 用强化学习训练控制策略;
- 导出为 ONNX 等可复用格式;
- 在仿真器中回放和筛选;
- 部署到真实设备;
- 根据真机反馈继续调整奖励函数和训练参数。
UCloud GPU 产品线覆盖单卡云主机、多卡集群、高性能存储 UPFS 和容器平台 UK8S。对个人开发者,单卡 GPU 适合低成本试错;对团队,多卡集群、800Gbps 高速网络、GPUDirect RDMA、RoCE、InfiniBand 和容器化环境更适合大规模仿真、多任务训练与协作复用。
Microduck 的意义不只是购买一只 399 美元的机器鸭,而是把具身智能训练拆成了一条个人开发者也能参与的路径:一个动作想法、一台云端 GPU 服务器和一套开源工具,就可以完成从训练、仿真到社区发布的完整闭环。
FAQ
Q1:没有 Microduck 真机可以玩吗?
可以。开发者可以先下载社区策略,在 MuJoCo 仿真器中回放动作。真机主要用于最后的硬件验证。
Q2:训练 Microduck 一定要本地 GPU 吗?
不一定。可以使用 UCloud 优刻得 GPU 云服务器按小时训练。训练完成后,导出和仿真验证阶段不占 GPU,可以释放实例以降低成本。
Q3:为什么推荐 V100S 32GB?
V100S 32GB 的显存和 FP16 算力足够完成 Microduck 入门动作训练,且按时付费成本相对较低,适合个人开发者训练单个策略。
Q4:4096 个并行环境跑不起来怎么办?
如果出现 OOM,可以把并行环境数降到 2048 或 1024。环境数降低后,训练速度可能变慢,但更容易在显存限制内完成训练。
Q5:训练出的动作能发布给别人用吗?
可以。将策略导出为 ONNX 后,可以发布到 Hugging Face Hub。其他用户可以下载 policy.onnx,并在仿真器或真机上加载。
Q6:仿真成功是否等于真机一定成功?
不等于。仿真到真机存在 sim-to-real 差距,真实硬件的摩擦、重心、电池状态和舵机误差都会影响动作效果。跳跃、跑步和翻滚动作尤其需要谨慎验证。
相关链接
- Microduck 官方博客:https://pollen-robotics.com/microduck/blog/introducing-microduck
- 在线仿真器:https://huggingface.co/spaces/pollen-robotics/microduck-simulator
- GitHub 运行时仓库(Rust):https://github.com/pollen-robotics/microduck
- GitHub 训练仓库(Python):https://github.com/pollen-robotics/microduck_rl
- 预训练策略模型:https://huggingface.co/pollen-robotics/microduck-policies
- 社区策略合集:https://huggingface.co/models?search=microduck
- 跑步策略:https://huggingface.co/HannesVonEssen/microduck-running
- 开心跳跃策略:https://huggingface.co/joanfox/microduck-happy-hop
- 跑步训练仓库:https://github.com/Vottivott/microduck-playground
- UCloud GPU 云服务器:https://www.ucloud.cn/site/product/gpu.html