LeRobot documentation

NVIDIA IsaacLab Arena & LeRobot

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

NVIDIA IsaacLab Arena & LeRobot

LeRobot EnvHub теперь поддерживает симуляцию с ускорением на GPU с помощью IsaacLab Arena для оценки политик в промышленных масштабах. Обучайте и оценивайте политики имитационного обучения в высокодетализированной симуляции — всё интегрировано в экосистему LeRobot.

IsaacLab Arena - GR1 Microwave Environment

IsaacLab Arena интегрируется с NVIDIA IsaacLab и обеспечивает:

  • 🤖 Гуманоидные воплощения: GR1, G1, Galileo с различными конфигурациями
  • 🎯 Задачи манипуляции и локомо-манипуляции: открытие двери, захват и размещение, нажатие кнопки и другое
  • ⚡ Развёртывания с ускорением на GPU: Параллельное выполнение сред на GPU NVIDIA
  • 🖼️ RTX Rendering: Оценка политик на основе зрения с реалистичным рендерингом, отражениями и преломлениями
  • 📦 Наборы данных, совместимые с LeRobot: готовы для обучения с GR00T N1x, PI0, SmolVLA, ACT и Diffusion policies
  • 🔄 Интеграция с EnvHub: загрузка сред из HuggingFace EnvHub одной строкой

Установка

Предварительные требования

Требования к аппаратному обеспечению совпадают с требованиями Isaac Sim и подробно описаны в Isaac Sim Requirements.

  • NVIDIA GPU с поддержкой CUDA
  • Драйвер NVIDIA, совместимый с IsaacSim 5.1.0
  • Linux (Ubuntu 22.04 / 24.04)

Настройка

# 1. Create conda environment
conda create -y -n lerobot-arena python=3.11
conda activate lerobot-arena
conda install -y -c conda-forge ffmpeg=7.1.1

# 2. Install Isaac Sim 5.1.0
pip install "isaacsim[all,extscache]==5.1.0" --extra-index-url https://pypi.nvidia.com

# Accept NVIDIA EULA (required)
export ACCEPT_EULA=Y
export PRIVACY_CONSENT=Y

# 3. Install 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. Install 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. Install LeRobot (evaluation extra for env/policy evaluation)
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[evaluation]"


# 6. Install additional dependencies
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 depends on numpy==1.26.0, this will be fixed in next release

Оценка политик

Предобученные политики

Доступны следующие обученные политики:

ПолитикаАрхитектураЗадачаСсылка
pi05-arena-gr1-microwavePI0.5GR1 MicrowaveHuggingFace
smolvla-arena-gr1-microwaveSmolVLAGR1 MicrowaveHuggingFace

Оценка SmolVLA

pip install -e ".[smolvla]"
pip install numpy==1.26.0 # revert numpy to version 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 # revert numpy to version 1.26
PI0.5 requires disabling torch compile for evaluation:
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
To change the number of parallel environments, use the ```--eval.batch_size``` flag.

Чего ожидать

Во время оценки вы увидите индикатор прогресса, отображающий текущий процент успешных операций:

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.

When running headless with `--env.headless=true`, you must also enable cameras explicitly for camera enabled environments:
--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, обратитесь к документации по обучению:

Примеры наборов данных IsaacLab Arena доступны на HuggingFace Hub для экспериментов:

Набор данныхОписаниеКадры
Arena-GR1-Manipulation-TaskМанипуляция микроволнами GR1~4K
Arena-G1-Loco-Manipulation-TaskG1 локо-манипуляция~4K

Настройка окружения

Полные параметры конфигурации

from lerobot.envs.configs import IsaaclabArenaEnvConfig

config = IsaaclabArenaEnvConfig(
    # Environment selection
    environment="gr1_microwave",      # Task environment
    embodiment="gr1_pink",            # Robot embodiment
    object="power_drill",             # Object to manipulate

    # Simulation settings
    episode_length=300,               # Max steps per episode
    headless=True,                    # Run without GUI
    device="cuda:0",                  # GPU device
    seed=42,                          # Random seed

    # Observation configuration
    state_keys="robot_joint_pos",     # State observation keys (comma-separated)
    camera_keys="robot_pov_cam_rgb",  # Camera observation keys (comma-separated)
    state_dim=54,                     # Expected state dimension
    action_dim=36,                    # Expected action dimension
    camera_height=512,                # Camera image height
    camera_width=512,                 # Camera image width
    enable_cameras=True,              # Enable camera observations

    # Video recording
    video=False,                      # Enable video recording
    video_length=100,                 # Frames per video
    video_interval=200,               # Steps between recordings

    # Advanced
    mimic=False,                      # Enable mimic mode
    teleop_device=None,               # Teleoperation device
    disable_fabric=False,             # Disable fabric optimization
    enable_pinocchio=True,            # Enable Pinocchio for 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):
    """Run random action rollout for IsaacLab Arena environment."""
    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.

Your IsaacLab Arena environment code must be locally available during evaluation. Users can clone your environment repository separately, or you can bundle the environment code and assets directly in your EnvHub repo.

Затем, при оценке, используйте новую среду:

lerobot-eval \
    --env.hub_path=<your-env-hub-path>/isaaclab-arena-envs \
    --env.environment=<your new environment> \
    ...other flags...

Мы с нетерпением ждем ваших вкладов!

Устранение неполадок

Недостаточно памяти CUDA

Уменьшите batch_size или используйте GPU с большим объёмом VRAM:

--eval.batch_size=1

EULA не принята

Установите переменные окружения перед запуском:

export ACCEPT_EULA=Y
export PRIVACY_CONSENT=Y

Запись видео не работает

Включить камеры при запуске в режиме headless:

--env.video=true --env.enable_cameras=true --env.headless=true

Несовпадение размерности выходного слоя политики

Убедитесь, что action_dim соответствует вашей политике:

--env.action_dim=36

libGLU.so.1 Ошибки при инициализации Isaac Sim

Убедитесь, что у вас установлены следующие зависимости, это, вероятно, произойдет на машинах без графического интерфейса.

sudo apt update && sudo apt install -y libglu1-mesa libxt6

См. также

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 # revert numpy to version 1.26

sudo apt-get install git-lfs && git lfs install

git clone https://github.com/LightwheelAI/lw_benchhub
cd lw_benchhub
git lfs pull # Ensure LFS files (e.g., .usd assets) are downloaded

pip install -e .

Для получения более подробных инструкций обратитесь к документации LW-BenchHub.

Набор данных Lightwheel Tasks

Наборы данных LW-BenchHub доступны на HuggingFace Hub:

Набор данныхОписаниеЗадачиКадры
Lightwheel-Tasks-X7SX7S LIBERO и RoboCasa117~10.3M
Lightwheel-Tasks-Double-PiperDouble-Piper LIBERO130~6.0M
Lightwheel-Tasks-G1-ControllerG1-Controller LIBERO62~2.7M
Lightwheel-Tasks-G1-WBCG1-WBC RoboCasa32~1.5M

Для обучения политик см. раздел Политики обучения.

Оценка политик

Предобученные политики

Доступны следующие обученные политики:

ПолитикаАрхитектураЗадачаРаскладкаРоботСсылка
smolvla-double-piper-pnpSmolVLAL90K1PutTheBlackBowlOnThePlatelibero-1-1DoublePiper-AbsHuggingFace

Оценка 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 в файле конфигурации.

Полные параметры конфигурации

# =========================
# Basic Settings
# =========================
disable_fabric: false
device: cuda:0
sensitivity: 1.0
step_hz: 50
enable_cameras: true
execute_mode: eval
episode_length_s: 20.0 # Episode length in seconds, increase if episodes timeout during eval

# =========================
# Robot Settings
# =========================
robot: DoublePiper-Abs # Robot type, DoublePiper-Abs, X7S-Abs, G1-Controller or G1-Controller-DecoupledWBC
robot_scale: 1.0

# =========================
# Task & Scene Settings
# =========================
task: L90K1PutTheBlackBowlOnThePlate # Task name
scene_backend: robocasa
task_backend: robocasa
debug_assets: null
layout: libero-1-1 # Layout and style ID
sources:
  - objaverse
  - lightwheel
  - aigen_objs
object_projects: []
usd_simplify: false
seed: 42

# =========================
# Object Placement Retry Settings
# =========================
max_scene_retry: 4
max_object_placement_retry: 3

resample_objects_placement_on_reset: true
resample_robot_placement_on_reset: true

# =========================
# Replay Configuration Settings
# =========================
replay_cfgs:
  add_camera_to_observation: true
  render_resolution: [640, 480]

См. также

Update on GitHub