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 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).
- Artículo: RoboCerebra: A Large-scale Benchmark for Long-horizon Robotic Manipulation Evaluation
- Sitio web del proyecto: robocerebra.github.io
- Dataset:
lerobot/robocerebra_unified— LeRobot v3.0, 6,660 episodios / 571,116 fotogramas a 20 fps, 1,728 subtareas con base lingüística. - Política preentrenada:
lerobot/smolvla_robocerebra
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:
| Suite | Nombre de la CLI | Tareas | Descripción |
|---|---|---|---|
| LIBERO-10 | libero_10 | 10 | Tareas 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=1Episodios 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 uint8observation.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ística | Forma | Descripció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_robocerebrasmolvla_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.