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.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

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:

SuiteNome da CLITarefasDescrição
LIBERO-10libero_1010Tarefas 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=1

Episó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 uint8
  • observation.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:

RecursoFormatoDescriçã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_robocerebra

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

Update on GitHub