LeRobot SO-101 机械臂的训练后 Isaac GR00T N1.5

社区文章 发布于 2025 年 6 月 11 日

引言

image/png

NVIDIA Isaac GR00T (通用机器人 00 技术) 是一个用于构建机器人基础模型和数据管道的研发平台,旨在加速智能、适应性机器人的创建。

今天,我们宣布推出 Isaac GR00T N1.5,这是 Isaac GR00T N1(世界上第一个用于通用人形机器人推理和技能的开放式基础模型)的首次重大更新。这个跨具身模型处理多模态输入,包括语言和图像,以在不同环境中执行操作任务。它可以通过后期训练适应特定的具身、任务和环境。

在这篇博客中,我们将演示如何使用单个 SO-101 机械臂的遥操作数据对 GR00T N1.5 进行后期训练(微调)。

image/gif

GR00T N1.5 的技术博客:https://research.nvidia.com/labs/gear/gr00t-n1_5/

分步教程

现在,GR00T N1.5 可供使用各种机器人外形尺寸的开发人员使用,并且可以使用价格实惠的开源 LeRobot SO-101 机械臂轻松进行微调和适配。

这种灵活性得益于 EmbodimentTag 系统,该系统允许对不同机器人平台模型进行无缝自定义,使业余爱好者、研究人员和工程师能够根据自己的硬件调整高级人形推理和操作能力。

步骤 0:安装

在继续安装之前,请检查您是否满足先决条件

0.1 克隆 Isaac-GR00T 仓库

git clone https://github.com/NVIDIA/Isaac-GR00T
cd Isaac-GR00T

0.2 创建环境

conda create -n gr00t python=3.10
conda activate gr00t
pip install --upgrade setuptools
pip install -e .[base]
pip install --no-build-isolation flash-attn==2.7.1.post4 

步骤 1:数据集准备

用户可以使用任何 LeRobot 数据集微调 GROOT N1.5。在本教程中,我们将使用桌面清理任务作为微调示例。

值得注意的是,SO-100 或 SO-101 的数据集不在 GR00T N1.5 的初始预训练中。因此,我们将把它训练为 new_embodiment

image/png

1.1 创建或下载您的数据集

对于本教程,您可以按照这些说明(推荐)创建自己的自定义数据集,或者从 Hugging Face 下载 so101-table-cleanup 数据集。`--local-dir` 参数指定数据集将保存在您机器上的位置。

huggingface-cli download \
    --repo-type dataset youliangtan/so101-table-cleanup \
    --local-dir ./demo_data/so101-table-cleanup

1.2 配置模态文件

modality.json 文件提供了有关状态和动作模态的附加信息,使其“GR00T 兼容”。使用此命令将 getting_started/examples/so100_dualcam__modality.json 复制到数据集 <DATASET_PATH>/meta/modality.json

cp getting_started/examples/so100_dualcam__modality.json ./demo_data/so101-table-cleanup/meta/modality.json

注意:对于像 so100_strawberry_grape 这样的单摄像头设置,运行

cp getting_started/examples/so100__modality.json ./demo_data/<DATASET_PATH>/meta/modality.json

完成这些步骤后,可以使用 GR00T LeRobotSingleDataset 类加载数据集。这里显示了一个加载数据集的示例脚本

python scripts/load_dataset.py --dataset-path ./demo_data/so101-table-cleanup --plot-state-action --video-backend torchvision_av

步骤 2:微调模型

可以使用 Python 脚本 scripts/gr00t_finetune.py 执行 GR00T N1.5 的微调。要开始微调,请从终端执行以下命令

python scripts/gr00t_finetune.py \
   --dataset-path ./demo_data/so101-table-cleanup/ \
   --num-gpus 1 \
   --output-dir ./so101-checkpoints  \
   --max-steps 10000 \
   --data-config so100_dualcam \
   --video-backend torchvision_av

提示:默认的微调设置需要约 25G 的 VRAM。如果您的 VRAM 不足,请尝试在 gr00t_finetune.py 脚本中添加 --no-tune_diffusion_model 标志。

步骤 3:开环评估

训练完成后,您的微调策略生成后,您可以通过运行以下命令在开环设置中可视化其性能

python scripts/eval_policy.py --plot \
   --embodiment_tag new_embodiment \
   --model_path <YOUR_CHECKPOINT_PATH> \
   --data_config so100_dualcam \
   --dataset_path ./demo_data/so101-table-cleanup/ \
   --video_backend torchvision_av \
   --modality_keys single_arm gripper

恭喜!您已成功在新的具身机器人上微调了 GR00T-N1.5。

步骤 4:部署

成功微调和评估您的策略后,最后一步是将其部署到您的物理机器人上进行实际执行。

要连接您的 SO-101 机器人并开始评估,请在终端中执行以下命令

  1. 首先将策略作为服务器运行
python scripts/inference_service.py --server \
    --model_path <PATH_TO_YOUR_CHECKPOINT> \
    --embodiment-tag new_embodiment \
    --data-config so100_dualcam \
    --denoising-steps 4
  1. 在单独的终端中,将评估脚本作为客户端运行
python getting_started/examples/eval_lerobot.py \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=lil_guy \
    --robot.cameras="{ wrist: {type: opencv, index_or_path: 9, width: 640, height: 480, fps: 30}, front: {type: opencv, index_or_path: 15, width: 640, height: 480, fps: 30}}" \
    --policy_host=10.112.209.136 \
    --lang_instruction="Grab pens and place into pen holder."

由于我们使用不同的语言指令对 GRO0T-N1.5 进行了微调,用户可以通过使用数据集中的其中一个任务提示来引导策略,例如

“拿起胶带并放入笔筒中。”

image/gif

有关详细的分步教程,请查看:https://github.com/NVIDIA/Isaac-GR00T/tree/main/getting_started

🎉 祝您编程愉快!💻🛠️

今天就开始吧

准备好使用 NVIDIA 的 GR00T N1.5 提升您的机器人项目了吗?请查阅这些基本资源

  • GR00T N1.5 模型:直接从 Hugging Face 下载最新模型。
  • 微调资源:在我们的 GitHub 上查找微调的示例数据集和 PyTorch 脚本。
  • 贡献数据集:通过将您自己的数据集贡献给 Hugging Face 来赋能机器人社区。
  • LeRobot 黑客马拉松:加入全球社区并参加即将到来的 LeRobot 黑客马拉松,施展您的技能。

关注 Hugging Face 上的 NVIDIA,了解最新进展。

社区

🔥🔥🔥

太棒了,感谢发布新版本!🤗

非常感谢!太酷了!

非常棒的工作,谢谢!

很高兴能在 SO-101 上玩这个。LeRobot 黑客马拉松的时机太棒了!

太棒了!你们应该添加一个“步骤 0”来克隆 GR00T 仓库,我花了一段时间才弄明白你们调用的脚本是从哪里来的 😅

·
文章作者

感谢您的反馈!我们已更新帖子,加入了安装部分。希望有所帮助 🤗

干得漂亮!我想用我的 so100 机械臂重复这个过程,你有远程推理代码吗?

我不明白为什么机器人模型不在 Windows 上使用。我相信一个处理桌面数据作为传感器数据的学习模型会非常成功。

你好,我按照说明用给定的数据集微调了模型。我将微调后的模型部署到 Isaac Sim 中训练数据所示的类似设置中,但机器人没有正确执行动作。
我漏掉了什么吗?请帮忙。

·

你好,我也遇到了同样的问题。我想知道你是否解决了这个问题?

此评论已被隐藏(标记为已解决)

当我尝试运行“getting_started/examples/eval_lerobot.py”时,我收到错误消息

文件“/home/seb/Isaac-GR00T/getting_started/examples/eval_lerobot.py”,第 74 行,在
from service import ExternalRobotInferenceClient
ModuleNotFoundError: 没有名为“service”的模块

我该如何解决这个问题?
我应该使用哪个 conda 环境,gr00t 还是 lerobot?

另外,我在“eval_lerobot.py”的不同运行尝试中也遇到了这些错误
ModuleNotFoundError: 没有名为“draccus”的模块
ModuleNotFoundError: 没有名为“lerobot”的模块

我用 pip install 解决了这个问题,但这可能应该作为 pyproject.toml 文件的一部分,以确保正确的版本控制。

我能够使用我的自定义数据集对 gr00t 进行后期训练,并在 SO-101 上运行推理。然而,动作相当生硬。我尝试调整 --denoising-steps 和 --action_horizon(似乎上限为 16),但这并没有对动作有太大帮助。

我使用的是 RTX 4080 GPU。这是我用于训练的命令和超参数
python scripts/gr00t_finetune.py
--dataset-path ./demo_data/pensInHolder-many/
--num-gpus 1
--output-dir ./so101-checkpoints/policy_gr00t_pensInHolder-many_v2
--max-steps 20000
--data-config so100_dualcam
--video-backend torchvision_av
--no-tune_diffusion_model
--batch-size 16
--lora-rank 16
--dataloader-num-workers 16

我无法使用更大的批量大小(CUDA OOM 错误)。我可以训练更多步骤,但不确定会有多大帮助。我还没有尝试过,但为了减少运动抖动,我认为限制电机加速度或实现动作插值可能会有所帮助。

您有什么提高性能的建议吗?

·
文章作者

您还可以删除 --no-tune_diffusion_model,这将同时调整整个专家头。此外,您还可以通过配置 data_config.py 来使用更大的动作范围。

注册登录以发表评论