七万引大佬巨作!格里菲斯大学、清华大学、腾讯联手推出机器人纠错新范式
机器人别等大模型:Spotter 让具身模型主导、VLM 只负责纠错(开源,本地 Qwen 可跑)
前言简介
- 问题:VLA 等具身模型抓空、提前松手、拿错物体之后,往往不会停下来检查,而是照着"成功轨迹"继续执行,比如手里没东西还去执行放置。
- 思路:具身模型一直主导执行;一个轻量的本地筛查器并行看着;只有确认出错时才唤醒 VLM 来反思和修复,修完马上把控制权交还。
- 效果:用本地 Qwen、不看任何特权信息,RoboCasa 上 π0.5 从 64.3 提升到 68.4,Cosmos Policy 从 67.9 提升到 71.7。成功回合只比具身模型自己跑多 13~16 秒,比同样用 Qwen 的 VLM 主导方案少花约 70% 的时间。
- 开源:代码、示例库和 RoboTwin 2.0 的完整运行记录都已公开,一块卡就能起本地 Qwen。

- 论文:arXiv 2609.36808
- 代码:github.com/zqc3117/Spotter
- 项目主页与演示视频:zqc3117.github.io/Spotter
- 作者单位:Griffith University、清华大学交叉信息研究院、MainCode、腾讯、复旦大学、同济大学(通讯作者:同济大学院长申恒涛,潘世瑞 Shirui Pan)
一、具身模型出错之后,为什么修不好?
LLM 会"发现错了再改",但具身模型基本做不到。一个典型场景:机械臂从左侧去抓青柠,抓空了,却继续把空夹爪移到盘子上方,执行放置动作。
我们在论文里专门试了几种"让具身模型自己补救"的办法:
- 在失败处暂停,让具身模型重新采样动作;
- 直接用语言告诉它哪里做错了;
- Best-of-N:采样多个候选动作,挑一个最好的。
结果都很少真正修好。原因有两层:
- 没见过失败:机器人策略主要从成功演示里学习,失败之后的状态几乎不在训练分布里。
- 看得太局部:它只看当前画面,不知道"刚才发生了什么",也就判断不出自己已经抓空了。
所以,纠错这件事需要一个能看历史、会推理的角色来做,自然就想到 VLM。
二、VLM 主导的范式卡在哪?
常见做法是 VLM 主导(VLM-led):VLM 规划一段,具身模型执行一段,VLM 再决定下一步,具身模型被当成工具调用。推理能力确实强,但 VLM 一直位于控制的关键路径上,绕不开一个两难:多久问一次 VLM?
- 段切得短(动 1 厘米问一次):VLM 调用频繁,延迟很高,简单任务也慢。
- 段切得长(跑一大段再问):执行中途出现偏差没法及时发现,可能已经造成不可逆的后果。
时间上的代价有多大?有同期工作统计过,前沿大模型在 RoboDojo 上当 agent、一步步控制机器人,一个回合平均要 9~25 分钟(任务不同,看量级就好)。现在具身榜单上成功率卷到了 70%,却很少有人报"跑一个回合要多久"。
三、Spotter:具身模型主导,VLM 只纠错
人是怎么做的?手先动,眼睛用余光看着,不对劲了再局部修正。Spotter 就是把这个分工搬到机器人上:具身模型是主驾驶,VLM 是并行运行的异常监督员。
3.1 三个角色并行
| 角色 | 由谁担任 | 职责 |
|---|---|---|
| 具身模型(System 1) | π0.5、Cosmos Policy 等,冻结不训练 | 一直执行动作块,不等任何人 |
| 筛查器(screener) | 本地 Qwen | 每段动作都看一眼,宁可多报,不能漏报 |
| 判别与修复(judge) | Qwen 或 GPT | 连续两次报警才出手,结合历史判断是否真的出错,确认后负责修复 |
3.2 修复流程:确认、修复、验证、交还
- 确认:筛查器连续两次标记可疑,就把带历史的视频片段和任务信息发给 judge。judge 判断确实出错后,暂停执行。
- 修复:judge 分析失败原因,用移动、抬起、开合夹爪等运动原语生成一个短修复计划,并写明"修好之后应该看到什么"。
- 验证(反思):执行修复后检查结果,没达到预期就换一种修法。
- 交还:修好之后,控制权交还给原来的具身模型,它继续往下执行。
还是用抓青柠的例子:Spotter 结合历史画面判断出青柠根本没被拿起来,先让机械臂回到失败前的位置,再根据偏差把夹爪往右调,重新抓取。
3.3 为什么快
多数时候具身模型自己就能做好,机器人从不停下来等 VLM,这些回合里 VLM 几乎不插手。在成功回合里,judge 平均被叫出来不到一次。
和 VLM 主导方案的区别可以概括成一张表:
| VLM 主导 | Spotter | |
|---|---|---|
| 谁驱动执行 | VLM 规划每一步 | 具身模型主导 |
| 什么时候调用 VLM | 每一步之前 | 只在确认出错时 |
| 具身模型是否等 VLM | 每一步都等 | 只在修复期间 |
| 是否需要特权信息 | 通常需要(如任务是否成功) | 不需要 |
| 能否用本地 Qwen | 只有借助特权信息才行 | 可以 |
四、实验结果
4.1 本地 Qwen、无特权信息(RoboCasa,1,200 个回合)
| 具身模型 | 具身模型自己跑 | VLM 主导(Qwen) | Spotter(Qwen) |
|---|---|---|---|
| Cosmos Policy | 67.9 | 65.2 | 71.7 |
| π0.5 | 64.3 | 60.5 | 68.4 |
同样用本地 Qwen、不给特权信息时,VLM 主导方案甚至比具身模型自己跑还差,Spotter 仍然能带来提升。
4.2 换成更强的 VLM
- RoboCasa:用 GPT 做 judge 时,Spotter 让 Cosmos Policy 和 π0.5 最多分别提升 5.6 和 7.5 个百分点。加上一个示例(1-shot)后,即使 Harness VLA 能看到任务是否成功,Spotter 仍然超过它。
- RoboTwin 2.0(Hard):π0.5 从 47.2% 提升到 51.2%(Qwen,1-shot)和 57.0%(GPT,1-shot)。
- 真机(Franka Research 3):成功率从 53% 提升到 83%。

4.3 耗时(成功回合)
| 方案 | 每个成功回合耗时 |
|---|---|
| 🐢 VLM 主导(本地 Qwen) | 146~164 秒 |
| 🐇 具身模型自己跑 | 23~34 秒 |
| ⚡ Spotter | 比具身模型自己跑多 13~16 秒,一个回合不到 1 分钟 |
同样用本地 Qwen,Spotter 比 VLM 主导方案少花约七成时间。
注意统计口径:以上耗时只统计成功回合。失败回合里 Spotter 会多次介入,耗时会明显更长。看其他工作的监督耗时时,也建议先确认统计的是成功任务还是全部任务,这两种口径差别很大。
五、比较公平吗?
- 步数:多数任务官方上限约 500 步。具身模型和 Spotter 都用 1.8 倍上限,也就是 900 步左右。VLM 主导方案在这个上限下会超时,所以给了它 3000~5000 步,远多于 Spotter。
- 信息:我们复现的 VLM 主导方案沿用了 Harness VLA 原代码的逻辑,VLM 能直接看到任务有没有成功。一知道"还没成功",它就会换个做法再试,相当于多了一个很强的提示信号。拿掉这个信号后,Qwen 版的 VLM 主导方案比具身模型自己跑还差。Spotter 里的 VLM 看不到任何特权信息,只能凭画面自己判断。
六、和其他纠错工作的区别:修复接口不同
把几篇机器人纠错工作放在一起看,差别主要在"修复接口"上:
| 工作 | 修复接口 |
|---|---|
| RoboFAC | 看执行视频,给出纠正语句,让 VLA 继续做 |
| FailSafe | 直接输出可执行的动作增量 ΔA,调整位置、旋转和夹爪 |
| Harness VLA | Agent 调用工具,重新定位、就位,再调用 VLA |
| Spotter | 策略持续执行,旁路筛查异常,VLM 按需接管修复,修完交还 |
比较这类方法时,建议把几个条件一起摆出来:修复工具能做什么、监督器能看到什么(有没有特权信息)、每次补救花多少时间。另外,语言反馈能不能奏效,也取决于策略有没有学过理解纠错指令。
七、上手:本地就能跑
7.1 部署为什么省心
- 不调闭源 API:Qwen3.8-27B(FP8)用 vLLM 在本地起服务,数据不出机器,也不按 token 计费。
- 不训练、不改你的策略:自己的具身模型只要实现
GET /health和POST /v1/infer两个接口,就能挂上 Spotter。 - 不靠特权信息:大模型看不到"任务成功没有",只凭画面判断。
- 卡少也能跑:Qwen 副本数按手上的卡数开,一张卡也行。
7.2 RoboCasa:3 行命令跑一个回合
环境配置见仓库 README,配好后:
bash spotter.sh judge --gpus 0 # 起本地 Qwen(筛查器 + judge)
bash spotter.sh policy pi05 --gpu 1 # 起具身模型 π0.5
bash spotter.sh run pi05 # 跑一个回合,对照组和 Spotter 用同一个场景
7.3 RoboTwin 2.0:一条命令跑完整评测
bash robotwin_eval.sh --judge-gpus 0,1,2,3 --policy-gpu 4 --lanes 12
它会自动拉起 Qwen 和 pi0.5 策略服务,在同一批 500 个回合上先跑 Spotter、再跑纯策略对照组,最后输出汇总。我们用当前版本的代码重跑的结果是:pi0.5 自己跑 240/500(48.0%),Spotter-Qwen 267/500(53.4%)。每个回合的画面、judge 提示词和回复都上传到了 ModelScope:50 个任务 × 10 个回合。由于每次运行都有随机性,这组数字和论文略有差异。
八、小结
Spotter 提供了一种很实用的 System 1 / System 2 分工:快速的具身策略负责熟练动作,慢速的大模型负责监控、解释和少量纠错。它不需要重新训练原来的机器人策略,也不让昂贵的 VLM 一直挡在实时控制链路上。因此一个本地开源的 Qwen 就够用,普通实验室也能复现。
最后留个问题:具身榜单会不会有一天加上"耗时"这一列?你更在意成功率还是速度?欢迎在评论区聊聊。
- 论文:https://arxiv.org/abs/2609.36808
- 代码与示例库:https://github.com/zqc3117/Spotter(觉得有用的话欢迎点个 ⭐)
- 项目主页与演示:https://zqc3117.github.io/Spotter/
- 联系方式:对代码或论文有任何问题,欢迎发邮件到 zhaoqc25@mails.tsinghua.edu.cn
@article{li2026spotter,
title = {Spotter: Let the Embodied Model Lead, and the VLM Reflect for It},
author = {Li, Long and Zhao, Qichao and Yang, Yue and Xu, Fan and Wang, Zhe and Liew, Alan Wee-Chung and Qu, Chao and Shen, Heng Tao and Pan, Shirui},
journal = {arXiv preprint arXiv:2609.36808},
year = {2026}
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)