LeRobot documentation

RoboCerebra

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
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 es un benchmark de manipulación de largo horizonte que evalúa el razonamiento de alto nivel, la planificación y la memoria en VLAs. Los episodios encadenan múltiples subobjetivos con instrucciones intermedias basadas en lenguaje, construidos sobre la pila de simuladores de LIBERO (MuJoCo + robosuite, Franka Panda 7-DOF).

Tareas disponibles

RoboCerebra reutiliza el simulador de LIBERO, por lo que la evaluación se ejecuta contra la suite de largo horizonte libero_10 de LIBERO:

SuiteNombre de la CLITareasDescripción
LIBERO-10libero_1010Tareas de cocina/sala de estar de largo horizonte que encadenan de 3 a 6 subobjetivos

Cada episodio de RoboCerebra en el conjunto de datos está segmentado en múltiples subtareas con instrucciones en lenguaje natural, que el conjunto de datos unificado expone como señales de supervisión independientes.

Instalación

RoboCerebra se basa en LIBERO, por lo que el extra libero es todo lo que necesitas:

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)

Evaluación

RoboCerebra eval ejecuta contra el conjunto libero_10 de LIBERO con la nomenclatura de cámaras de RoboCerebra (image + wrist_image) y un hueco adicional de cámara vacía para que una política entrenada con tres vistas reciba el diseño de entrada esperado:

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

Episodios de evaluación recomendados

10 episodios por tarea en la suite libero_10 (100 en total) para un benchmarking reproducible. Coincide con el protocolo utilizado en el paper de RoboCerebra.

Entradas y salidas de la política

Observaciones:

  • observation.state — estado propioceptivo de 8 dimensiones (7 posiciones de articulaciones + pinza)
  • observation.images.image — vista en tercera persona, 256×256 HWC uint8
  • observation.images.wrist_image — vista de la cámara montada en la muñeca, 256×256 HWC uint8

Acciones:

  • Control continuo en Box(-1, 1, shape=(7,)) — delta del efector final (6D) + pinza (1D)

Entrenamiento

El conjunto de datos unificado en lerobot/robocerebra_unified expone dos flujos RGB y anotaciones de subtareas basadas en lenguaje:

CaracterísticaFormaDescripción
observation.images.image(256, 256, 3)Vista en tercera persona
observation.images.wrist_image(256, 256, 3)Cámara montada en la muñeca
observation.state(8,)Posición conjunta + pinza
action(7,)EEF delta + pinza

Ajusta un modelo base de SmolVLA sobre él:

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 espera cámaras denominadas camera1–camera3, por lo que las banderas de cámara son las mismas que en el comando Evaluation: --rename_map asigna las cámaras del conjunto de datos a esos nombres, y --env.camera_name_mapping asigna a las cámaras de LIBERO los nombres del conjunto de datos para la evaluación durante el entrenamiento.

Reproducción de resultados publicados

El checkpoint publicado lerobot/smolvla_robocerebra se entrenó con lerobot/robocerebra_unified y se evaluó con el comando de la sección Evaluation. CI ejecuta el mismo comando con --eval.n_episodes=1 como prueba de humo en cada PR que modifica el benchmark.

Update on GitHub