NVIDIA IsaacLab Arena 与 LeRobot
LeRobot EnvHub 现在支持使用 IsaacLab Arena 进行 GPU 加速仿真,可大规模评估策略。 训练和评估模仿学习策略,使用高保真仿真 — 全部集成到 LeRobot 生态系统中。

IsaacLab Arena 与 NVIDIA IsaacLab 集成,提供:
- 🤖 人形机器人具身:GR1、G1、Galileo 及各种配置
- 🎯 操作和移动操作任务:开门、抓取放置、按按钮等
- ⚡ GPU 加速推演:在 NVIDIA GPU 上并行执行环境
- 🖼️ RTX 渲染:使用逼真的渲染、反射和折射评估基于视觉的策略
- 📦 LeRobot 兼容数据集:可用于训练 GR00T N1x、PI0、SmolVLA、ACT 和 Diffusion 策略
- 🔄 EnvHub 集成:通过一行代码从 HuggingFace EnvHub 加载环境
安装
前置要求
硬件要求与 Isaac Sim 共享,详见 Isaac Sim 要求。
- 支持 CUDA 的 NVIDIA GPU
- 与 IsaacSim 5.1.0 兼容的 NVIDIA 驱动
- Linux(Ubuntu 22.04 / 24.04)
设置
# 1. 创建 conda 环境
conda create -y -n lerobot-arena python=3.11
conda activate lerobot-arena
conda install -y -c conda-forge ffmpeg=7.1.1
# 2. 安装 Isaac Sim 5.1.0
pip install "isaacsim[all,extscache]==5.1.0" --extra-index-url https://pypi.nvidia.com
# 接受 NVIDIA EULA(必需)
export ACCEPT_EULA=Y
export PRIVACY_CONSENT=Y
# 3. 安装 IsaacLab 2.3.0
git clone https://github.com/isaac-sim/IsaacLab.git
cd IsaacLab
git checkout v2.3.0
./isaaclab.sh -i
cd ..
# 4. 安装 IsaacLab Arena
git clone https://github.com/isaac-sim/IsaacLab-Arena.git
cd IsaacLab-Arena
git checkout release/0.1.1
pip install -e .
cd ..
# 5. 安装 LeRobot(evaluation extra 用于环境/策略评估)
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[evaluation]"
cd ..
# 6. 安装额外依赖
pip install onnxruntime==1.23.2 lightwheel-sdk==1.0.1 vuer[all]==0.0.70 qpsolvers==4.8.1
pip install numpy==1.26.0 # Isaac Sim 5.1 依赖 numpy==1.26.0,这将在下一版本中修复
评估策略
预训练策略
以下训练好的策略可用:
| 策略 | 架构 | 任务 | 链接 |
|---|---|---|---|
| pi05-arena-gr1-microwave | PI0.5 | GR1 微波炉 | HuggingFace |
| smolvla-arena-gr1-microwave | SmolVLA | GR1 微波炉 | HuggingFace |
评估 SmolVLA
pip install -e ".[smolvla]"
pip install numpy==1.26.0 # 将 numpy 恢复到 1.26 版本
lerobot-eval \
--policy.path=nvidia/smolvla-arena-gr1-microwave \
--env.type=isaaclab_arena \
--env.hub_path=nvidia/isaaclab-arena-envs \
--rename_map='{"observation.images.robot_pov_cam_rgb": "observation.images.robot_pov_cam"}' \
--policy.device=cuda \
--env.environment=gr1_microwave \
--env.embodiment=gr1_pink \
--env.object=mustard_bottle \
--env.headless=false \
--env.enable_cameras=true \
--env.video=true \
--env.video_length=10 \
--env.video_interval=15 \
--env.state_keys=robot_joint_pos \
--env.camera_keys=robot_pov_cam_rgb \
--trust_remote_code=True \
--eval.batch_size=1
评估 PI0.5
pip install -e ".[pi]"
pip install numpy==1.26.0 # 将 numpy 恢复到 1.26 版本
Tip
PI0.5 需要禁用 torch compile 进行评估:
TORCH_COMPILE_DISABLE=1 TORCHINDUCTOR_DISABLE=1 lerobot-eval \
--policy.path=nvidia/pi05-arena-gr1-microwave \
--env.type=isaaclab_arena \
--env.hub_path=nvidia/isaaclab-arena-envs \
--rename_map='{"observation.images.robot_pov_cam_rgb": "observation.images.robot_pov_cam"}' \
--policy.device=cuda \
--env.environment=gr1_microwave \
--env.embodiment=gr1_pink \
--env.object=mustard_bottle \
--env.headless=false \
--env.enable_cameras=true \
--env.video=true \
--env.video_length=15 \
--env.video_interval=15 \
--env.state_keys=robot_joint_pos \
--env.camera_keys=robot_pov_cam_rgb \
--trust_remote_code=True \
--eval.batch_size=1
Tip
要更改并行环境的数量,使用 --eval.batch_size 标志。
预期结果
在评估期间,您将看到一个进度条显示运行成功率:
Stepping through eval batches: 8%|██████▍ | 4/50 [00:45<08:06, 10.58s/it, running_success_rate=25.0%]
视频录制
要在评估期间启用视频录制,请在命令中添加以下标志:
--env.video=true \
--env.video_length=15 \
--env.video_interval=15
有关视频录制的更多详细信息,请参阅 IsaacLab 录制文档。
Tip
当使用 --env.headless=true 无头运行时,您必须为启用相机的环境显式启用相机:
--env.headless=true --env.enable_cameras=true
输出目录
评估视频保存到输出目录,结构如下:
outputs/eval/<date>/<timestamp>_<env>_<policy>/videos/<task>_<env_id>/eval_episode_<n>.mp4
例如:
outputs/eval/2026-01-02/14-38-01_isaaclab_arena_smolvla/videos/gr1_microwave_0/eval_episode_0.mp4
训练策略
要了解更多关于使用 LeRobot 训练策略的信息,请参阅训练文档:
HuggingFace Hub 上提供了 IsaacLab Arena 示例数据集供实验:
| 数据集 | 描述 | 帧数 |
|---|---|---|
| Arena-GR1-Manipulation-Task | GR1 微波炉操作 | ~4K |
| Arena-G1-Loco-Manipulation-Task | G1 移动操作 | ~4K |
环境配置
完整配置选项
from lerobot.envs.configs import IsaaclabArenaEnv
config = IsaaclabArenaEnv(
# 环境选择
environment="gr1_microwave", # 任务环境
embodiment="gr1_pink", # 机器人具身
object="power_drill", # 要操作的对象
# 仿真设置
episode_length=300, # 每个回合的最大步数
headless=True, # 无 GUI 运行
device="cuda:0", # GPU 设备
seed=42, # 随机种子
# 观测配置
state_keys="robot_joint_pos", # 状态观测键(逗号分隔)
camera_keys="robot_pov_cam_rgb", # 相机观测键(逗号分隔)
state_dim=54, # 预期状态维度
action_dim=36, # 预期动作维度
camera_height=512, # 相机图像高度
camera_width=512, # 相机图像宽度
enable_cameras=True, # 启用相机观测
# 视频录制
video=False, # 启用视频录制
video_length=100, # 每个视频的帧数
video_interval=200, # 录制之间的步数
# 高级
mimic=False, # 启用模仿模式
teleop_device=None, # 远程操作设备
disable_fabric=False, # 禁用 fabric 优化
enable_pinocchio=True, # 启用 Pinocchio 用于 IK
)
直接使用 Environment Hub 进行高级用法
创建一个名为 test_env_load_arena.py 的文件或从 EnvHub 下载:
import logging
from dataclasses import asdict
from pprint import pformat
import torch
import tqdm
from lerobot.configs import parser
from lerobot.configs.eval import EvalPipelineConfig
@parser.wrap()
def main(cfg: EvalPipelineConfig):
"""为 IsaacLab Arena 环境运行随机动作推演。"""
logging.info(pformat(asdict(cfg)))
from lerobot.envs import make_env
env_dict = make_env(
cfg.env,
n_envs=cfg.env.num_envs,
trust_remote_code=True,
)
env = next(iter(env_dict.values()))[0]
env.reset()
for _ in tqdm.tqdm(range(cfg.env.episode_length)):
with torch.inference_mode():
actions = env.action_space.sample()
obs, rewards, terminated, truncated, info = env.step(actions)
if terminated.any() or truncated.any():
obs, info = env.reset()
env.close()
if __name__ == "__main__":
main()
运行:
python test_env_load_arena.py \
--env.environment=g1_locomanip_pnp \
--env.embodiment=gr1_pink \
--env.object=cracker_box \
--env.num_envs=4 \
--env.enable_cameras=true \
--env.seed=1000 \
--env.video=true \
--env.video_length=10 \
--env.video_interval=15 \
--env.headless=false \
--env.hub_path=nvidia/isaaclab-arena-envs \
--env.type=isaaclab_arena
创建新环境
首先按照 IsaacLab Arena 文档创建一个新的 IsaacLab Arena 环境。
克隆我们的 EnvHub 仓库:
git clone https://huggingface.co/nvidia/isaaclab-arena-envs
根据您的新环境修改 example_envs.yaml 文件。
上传您修改后的仓库到 HuggingFace EnvHub。
Tip
您的 IsaacLab Arena 环境代码在评估期间必须在本地可用。用户可以单独克隆您的环境仓库,或者您可以直接在 EnvHub 仓库中捆绑环境代码和资产。
然后,在评估时使用您的新环境:
lerobot-eval \
--env.hub_path=<your-env-hub-path>/isaaclab-arena-envs \
--env.environment=<your new environment> \
...other flags...
我们期待您的贡献!
故障排除
CUDA 内存不足
减少 batch_size 或使用具有更多 VRAM 的 GPU:
--eval.batch_size=1
EULA 未接受
在运行前设置环境变量:
export ACCEPT_EULA=Y
export PRIVACY_CONSENT=Y
视频录制不工作
在无头运行时启用相机:
--env.video=true --env.enable_cameras=true --env.headless=true
策略输出维度不匹配
确保 action_dim 与您的策略匹配:
--env.action_dim=36
Isaac Sim 初始化期间的 libGLU.so.1 错误
确保您已安装以下依赖项,这在无头机器上可能会发生。
sudo apt update && sudo apt install -y libglu1-mesa libxt6
另请参阅
- EnvHub 文档 - 通用 EnvHub 使用
- IsaacLab Arena GitHub
- IsaacLab 文档
Lightwheel LW-BenchHub
Lightwheel 正在将 Lightwheel-Libero-Tasks 和 Lightwheel-RoboCasa-Tasks 的 268 个任务带到 LeRobot 生态系统。
LW-BenchHub 通过远程操作收集和生成符合 LeRobot 规范的大规模数据集,实现开箱即用的训练和评估工作流程。
通过 EnvHub 提供的统一接口,开发人员可以快速构建端到端的实验管道。
安装
假设您已按照安装步骤操作,您可以使用以下命令安装 LW-BenchHub:
conda install pinocchio -c conda-forge -y
pip install numpy==1.26.0 # 将 numpy 恢复到 1.26 版本
sudo apt-get install git-lfs && git lfs install
git clone https://github.com/LightwheelAI/lw_benchhub
git lfs pull # 确保下载 LFS 文件(例如 .usd 资产)
cd lw_benchhub
pip install -e .
有关更详细的说明,请参阅 LW-BenchHub 文档。
Lightwheel 任务数据集
LW-BenchHub 数据集在 HuggingFace Hub 上可用:
| 数据集 | 描述 | 任务 | 帧数 |
|---|---|---|---|
| Lightwheel-Tasks-X7S | X7S LIBERO 和 RoboCasa | 117 | ~10.3M |
| Lightwheel-Tasks-Double-Piper | Double-Piper LIBERO | 130 | ~6.0M |
| Lightwheel-Tasks-G1-Controller | G1-Controller LIBERO | 62 | ~2.7M |
| Lightwheel-Tasks-G1-WBC | G1-WBC RoboCasa | 32 | ~1.5M |
有关训练策略,请参阅训练策略部分。
评估策略
预训练策略
以下训练好的策略可用:
| 策略 | 架构 | 任务 | 布局 | 机器人 | 链接 |
|---|---|---|---|---|---|
| smolvla-double-piper-pnp | SmolVLA | L90K1PutTheBlackBowlOnThePlate | libero-1-1 | DoublePiper-Abs | HuggingFace |
评估 SmolVLA
lerobot-eval \
--policy.path=LightwheelAI/smolvla-double-piper-pnp \
--env.type=isaaclab_arena \
--rename_map='{"observation.images.left_hand_camera_rgb": "observation.images.left_hand", "observation.images.right_hand_camera_rgb": "observation.images.right_hand", "observation.images.first_person_camera_rgb": "observation.images.first_person"}' \
--env.hub_path=LightwheelAI/lw_benchhub_env \
--env.kwargs='{"config_path": "configs/envhub/example.yml"}' \
--trust_remote_code=true \
--env.state_keys=joint_pos \
--env.action_dim=12 \
--env.camera_keys=left_hand_camera_rgb,right_hand_camera_rgb,first_person_camera_rgb \
--policy.device=cuda \
--eval.batch_size=10 \
--eval.n_episodes=100
环境配置
通过修改配置文件中的 robot、task 和 layout 设置可以快速启动评估。
完整配置选项
# =========================
# 基本设置
# =========================
disable_fabric: false
device: cuda:0
sensitivity: 1.0
step_hz: 50
enable_cameras: true
execute_mode: eval
episode_length_s: 20.0 # 回合长度(秒),如果评估期间回合超时则增加
# =========================
# 机器人设置
# =========================
robot: DoublePiper-Abs # 机器人类型,DoublePiper-Abs、X7S-Abs、G1-Controller 或 G1-Controller-DecoupledWBC
robot_scale: 1.0
# =========================
# 任务和场景设置
# =========================
task: L90K1PutTheBlackBowlOnThePlate # 任务名称
scene_backend: robocasa
task_backend: robocasa
debug_assets: null
layout: libero-1-1 # 布局和样式 ID
sources:
- objaverse
- lightwheel
- aigen_objs
object_projects: []
usd_simplify: false
seed: 42
# =========================
# 对象放置重试设置
# =========================
max_scene_retry: 4
max_object_placement_retry: 3
resample_objects_placement_on_reset: true
resample_robot_placement_on_reset: true
# =========================
# 重放配置设置
# =========================
replay_cfgs:
add_camera_to_observation: true
render_resolution: [640, 480]