# NVIDIA Isaac Lab 与 Isaac GR00T 微调上手：URDF 导入、合成轨迹生成与多卡训练配置

> 原文链接：https://robotics.hellobike.com/tutorials/isaac-lab-gr00t-finetune-guide
> 频道：tutorials | 更新日期：2026-10-14 | 标签：Isaac Lab, GR00T, URDF, 微调
> 核心摘要：先把 Isaac Lab 的 tag 和 Isaac Sim 对齐，再导入 URDF，最后用 GR00T 仓库的微调脚本和数据配置训练。合成轨迹工具的脚本名随版本变。

# 版本先锁死

目录里的 `isaac-lab` 卡已经写了对应关系：Lab v2.1 对 Isaac Sim 4.5，v2.3 对 4.5/5.0/5.1，v3.0 对 Sim 6.0。GR00T 仓库的 README 会再指定它测过的 Lab 版本。三边不一致时，URDF 导入脚本的参数对不上，报错不会写「版本错误」。

```bash
git clone https://github.com/isaac-sim/IsaacLab.git
cd IsaacLab
git checkout v2.3.0
./isaaclab.sh --install
```

tag 按你要跟的 GR00T 说明替换。安装完成后用仓库自带的导入检查，而不是系统里另一份 Isaac Sim。

G1 若走宇树维护的仿真，用 `unitreerobotics-unitree-sim-isaaclab`，不要自己从零写关节驱动。

## URDF 导入

Isaac Lab 2.x 里转换脚本的常见路径是 `scripts/tools/convert_urdf.py`。3.x 可能改名，以你检出的树为准。

导入前在 URDF 里核对：

- 每个可动关节有限制、有轴方向
- 网格路径能在本机打开，不要留着别人机器上的绝对路径
- mimic 关节要么展开，要么确认转换器支持
- 基座是你希望的 articulation root，不是某个脚掌 link

转换之后在仿真里做两帧：零位，以及每个关节单独加一个小角度。方向反了就改 URDF，不要在策略输出上乘负号。G1 基础版是 23 DoF，EDU 和部分 URDF 是 29 DoF，导入日志里的执行器数量必须和真机一致。

相机和碰撞在 USD 里再加。URDF 转换不会带来可用的腕部相机外参。

## 合成轨迹

GR00T 微调吃的是带视频的 LeRobot 数据集，外加一份 modality，用来声明哪些维是手臂、夹爪、语言。仓库自带的演示数据可以先把训练跑通，再换你的 URDF。

合成数据的顺序：

1. 在导入后的机器人上用遥操作或运动规划录很少的成功轨迹。
2. 用该版本 GR00T 仓库提供的合成轨迹工具扩写。N1.5、N1.6、N1.7 的脚本名不一样，以 README 为准，不要从旧博客抄一个已经删除的入口。
3. 把结果写成 LeRobot 数据集。`lerobot-libero` 只适合对照字段，不能和人形关节混在一个 dataloader 里。
4. 写 modality：状态维、动作维、视频键、语言键。名字和训练 `--data-config` 里的配置必须一致。

合成轨迹没有覆盖你的碰撞体时，模型会生成穿过机体的手臂路径。扩写之后抽 20 条在 Isaac 里回放，看夹爪是否穿模，再开始长训练。

## 微调

N1.5 公开脚本的形态如下，参数以你克隆到的 README 为准：

```bash
python scripts/gr00t_finetune.py \
  --dataset-path ./demo_data/robot_sim.PickNPlace \
  --num-gpus 1 \
  --output-dir ./checkpoints/gr00t \
  --max-steps 10000 \
  --data-config fourier_gr1_arms_only \
  --video-backend torchvision_av
```

`fourier_gr1_arms_only` 只是示例数据配置的名字。你的臂如果不是这份配置里的关节，要新写 data config，而不是改关节顺序碰运气。目录卡 `nvidia-gr00t-n1-5-3b` 是 N1.5 的 3B 权重；`gr00t-n1-7` 是更新的卡片，二者的 data config 不保证通用。

多卡把 `--num-gpus` 设成机器上的 GPU 数。脚本内部若使用进程启动器，就不要再在外面套一层同样的进程数，否则每个进程又会再分一次卡，直接把显存打满。

目录卡写 N1.7 微调大约 40 GB。这是单卡量级的记录，不是 8 卡每卡的占用。OOM 时先减 batch 和视频分辨率，不要关掉视频键却留着 modality 里的视频字段。

## 和榜上数字的关系

RoboCasa365 官方多任务表里，GR00T N1.5 的平均成功率是 20.0%（atomic-seen 43.0%，composite-seen 9.6%，composite-unseen 4.4%）。那是他们的数据配置和任务拆分。你用自己的 URDF 跑完 10000 step，不会得到这个数。要用那张表做回归，就用他们发布的 checkpoint 和评测脚本。

## 上真机之前

在仿真里把动作维打出来，和机器人 SDK 的关节数组逐项对比。GR00T 输出的是数据集里的动作空间，可能是末端增量或关节绝对量。部署端差一个积分，臂会漂到限位。先低增益跟踪一半幅值，再接到行走控制器上。下身行走不要和这条微调绑在同一个动作头里。

## 原始参考来源 (Sources)

- [Isaac Lab](https://github.com/isaac-sim/IsaacLab)
- [Isaac GR00T](https://github.com/NVIDIA/Isaac-GR00T)
- [GR00T-N1.5-3B](https://huggingface.co/nvidia/GR00T-N1.5-3B)
- [RoboCasa365 多任务表](https://robocasa.ai/docs/build/html/benchmarking/multitask_learning.html)