用 Isaac Lab 3.0 训练 Microduck:从仿真训练到真机部署
Train in Simulation, Deploy on a Real Robot: Microduck with Isaac Lab 3.0
Hugging Face 与 Pollen Robotics 发布教程,介绍如何用 NVIDIA Isaac Lab 3.0 和 Newton 为开源双足机器人 Microduck 训练行走策略,并导出 ONNX 部署到真机。
原文给出从仿真训练到 ONNX 导出再到真机部署的完整命令链路,可据此复现双足机器人行走策略的迁移流程。
本文与 Antoine Pirrone、Augustin Crampette、Matthieu Lapeyre、Coralie Deplanne、Anne-Charlotte Passanisi 和 Thomas Wolf 合作撰写。
TL;DR
Microduck 是 Pollen Robotics 与 Hugging Face 新发布的一款平价开源双足机器人。现在你可以使用 Isaac Lab 和 Newton 训练 Microduck 行走。测试策略,将其导出为 ONNX,并部署到真实机器人上。在 Hugging Face Hub 上分享,或在 Microduck Arena 中验证其竞赛资格,然后借助 NVIDIA Isaac Lab 探索更高级的任务。
简介
在仿真中训练出的行走策略还必须应对真实机器人伺服电机的摩擦、延迟和机械间隙。NVIDIA Isaac Lab 是一个开源框架,可在数千个 GPU 并行仿真中训练策略。借助 Newton、执行器建模和域随机化,开发者可以为真实硬件准备策略。Microduck 让这一工作流落地:在仿真中训练行走策略,将其导出为 ONNX,并部署到真实双足机器人上。
本教程将带你使用 Isaac Lab 和 Newton 训练并评估 Microduck,然后导出策略用于部署。之后,你可以在 Hugging Face Hub 上分享模型,测试其兼容性并在 Microduck Arena 中参赛,或将其用于你自己的 Microduck。行走只是起点——通过链接的示例,你可以进一步探索 Isaac Lab 3.0 的更多内容。
1. 安装 Isaac Lab 并准备 Microduck 训练
仿真和训练部分需要:
部署还需要:
一台已配置好的实体 Microduck。
其板载机器人软件已安装并可正常工作。
受支持的控制接口,例如已配对的游戏手柄。
快速安装
在配备受支持的 NVIDIA GPU 和驱动的 Linux 上,安装 uv(如果已可用,请跳过前两行),克隆 Isaac Lab,并安装其依赖项:
curl -LsSf https://astral.sh/uv/install.sh | sh
source "$HOME/.local/bin/env"
git clone --branch develop https://github.com/isaac-sim/IsaacLab.git
cd IsaacLab
uv sync
确认 Microduck 任务和预设可用:
uv run isaaclab list_envs --keyword MicroDuck --show_presets
2. 了解可直接训练的 Microduck 环境
Isaac Lab 已提供 Microduck 的机器人模型、场景、观测、动作、奖励和域随机化。从平地行走任务开始;崎岖变体增加了楼梯、斜坡和不平坦地形。
图 2. 并排展示的 Microduck 环境:平地(左)和不平坦地形(右)。
策略接收 61 个观测值并输出 14 个关节位置。导出和部署时,请保持观测顺序、归一化和动作缩放一致。完整的观测、奖励和仿真设置参见 Microduck 任务配置。
3. 使用并行 Isaac Lab 环境加速运动训练
Isaac Lab 通过在 GPU 上并行运行仿真环境来加速 Microduck 运动训练。Isaac Lab 还可以跨 GPU 进行分布式训练,例如使用 16 个 GPU 训练以加快训练速度并提高鲁棒性。在此配置下,启用崎岖地形和间隙时,我们每秒可达到多达 125 万步。
在本教程中,我们使用 Newton 搭配 MJWarp 求解器以及基于 Newton 的 Better Actuator Models (BAM) 来对伺服响应建模,并结合 backlash 预设,通过建模固件控制器、电机电气限制、摩擦和延迟,将位置目标转换为真实的伺服力矩。为了让策略能够从仿真迁移,我们使用了域随机化。对每只鸭子,我们随机化质量/质心、地面摩擦、关节惯量、编码器偏移、电池电压/压降以及指令延迟。我们还改变地形并施加推力;以及按关节独立改变 backlash 以表示不均匀磨损。
Backlash 是齿轮箱中的机械间隙,当关节改变方向时,传动机构可能在啮合前先移动一小段距离。在训练中对这一效应建模并在各关节间进行变化,可以让策略接触到它在真实机器人上可能遇到的差异。
运行此命令开始训练:
uv run isaaclab train \
--rl_library rsl_rl \
--task IsaacContrib-Velocity-Rough-MicroDuck \
--num_envs 4096 \
presets=backlash
我们使用崎岖地形进行部署,但您也可以使用此命令训练平坦地形环境:
uv run isaaclab train \
--rl_library rsl_rl \
--task IsaacContrib-Velocity-Flat-MicroDuck \
--num_envs 4096 \
presets=backlash
4. 评估 Microduck 行走策略并将其导出为 ONNX
要在物理机器人上部署 Microduck 行走策略,请在仿真中评估后将其导出为 ONNX。Isaac Lab 的 RSL-RL 回放工作流会自动导出 TorchScript(policy.pt)和 ONNX(policy.onnx)文件。将 policy.onnx 与 Microduck 的板载运行时配合使用,保持观测顺序、归一化和动作缩放与训练时一致。
在 Newton 可视化器中运行最新的检查点:
uv run isaaclab play \
--rl_library rsl_rl \
--task IsaacContrib-Velocity-Rough-MicroDuck \
--checkpoint latest \
--num_envs 16 \
--viz newton_gl \
presets=backlash
将 latest 替换为特定检查点的路径。
图 4. Microduck 在仿真中于崎岖地形上执行行走策略。
为 Microduck 导出策略
对于部署,我们将使用崎岖地形环境的策略。当前的 RSL-RL 回放实现会将 TorchScript 和 ONNX 文件都导出到与所选运行关联的 exported 目录:
exported/
├── policy.pt
└── policy.onnx
Microduck 的板载运行时加载 ONNX 策略。使用 policy.onnx 进行硬件交接。自动导出在 Isaac Lab 的RSL-RL 回放后端中实现。
5. 在 Hugging Face 上分享策略并在 Microduck Arena 中评估它们
导出 policy.onnx 后,您可以:
在Microduck Arena 中比较它,这是一个 Hugging Face Space,用于在共享挑战上测试兼容策略并比较排行榜结果。Arena 接受具有 61 个观测值、14 个动作值且最大大小为 64 MiB 的模型。按照提交指南检查兼容性并参加挑战。
在真实的 Microduck 上运行它。在从第 4 节检查观测和动作接口后,将 ONNX 文件与机器人的板载运行时配合使用;第 6 节涵盖迁移到硬件。
在Hugging Face Hub 上分享它。上传您的策略,以便他人发现和下载。我们建议添加一个简短的模型卡片,说明如何使用它。您还可以包含训练配置,以帮助他人复现您的结果。
6. 在真实的 Microduck 上部署 ONNX 运动策略
在仿真中验证策略并检查其接口(第 4 节)后,将 policy.onnx 部署到已配置的 Microduck:
- 从您的工作站复制策略,将 ROBOT_HOST 替换为机器人的主机名或 IP 地址:
scp exported/policy.onnx microduck@ROBOT_HOST:/home/microduck/my_walking.onnx
- 连接到机器人并检查其当前策略:
ssh microduck@ROBOT_HOST
robotctl policy list
- 将机器人支撑在支架上,然后加载行走策略。如果它已经在行走,加载会使其回到初始姿态并恢复运动。
sudo robotctl policy load walk /home/microduck/my_walking.onnx
- 使用文档中说明的控制方式测试站立、慢速行走、转向和停止。监控其状态;如有需要,恢复默认行走策略:
robotctl monitor
sudo robotctl policy reset walk
按照 Microduck 策略加载指南 进行运行时设置和行为配置。图 5 展示了所部署策略对跌倒的鲁棒性:Microduck 在被撞倒后能重新站稳并恢复行走。
图 5. 真实 Microduck 使用在 Isaac Lab 中训练的运动策略行走。
7. 使用 Isaac Lab 将 Microduck 训练扩展到崎岖地形和感知任务
Isaac Lab 3.0 解锁了跨运动、灵巧操作和基于视觉任务的 GPU 并行机器人学习,具备可扩展环境和可配置的物理与渲染后端。探索以下示例和工具:
更复杂的运动:为楼梯、斜坡和不平整地面调整 Microduck 的崎岖地形任务,并采用逐步增加地形难度的课程。
感知与导航任务:用头部相机深度和机器人状态观测扩展 Microduck 的行走策略,以在仿真中探索基于感知的任务。下方 GIF 展示了斜坡穿越。在 Kuka–Allegro 示例 中探索基于相机的观测,以实现视觉驱动的操作。
灵巧操作:尝试 Kuka–Allegro 提升与重定向任务,训练机械臂和多指手操作物体。
自定义环境:使用 项目生成器 构建你自己的任务,然后从 SimReady Central Library 添加仿真就绪(SimReady)资产,并针对新挑战定制观测和奖励。
图 7. NVIDIA Isaac Lab 中的并行训练让仿真 Microduck 练习穿越不同的斜坡和平台,同时学习保持平衡并避免跌倒
图 8. 仿真中的 Microduck 感知任务,上方为外部视图,下方为 RGB、深度和分割视图。
构建你的下一个行走策略
从 Isaac Lab 中的 Microduck 任务 开始,训练你的第一个行走策略,并将导出的 ONNX 模型分享到 Hugging Face Hub。在 Microduck Arena 中验证它,参加挑战,看看你的策略表现如何。然后在你所学的基础上继续构建——尝试更崎岖的地形、添加感知,或创建你自己的任务。
资源
Microduck 主页(订购、快速开始、安装)
致谢
此工作流基于 Pollen Robotics 的 Microduck 硬件和软件、最初的 Microduck 强化学习项目、BAM 执行器建模工作,以及 Isaac Lab 和 Newton 集成。
来源:Hugging Face Blog · huggingface.co




