LeRobot documentation

NVIDIA RoboLab

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

NVIDIA RoboLab

RoboLab, NVIDIA Isaac Lab ile simüle edilen ve Isaac Sim'in RTX rendercisi ile görüntülenen, bir DROID robotu (Robotiq 2F-85 kavrayıcılı Franka Panda kol) için 120 masaüstü manipülasyon görevinden oluşan bir referans testidir. Görevler; alma ve yerleştirme, yığma, sıralama, yeniden yönlendirme ve dil koşullu varyantları (uzamsal ilişkiler, renkler, sayma, belirsiz talimatlar) kapsamaktadır ve basit, orta veya karmaşık olarak derecelendirilmiştir.

Gereksinimler ve lisanslar

  • GPU: NVIDIA RTX GPU (Isaac Sim, RTX ile render alır). Bir görevin bir env’i, Isaac Sim dahil olmak üzere yaklaşık 7 GB VRAM kullanır; aynı görevdeki her ek env yaklaşık 1 ila 2 GB ekler (RoboLab’ın kılavuzu, görevine bağlı olarak 48 GB GPU üzerinde 30 ila 100 env sığdırır). Politikanızın kendi bellek ihtiyacı da bunun üzerine eklenir.
  • Isaac Sim: RoboLab burada Isaac Sim 6.0.1 ve Isaac Lab 3.0 beta 2 üzerinde çalışır, RoboLab’ın Isaac Sim 6 yığını. Isaac Sim kullanmak NVIDIA Isaac Sim lisansını kabul etmeyi gerektirir; Docker görüntüsü bunu sizin için kabul eder, tıpkı RoboLab’ın kendi görüntüsünün yaptığı gibi.
  • Varlıklar: RoboLab’ın sahneleri, nesneleri ve robot modelleri (git LFS’ten yaklaşık 6 GB) büyük ölçüde CC BY-NC-SA 4.0 lisansına tabidir, bazıları ise farklı koşullara sahiptir; RoboLab’ın THIRD_PARTY_NOTICES.md dosyasına bakın. LeRobot bunları dağıtmaz: görüntü, oluşturulduğunda NVlabs’ten indirir.
  • Aşağıdaki sunulan yapılandırma için Docker, görüntüyü oluşturmak için BuildKit (docker buildx) ve konteynerin GPU kullanabilmesi için NVIDIA Container Toolkit.

Sunucu olarak çalıştırın (önerilen)

Isaac Lab 3.0 beta sürümü transformers==4.57.6 (dolayısıyla huggingface-hub<1.0), numpy==2.3.1 ve packaging==26.0 sürümlerini sabitler; LeRobot’un kendi bağımlılıkları bu sürümleri kabul etmez. RoboLab’ı kendi Docker görüntüsünde, lerobot-env-server arkasında çalıştırın ve politikanızı (policy) alışıldık LeRobot ortamınızda çalıştırın:

# Build the image on first use (Isaac Sim and the assets: a long first build), then serve every task
lerobot-env-server --config_path=docker/sim/configs/robolab.yaml --docker=true

# In your LeRobot environment
lerobot-eval \
  --policy.path=<your DROID joint-position policy> \
  --env.type=robolab \
  --env.task=BananaInBowlTask \
  --env.server.endpoint=tcp/127.0.0.1:7448 \
  --rename_map='{"observation.images.over_shoulder_left_camera": "observation.images.<exterior>", "observation.images.wrist_cam": "observation.images.<wrist>"}' \
  --eval.batch_size=1 \
  --eval.n_episodes=10

Sunucu, yapılandırılmış görevlerinden herhangi birini çalıştırır: istemci, istediği görevi açar ve sunucu bunu çalışan Isaac Sim içinde oluşturur (birkaç saniye). Isaac Sim'in kendisini başlatmak saniyelerden birkaç dakikaya kadar sürebilir. Konteynerde GPU bulunamazsa (ERROR_INCOMPATIBLE_DRIVER), Simulation bölümündeki Vulkan notuna bakın.

Yerel olarak çalıştırın

Ortamınıza Isaac Sim ve RoboLab yüklendikten sonra --env.server.endpoint parametresini ekleyin ve lerobot-eval komutunu çalıştırın; bu komut RoboLab’ı kendi sürecinde çalıştırır. Docker görüntüsünün yaptığı gibi önce RoboLab yığınını, ardından bağımlılıkları olmadan LeRobot’u kurun:

GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/NVlabs/RoboLab.git && git -C RoboLab lfs pull
uv venv --python 3.12 && source .venv/bin/activate
uv pip install "isaaclab[isaacsim]==3.0.0b2.post1" -e ./RoboLab \
  --extra-index-url https://pypi.nvidia.com --index-strategy unsafe-best-match
uv pip install --no-deps -e ./lerobot
uv pip install draccus termcolor eclipse-zenoh  # what the rest of LeRobot's simulation code imports
export OMNI_KIT_ACCEPT_EULA=YES                 # accepts the Isaac Sim license

Bu ortamda transformers 5 gerektiren politikalar için (π₀.₅, SmolVLA, …) yer yok: bunları sunulan (served) olarak çalıştırın.

Görevler

RoboLab’ın 120 görevinin her biri tek bir görev kimliğine sahip kendi başına bir test setidir; bu nedenle lerobot-eval, görev başına ve genel başarı oranlarını raporlar. --env.task, virgülle ayrılmış bir görev adı listesi alır, örneğin BananaInBowlTask,RubiksCubeAndBananaTask; tüm 120 görev için boş bırakın. Görev adları, talimatlar ve zorluk seviyeleri RoboLab’ın görev meta verilerinde listelenmiştir.

Bir görevin tüm env'leri GPU'da tek bir Isaac Lab dünyasını paylaşır: --eval.batch_size=N, o dünyada N bölümü aynı anda çalıştırır.

Gözlemler ve eylemler

AnahtarBiçimİçerik
observation.images.over_shoulder_left_camera720 × 1280 × 3Robotun solundaki dış kamera
observation.images.wrist_cam720 × 1280 × 3Bilek kamerası
observation.state8joint_0.pos … joint_6.pos (radyan), gripper.pos (0 açık, 1 kapalı)
action87 eklem için mutlak ortak hedefler, ardından kavrama mekanizması: 0.5 üzerinde kapalı

Robot 15 Hz'de çalışır (fizik 120 Hz'de, eylem başına 8 fizik adımı) ve LeRobot bunu DROID'de olduğu gibi robot_type="Franka" olarak kaydeder. Her bölümün görevinin zaman sınırı vardır (20 ila 300 sn, yani 300 ila 4.500 adım); başarılı bir bölüm terminated olarak, zamanı dolan bir bölüm ise truncated olarak sona erer. Görevin talimatı, env'in görev açıklamasıdır.

Sim robot

RoboLab, lerobot-rollout, lerobot-record ve diğer robot araçlarında (bkz. Simülasyon: yerel veya sunulan) gerçek bir DROID robotunun yerini alabilir:

lerobot-rollout \
  --robot.type=sim --robot.env.type=robolab --robot.env.task=BananaInBowlTask --robot.task_id=0 \
  --robot.env.server.endpoint=tcp/127.0.0.1:7448 \
  --policy.path=<your policy> --fps=15 ...

Ortam yapılandırma başvurusu

ParametreVarsayılanAçıklama
taskempty: tümü 120Virgülle ayrılmış görev adları
cameras"WRIST_LEFT"RoboLab’ın robolab/registrations/droid/camera_presets.py dosyasındaki bir kamera ön ayarı, örneğin her iki dış kamera için WRIST_LEFT_RIGHT
instruction_type"default"Her görevin hangi talimatı verdiğini belirtir: default, vague veya specific
observation_height, observation_widthayarlanmamış: 720 × 1280Kamera karelerini önce GPU'da yeniden boyutlandırın, örneğin sunucudan daha küçük kareler göndermek için

Sıralama tablosuyla karşılaştırma

RoboLab’ın liderlik tablosu, varsayılan talimatı, WRIST_LEFT kameralarını ve eklem konumu eylemlerini kullanarak her görev için 10 bölüm değerlendirir; bunlar LeRobot’ın varsayılanlarıdır. Sayılarını hangi Isaac Sim sürümünün ürettiğini belirtmez ve RoboLab’ın varsayılanı Isaac Sim 5.0’dır: fizik ve renderlama, Isaac Sim sürümleri arasında farklılık gösterdiğinden, bu Isaac Sim 6.0.1 kurulumundan elde edilen sayılar doğrudan karşılaştırılabilir değildir.

Update on GitHub