LeRobot documentation
NVIDIA RoboLab
NVIDIA RoboLab
RoboLab adalah benchmark yang berisi 120 tugas manipulasi meja untuk robot DROID (lengan Franka Panda dengan gripper Robotiq 2F-85), disimulasikan dengan NVIDIA Isaac Lab dan dirender dengan renderer RTX dari Isaac Sim. Tugas-tugas mencakup pick-and-place, penumpukan, penyortiran, orientasi ulang, serta varian berbasis bahasa (relasi spasial, warna, penghitungan, instruksi ambigu), yang diklasifikasikan sebagai sederhana, sedang, atau kompleks.
- Makalah: RoboLab: Benchmark Simulasi Berkeandalan Tinggi untuk Analisis Kebijakan Umum Tugas
- GitHub: NVlabs/RoboLab
- Halaman proyek dan papan peringkat: research.nvidia.com/labs/srl/projects/robolab
Persyaratan dan lisensi
- GPU: GPU NVIDIA RTX (Isaac Sim dirender dengan RTX). Satu env dari satu task membutuhkan sekitar 7 GB VRAM, termasuk Isaac Sim; setiap env tambahan dalam task yang sama menambah sekitar 1 hingga 2 GB (panduan RoboLab memuat 30 hingga 100 env pada GPU 48 GB, tergantung pada task). Kebijakan Anda membutuhkan memori tambahan di atasnya.
- Isaac Sim: RoboLab berjalan di atas Isaac Sim 6.0.1 dan Isaac Lab 3.0 beta 2 di sini, yaitu stack Isaac Sim 6 milik RoboLab. Penggunaan Isaac Sim berarti Anda menerima lisensi NVIDIA Isaac Sim; image Docker menerimanya untuk Anda, sama seperti image milik RoboLab sendiri.
- Aset: Adegan, objek, dan model robot RoboLab (sekitar 6 GB, dari git LFS-nya) sebagian besar berlisensi CC BY-NC-SA 4.0, dengan beberapa di bawah ketentuan lain; lihat THIRD_PARTY_NOTICES.md RoboLab. LeRobot tidak mendistribusikannya: image mengunduhnya dari NVlabs saat Anda membangunnya.
- Docker, untuk setup yang disajikan di bawah ini: BuildKit (
docker buildx) untuk membangun image, dan NVIDIA Container Toolkit agar container dapat menggunakan GPU.
Jalankan dengan mode served (disarankan)
Isaac Lab 3.0 beta mengunci transformers==4.57.6 (sehingga huggingface-hub<1.0), numpy==2.3.1 dan packaging==26.0, yang tidak diterima oleh dependensi LeRobot itu sendiri. Jalankan RoboLab dalam image Docker-nya sendiri, di belakang lerobot-env-server, dan policy Anda di lingkungan LeRobot Anda yang biasa:
# 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=10Server menjalankan salah satu tugas yang dikonfigurasi: klien membuka tugas yang diminta, dan server membangunnya di Isaac Sim yang sedang berjalan (beberapa detik). Memulai Isaac Sim sendiri membutuhkan waktu dari beberapa detik hingga beberapa menit. Jika tidak menemukan GPU di dalam kontainer (ERROR_INCOMPATIBLE_DRIVER), lihat catatan Vulkan di Simulation.
Jalankan secara lokal
Dengan Isaac Sim dan RoboLab yang sudah terpasang di lingkungan Anda, tambahkan --env.server.endpoint dan lerobot-eval akan menjalankan RoboLab dalam prosesnya sendiri. Pasang dulu stack RoboLab, kemudian LeRobot tanpa dependensinya, seperti yang dilakukan oleh image Docker:
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 licenseLingkungan ini tidak memiliki ruang untuk kebijakan yang membutuhkan transformers 5 (π₀.₅, SmolVLA, …): jalankan yang dilayani.
Tugas
Setiap dari 120 tugas RoboLab merupakan suite tersendiri dengan satu task id, sehingga lerobot-eval melaporkan tingkat keberhasilan per tugas dan secara keseluruhan. --env.task menerima daftar nama tugas yang dipisahkan koma, misalnya BananaInBowlTask,RubiksCubeAndBananaTask; biarkan kosong untuk semua 120 tugas. Nama tugas, instruksi, dan tingkat kesulitan tercantum dalam metadata tugas RoboLab.
Semua env dari sebuah task berbagi satu dunia Isaac Lab di GPU: --eval.batch_size=N menjalankan N episode sekaligus di dunia tersebut.
Observasi dan tindakan
| Kunci | Bentuk | Konten |
|---|---|---|
observation.images.over_shoulder_left_camera | 720 × 1280 × 3 | Kamera eksterior, di sebelah kiri robot |
observation.images.wrist_cam | 720 × 1280 × 3 | Kamera pergelangan tangan |
observation.state | 8 | joint_0.pos … joint_6.pos (radian), gripper.pos (0 terbuka, 1 tertutup) |
action | 8 | Target gabungan absolut untuk 7 sendi, kemudian penjepit: tertutup di atas 0.5 |
Robot berjalan pada 15 Hz (fisika pada 120 Hz, 8 langkah fisika per aksi), dan LeRobot merekamnya sebagai robot_type="Franka", seperti pada DROID. Setiap episode memiliki batas waktu tugasnya (20 hingga 300 detik, sehingga 300 hingga 4.500 langkah); episode yang berhasil berakhir sebagai terminated, sedangkan episode yang kehabisan waktu berakhir sebagai truncated. Instruksi tugas adalah deskripsi tugas dari env.
Sim robot
RoboLab juga dapat menggantikan robot DROID sungguhan di lerobot-rollout, lerobot-record dan alat robot lainnya (lihat Simulasi: lokal atau disajikan):
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 ...
Referensi konfigurasi lingkungan
| Parameter | Default | Deskripsi |
|---|---|---|
task | empty: semua 120 | Nama tugas yang dipisahkan koma |
cameras | "WRIST_LEFT" | Preset kamera dari robolab/registrations/droid/camera_presets.py RoboLab, misalnya WRIST_LEFT_RIGHT untuk kedua kamera eksterior |
instruction_type | "default" | Instruksi yang diberikan oleh masing-masing tugas: default, vague atau specific |
observation_height, observation_width | unset: 720 × 1280 | Ukuran ulang bingkai kamera di GPU terlebih dahulu, misalnya untuk mengirim bingkai yang lebih kecil dari server |
Membandingkan dengan papan peringkat
Leaderboard RoboLab mengevaluasi 10 episode per tugas dengan instruksi default, kamera WRIST_LEFT, dan aksi posisi sendi, yang merupakan default LeRobot. Leaderboard ini tidak menyebutkan versi Isaac Sim mana yang menghasilkan angka-angkanya, dan default RoboLab adalah Isaac Sim 5.0: fisika dan rendering berbeda antar versi Isaac Sim, sehingga angka dari setup Isaac Sim 6.0.1 ini tidak dapat dibandingkan secara langsung.