LeRobot documentation

RoboCerebra

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

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 :

SuiteNom de la CLITâchesDescription
LIBERO-10libero_1010Tâ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 uint8
  • observation.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éFormeDescription
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_robocerebra

smolvla_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.

Update on GitHub