本文由 Antoine Pirrone、Augustin Crampette、Matthieu Lapeyre、Coralie Deplanne、Anne-Charlotte Passanisi 和 Thomas Wolf 合作撰写。
简而言之
Microduck 是Pollen Robotics和Hugging Face最新推出的一款价格实惠的开源双足机器人。现在你可以训练 Microduck 与 Isaac Lab 和 Newton 一起行走。测试策略,将其导出为 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 进行训练以加速训练并提高鲁棒性。在此配置下,在启用粗糙地形和齿隙的情况下,我们可以达到每秒最高 1.25M 步。
在本教程中,我们使用带有 MJWarp 求解器的 Newton,并且 总部位于牛顿市的Better Actuator Models(BAM) 对伺服响应进行建模,并结合预先设置齿隙(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可视化工具中运行最新的checkpoint:
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. 将 ONNX 运动策略部署到真实的 Microduck 上
在模拟中验证策略并检查其接口(第 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 集成的基础之上。