LeRobot documentation

Meta-World

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Meta-World

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

Meta-Worldは、連続制御ロボティクス操作におけるマルチタスクおよびメタ強化学習のためのオープンソースシミュレーションベンチマークです。日常用品と共通のテーブルトップSawyerアームを用いた50種類の多様な操作タスクをバンドルしており、アルゴリズムが多数の異なるタスクを学習し、新しいタスクに素早く一般化できるかをテストするための標準的なプレイグラウンドを提供します。

MetaWorld MT10 demo

利用可能なタスク

Meta-Worldは、難易度グループに分類された50のタスクを提供しています。LeRobotでは、個々のタスク、難易度グループ、または完全なMT50スイートで評価できます。

グループCLI名タスク説明
かんたんeasy28単純なダイナミクスと単一ステップの目標を持つタスク
中程度medium11複数ステップの推論を必要とするタスク
難しいhard6複雑な接触と精密な操作を伴うタスク
非常に難しいvery_hard5スイートの中で最も困難なタスク
MT50(すべて)カンマ区切りリスト50最も挑戦的なマルチタスク設定である全50タスク

個々のタスク名を直接渡すこともできます(例: assembly-v3、dial-turn-v3)。

HF Hub に Meta-World MT50 用の LeRobot 対応データセット lerobot/metaworld_mt50 を提供しています。このデータセットは、固定されたオブジェクト/ゴール位置と one-hot タスクベクトルを用いた、全 50 タスクを含む MT50 評価用にフォーマットされています。

インストール

LeRobotのインストール手順に従った後:

pip install -e ".[metaworld]"
If you encounter an `AssertionError: ['human', 'rgb_array', 'depth_array']` when running Meta-World environments, this is a mismatch between Meta-World and your Gymnasium version. Reinstall the Gymnasium version LeRobot supports (Meta-World `3.0.0` works with it):
pip install "gymnasium>=1.1.1,<2.0.0"

評価

デフォルトのローカル評価

中程度の難易度の分割で評価します(カバレッジと計算コストのバランスが良好です):

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=metaworld \
  --env.task=medium \
  --eval.batch_size=1 \
  --eval.n_episodes=10

単一タスク評価

特定のタスクで評価する:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=metaworld \
  --env.task=assembly-v3 \
  --eval.batch_size=1 \
  --eval.n_episodes=10

マルチタスク評価

複数のタスクまたは難易度グループにわたって評価します:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=metaworld \
  --env.task=assembly-v3,dial-turn-v3,handle-press-side-v3 \
  --eval.batch_size=1 \
  --eval.n_episodes=10
  • --env.task は、明示的なタスクのリスト(カンマ区切り)または難易度グループ(例: easy、medium、hard、very_hard)を受け取ります。
  • --eval.batch_size は、並列で実行される環境の数を制御します。
  • --eval.n_episodes は、タスクごとに実行するエピソード数を設定します。

ポリシーの入力と出力

観察結果:

  • observation.image — 単一カメラの視点(corner2)、480x480 HWC uint8
  • observation.state — 4次元のプロプライオセプティブ状態(エンドエフェクタの位置+グリッパー)

アクション:

  • Box(-1, 1, shape=(4,)) における連続制御 — 3Dのエンドエフェクターのデルタ + 1Dのグリップ

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

再現可能なベンチマークのために、タスクごとに10エピソードを使用してください。MT50スイート全体では、これにより合計500エピソードになります。汎化性能を重視する場合は、MT50全体で実行してください。MT50は意図的に難易度が高く、一部の狭いタスクよりも強みと弱みをより明確に示すためです。

トレーニング

トレーニングコマンの例

Meta-WorldタスクのサブセットでSmolVLAポリシーを学習します:

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/metaworld-test \
  --policy.load_vlm_weights=true \
  --dataset.repo_id=lerobot/metaworld_mt50 \
  --env.type=metaworld \
  --env.task=assembly-v3,dial-turn-v3,handle-press-side-v3 \
  --output_dir=./outputs/ \
  --steps=100000 \
  --batch_size=4 \
  --eval.batch_size=1 \
  --eval.n_episodes=1 \
  --env_eval_freq=1000

実践的なヒント

  • one-hotタスク条件付けをマルチタスク学習(MT10/MT50の慣例)に使用し、ポリシーに明示的なタスクコンテキストを持たせます。
  • 後処理やログ出力を作成する際は、データセットのタスク説明とinfo["is_success"]キーを確認し、成功指標がベンチマークと整合するようしてください。
  • 計算リソースの予算に合わせて、batch_size、steps、env_eval_freqを調整してください。
Update on GitHub