机器人评测榜单基础教程(理解阶段)
定位:只讲理解,不做取舍。
读完能说清:一个榜单在测什么能力、跑在什么条件下、成绩单怎么看、它没测什么。
接不接、怎么接,是理解清楚之后下一步才谈的事。
一页速览 · 先记住这 5 条
- 榜单 = 评测协议:任务 × 引擎 × 本体 × 指标,先看清这四个再看分数。
- 先从 LIBERO 看起:它是例子最多的一个,适合当作理解榜单的样板。
- 本体或引擎不同,分数不能直接比:先理解各自在测什么。
- 每个榜单都有覆盖不到的地方:看懂“它没测什么”和看懂“它测什么”同样重要。
- humanoid.guide 是资料整理不是榜:没有统一任务和判分,先当资料集用。
阅读指南:
- 第 1–2 章建立直觉:为什么需要榜单、榜单的四个零件。
- 第 3 章看透一个例子:以 LIBERO 为例,看一个榜单长什么样。
- 第 4–6 章扩展视野:逐个理解主流榜单 + 本体分类 + 通用拆解模板。
1 · 为什么需要榜单
没有榜单时,机器人评测是「各说各话」:A 团队说抓取成功了,B 团队说叠衣成功了,但任务难度、初始条件、成功判定全不一样,结论无法比较。榜单的作用就是把这些变量冻结成一份公开协议,让不同模型站在同一条起跑线上。
- 可比:同一任务集、同一成功判定,不同模型直接比分数。
- 可复现:环境版本锁定 + 固定种子,别人能重跑出你的成绩。
- 可指导:失败可归因:是感知、规划还是控制的问题。
给工程师的类比:榜单 ≈ 驾考科目二。库位尺寸、压线规则、扣分标准全部写死。它不等于真实路况,但先看懂“考什么、怎么判”,后面才知道分数说明了什么。仿真榜单就是 VLA 模型的科目二,真机是上路——两科考的东西不一样。
2 · 榜单的四个零件
任意榜单拆开都是四样东西。读榜单时按这个顺序检查,5 分钟就能看懂它在测什么。
- 任务集(Task Suite):考什么动作、多少道题、难度怎么分档。例如 LIBERO 按 Spatial / Object / Goal / Long 等套件组织,RoboCasa 按三档划分并标注子任务。
- 仿真引擎与机器人(Engine × Robot):MuJoCo、PyBullet、Isaac Sim、SAPIEN 跑出来的分数各有各的条件;Franka 和其他臂的运动学也不一样。这是新手最容易踩的坑:条件不同就直接比分数。
- 指标与基线(Metric × Baseline):成功率、链长(CALVIN 的长程连续完成步数)、MMRV / Pearson(SimplerEnv 的仿真-真机相关性)。没有基线的榜单等于没有刻度。
- 评测 harness:从「一次跑一个」到「一次适配、批量回归」的工程脚手架。harness 干的事:把 N 个模型 × M 个任务的手工联调变成标准接入,之后批量出成绩。
速查口诀:拿到一个榜单先问四句——考哪几道题?跑在哪个引擎 + 哪台臂上?指标和基线是什么?成绩是怎么跑出来的?四句答全了,就是看懂了。
3 · 以 LIBERO 为例:先看透一个完整的榜单
LIBERO 是例子最多、结构最清楚的一个,适合当作理解榜单的样板。这一章只做一件事:把它的任务、条件、指标、跑法拆开看一遍。先看懂,不用跑。
- Spatial · 考空间泛化:同一技能、不同摆位。杯子从桌角换到桌中央还能抓吗?这是理解“泛化”最直观的一组题。
- Object · 考物体泛化:同一动作、不同物体。训练用红杯,测试换蓝碗。测的是视觉-语义泛化,也是 VLA 模型最容易露馅的地方。
- Goal · 考目标泛化:同一场景、不同指令。「把杯子放左边」vs「放右边」。测语言条件 grounding,指令变了动作是否跟着变。
- Long · 考长程组合:多步任务串起来:开抽屉 → 拿物体 → 关抽屉。配合 CALVIN 的链长思路一起理解:完成几步才算数。
它的跑法长什么样(先看懂,不用跑;下面是示意,真实命令见仓库 scripts/eval_vla.py 的 vla-eval serve/run/merge --config xxx.yaml 形式,直接复制执行会失败):
# 1 发起评测服务 2 批量执行 3 合并成绩 —— 成绩单带种子号
serve --suite libero_spatial --episodes 50 --seed 7
run --suite libero_object --episodes 50 --seed 7
merge --suites spatial,object,goal,long --report report.json
注意:LIBERO-Pro 扰动是鲁棒性加试题,不是必考题。仓库 configs/benchmarks/ 下有 6 个 pro 配置:libero_pro_env.yaml(perturbation: env 环境)/ libero_pro_lan.yaml(lan 语言)/ libero_pro_object.yaml(object 物体)/ libero_pro_swap.yaml(swap 交换)/ libero_pro_task.yaml(task 任务)/ libero_pro_mug.yaml(suite: libero_spatial_with_mug 杯子专项)。理解时先分清标准四套件和扰动加试是两层,别混在一起看分数。
4 · 主流榜单逐个看:每个在测什么
这一章的目标是理解:每个榜单在测什么能力、跑在什么条件下、成绩该怎么看。每个卡片两段:理解要点 + 它没测什么。先看懂,不做取舍判断。
| 榜单 | 一句话 | 理解重点 |
|---|---|---|
| LIBERO | 通用操作 · 例子最多 | 四套件测哪几种泛化 |
| ManiSkill | 精密装配 | 容差与预筛是怎么回事 |
| RoboCasa-365 | 难度分档范本 | 三档难度与子任务标注 |
| RoboDojo | 仿真+真机对照 | 任务覆盖面怎么列 |
| BEHAVIOR-1K | 判分与效率 | 谓词判分 + 效率分思想 |
| CALVIN / SimplerEnv / RoboBench / RoboTwin / harness | 各有侧重 | 链长 / 相关性 / 脑力单列 / 双臂 / 跑榜工具,见下卡 |
LIBERO — 通用桌面操作(MuJoCo · 130 题 · 50 回合 × 固定种子)
- 考什么题:5 大套件共 130 个任务:Spatial / Object / Goal 各 10 题(测空间 / 物体 / 目标泛化),LIBERO-90(90 题多样性),LIBERO-Long(10 题长程)。
- 引擎 × 机器人:MuJoCo 桌面操作。10 个 libero_*.yaml 配置即任务定义,这是理解它的任务组织方式的入口。注意:本仓库
configs/benchmarks/下当前只有 spatial / object / goal 及 6 个 pro 扰动 yaml,long / 90 的配置待补——照教程找 long 配置找不到是正常的。 - 指标 × 基线:成功率为主;鲁棒性加试用 LIBERO-Pro 扰动(env 环境 / lan 语言 / object 物体 / swap 交换 / task 任务 + mug 杯子专项,对应 6 个
libero_pro_*.yaml)。社区例子最丰富,适合对照着看。 - 跑法长什么样:serve → run → merge 三步:50 episodes × seed 起步(下面是示意,真实命令见
scripts/eval_vla.py)。成绩单带种子号——这是看懂它成绩单格式的关键。 - 理解要点:四套件分别测哪种泛化 + 扰动加试和标准题是两层。
- 它没测什么:精密装配容差、柔性体、节拍——见第 7 章例子。
ManiSkill — 接触丰富型任务(SAPIEN · PegInsertion 2–3 mm · 预筛机制)
- 考什么题:以 PegInsertion(2–3 mm 间隙插孔)为代表的接触丰富型任务,另有 PickCube、StackCube 等基础题。考的是容差内的对准与力控,不是粗抓。
- 引擎 × 机器人:SAPIEN 系。代码资产注意 BY-NC 许可限制——这是理解它的许可边界。
- 指标 × 基线:成功率 + 装配容差 / 对准偏差。特点是预筛机制:先过容差门槛再谈成功率,避免「大力出奇迹」刷分。
- 理解要点:预筛门槛思想 + PegInsertion 容差设计:容差是怎么定的、门槛怎么卡。
- 它没测什么:通用桌面泛化、长程组合——和 LIBERO 互补。
RoboCasa-365 — 生成式厨房任务(365 任务 · 三档难度 · 子任务标注)
- 考什么题:厨房场景 365 个生成式任务(65 原子 + 300 复合,其中 220 要导航、145 原地;2500 套场景),天然带组合性。Xiaomi 57.4 这类报道成绩即出自此系——注意 57.4 是三档平均(Atomic 原子 80.2 / Seen 复合 57.1 / Unseen 未见 32.1),别误读成单任务成功率。
- 机制亮点:三档难度划分 + subtask 子任务标注:每道大题拆成可单独判分的子步,失败可归因到哪一步。
- 指标:整题成功率 + 子任务完成率双披露,长程题不只看最终成败。
- 理解要点:三档难度 + 子任务标注:长题是怎么拆、失败怎么归因。
- 它没测什么:精密容差、节拍——和 ManiSkill、效率分互补。
RoboDojo — 仿真与真机任务对照(42 仿真 + 18 真机:3 种双臂 × 各 6 题)
- 考什么题:42 个仿真 + 18 个真机任务,少见地把两边对齐列出;任务面覆盖拧、叠等动作,适合对照着看“仿真题和真机题长什么样”。
- 条件与边界:Isaac Sim 系,注意非商业许可边界——理解它的许可条件即可。
- 理解要点:「仿真题从真机动作倒推」的选题思路:对照表是怎么列的。
- 它没测什么:精密容差判分、长程链长——和 ManiSkill、CALVIN 互补。
BEHAVIOR-1K — 大量日常活动(OmniGibson · 1000 活动 · BDDL)
- 考什么题:1000 个日常活动(做饭、整理、清洁),以量大、组合复杂著称。先理解“题量大、组合复杂”长什么样。
- 机制亮点:BDDL 谓词式成功判定(机器可判,非人工目测)+ 效率分(同样成功,用时 / 步数少的分高)。重点看“判分怎么写、效率怎么算”。
- 理解要点:谓词判分写法 + 效率分:成功判定怎么做到机器可判、同样成功怎么比快慢。
- 它没测什么:精密容差、仿真-真机相关性——和 ManiSkill、SimplerEnv 互补。
CALVIN — 长程连续任务(Franka + PyBullet · 34 任务 · 链长 5)
- 考什么题:4 个桌面环境 A/B/C/D,34 个任务,长程测试按 5 步链(chain length)计分:连续做对几步,而不只看单题。
- 条件:Franka + PyBullet——看懂它的条件,和 LIBERO(MuJoCo)对照着理解“条件不同、分数不能直接比”。
- 理解要点:「链长」计分:长程任务怎么算分,结合 LIBERO-Long 一起看。
- 它没测什么:物体/空间泛化分档、精密容差——和 LIBERO、ManiSkill 互补。
SimplerEnv — 仿真与真机排名对照(MMRV ≈ 0.056 · Pearson ≈ 0.924)
- 它解决什么问题:回答「仿真分高,真机就行吗」:用 MMRV(约 0.056 越低越好)/ Pearson(约 0.924 越高越好)度量仿真排名与真机排名的一致性。注意它测的不是模型绝对强弱,而是一致性。
- 条件:SAPIEN 系任务——先理解“相关性验证”这个概念本身。
- 理解要点:相关性验证:MMRV / Pearson 分别是什么意思、仿真排名和真机排名怎么对照。
- 它没测什么:模型本身的任务能力——它是“验榜单的榜单”,和其他榜不在一层。
RoboBench — 只动脑不动臂(6092 道 QA · 纯问答)
- 考什么题:6092 道问答:给定场景问规划、常识、空间推理,模型不动臂、只答题。纯认知,不涉及执行。
- 怎么理解它:类比笔试和科目二的关系:先看规划答得对不对,再看手能不能做到。它和其他榜不在同一层,对比时别放一起排。
- 理解要点:「先考脑、再动手」的分层:认知题和操作题是两类考试。
- 它没测什么:任何动手执行——抓取、装配、长程一概不考。
RoboTwin 2.0 — 双臂任务(SAPIEN 系 · 14 自由度双臂 · 50 题跨 5 本体 · Easy/Hard)
- 考什么题:14 自由度双臂 50 题(跨 5 种双臂本体),分 Easy / Hard 两档。双臂协同是它的招牌:单臂榜单考不出的配合动作在这里考。
- 条件:双臂构型——和单臂榜单的题天然不在一个池子里,对比时先看构型。
- 理解要点:Easy/Hard 分档写法 + 双臂协同题长什么样。
- 它没测什么:单臂通用操作、认知问答——和 LIBERO、RoboBench 互补。
评测 harness — 跑榜单的脚手架(一次适配 · 批量回归)
- 它是什么:不是榜单,是跑榜单的脚手架:把 N 个模型 × M 个任务的手工联调变成标准接入,之后批量回归出成绩。
- 怎么理解它:榜单是考卷,harness 是考场:成绩单格式(模型 × 引擎 × 任务)、环境版本、种子号,这些规矩由它落地。
- 理解要点:考卷和考场是两回事:读榜单时分清“题怎么出”和“分怎么跑出来”。
- 它没测什么:它自己不出题、不排名——只负责把题跑标准。
humanoid.guide — 资料整理,不是榜(只有整理 · 无统一规则 · 三无)
- 为什么单列:新人最易误会:它是人形机器人资料整理——无统一任务、无统一判分、无统一基线(三无)。先理解“它为什么不是榜”,以后看到类似整理就不会误当排名引用。
- 理解要点:三无判断法:缺任务、缺判分、缺基线,任缺其一就不是榜。
- 它没测什么:什么都没测——它只整理资料,不出题不判分。
一句话记忆:「先看懂每个在测什么,再看它没测什么」。条件(引擎、本体)不同,分数不能直接比——这是第 5 章要展开讲的。
5 · 本体三类型:榜单是怎么分类的
声明:A / B / C 三类型是本教程自定的讲法,不是业界公认划分。业界没有“G1/G2/G3”说法,时间上也切不开(CALVIN 2021、ManiSkill 2021 比 LIBERO 2023 还早)。划分依据只有一条:榜单与本体的绑定程度。
新手最常问——「是不是每个榜单都只测某台臂?」——答案是:按本体绑定程度分三类,每类的“分数怎么看”不一样。读懂这一章,你就知道为什么条件不同、分数不能直接比。
5.1 是不是每个榜单都只针对某个本体?
不是。按本体绑定程度分三类:
| 类型 | 绑定方式 | 代表榜单 | 分数怎么看 |
|---|---|---|---|
| A · 绑死单本体 | 单臂 + 单引擎写死 | LIBERO / CALVIN / SimplerEnv / RoboCasa(Franka 单臂) | 条件相同才能比,条件不同只对照着理解 |
| B · 一榜多本体 | 同一套任务协议,适配多种臂型 | ManiSkill(20+ 构型)、RoboTwin(5 种双臂)、BEHAVIOR(移动臂)、RoboDojo(真机 3 双臂) | 同榜内对照看,出榜即换条件 |
| C · 离线不管本体 | 只考规划不动臂 | RoboBench(6092 道 QA,纯问答) | 不排名,和操作榜不在一层 |
A 类为什么绑死 Franka?早期的主流榜单(LIBERO / CALVIN)把 Franka + MuJoCo / PyBullet 写进协议:运动学、夹爪、相机视角全冻结。这样不同模型的分数才有意义。但代价是——换一台臂,分数就换了条件,对照看可以,直接排名不行。
B 类怎么做到一榜多本体?ManiSkill、RoboTwin 这类把「任务定义」和「机器人驱动」解耦:同一道 PegInsertion 题,可以分别跑在 20 多种臂型上。中间靠一层适配器把任务指令翻译成各臂能执行的动作。但注意:同榜内不同臂的分数也只是对照着看,不能直接排高低——臂不一样,题的难度就变了。
记住一条:本体或引擎任一不同,分数就不能直接比。先看条件,再看分数——这是读任何榜单成绩单的第一步。
5.2 三条思路线:榜单在回答什么新问题
不按时间分代,只看各榜单分别回答了什么新问题(出现时间有先后,但无代际切分):
- 定科目(CALVIN 链长 / LIBERO 成功率四套件 / ManiSkill PegInsertion 2–3 mm / BEHAVIOR BDDL 谓词 + 效率分):回答考什么、怎么判。
- 问真假(SimplerEnv MMRV / Pearson 相关性 / RoboCasa 三档 + 子任务标注):回答仿真成绩信几分、长题怎么拆。
- 分科考(RoboTwin 双臂 Easy/Hard / RoboBench 6092 QA 大脑单列 / harness 一次适配批量回归 / RoboDojo 42 仿真 + 18 真机对照 / humanoid.guide 三无反面):回答谁先考、分哪科、在哪考。
一句话记忆:「A 类绑死看条件、B 类多本体看协议、C 类离线不动臂」。理解了三类,再看第 7 章“榜单没测什么”的例子,就知道每个榜单的边界在哪。
6 · 通用拆解模板:看懂任意一个榜单
前面拆了 10 个榜单,手法都是同一套。以后你看到任何新榜单,照这张表填空就行——填完就是“看懂了”,填不出来就知道还缺哪块。
- 一句话:它测什么。一句话说清这个榜单考的是哪类能力。写不出来就还没读懂。
- 四零件拆解。任务集、引擎 × 机器人、指标 × 基线、harness,各一段,缺哪个就标哪个缺。
- 七段式深读。背景 → 任务 → 指标 → 基线 → 复现成本 → 有意思的机制 → 它没测什么。最后一段最重要:边界在哪。
- 理解验收。合上笔记能回答四个问题:测什么能力、在什么条件下测、成绩单怎么看、它没测什么。答全了就是看懂了。
填空示例 · 以 ManiSkill 为例:测什么:接触丰富型精密装配。任务:PegInsertion 2–3 mm 间隙。条件:SAPIEN 系。指标:成功率 + 装配容差,带预筛门槛。没测什么:通用桌面泛化、长程组合。
7 · 例子:榜单没测什么
以 LIBERO 为例:它考的是通用桌面操作,但有三类能力它覆盖不到。看懂“没测什么”,和看懂“测什么”同样重要——这也是第 4 章每个卡片都写“它没测什么”的原因。
| 例子 | 哪类能力 | LIBERO 为什么没覆盖 |
|---|---|---|
| 拧螺丝 | 精密装配:2–3 mm 容差对准与力控 | LIBERO 是粗抓泛化,没有容差门槛——对照 ManiSkill 的 PegInsertion 看 |
| 叠衣 | 柔性体:布料折叠的形状保持 | LIBERO 全是刚体操作——对照 RoboDojo 的任务覆盖看 |
| 上下料 | 节拍与稳定:连续取放的节拍一致性 | LIBERO 只看成功不看快慢——对照 BEHAVIOR 的效率分看 |
看懂边界的方法:难度怎么分档(对照 RoboCasa 三档)、子任务怎么拆(对照 RoboCasa 标注)、成功判定是不是机器可判(对照 BEHAVIOR 谓词)。
8 · 成绩单怎么看:四条提醒
仿真成绩最容易「看起来很好」。读任何成绩单时,先看这四条弄清它的含义。
- 条件署名:每个分数都要写清「模型 × 引擎 × 任务」。条件不同,分数不能直接比。
- 环境版本 + 种子号:看成绩单有没有写环境版本和种子号。只跑 1 个种子的数,波动可能很大。例外:本仓库
configs/benchmarks/libero_spatial_sawyer.yaml里episodes_per_task: 1,那是跨本体探针(只看能不能跑通),不是正式成绩。 - 训练和验收分开:调参时看的数和验收时报的数是不是同一批。混在一起的数先打个问号。
- 分层看:先看“能不能跑通”,再看“正式成绩”,小样本探针类的数只供参考。三层别混在一起读。
覆盖面例子:5 × 13 × 5 热力图(so101-mujoco sweep 格子,非 LIBERO 通用格子——指 scripts/eval_mujoco_policy.py 的 --sweep: 5 reach × 13 azim × 5 trials = 325 episodes)。5 类技能 × 13 种场景 × 5 种扰动 = 325 格。先理解“格子是怎么定义的”,再看“哪些格子通过率高、哪些是 0%”——格子没定义清楚,数出来也看不懂。
9 · 学完之后做什么
三个理解练习:
- 照第 6 章模板,给任意一个榜单填一页拆解笔记。
- 找一份 LIBERO 成绩单,指出它的条件署名(模型 × 引擎 × 任务)和种子号。
- 挑第 7 章的一个例子(比如拧螺丝),说清它考的能力和 LIBERO 的边界差在哪。
阅读顺序:先有直觉(第 1–2 章)→ 看透一个例子(第 3 章)→ 逐个理解主流榜单(第 4 章)→ 理解分类(第 5 章)→ 学会拆解任意榜单(第 6 章)。理解清楚了,接不接、怎么接,是下一步才谈的事。