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는 VLA에서 고급 추론, 계획, 기억을 평가하는 장기 조작 벤치마크입니다. 에피소드는 언어 기반의 중간 지시와 함께 여러 하위 목표를 연결하며, LIBERO의 시뮬레이터 스택(MuJoCo + robosuite, Franka Panda 7-DOF) 위에 구축되어 있습니다.

사용 가능한 작업

RoboCerebra는 LIBERO의 시뮬레이터를 재사용하므로, 평가는 LIBERO의 libero_10 장기 목표(long-horizon) 스위트에 대해 수행됩니다:

SuiteCLI 이름작업설명
LIBERO-10libero_10103~6개의 하위 목표를 연결하는 장기 지평의 주방/거실 작업

데이터셋의 각 RoboCerebra 에피소드는 자연어 지시문이 포함된 여러 하위 작업으로 세분화되며, 통합 데이터셋은 이를 독립적인 감독 신호로 노출합니다.

설치

RoboCerebra는 LIBERO에 기반하므로 libero extra만 있으면 됩니다:

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)

평가

RoboCerebra eval은 RoboCerebra의 카메라 명명 규칙(image + wrist_image)과 추가된 빈 카메라 슬롯을 사용하여 LIBERO의 libero_10 스위트에 대해 실행되며, 3개 뷰로 학습된 정책이 예상되는 입력 레이아웃을 받도록 합니다:

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

권장 평가 에피소드

libero_10 스위트에서 재현 가능한 벤치마킹을 위해 태스크당 10에피소드(총 100개)를 사용합니다. 이는 RoboCerebra 논문에서 사용된 프로토콜과 일치합니다.

정책 입력 및 출력

관찰 사항:

  • observation.state — 8차원 고유감각 상태 (7개 관절 위치 + 그리퍼)
  • observation.images.image — 3인칭 시점, 256×256 HWC uint8
  • observation.images.wrist_image — 손목에 장착된 카메라의 뷰, 256×256 HWC uint8

작업:

  • Box(-1, 1, shape=(7,))에서의 연속 제어 — 엔드 이펙터 델타(6D) + 그리퍼(1D)

학습

lerobot/robocerebra_unified의 통합 데이터셋은 두 개의 RGB 스트림과 언어 기반 서브태스크 어노테이션을 제공합니다:

기능Shape설명
observation.images.image(256, 256, 3)삼인칭 시점
observation.images.wrist_image(256, 256, 3)손목 장착형 카메라
observation.state(8,)관절 위치 + 그립퍼
action(7,)EEF 델타 + 그리퍼

이를 기반으로 SmolVLA 베이스를 Fine-tune합니다:

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는 camera1~camera3 이름의 카메라를 기대하므로, 카메라 플래그는 평가 명령과 동일합니다. --rename_map은 데이터셋의 카메라를 해당 이름으로 매핑하고, --env.camera_name_mapping은 학습 중 평가 시 LIBERO 카메라에 데이터셋의 이름을 부여합니다.

발표된 결과 재현

발행된 체크포인트 lerobot/smolvla_robocerebra는 lerobot/robocerebra_unified로 학습되었으며, 평가 섹션의 명령어로 평가되었습니다. CI는 벤치마크에 영향을 미치는 모든 PR에서 --eval.n_episodes=1을 사용하여 동일한 명령어를 스모크 테스트로 실행합니다.

Update on GitHub