LeRobot documentation
NVIDIA IsaacLab Arena & LeRobot
NVIDIA IsaacLab Arena & LeRobot
يدعم LeRobot EnvHub الآن محاكاة مُسرَّعة بواسطة وحدة معالجة الرسوميات (GPU) باستخدام IsaacLab Arena لتقييم السياسات على نطاق واسع. درّب سياسات التعلم بالتقليد وقيّمها باستخدام محاكاة عالية الدقة — كل ذلك مُدمج في منظومة LeRobot.
يتكامل 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-microwave | PI0.5 | GR1 ميكروويف | HuggingFace |
| smolvla-arena-gr1-microwave | SmolVLA | GR1 ميكروويف | HuggingFace |
تقييم SmolVLA
pip install -e ".[smolvla]"
pip install numpy==1.26.0 # revert numpy to version 1.26lerobot-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.26PI0.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=1To 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-Task | G1 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انظر أيضاً
- توثيق 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 # 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-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 في ملف الإعدادات.
خيارات التكوين الكاملة
# =========================
# 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]