LeRobot documentation
NVIDIA IsaacLab Arena & LeRobot
NVIDIA IsaacLab Arena & LeRobot
LeRobot EnvHubは、IsaacLab ArenaによるGPUアクセラレーション付きシミュレーションをサポートし、大規模なポリシー評価に対応しました。 高忠実度のシミュレーションで模倣学習ポリシーの学習と評価を行い、すべてLeRobotエコシステムに統合されています。
IsaacLab ArenaはNVIDIA IsaacLabと統合されており、以下を提供します:
- 🤖 ヒューマノイドのエンボディメント: GR1、G1、Galileo(各種構成)
- 🎯 操作およびローコ・マニピュレーションタスク: ドアの開閉、ピック・アンド・プレース、ボタンの押下など
- ⚡ GPU による高速なロールアウト: NVIDIA GPU での並列環境実行
- 🖼️ RTX Rendering: リアルなレンダリング、反射、屈折を用いて、ビジョンベースのポリシーを評価します
- 📦 LeRobot互換データセット: GR00T N1x、PI0、SmolVLA、ACT、Diffusionポリシーでの学習にすぐ対応
- 🔄 EnvHubとの統合: HuggingFace EnvHubから環境を1行で読み込み
インストール
前提条件
ハードウェア要件はIsaac Simと共通しており、Isaac Sim Requirementsに詳細が記載されています。
- CUDA対応のNVIDIA GPU
- IsaacSim 5.1.0 と互換性のある NVIDIA ドライバー
- 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-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=1PI0.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 Recording Documentationを参照してください。
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 ロコモニピュレーション | ~4K |
環境設定
完全な設定オプション
from lerobot.envs.configs import IsaaclabArenaEnv
config = IsaaclabArenaEnv(
# 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 Documentationに従って、新しい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を減らすか、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は、268のタスクを含むLightwheel-Libero-TasksとLightwheel-RoboCasa-Tasksを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 Documentationを参照してください。
Lightwheel Tasks データセット
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 |
ポリシーの学習については、Training Policiesセクションを参照してください。
ポリシーの評価
事前学習済みポリシー
以下の学習済みポリシーが利用可能です:
| ポリシー | アーキテクチャ | タスク | レイアウト | ロボット | リンク |
|---|---|---|---|---|---|
| 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]