LeRobot documentation
RoboCerebra
RoboCerebra
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/robocerebra.yaml --sim.task=--docker=true`, where ` ` is the command's `--env.task`, and run the command with `--env.type=robocerebra --env.server.endpoint=tcp/127.0.0.1:7448`. A server runs the task it was started with (see [Simulation: local or served](./simulation)).
RoboCerebra est un benchmark de manipulation à long horizon qui évalue le raisonnement de haut niveau, la planification et la mémoire des VLAs. Les épisodes enchaînent plusieurs sous-objectifs avec des instructions intermédiaires ancrées dans le langage, et sont construits sur la pile de simulateurs de LIBERO (MuJoCo + robosuite, Franka Panda 7-DOF).
- Article : RoboCerebra: A Large-scale Benchmark for Long-horizon Robotic Manipulation Evaluation
- Site web du projet : robocerebra.github.io
- Jeu de données :
lerobot/robocerebra_unified— LeRobot v3.0, 6 660 épisodes / 571 116 images à 20 ips, 1 728 sous-tâches ancrées dans le langage. - Politique pré-entraînée :
lerobot/smolvla_robocerebra
Tâches disponibles
RoboCerebra réutilise le simulateur de LIBERO, l’évaluation est donc effectuée sur la suite long-horizon libero_10 de LIBERO :
| Suite | Nom de la CLI | Tâches | Description |
|---|---|---|---|
| LIBERO-10 | libero_10 | 10 | Tâches de cuisine/salon à long horizon enchaînant 3 à 6 sous-objectifs |
Chaque épisode RoboCerebra du jeu de données est segmenté en plusieurs sous-tâches avec des instructions en langage naturel, que le jeu de données unifié expose comme des signaux de supervision indépendants.
Installation
RoboCerebra s’appuie sur LIBERO, il vous suffit donc de l’extra libero :
pip install -e ".[libero]"RoboCerebra requires Linux (MuJoCo / robosuite). Set the rendering backend before training or evaluation:export MUJOCO_GL=egl # for headless servers (HPC, cloud)
Évaluation
Les exécutions d’évaluation de RoboCerebra sont effectuées sur la suite libero_10 de LIBERO, en utilisant la convention de nommage des caméras de RoboCerebra (image + wrist_image) ainsi qu’un emplacement de caméra supplémentaire vide, afin qu’une politique entraînée sur trois vues reçoive la disposition d’entrée attendue :
lerobot-eval \
--policy.path=lerobot/smolvla_robocerebra \
--env.type=libero \
--env.task=libero_10 \
--env.fps=20 \
--env.obs_type=pixels_agent_pos \
--env.observation_height=256 \
--env.observation_width=256 \
'--env.camera_name_mapping={"agentview_image": "image", "robot0_eye_in_hand_image": "wrist_image"}' \
--eval.batch_size=1 \
--eval.n_episodes=10 \
--eval.use_async_envs=false \
--policy.device=cuda \
'--rename_map={"observation.images.image": "observation.images.camera1", "observation.images.wrist_image": "observation.images.camera2"}' \
--policy.empty_cameras=1Épisodes d'évaluation recommandés
10 épisodes par tâche sur la suite libero_10 (100 au total) pour un benchmarking reproductible. Correspond au protocole utilisé dans l'article RoboCerebra.
Entrées et sorties de la politique
Observations :
observation.state— état proprioceptif de 8 dimensions (7 positions d'articulations + pince)observation.images.image— vue de tierce personne, 256×256 HWC uint8observation.images.wrist_image— vue de la caméra montée au poignet, 256×256 HWC uint8
Actions :
- Contrôle continu dans
Box(-1, 1, shape=(7,))— delta de l'effecteur terminal (6D) + pince (1D)
Entraînement
Le jeu de données unifié situé à lerobot/robocerebra_unified expose deux flux RGB et des annotations de sous-tâches ancrées dans le langage :
| Fonctionnalité | Forme | Description |
|---|---|---|
observation.images.image | (256, 256, 3) | Vue en troisième personne |
observation.images.wrist_image | (256, 256, 3) | Caméra de poignet |
observation.state | (8,) | Position articulaire + pince |
action | (7,) | EEF delta + pince |
Effectuer un fine-tuning d'un SmolVLA de base dessus :
lerobot-train \
--policy.path=lerobot/smolvla_base \
--policy.repo_id=${HF_USER}/smolvla_robocerebra \
--policy.empty_cameras=1 \
--dataset.repo_id=lerobot/robocerebra_unified \
'--rename_map={"observation.images.image": "observation.images.camera1", "observation.images.wrist_image": "observation.images.camera2"}' \
--env.type=libero \
--env.task=libero_10 \
'--env.camera_name_mapping={"agentview_image": "image", "robot0_eye_in_hand_image": "wrist_image"}' \
--output_dir=outputs/smolvla_robocerebrasmolvla_base s’attend à des caméras nommées camera1–camera3, les drapeaux de caméras sont donc les mêmes que dans la commande Évaluation : --rename_map associe les caméras du jeu de données à ces noms, et --env.camera_name_mapping attribue aux caméras LIBERO les noms du jeu de données pour l’évaluation pendant l’entraînement.
Reproduire des résultats publiés
Le point de contrôle publié lerobot/smolvla_robocerebra a été entraîné sur lerobot/robocerebra_unified et évalué avec la commande de la section Évaluation. CI exécute la même commande avec --eval.n_episodes=1 comme test de fumée sur chaque PR touchant le benchmark.