在仿真中训练、部署到真机:用 Isaac Lab 3.0 训练 Microduck 双足机器人行走
Train in Simulation, Deploy on a Real Robot: Microduck with Isaac Lab 3.0
Pollen Robotics 与 Hugging Face 推出 affordable 开源双足机器人 Microduck,并发布基于 NVIDIA Isaac Lab 与 Newton 的行走策略训练教程。
本文由 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 万步。
在本教程中,我们使用搭配 MJWarp 求解器的 Newton 以及 基于 Newton 的 Better Actuator Models (BAM) 来建模舵机响应,并结合齿隙预设,通过建模固件控制器、电机电气限制、摩擦和延迟,把位置目标转换为逼真的舵机扭矩。为了让策略能够从仿真迁移,我们使用了域随机化。我们对每只鸭子的质量/质心、地面摩擦、关节惯量、编码器偏移、电池电压/电压跌落和指令延迟进行随机化。我们还改变地形并施加推力,并对每个关节独立随机化齿隙,以表现不均匀的磨损。
齿隙是齿轮箱中的机械旷量:当关节改变方向时,传动装置在啮合之前会有轻微的移动。在训练中对这种效果进行建模并在各关节间加以变化,可以让策略接触到它在真实机器人上可能遇到的差异。
运行以下命令开始训练:
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) 两个文件。在 Microduck 的机载运行时中使用 policy.onnx,并保持观测顺序、归一化和动作缩放与训练时一致。
在 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. Microducks 在仿真中穿越不平坦地形执行行走策略。
为 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




