LeRobot documentation

RoboCasa365

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboCasa365

The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/robocasa.yaml --sim.task=--docker=true`, where `` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).

RoboCasa365 adalah kerangka simulasi berskala besar untuk melatih dan menguji robot generalis dalam tugas-tugas dapur sehari-hari. Kerangka ini menyediakan 365 tugas manipulasi yang beragam di 2.500 lingkungan dapur, 3.200+ aset objek, dan 600+ jam data demonstrasi manusia, pada manipulator mobile PandaOmron 12-DOF (lengan Franka di atas basis holonomik).

RoboCasa365 benchmark overview

Tugas yang tersedia

RoboCasa365 mengorganisasikan 365 tugasnya ke dalam dua keluarga dan tiga grup benchmark hulu yang LeRobot paparkan sebagai pintasan --env.task kelas pertama:

KeluargaTugasDeskripsi
Atomik~65Tugas keterampilan tunggal: pick-and-place, manipulasi pintu/laci, kontrol peralatan
Komposit~300Tugas multi-langkah di lebih dari 60 kategori: memasak, membersihkan, merapikan, dll.

Contoh tugas atomik: CloseFridge, OpenDrawer, OpenCabinet, TurnOnMicrowave, TurnOffStove, NavigateKitchen, PickPlaceCounterToStove.

Kategori tugas komposit: memanggang, merebus, menyeduh, memotong, membersihkan meja, mencairkan makanan, mengisi mesin pencuci piring, membuat teh, memanaskan makanan di microwave, mencuci piring, dan lainnya.

--env.task menerima tiga bentuk:

  • nama tugas tunggal (CloseFridge)
  • daftar yang dipisahkan koma (CloseFridge,OpenBlenderLid,PickPlaceCoffee)
  • shortcut grup benchmark — atomic_seen, composite_seen, composite_unseen, pretrain50, pretrain100, pretrain200, pretrain300 — yang otomatis diperluas menjadi daftar tugas upstream dan otomatis mengatur split dataset (target atau pretrain).

Instalasi

RoboCasa dan dependensinya robosuite tidak dipublikasikan di PyPI, dan setup.py milik RoboCasa sendiri meng-hardcode lerobot==0.3.3, yang bertentangan dengan lerobot dari repo ini. Oleh karena itu, LeRobot tidak mengexpose extra robocasa — instal kedua paket secara manual sebagai clone editable (gunakan --no-deps pada robocasa untuk melewati pin lerobot yang ter-shadow):

# After following the standard LeRobot installation instructions.

git clone https://github.com/robocasa/robocasa.git ~/robocasa
git clone https://github.com/ARISE-Initiative/robosuite.git ~/robosuite
pip install -e ~/robocasa --no-deps
pip install -e ~/robosuite

# Robocasa's runtime deps (the ones its setup.py would have pulled, minus
# the bad lerobot pin).
pip install numpy numba scipy mujoco pygame Pillow opencv-python \
            pyyaml pynput tqdm termcolor imageio h5py lxml hidapi \
            tianshou gymnasium

python -m robocasa.scripts.setup_macros
# Lightweight assets (lightwheel object meshes + textures). Enough for
# the default env out of the box.
python -m robocasa.scripts.download_kitchen_assets \
  --type tex tex_generative fixtures_lw objs_lw
# Optional: full objaverse/aigen registries (~30GB) for richer object
# variety. Enable at eval time via --env.obj_registries (see below).
# python -m robocasa.scripts.download_kitchen_assets --type objs_objaverse
RoboCasa requires MuJoCo. Set the rendering backend before training or evaluation:
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

Daftar objek

Secara default, env mengambil sampel objek hanya dari registry lightwheel (yang dikirim oleh --type objs_lw), yang menghindari crash Probabilities contain NaN ketika paket objaverse / aigen tidak ada di disk. Jika Anda telah mengunduh set aset lengkap, aktifkan registry lengkap saat runtime:

--env.obj_registries='[objaverse,lightwheel]'

Evaluasi

Semua cuplikan eval di bawah ini mencerminkan perintah CI (lihat .github/workflows/benchmark_tests.yml). Argumen --rename_map memetakan kunci kamera asli RoboCasa ke tata letak input tiga kamera (camera1 / camera2 / camera3) yang digunakan untuk melatih kebijakan smolvla_robocasa yang dirilis: robot0_agentview_left → camera1, robot0_agentview_right → camera2, robot0_eye_in_hand → camera3. Pasangan ini harus sesuai dengan pemetaan saat pelatihan kebijakan (lihat rename_map di train_config.json checkpoint); pertukaran dua kunci kamera akan diterima secara diam-diam, karena ketiga tampilan berbagi bentuk yang sama.

Secara default, setiap tugas menggunakan horizon rollout yang didaftarkan oleh RoboCasa. Atur --env.episode_length=<steps> untuk menerapkan horizon eksplisit yang sama ke setiap tugas yang dipilih.

Evaluasi tugas tunggal (disarankan untuk iterasi cepat)

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

Evaluasi multi-tugas

Lewatkan daftar tugas yang dipisahkan koma:

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge,OpenCabinet,OpenDrawer,TurnOffStove \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

Evaluasi kelompok benchmark

Jalankan seluruh grup upstream (misalnya semua 18 tugas atomic_seen dengan split=target):

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=atomic_seen \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

Episode evaluasi yang direkomendasikan

20 episode per tugas untuk benchmarking yang dapat direproduksi. Sesuai dengan protokol yang digunakan dalam hasil yang dipublikasikan.

Input dan output kebijakan

Observasi (nama kamera RoboCasa mentah dipertahankan apa adanya):

  • observation.state — keadaan proprioseptif 16-dimensi (posisi basis, kuaternion basis, posisi ujung-efektor relatif, kuaternion ujung-efektor relatif, qpos gripper)
  • observation.images.robot0_agentview_left — tampilan agen kiri, 256×256 HWC uint8
  • observation.images.robot0_eye_in_hand — tampilan kamera pergelangan tangan, 256×256 HWC uint8
  • observation.images.robot0_agentview_right — tampilan agen kanan, 256×256 HWC uint8

Aksi:

  • Kontrol kontinu dalam Box(-1, 1, shape=(12,)) — gerakan dasar (4D) + mode kontrol (1D) + posisi ujung efektor (3D) + rotasi ujung efektor (3D) + gripper (1D).

Pelatihan

Contoh tugas tunggal

Dataset tugas tunggal yang siap digunakan tersedia di Hub: pepijn223/robocasa_CloseFridge.

Lakukan fine-tuning pada SmolVLA base untuk CloseFridge:

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/smolvla_robocasa_CloseFridge \
  --policy.load_vlm_weights=true \
  --policy.push_to_hub=true \
  --dataset.repo_id=pepijn223/robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --output_dir=./outputs/smolvla_robocasa_CloseFridge \
  --steps=100000 \
  --batch_size=4 \
  --env_eval_freq=5000 \
  --eval.batch_size=1 \
  --eval.n_episodes=5 \
  --save_freq=10000

Evaluasi checkpoint yang dihasilkan:

lerobot-eval \
  --policy.path=${HF_USER}/smolvla_robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20

Mereproduksi hasil yang dipublikasikan

Checkpoint yang dirilis lerobot/smolvla_robocasa dievaluasi dengan perintah pada bagian Evaluation. CI menjalankan smoke eval 10-atomic-task (satu episode masing-masing) pada setiap PR yang menyentuh benchmark, dengan memilih tugas yang berpusat pada fixture dan tidak memerlukan paket aset objaverse.

Update on GitHub