LeRobot documentation

RoboCasa365

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboCasa365

RoboCasa365 est un cadre de simulation à grande échelle pour l’entraînement et l’évaluation de robots généralistes sur des tâches domestiques courantes en cuisine. Il propose 365 tâches de manipulation variées réparties sur 2 500 environnements de cuisine, plus de 3 200 objets et plus de 600 heures de données de démonstration humaine, sur un manipulateur mobile PandaOmron 12-DOF (bras Franka sur une base holonomique).

RoboCasa365 benchmark overview

Tâches disponibles

RoboCasa365 organise ses 365 tâches en deux familles et trois groupes de benchmarks amont que LeRobot expose comme des raccourcis de premier niveau --env.task :

FamilleTâchesDescription
Atomique~65Tâches à compétence unique : prise et placement, manipulation de portes/tiroirs, contrôle d'appareils
Composite~300Tâches multi-étapes dans plus de 60 catégories : cuisine, ménage, rangement, etc.

Exemples de tâches atomiques : CloseFridge, OpenDrawer, OpenCabinet, TurnOnMicrowave, TurnOffStove, NavigateKitchen, PickPlaceCounterToStove.

Catégories de tâches composites : cuisson au four, ébullition, brassage, hachage, nettoyage de la table, décongélation d'aliments, chargement du lave-vaisselle, préparation de thé, cuisson au micro-ondes, lavage de la vaisselle, et plus encore.

--env.task accepte trois formes :

  • un seul nom de tâche (CloseFridge)
  • une liste séparée par des virgules (CloseFridge,OpenBlenderLid,PickPlaceCoffee)
  • un raccourci de groupe de référence — atomic_seen, composite_seen, composite_unseen, pretrain50, pretrain100, pretrain200, pretrain300 — qui se déploie automatiquement en liste de tâches en amont et définit automatiquement le split du jeu de données (target ou pretrain).

Installation

RoboCasa et sa dépendance robosuite ne sont pas publiés sur PyPI, et le setup.py de RoboCasa lui-même impose lerobot==0.3.3, ce qui entre en conflit avec le lerobot de ce dépôt. LeRobot n’expose donc pas d’extra robocasa — installez les deux packages manuellement en tant que clones éditables (en utilisant --no-deps sur robocasa pour ignorer son verrouillage de lerobot masqué) :

# 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)

Registres d'objets

Par défaut, l'environnement échantillonne des objets uniquement depuis le registre lightwheel (ce que --type objs_lw fournit), ce qui évite un plantage Probabilities contain NaN lorsque les packs objaverse / aigen ne sont pas présents sur le disque. Si vous avez téléchargé l'ensemble complet des ressources, activez le registre complet à l'exécution :

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

Évaluation

Tous les extraits d’évaluation ci-dessous reproduisent la commande CI (voir .github/workflows/benchmark_tests.yml). L’argument --rename_map associe les clés de caméra natives de RoboCasa à la disposition d’entrée à trois caméras (camera1 / camera2 / camera3) sur laquelle la politique smolvla_robocasa publiée a été entraînée : robot0_agentview_left → camera1, robot0_agentview_right → camera2, robot0_eye_in_hand → camera3. Cette association doit correspondre au mapping utilisé lors de l’entraînement de la politique (voir rename_map dans le fichier train_config.json du checkpoint) ; l’échange de deux clés de caméra est accepté silencieusement, car les trois vues partagent la même forme.

Par défaut, chaque tâche utilise l'horizon de déroulement enregistré par RoboCasa. Définissez --env.episode_length=<steps> pour appliquer le même horizon explicite à toutes les tâches sélectionnées.

Évaluation monotâche (recommandée pour une itération rapide)

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"}'

Évaluation multi-tâches

Passer une liste de tâches séparées par des virgules :

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge,OpenCabinet,OpenDrawer,TurnOnMicrowave,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"}'

Évaluation par groupe de benchmarks

Exécuter un groupe amont entier (par exemple, les 18 tâches atomic_seen avec 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"}'

Épisodes d'évaluation recommandés

20 épisodes par tâche pour un benchmarking reproductible. Correspond au protocole utilisé dans les résultats publiés.

Entrées et sorties de la politique

Observations (les noms bruts des caméras RoboCasa sont conservés tels quels) :

  • observation.state — état proprioceptif de 16 dimensions (position de la base, quaternion de la base, position relative de l'effecteur, quaternion relatif de l'effecteur, qpos de la pince)
  • observation.images.robot0_agentview_left — vue de l’agent gauche, 256×256 HWC uint8
  • observation.images.robot0_eye_in_hand — vue de la caméra de poignet, 256×256 HWC uint8
  • observation.images.robot0_agentview_right — vue de l’agent droit, 256×256 HWC uint8

Actions :

  • Contrôle continu dans Box(-1, 1, shape=(12,)) — mouvement de base (4D) + mode de contrôle (1D) + position de l'effecteur terminal (3D) + rotation de l'effecteur terminal (3D) + pince (1D).

Entraînement

Exemple de tâche unique

Un jeu de données monotâche prêt à l'emploi est disponible sur le Hub : pepijn223/robocasa_CloseFridge.

Effectuer un fine-tuning d'un SmolVLA de base sur 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

Évaluer le point de contrôle résultant :

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

Reproduire des résultats publiés

Le point de contrôle publié lerobot/smolvla_robocasa est évalué à l’aide des commandes de la section Évaluation. CI exécute une évaluation de fumée sur 10 tâches atomiques (un épisode chacune) pour chaque PR touchant le benchmark, en sélectionnant des tâches centrées sur les fixtures qui ne nécessitent pas le pack d’actifs objaverse.

Update on GitHub