LeRobot documentation
RoboCasa365
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).
- Article : RoboCasa : Simulation à grande échelle de tâches quotidiennes pour robots généralistes
- GitHub : robocasa/robocasa
- Site web du projet : robocasa.ai
- Politique pré-entraînée :
lerobot/smolvla_robocasa - Jeu de données à tâche unique (CloseFridge) :
pepijn223/robocasa_CloseFridge
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 :
| Famille | Tâches | Description |
|---|---|---|
| Atomique | ~65 | Tâches à compétence unique : prise et placement, manipulation de portes/tiroirs, contrôle d'appareils |
| Composite | ~300 | Tâ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 lesplitdu jeu de données (targetoupretrain).
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_objaverseRoboCasa 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 uint8observation.images.robot0_eye_in_hand— vue de la caméra de poignet, 256×256 HWC uint8observation.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=20Reproduire 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.