LeRobot documentation
RoboCasa365
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).
- Makalah: RoboCasa: Simulasi Skala Besar Tugas Sehari-hari untuk Robot Generalis
- GitHub: robocasa/robocasa
- Situs web proyek: robocasa.ai
- Kebijakan pra-terlatih:
lerobot/smolvla_robocasa - Dataset tugas tunggal (CloseFridge):
pepijn223/robocasa_CloseFridge
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:
| Keluarga | Tugas | Deskripsi |
|---|---|---|
| Atomik | ~65 | Tugas keterampilan tunggal: pick-and-place, manipulasi pintu/laci, kontrol peralatan |
| Komposit | ~300 | Tugas 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 mengatursplitdataset (targetataupretrain).
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_objaverseRoboCasa 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 uint8observation.images.robot0_eye_in_hand— tampilan kamera pergelangan tangan, 256×256 HWC uint8observation.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=10000Evaluasi 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=20Mereproduksi 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.