Meta-World 是一个开源 simulation benchmark,用于连续控制机器人操作中的多任务与元强化学习。它包含 50 个多样化的操作任务,使用日常物体和通用的桌面 Sawyer 机械臂,为测试算法能否学习多种不同任务并快速泛化到新任务提供了一个标准化实验平台。

Meta-World 提供 50 个任务,并按难度分组。在 LeRobot 中,你可以针对单个任务、难度分组或完整的 MT50 套件进行评估:
| 分组 | CLI 名称 | 任务 | 说明 |
|---|---|---|---|
| 简单 | easy | 28 | 具有简单动力学和单步目标的任务 |
| 中等 | medium | 11 | 需要多步 inference 的任务 |
| 困难 | hard | 6 | 具有复杂接触和精细操作的任务 |
| 极难 | very_hard | 5 | 套件中最具挑战性的任务 |
| MT50(全部) | 逗号分隔的列表 | 50 | 全部 50 个任务——最具挑战性的多任务设置 |
你也可以直接传入单个任务名称(例如 assembly-v3、dial-turn-v3)。
我们在 HF Hub 上提供了适用于 LeRobot 的 Meta-World MT50 dataset:lerobot/metaworld_mt50。该 dataset 为 MT50 评估格式化,使用全部 50 个任务并固定物体/目标位置,采用 one-hot 任务向量以保持一致。
按照 LeRobot 安装说明操作后:
pip install -e ".[metaworld]"如果在运行 Meta-World 环境时遇到 `AssertionError: ['human', 'rgb_array', 'depth_array']`,这是 Meta-World 与你的 Gymnasium 版本不匹配所致。可通过以下方式修复:pip install "gymnasium==1.1.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 设置每个任务运行的 episode 数。observation:
observation.image——单相机视图(corner2),480x480 HWC uint8observation.state——4 维本体感知 state(end-effector 位置 + gripper)action:
Box(-1, 1, shape=(4,)) 中的连续控制——3D end-effector 增量 + 1D gripper为获得可复现的 benchmark 结果,请使用每个任务 10 个 episode。对于完整的 MT50 套件,这总计为 500 个 episode。如果你关注泛化能力,请在完整的 MT50 上运行——它故意设计得很有挑战性,比少数几个狭窄任务更能揭示优势与不足。
在 Meta-World 任务的一个子集上训练 SmolVLA policy:
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=1000info["is_success"] 键,使你的成功率指标与 benchmark 保持一致。batch_size、steps 和 env_eval_freq 以匹配你的计算预算。