LeRobot documentation

Meta-World

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
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 是一个开源的模拟基准,用于连续控制机器人操作中的多任务和元强化学习。它整合了 50 个使用日常物品和通用桌面 Sawyer 机械臂的多样化操作任务,提供了一个标准化的测试平台,用于评估算法能否学习多种不同的任务,并快速泛化到新任务上。

MetaWorld MT10 demo

可用任务

Meta-World 提供了 50 个任务,并按难度分组。在 LeRobot 中,您可以针对单个任务、难度分组或完整的 MT50 套件进行评估:

组CLI 名称任务描述
简单easy28具有简单动态和单步目标的任务
中等medium11需要多步推理的任务
困难hard6涉及复杂接触和精确操作的
非常困难very_hard5该测试套件中最具挑战性的任务
MT50(全部)逗号分隔的列表50全部 50 项任务——最具挑战性的多任务设置

您也可以直接传入单个任务名称(例如,assembly-v3、dial-turn-v3)。

我们在 HF Hub 上提供了一个适用于 LeRobot 的 Meta-World MT50 数据集:lerobot/metaworld_mt50。该数据集针对 MT50 评估进行了格式化,该评估使用全部 50 个任务,并采用固定的物体/目标位置以及 one-hot 任务向量以确保一致性。

安装

按照 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 上运行——它被设计得具有挑战性,比少数几个狭窄的任务更能揭示优势/劣势。

训练

示例训练命令

在 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