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

> 作者/来源: UCloud 运营管理员
> 发布时间: 2026-09-11T09:05:14.499Z
> 分类: GPU
> 标签: Microduck, 具身智能, 强化学习
> 原文链接: http://117.50.162.249:3000/yun/articles/2803

---

先说结论：如果目标是低成本体验具身智能策略训练，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 安装环境并回放跑步策略

```bash
# 装环境（只需一次）
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 元/小时。

```bash
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 管理需求升级配置，通常更容易控制成本。

## 六、从零训练第一个走路策略

开始前建议准备两个账号：

1. Hugging Face 账号：在 Settings 的 Access Tokens 中创建 Write 权限 token，用于发布动作策略。
2. wandb 账号：在 Settings 中获取 API Key，用于查看 reward 曲线。不需要在线曲线时，可以使用离线模式训练。

### 6.1 安装训练环境

```bash
# 安装 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 开始训练走路策略

先训练官方默认走路任务，不需要修改参数。

```bash
# 方式 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 个并行环境触发显存不足，按下面的顺序降低环境数：

```bash
# 显存不够就降到 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`。

```bash
uv run scripts/export.py Mjlab-Velocity-Flat-MicroDuck \
  --wandb-run-path <你的wandb用户名>/<项目名>/<run_id>
```

离线模式训练时，使用本地 checkpoint 导出，参数为 `--checkpoint-file <checkpoint路径>`。导出完成后，当前目录会生成 `output.onnx`。

仿真验证主要占用 CPU，不占 GPU。因此，策略导出后可以先释放 GPU 实例，降低成本。

```bash
# 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` 参数：

```bash
uv run scripts/infer_policy.py --walking output.onnx --new-cmd-obs --record recording.pkl
```

验证时不要只看“机器人有没有动”。至少要观察动作是否达到目标、是否频繁摔倒、速度是否稳定、关节是否出现异常抖动，以及 reward 曲线是否存在异常波动。

### 6.4 发布动作到 Hugging Face Hub

训练出满意效果后，可以用一行命令发布策略：

```bash
uv run publish --onnx output.onnx \
  --repo <你的HF用户名>/microduck-walk \
  --kind perpetual \
  --slot walk \
  --description 'My first microduck walking policy'
```

发布后，其他用户可以下载并回放你的策略：

```bash
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
```

真机到手后，可以使用下面两条命令加载并执行动作：

```bash
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`，它基于官方训练框架增加跑步任务配置，不需要改动核心代码，可以通过环境变量配置参数。

```bash
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 能解决算力和环境部署问题，但不能替代算法设计与硬件验证。

奖励函数设计不合理时，策略可能学会投机动作，例如只追求速度而忽略稳定性；仿真中看起来稳定的动作，也可能因为真实硬件的摩擦、重心、电池电量和舵机差异而表现下降。

建议至少设置三个验证点：

1. **MuJoCo 验证**：确认动作是否达到目标，是否频繁摔倒或出现异常抖动；
2. **训练曲线验证**：检查 reward 是否稳定，而不是短暂升高后异常波动；
3. **真机小步验证**：真机到手后，从低速度、小幅度、低冲击动作开始测试。

跑步、跳跃和翻滚对硬件冲击更大，应优先在仿真器中充分验证，再逐步增加真机动作强度。

## 十二、Microduck 之外，这套工作流还能迁移什么

Microduck 的流程可以迁移到机器人、无人机和机械臂等具身智能场景。共同模式通常是：

1. 在仿真器中构建任务和物理环境；
2. 用强化学习训练控制策略；
3. 导出为 ONNX 等可复用格式；
4. 在仿真器中回放和筛选；
5. 部署到真实设备；
6. 根据真机反馈继续调整奖励函数和训练参数。

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