LeRobot documentation
RoboCerebra
RoboCerebra
RoboCerebra é um benchmark de manipulação de longo horizonte que avalia raciocínio de alto nível, planejamento e memória em VLAs. Os episódios encadeiam múltiplos sub-objetivos com instruções intermediárias fundamentadas em linguagem, construídos sobre a pilha de simuladores do LIBERO (MuJoCo + robosuite, Franka Panda 7-DOF).
- Artigo: RoboCerebra: A Large-scale Benchmark for Long-horizon Robotic Manipulation Evaluation
- Site do projeto: robocerebra.github.io
- Conjunto de dados:
lerobot/robocerebra_unified— LeRobot v3.0, 6.660 episódios / 571.116 quadros a 20 fps, 1.728 subtarefas fundamentadas em linguagem. - Política pré-treinada:
lerobot/smolvla_robocerebra
Tarefas disponíveis
RoboCerebra reutiliza o simulador do LIBERO, portanto a avaliação é executada contra a suíte de longo horizonte libero_10 do LIBERO:
| Suite | Nome da CLI | Tarefas | Descrição |
|---|---|---|---|
| LIBERO-10 | libero_10 | 10 | Tarefas de cozinha/sala de estar de longo prazo encadeando 3–6 sub-objetivos |
Cada episódio da RoboCerebra no conjunto de dados é segmentado em múltiplas sub-tarefas com instruções em linguagem natural, que o conjunto de dados unificado expõe como sinais de supervisão independentes.
Instalação
O RoboCerebra se baseia no LIBERO, portanto, o extra libero é tudo o que você precisa:
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)
Avaliação
As execuções de avaliação do RoboCerebra são realizadas contra a suíte libero_10 do LIBERO, utilizando a nomenclatura de câmeras do RoboCerebra (image + wrist_image) e um slot de câmera vazio adicional, para que uma política treinada com três visões receba o layout 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=1Episódios de avaliação recomendados
10 episódios por tarefa na suíte libero_10 (100 no total) para benchmarking reproduzível. Corresponde ao protocolo utilizado no paper RoboCerebra.
Entradas e saídas da política
Observações:
observation.state— estado proprioceptivo de 8 dimensões (7 posições de juntas + garra)observation.images.image— visão em terceira pessoa, 256×256 HWC uint8observation.images.wrist_image— visão da câmera montada no pulso, 256×256 HWC uint8
Ações:
- Controle contínuo em
Box(-1, 1, shape=(7,))— delta do efector final (6D) + garra (1D)
Treinamento
O conjunto de dados unificado em lerobot/robocerebra_unified expõe dois fluxos RGB e anotações de subtarefas fundamentadas em linguagem:
| Recurso | Formato | Descrição |
|---|---|---|
observation.images.image | (256, 256, 3) | Perspectiva de terceira pessoa |
observation.images.wrist_image | (256, 256, 3) | Câmera de pulso |
observation.state | (8,) | Posição conjunta + garra |
action | (7,) | EEF delta + garra |
Ajuste fino de um SmolVLA base nele:
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âmeras nomeadas camera1–camera3, portanto as flags de câmera são as mesmas do comando Evaluation: --rename_map mapeia as câmeras do dataset para esses nomes, e --env.camera_name_mapping dá às câmeras do LIBERO os nomes do dataset para avaliação durante o treinamento.
Reproduzindo resultados publicados
O checkpoint liberado lerobot/smolvla_robocerebra foi treinado em lerobot/robocerebra_unified e avaliado com o comando da seção Avaliação. O CI executa o mesmo comando com --eval.n_episodes=1 como um teste de fumaça em cada PR que altera o benchmark.