字号:

机器人评测榜单基础教程(理解阶段)

定位:只讲理解,不做取舍。
读完能说清:一个榜单在测什么能力、跑在什么条件下、成绩单怎么看、它没测什么。
接不接、怎么接,是理解清楚之后下一步才谈的事。

一页速览 · 先记住这 5 条

  1. 榜单 = 评测协议:任务 × 引擎 × 本体 × 指标,先看清这四个再看分数。
  2. 先从 LIBERO 看起:它是例子最多的一个,适合当作理解榜单的样板。
  3. 本体或引擎不同,分数不能直接比:先理解各自在测什么。
  4. 每个榜单都有覆盖不到的地方:看懂“它没测什么”和看懂“它测什么”同样重要。
  5. humanoid.guide 是资料整理不是榜:没有统一任务和判分,先当资料集用。

阅读指南:


1 · 为什么需要榜单

没有榜单时,机器人评测是「各说各话」:A 团队说抓取成功了,B 团队说叠衣成功了,但任务难度、初始条件、成功判定全不一样,结论无法比较。榜单的作用就是把这些变量冻结成一份公开协议,让不同模型站在同一条起跑线上。

给工程师的类比:榜单 ≈ 驾考科目二。库位尺寸、压线规则、扣分标准全部写死。它不等于真实路况,但先看懂“考什么、怎么判”,后面才知道分数说明了什么。仿真榜单就是 VLA 模型的科目二,真机是上路——两科考的东西不一样。


2 · 榜单的四个零件

任意榜单拆开都是四样东西。读榜单时按这个顺序检查,5 分钟就能看懂它在测什么。

  1. 任务集(Task Suite):考什么动作、多少道题、难度怎么分档。例如 LIBERO 按 Spatial / Object / Goal / Long 等套件组织,RoboCasa 按三档划分并标注子任务。
  2. 仿真引擎与机器人(Engine × Robot):MuJoCo、PyBullet、Isaac Sim、SAPIEN 跑出来的分数各有各的条件;Franka 和其他臂的运动学也不一样。这是新手最容易踩的坑:条件不同就直接比分数。
  3. 指标与基线(Metric × Baseline):成功率、链长(CALVIN 的长程连续完成步数)、MMRV / Pearson(SimplerEnv 的仿真-真机相关性)。没有基线的榜单等于没有刻度。
  4. 评测 harness:从「一次跑一个」到「一次适配、批量回归」的工程脚手架。harness 干的事:把 N 个模型 × M 个任务的手工联调变成标准接入,之后批量出成绩。

速查口诀:拿到一个榜单先问四句——考哪几道题?跑在哪个引擎 + 哪台臂上?指标和基线是什么?成绩是怎么跑出来的?四句答全了,就是看懂了。


3 · 以 LIBERO 为例:先看透一个完整的榜单

LIBERO 是例子最多、结构最清楚的一个,适合当作理解榜单的样板。这一章只做一件事:把它的任务、条件、指标、跑法拆开看一遍。先看懂,不用跑。

它的跑法长什么样(先看懂,不用跑;下面是示意,真实命令见仓库 scripts/eval_vla.pyvla-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 回合 × 固定种子)

ManiSkill — 接触丰富型任务(SAPIEN · PegInsertion 2–3 mm · 预筛机制)

RoboCasa-365 — 生成式厨房任务(365 任务 · 三档难度 · 子任务标注)

RoboDojo — 仿真与真机任务对照(42 仿真 + 18 真机:3 种双臂 × 各 6 题)

BEHAVIOR-1K — 大量日常活动(OmniGibson · 1000 活动 · BDDL)

CALVIN — 长程连续任务(Franka + PyBullet · 34 任务 · 链长 5)

SimplerEnv — 仿真与真机排名对照(MMRV ≈ 0.056 · Pearson ≈ 0.924)

RoboBench — 只动脑不动臂(6092 道 QA · 纯问答)

RoboTwin 2.0 — 双臂任务(SAPIEN 系 · 14 自由度双臂 · 50 题跨 5 本体 · Easy/Hard)

评测 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 三条思路线:榜单在回答什么新问题

不按时间分代,只看各榜单分别回答了什么新问题(出现时间有先后,但无代际切分):

一句话记忆:「A 类绑死看条件、B 类多本体看协议、C 类离线不动臂」。理解了三类,再看第 7 章“榜单没测什么”的例子,就知道每个榜单的边界在哪。


6 · 通用拆解模板:看懂任意一个榜单

前面拆了 10 个榜单,手法都是同一套。以后你看到任何新榜单,照这张表填空就行——填完就是“看懂了”,填不出来就知道还缺哪块。

  1. 一句话:它测什么。一句话说清这个榜单考的是哪类能力。写不出来就还没读懂。
  2. 四零件拆解。任务集、引擎 × 机器人、指标 × 基线、harness,各一段,缺哪个就标哪个缺。
  3. 七段式深读。背景 → 任务 → 指标 → 基线 → 复现成本 → 有意思的机制 → 它没测什么。最后一段最重要:边界在哪。
  4. 理解验收。合上笔记能回答四个问题:测什么能力、在什么条件下测、成绩单怎么看、它没测什么。答全了就是看懂了。

填空示例 · 以 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. 条件署名:每个分数都要写清「模型 × 引擎 × 任务」。条件不同,分数不能直接比。
  2. 环境版本 + 种子号:看成绩单有没有写环境版本和种子号。只跑 1 个种子的数,波动可能很大。例外:本仓库 configs/benchmarks/libero_spatial_sawyer.yamlepisodes_per_task: 1,那是跨本体探针(只看能不能跑通),不是正式成绩。
  3. 训练和验收分开:调参时看的数和验收时报的数是不是同一批。混在一起的数先打个问号。
  4. 分层看:先看“能不能跑通”,再看“正式成绩”,小样本探针类的数只供参考。三层别混在一起读。

覆盖面例子: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 · 学完之后做什么

三个理解练习:

  1. 照第 6 章模板,给任意一个榜单填一页拆解笔记。
  2. 找一份 LIBERO 成绩单,指出它的条件署名(模型 × 引擎 × 任务)和种子号。
  3. 挑第 7 章的一个例子(比如拧螺丝),说清它考的能力和 LIBERO 的边界差在哪。

阅读顺序:先有直觉(第 1–2 章)→ 看透一个例子(第 3 章)→ 逐个理解主流榜单(第 4 章)→ 理解分类(第 5 章)→ 学会拆解任意榜单(第 6 章)。理解清楚了,接不接、怎么接,是下一步才谈的事。