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 بإعدادات مختلفة
  • 🎯 مهام التلاعب والتحرك والتلاعب: فتح الأبواب، التقاط الأشياء ووضعها، الضغط على الأزرار، والمزيد
  • ⚡ توليدات مُسرَّعة بواسطة وحدات معالجة الرسوميات: تنفيذ متوازٍ للبيئات على وحدات معالجة الرسوميات من NVIDIA
  • 🖼️ RTX Rendering: تقييم السياسات القائمة على الرؤية باستخدام تصيير واقعي مع انعكاسات وانكسارات
  • 📦 مجموعات بيانات متوافقة مع LeRobot: جاهزة للتدريب مع GR00T N1x وPI0 وSmolVLA وACT وسياسات الانتشار
  • 🔄 تكامل EnvHub: تحميل البيئات من HuggingFace EnvHub بسطر واحد

التثبيت

المتطلبات

متطلبات العتاد مشتركة مع Isaac Sim، وهي موضحة بالتفصيل في متطلبات Isaac Sim.

  • وحدة معالجة رسومات من NVIDIA تدعم CUDA
  • سائق NVIDIA المتوافق مع IsaacSim 5.1.0
  • لينكس (أوبونتو 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 ميكروويفHuggingFace
smolvla-arena-gr1-microwaveSmolVLAGR1 ميكروويفHuggingFace

تقييم 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 loco-manipulation~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

لم يتم قبول اتفاقية ترخيص المستخدم النهائي

اضبط متغيرات البيئة قبل التشغيل:

export ACCEPT_EULA=Y
export PRIVACY_CONSENT=Y

عدم عمل تسجيل الفيديو

تفعيل الكاميرات عند التشغيل بدون واجهة:

--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

تتوفر مجموعات بيانات 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