跳到正文
Hugging Face Blog·· 2 小时前AI 评分50

在仿真中训练、部署到真机:用 Isaac Lab 3.0 训练 Microduck 双足机器人行走

Train in Simulation, Deploy on a Real Robot: Microduck with Isaac Lab 3.0

AI 导读

Pollen Robotics 与 Hugging Face 推出 affordable 开源双足机器人 Microduck,并发布基于 NVIDIA Isaac Lab 与 Newton 的行走策略训练教程。

正文 · AI 翻译

hero 本文由 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 训练做好准备

对于仿真和训练部分,你需要:

  • 一台配备受支持的 NVIDIA GPU 和驱动程序的 Linux 工作站。参见系统要求。

  • Git 和 uv。

对于部署部分,你还需要:

  • 一台配置好的实体 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 的机器人模型、场景、观测、动作、奖励和域随机化。先从平地行走任务开始;粗糙地形变体则会增加楼梯、斜坡和不平整地形。

A closer elevated view of Microducks scattered across a flat checkerboard floor on the left, beside Microducks spread across gray, uneven square blocks on the right.

图 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 替换为特定检查点的路径。

A wide simulation view of Microducks walking across gray terrain made of uneven square blocks.

图 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 上:

  1. 从你的工作站复制策略,将 ROBOT_HOST 替换为机器人的主机名或 IP 地址:
scp exported/policy.onnx microduck@ROBOT_HOST:/home/microduck/my_walking.onnx
  1. 连接到机器人并查看其现有的策略:
ssh microduck@ROBOT_HOST
robotctl policy list
  1. 将机器人支撑在支架上,然后加载行走策略。如果它已在行走中,加载会使其回到初始姿态并恢复运动。
sudo robotctl policy load walk /home/microduck/my_walking.onnx
  1. 使用文档中说明的控制方式测试站立、慢速行走、转向和停止。监控其状态,必要时恢复默认行走策略:
robotctl monitor
sudo robotctl policy reset walk

请按照 Microduck 策略加载指南了解运行时设置和行为。图 5 展示了已部署策略对摔倒的鲁棒性:Microduck 被撞倒后能够重新站稳并继续行走。

A physical Microduck walks and turns on a gray carpeted office floor.

图 5. 真实 Microduck 使用在 Isaac Lab 中训练的运动策略行走。

7. 使用 Isaac Lab 将 Microduck 训练扩展到崎岖地形和感知任务

Isaac Lab 3.0 支持跨运动、灵巧操作和基于视觉的任务进行 GPU 并行机器人学习,并提供可扩展的环境以及可配置的物理和渲染后端。探索以下示例和工具:

  • 更复杂的运动:改造 Microduck 的崎岖地形任务,以适应楼梯、斜坡和不平整地面,并使用逐步增加地形难度的课程学习。

  • 感知与导航任务:为 Microduck 的行走策略添加头部相机深度和机器人状态观测,以在仿真中探索基于感知的任务。下面的 GIF 展示了斜坡通行。请在 Kuka–Allegro 示例中探索基于相机的观测,实现具备视觉能力的操作。

  • 灵巧操作:尝试 Kuka–Allegro 抓取与重定向任务,训练机械臂和多指手来操作物体。

  • 自定义环境:使用 项目生成器构建自己的任务,然后从 SimReady Central Library 添加可直接用于仿真(SimReady)的资产,并针对新挑战定制观测和奖励。

Video of a Microduck standing in front of a small platform in a simulated environment in Isaac Lab. As the Microduck starts walking up the ramp, the video zooms out to show multiple Microducks and different ramps and platforms in the simulation.

图 7. NVIDIA Isaac Lab 中的并行训练让仿真的 Microduck 练习通过不同的斜坡和平台,同时学习保持平衡、避免摔倒

A simulated Microduck moves through a scene containing ramps, equipment cases, and metal stands. An external view fills the upper panel; the lower panels show RGB imagery, a grayscale depth map, and color-coded segmentation.

图 8. 仿真中的 Microduck 感知任务,上方为外部视角,下方为 RGB、深度和分割视角。

构建你的下一个行走策略

从 Isaac Lab 中的 Microduck 任务开始,训练你的第一个行走策略,并将导出的 ONNX 模型分享到 Hugging Face Hub。在 Microduck Arena 中验证它,参加挑战,看看你的策略表现如何。然后在你所学的基础上继续构建——尝试更崎岖的地形、添加感知,或创建自己的任务。

资源

致谢

本工作流程基于 Pollen Robotics 的 Microduck 硬件与软件、原始的 Microduck 强化学习项目、BAM 执行器建模工作,以及 Isaac Lab 和 Newton 的集成。

来源: Hugging Face Blog · huggingface.co