系列文章目录
目录
前言
本仓库介绍了Isaac Lab设计的两项全新工业操作任务,可通过人形机器人仿真并评估操作策略(如Isaac GR00T N1)。这些任务旨在仿真真实工业场景,包括螺母倾倒和排气管分拣。同时提供基准测试脚本,支持使用预训练检查点对操作策略(即Isaac GR00T N1)进行闭环评估。开发者可通过这些脚本加载预构建的Isaac Lab环境及工业任务(如螺母倾倒和管道分拣),运行标准化基准测试以定量评估策略性能。
一、安装
1.1 先决条件
- 针对策略闭环评估,我们已在以下环境完成测试:Ubuntu 22.04系统,GPU配置为L40、RTX 4090及A6000 Ada,Python版本==3.11,CUDA版本12.8。
- 策略后训练请参阅 GR00T-N1 前置条件
- 请确保系统已安装以下依赖项:ffmpeg、libsm6、libxext6
1.2 搭建开发环境
- 请按照安装指南安装Isaac Lab。我们建议使用conda安装方式,因为它能简化从终端调用Python脚本的过程。
- 请将此仓库单独克隆(即在Isaac Lab目录之外):
git clone --recurse-submodules git@github.com:isaac-sim/IsaacLabEvalTasks.git
- 使用已安装Isaac Lab的Python解释器或conda/虚拟环境,安装Isaac GR00T N1所需的库。
# Within IsaacLabEvalTasks directory cd submodules/Isaac-GR00T pip install --upgrade setuptools pip install -e .[base] pip install --no-build-isolation flash-attn==2.7.1.post4 export PYTHONPATH=$PYTHONPATH:$INSTALL_DIR/IsaacLabEvalTasks/submodules/Isaac-GR00T
- 通过运行以下命令验证 GR00T 依赖项是否正确安装:
python -c "import gr00t; print('gr00t imported successfully')"
- 使用已安装Isaac Lab的Python解释器或conda/虚拟环境,安装评估任务库。
# Within IsaacLabEvalTasks directory python -m pip install -e source/isaaclab_eval_tasks
二、评估任务
在Isaac Lab中创建了两个工业任务以仿真机器人操作场景。环境设置为人形机器人(如傅里叶GR1-T2)位于桌面上多个工业物体前方。任务包含多步骤双臂操作,如抓取、移动、分拣或将物体放置至指定位置。
机器人保持直立姿势,面向工作台,双臂微屈,双手张开。其头部搭载第一人称视角单目RGB摄像头,可覆盖整个工作空间。
2.1 螺母倾倒

若满足以下条件,则任务视为成功:
- 分类烧杯已放入分类箱
- 工厂螺母位于分类碗内
- 分类碗已放置在分类秤上
2.2 排气管分拣

若满足以下条件,则任务定义为成功。
- 蓝色排气管已放置在正确位置
三、下载数据集(可选)
这些微调数据集通过合成操纵动作生成(SMMG)技术生成,使用工具包括GR00T-Teleop、Mimic以及Isaac Lab仿真环境。有关数据集生成方式的更多细节,可查阅Isaac Lab Teleop & IL文档。
数据集托管于Hugging Face平台,具体如下:
您可下载GR00T-Lerobot格式数据集直接进行后训练,或获取原始Mimic生成的HDF5格式数据进行转换。
请确保已注册Hugging Face账户并准备好读取权限令牌。
# Provide your access token with read permission
huggingface-cli login
export DATASET="nvidia/PhysicalAI-GR00T-Tuned-Tasks"
# Define the path to save the datasets as DATASET_ROOT_DIR
huggingface-cli download --repo-type dataset --resume-download $DATASET --local-dir $DATASET_ROOT_DIR
DATASET_ROOT_DIR 是用于存储这些资源的目录路径,如下所示。
📂 PhysicalAI-GR00T-Tuned-Tasks
├── 📂 Exhaust-Pipe-Sorting-task
│ ├── 📂 data
│ ├── 📂 meta
│ └── 📂 videos
├── exhaust_pipe_sorting_task.hdf5
├── 📂 Nut-Pouring-task
│ ├── 📂 data
│ ├── 📂 meta
│ └── 📂 videos
├── nut_pouring_task.hdf5
└── README.md
四、Isaac GR00T N1 策略后训练(可选)
GR00T N1是一款面向通用人形机器人推理与技能的基础模型,基于涵盖真实世界、合成数据及互联网规模数据的庞大多模态数据集进行训练。该模型专为跨实体泛化设计,可通过后训练高效适应新型机器人实体、任务及环境。
我们遵循推荐的 GR00T N1 训练后工作流程,将模型适配至傅里叶 GR1 机器人,针对两个工业机械臂任务:螺母倾倒与排气管分类。该过程包含以下多个步骤。您也可跳至下一节“下载检查点”获取训练后检查点。
4.1 数据转换
该过程涉及将演示数据(Mimic生成的HDF5格式运动轨迹)转换为LeRobot兼容的架构(GR00T-Lerobot格式规范)。
- 使用已安装Isaac Lab、GR00T和评估任务的Python解释器或conda/虚拟环境,通过以下方式转换Mimic生成的轨迹:
# Example: Set `task_name` Based on Task # Nut Pouring export TASK_NAME="nutpouring" # Uncomment the below when Task is Exhaust Pipe Sorting # export TASK_NAME="pipesorting" # Within IsaacLabEvalTasks directory # DATASET_ROOT_DIR is directory of where Mimic-generated HDF5 is saved locally python scripts/convert_hdf5_to_lerobot.py --task_name $TASK_NAME --data_root $DATASET_ROOT_DIR
GR00T-LeRobot兼容的数据集将存放在DATASET_ROOT_DIR目录中。
📂 PhysicalAI-GR00T-Tuned-Tasks
├── exhaust_pipe_sorting_task.hdf5
├── 📂 nut_pouring_task
│ └── 📂 lerobot
│ ├── 📂 data
│ │ └── chunk-000
│ ├── 📂 meta
│ │ ├── episodes.jsonl
│ │ ├── info.json
│ │ ├── modality.json
│ │ └── tasks.jsonl
│ └── 📂videos
│ └── chunk-000
├── nut_pouring_task.hdf5
└── README.md
4.1.1 适应其他实现形式与数据集
在数据采集过程中,GR1人形机器人的下半身保持固定,上半身执行桌面操作任务。其中包含仿真中观察到的关节序列(即Isaac Lab中的机器人状态)以及仿真中指令的关节序列(即Isaac Lab中的机器人动作)。策略后训练与推理阶段,策略的观测与预测仅捕获上肢非拟态关节(即手臂与手部)。策略中观测与指令的有序关节序列(即GR00T N1的机器人关节)需指定用于数据转换重映射。
GR00T-Lerobot架构还需额外元数据。我们提供模板文件(info.json、modality.json)以辅助转换。若使用其他实体或数据配置,请据此修改。
若需将本工具应用于其他任务,请修改配置文件中定义的EvalTaskConfig任务元数据。TASK_NAME关联Gr00tN1DatasetConfig类中预定义的任务描述。task_index标识语言描述对应的索引,其中1号索引按GR00T-N1规范预留用于数据有效性检查。您可为自定义任务添加其他索引。更多机械臂即将推出!
4.2 训练后
我们针对这两个特定任务数据集对预训练的GR00T-N1-2B策略进行了微调。我们提供了用于生成上述检查点的配置参数。使用单节点H100架构,
# Within IsaacLabEvalTasks directory
cd submodules/Isaac-GR00T
# Provide the directory where the GR00T-Lerobot data is stored as DATASET_PATH
# Please use full path, instead of relative path
# Nut pouring
# E.g. export DATASET_PATH=/home/data/PhysicalAI-GR00T-Tuned-Tasks/nut_pouring_task/lerobot
# Exhaust pipe sorting
# E.g. export DATASET_PATH=/home/data/PhysicalAI-GR00T-Tuned-Tasks/Exhaust-Pipe-Sorting-task/lerobot
python scripts/gr00t_finetune.py \
--dataset_path=${DATASET_PATH} \
--output_dir=${OUTPUT_DIR} \
--data_config=gr1_arms_only \
--batch_size=96 \
--max_steps=20000 \
--num_gpus=8 \
--save_steps=5000 \
--base_model_path=nvidia/GR00T-N1-2B \
--no_tune_llm \
--tune_visual \
--tune_projector \
--tune_diffusion_model \
--no-resume \
--dataloader_num_workers=16 \
--report_to=wandb \
--embodiment_tag=gr1
提示:
- 使用视觉后端、动作投影和扩散模型进行调优通常能获得更小的轨迹误差(均方误差)和更高的闭环成功率。
- 若您希望使用性能较弱的GPU进行调优,请遵循参考指南中关于其他微调选项的建议。
五、检查点下载
我们使用上述数据集对Isaac GR00T N1策略进行了后训练,并提供可下载的微调检查点。
请确保您已注册Hugging Face账户并准备好读取权限令牌。
# Provide your access token with read permission
huggingface-cli login
export CKPT="nvidia/GR00T-N1-2B-tuned-Nut-Pouring-task"
# Or, to use the other checkpoint, uncomment the next line:
# export CKPT="nvidia/GR00T-N1-2B-tuned-Exhaust-Pipe-Sorting-task"
# Define the path to save the checkpoints as CKPT_LOCAL_DIR
huggingface-cli download --resume-download $CKPT --local-dir $CKPT_LOCAL_DIR
六、策略闭环评估
您可以在Isaac Lab环境中部署预训练的GR00T N1策略,用于GR1机器人的闭环控制,并通过并行运行测试其成功率。
6.1 基准测试功能
6.1.1 并行化评估:
Isaac Lab支持并行化环境实例,实现可扩展的基准测试。配置多个并行运行实例(例如10-100个实例),可在不同初始条件下统计量化策略成功率。


6.1.2 成功指标:
- 任务完成度:基于评估任务中定义的对象放置精度,采用二进制成功/失败判定。成功率按事件记录在终端中,格式为:
==================================================
Successful trials: 9, out of 10 trials
Success rate: 0.9
==================================================
摘要报告作为json文件可查看如下:
{
"metadata": {
"checkpoint_name": "gr00t-n1-2b-tuned",
"seed": 10,
"date": "2025-05-20 16:42:54"
},
"summary": {
"successful_trials": 91,
"total_rollouts": 100,
"success_rate": 0.91
}
在螺母倾倒任务上运行并行评估:
# Within IsaacLabEvalTasks directory
# Assume the post-trained policy checkpoints are under CKPTS_PATH
# Please use full path, instead of relative path for CKPTS_PATH
# export EVAL_RESULTS_FNAME="./eval_nutpouring.json"
python scripts/evaluate_gn1.py \
--num_feedback_actions 16 \
--num_envs 10 \
--task_name nutpouring \
--eval_file_path $EVAL_RESULTS_FNAME \
--model_path $CKPTS_PATH \
--rollout_length 30 \
--seed 10 \
--max_num_rollouts 100
在排气管分类任务上运行并行评估:
# Assume the post-trained policy checkpoints are under CKPTS_PATH
# Please use full path, instead of relative path for CKPTS_PATH
# export EVAL_RESULTS_FNAME="./eval_pipesorting.json"
python scripts/evaluate_gn1.py \
--num_feedback_actions 16 \
--num_envs 10 \
--task_name pipesorting \
--eval_file_path $EVAL_RESULTS_FNAME \
--checkpoint_name gr00t-n1-2b-tuned-pipesorting \
--model_path $CKPTS_PATH \
--rollout_length 20 \
--seed 10 \
--max_num_rollouts 100
我们报告了在200次试验中评估调优后的GR00T N1策略的成功率,随机种子=15。
评估任务 | 成功率 |
---|---|
螺母倾倒 | 91% |
排气管分拣 | 95% |
6.2 提示:
- 硬件要求:请参照Isaac Sim和Isaac GR00T中的系统要求进行选择。上述评估结果是在RTX A6000 Ada显卡、Ubuntu 22.04系统环境下获得的。
- num_feedback_actions决定每次推理执行的反馈操作次数,该值可小于action_horizon。即使使用相同检查点,此选项仍会影响评估任务的成功率。
- rollout_length决定任务终止前进行批量推理的次数。通常设置为20至30以加快周转速度。
- num_envs 决定并行运行的环境数量。过多并行环境(例如在 RTX A6000 Ada 上超过 100 个)将显著降低 UI 渲染速度。建议设置在 10 到 30 之间,以实现流畅渲染和高效基准测试。
七、故障排除
7.1 Pip 软件包版本不匹配
在安装 GR00T 时若遇到以下任何情况,可忽略这些错误。GR00T 策略运行于带闪存注意功能的旧版 torch 库,且本仓库中其他工具均无需 torch>=2.7。因此我们降级 torch 及相关软件以支持 GR00T 推理。Mimic 相关数据生成工作流不受影响。
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
isaaclab 0.37.2 requires trimesh, which is not installed.
dex-retargeting 0.4.6 requires lxml>=5.2.2, which is not installed.
dex-retargeting 0.4.6 requires trimesh>=4.4.0, which is not installed.
isaaclab-tasks 0.10.31 requires torch>=2.7, but you have torch 2.5.1 which is incompatible.
isaacsim-kernel 5.0.0 requires wrapt==1.16.0, but you have wrapt 1.14.1 which is incompatible.
isaaclab-rl 0.2.0 requires pillow==11.0.0, but you have pillow 11.2.1 which is incompatible.
isaaclab-rl 0.2.0 requires torch>=2.7, but you have torch 2.5.1 which is incompatible.
isaaclab 0.37.2 requires pillow==11.0.0, but you have pillow 11.2.1 which is incompatible.
isaaclab 0.37.2 requires starlette==0.46.0, but you have starlette 0.45.3 which is incompatible.
isaaclab 0.37.2 requires torch>=2.7, but you have torch 2.5.1 which is incompatible.
isaacsim-core 5.0.0 requires torch==2.7.0, but you have torch 2.5.1 which is incompatible.
7.2 在Blackwell GPU上运行
遗憾的是,由于闪存注意力模块支持有限(截至2025年5月),GR00T策略仅支持在非Blackwell GPU上运行。不过您仍可在Blackwell上运行Mimic相关数据生成工作流及GR00T-Lerobot数据转换。Blackwell支持功能即将推出。
7.3 在多GPU上运行评估
渲染方面,请参考Omniverse开发者指南设置Isaac Sim的单GPU模式或多GPU模式。物理计算方面,建议在评估中通过simulation_device设置CPU运行评估。
但需注意:GR00T N1策略仅支持单GPU推理(截至2025年5月)。我们尚未对多GPU推理进行测试。