LeRobot documentation
RoboCerebra
RoboCerebra
RoboCerebraは、VLAにおける高次の推論、計画、および記憶を評価する長期操作ベンチマークです。LIBEROのシミュレータースタック(MuJoCo + robosuite、Franka Panda 7-DOF)を基盤として構築されており、エピソードでは言語に根ざした中間指示を伴う複数のサブゴールが連鎖します。
- 論文: RoboCerebra: A Large-scale Benchmark for Long-horizon Robotic Manipulation Evaluation
- プロジェクトウェブサイト: robocerebra.github.io
- Dataset:
lerobot/robocerebra_unified— LeRobot v3.0、20 fps で 6,660 エピソード / 571,116 フレーム、言語ベースのサブタスク 1,728 件。 - 事前学習済みポリシー:
lerobot/smolvla_robocerebra
利用可能なタスク
RoboCerebraはLIBEROのシミュレーターを再利用しているため、評価はLIBEROのlibero_10長期タスクスイートに対して実行されます:
| スイート | CLI名 | タスク | 説明 |
|---|---|---|---|
| LIBERO-10 | libero_10 | 10 | 3〜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は、LIBEROのlibero_10スイートに対して、RoboCerebraのカメラ命名規則(image + wrist_image)と、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— 三人称視点、256×256 HWC uint8observation.images.wrist_image— 手首に装着されたカメラの映像、256×256 HWC uint8
アクション:
Box(-1, 1, shape=(7,))における連続制御 — エンドエフェクターのデルタ(6次元)+ グリッパー(1次元)
トレーニング
lerobot/robocerebra_unified にある統合データセットは、2つのRGBストリームと、言語に基づいたサブタスクのアノテーションを公開しています:
| 機能 | 形状 | 説明 |
|---|---|---|
observation.images.image | (256, 256, 3) | 三人称視点 |
observation.images.wrist_image | (256, 256, 3) | 手首装着型カメラ |
observation.state | (8,) | Joint pos + gripper |
action | (7,) | EEFデルタ + グリッパー |
それに基づいてSmolVLAベースをファインチューニングします:
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 は、カメラ名が camera1〜camera3 であることを前提としています。そのため、カメラ関連のフラグは Evaluation コマンドと同じです。--rename_map はデータセットのカメラをこれらの名前にマッピングし、--env.camera_name_mapping は学習中の評価のために LIBERO のカメラにデータセット側の名前を付与します。
公開された結果の再現
公開されたチェックポイント lerobot/smolvla_robocerebra は lerobot/robocerebra_unified で学習され、評価 セクションのコマンドで評価されました。CI は、ベンチマークに関わるすべての PR に対して、スモークテストとして --eval.n_episodes=1 を付加した同じコマンドを実行します。