LeRobot documentation

RoboCasa365

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboCasa365

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/robocasa.yaml --sim.task=--docker=true`, where `` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).

RoboCasa365は、日常のキッチンタスクにおける汎用ロボットの学習とベンチマークを行うための大規模シミュレーションフレームワークです。PandaOmron 12-DOFモバイルマニピュレーター(ホロノミックベース上のFrankaアーム)上で、2,500のキッチン環境、3,200以上のオブジェクトアセット、600時間以上の人間のデモデータとともに、365の多様なマニピュレーションタスクを提供します。

RoboCasa365 benchmark overview

利用可能なタスク

RoboCasa365 は、365 タスクを 2 つのファミリーと 3 つの上流ベンチマークグループに分類しています。LeRobot はこれらを --env.task ショートカットとして第一級に公開しています:

ファミリータスク説明
アトミック~65単一スキルタスク: ピック&プレイス、ドア/引き出しの操作、家電製品の制御
複合~30060以上のカテゴリにわたるマルチステップタスク: 料理、掃除、整理整頓など

アトミックタスクの例: CloseFridge、OpenDrawer、OpenCabinet、TurnOnMicrowave、TurnOffStove、NavigateKitchen、PickPlaceCounterToStove。

複合タスクカテゴリ: 焼き、茹で、抽出、刻み、テーブルの片付け、食品の解凍、食器洗い機のセット、紅茶の淹れ、食品の電子レンジ加熱、食器洗い、など。

--env.task は3つの形式を受け入れます:

  • 単一のタスク名(CloseFridge)
  • カンマ区切りのリスト(CloseFridge,OpenBlenderLid,PickPlaceCoffee)
  • ベンチマークグループのショートカット — atomic_seen、composite_seen、composite_unseen、pretrain50、pretrain100、pretrain200、pretrain300 — であり、アップストリームのタスクリストに自動展開され、データセットのsplit(targetまたはpretrain)を自動設定します。

インストール

RoboCasaとその依存関係であるrobosuiteはPyPIに公開されておらず、RoboCasa自身のsetup.pyはlerobot==0.3.3をハードコードしており、このリポジトリのlerobotと競合します。そのため、LeRobotはrobocasaエクストラを公開していません。2つのパッケージをeditableなクローンとして手動でインストールしてください(robocasaには--no-depsを付けて、シャドウされているlerobotのピン留めをスキップします):

# After following the standard LeRobot installation instructions.

git clone https://github.com/robocasa/robocasa.git ~/robocasa
git clone https://github.com/ARISE-Initiative/robosuite.git ~/robosuite
pip install -e ~/robocasa --no-deps
pip install -e ~/robosuite

# Robocasa's runtime deps (the ones its setup.py would have pulled, minus
# the bad lerobot pin).
pip install numpy numba scipy mujoco pygame Pillow opencv-python \
            pyyaml pynput tqdm termcolor imageio h5py lxml hidapi \
            tianshou gymnasium

python -m robocasa.scripts.setup_macros
# Lightweight assets (lightwheel object meshes + textures). Enough for
# the default env out of the box.
python -m robocasa.scripts.download_kitchen_assets \
  --type tex tex_generative fixtures_lw objs_lw
# Optional: full objaverse/aigen registries (~30GB) for richer object
# variety. Enable at eval time via --env.obj_registries (see below).
# python -m robocasa.scripts.download_kitchen_assets --type objs_objaverse
RoboCasa requires MuJoCo. Set the rendering backend before training or evaluation:
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

オブジェクトレジストリ

デフォルトでは、envはlightwheelレジストリ(--type objs_lwで提供されるもの)からオブジェクトのみをサンプリングします。これにより、objaverse / aigenパックがディスク上に存在しない場合のProbabilities contain NaNクラッシュを回避できます。フルアセットセットをダウンロードした場合は、実行時にフルレジストリを有効にしてください。

--env.obj_registries='[objaverse,lightwheel]'

評価

以下のすべての評価スニペットは、CI コマンドを反映しています(.github/workflows/benchmark_tests.yml を参照)。--rename_map 引数は、RoboCasa のネイティブなカメラキーを、公開されている smolvla_robocasa ポリシーが学習に使用した 3 カメラ(camera1 / camera2 / camera3)の入力レイアウトにマッピングします:robot0_agentview_left → camera1、robot0_agentview_right → camera2、robot0_eye_in_hand → camera3。この対応付けは、ポリシーの学習時のマッピングと一致する必要があります(チェックポイントの train_config.json 内の rename_map を参照)。3 つのビューはすべて同じ形状を共有しているため、2 つのカメラキーを入れ替えても黙って受け入れられます。

デフォルトでは、各タスクはRoboCasaによって登録されたロールアウトホライズンを使用します。--env.episode_length=<steps>を設定することで、選択したすべてのタスクに同じ明示的なホライズンを適用できます。

単一タスク評価(クイックな反復に推奨)

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

マルチタスク評価

カンマ区切りのタスクのリストを渡します:

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge,OpenCabinet,OpenDrawer,TurnOffStove \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

ベンチマークグループの評価

アップストリームのグループ全体を実行します(例:split=target を使用して、atomic_seen タスクの全18件):

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=atomic_seen \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

推奨される評価エピソード

再現可能なベンチマークのために、タスクごとに20エピソードを実行します。公開されている結果で使用されているプロトコルと一致しています。

ポリシーの入力と出力

観察(生のRoboCasaカメラ名はそのまま保持されます):

  • observation.state — 16次元のプロプライオセプティブ状態(ベース位置、ベース四元数、相対エンドエフェクタ位置、相対エンドエフェクタ四元数、グリップqpos)
  • observation.images.robot0_agentview_left — 左エージェントビュー、256×256 HWC uint8
  • observation.images.robot0_eye_in_hand — 手首カメラの視点、256×256 HWC uint8
  • observation.images.robot0_agentview_right — 右エージェントビュー、256×256 HWC uint8

アクション:

  • Box(-1, 1, shape=(12,)) における連続制御 — 基本モーション(4次元)+ 制御モード(1次元)+ エンドエフェクタ位置(3次元)+ エンドエフェクタ回転(3次元)+ グリッパー(1次元)。

トレーニング

単一タスクの例

すぐに使用できる単一タスクのデータセットがHubにあります: pepijn223/robocasa_CloseFridge。

CloseFridgeでSmolVLAベースをファインチューニングします:

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/smolvla_robocasa_CloseFridge \
  --policy.load_vlm_weights=true \
  --policy.push_to_hub=true \
  --dataset.repo_id=pepijn223/robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --output_dir=./outputs/smolvla_robocasa_CloseFridge \
  --steps=100000 \
  --batch_size=4 \
  --env_eval_freq=5000 \
  --eval.batch_size=1 \
  --eval.n_episodes=5 \
  --save_freq=10000

生成されたチェックポイントを評価します:

lerobot-eval \
  --policy.path=${HF_USER}/smolvla_robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20

公開された結果の再現

公開されたチェックポイント lerobot/smolvla_robocasa は、Evaluation セクションに記載のコマンドで評価されます。CI は、ベンチマークに変更を加えるすべての PR に対して、objaverse アセットパックを必要としないフィクスチャ中心のタスクを選択し、10 個の原子タスクのスモーク評価(各 1 エピソード)を実行します。

Update on GitHub