ManiSkillFormer:把任务写成几何要求,机器人零演示也能操作
让机器人操作一件新物体,为什么「零演示」听上去像个死结?
桌面上立着一个橙色交通锥,指令只有一句话:把它拿起来,放进旁边的盒子里。这台机器人从没在训练数据里见过交通锥,没有人替它示范过动作,也没有人为它准备过任何一条轨迹数据。它伸出手,抓住锥身,把它稳稳放进了盒子。
这一幕不是仿真渲染,背后是一篇 2026 年 9 月挂到 arXiv 的论文 ManiSkillFormer(arXiv:2609.16331)。评估在真实在售的 Galaxea R1-Lite 双臂移动机器人上完成,8 类物体、30 个实例的 pick-and-place,平均成功率 88.24% ManiSkillFormer。一句话限定:论文名字里的 ManiSkill 与同名仿真基准没有关系,评估全程在这台真机上,后文所有成功率数字都出自真实硬件。

图注:Galaxea R1-Lite 官方整机照。五个标签分别指向头部立体相机、腕部相机、6 自由度机械臂与 1 自由度夹爪、3 自由度躯干和 3 个全向转向轮。这是真实硬件产品照,不是仿真渲染。OpenGalaxea 项目页
为什么这件事值得惊讶?因为在这个领域,两条最主流的路都在「零演示」面前走得艰难。
第一条路是端到端 VLA 模型(Vision-Language-Action,视觉-语言-动作)。RT-2、OpenVLA、π₀ 这类模型把感知、任务推理和控制全部揉进一个 learned mapping,好处是通用,代价是数据饥渴。论文里作为对照组给出的 π₀,在每类物体喂 50 条人类演示之后,在同样的 pick-and-place 任务上只拿到 48.53%。更麻烦的是黑盒问题:模型为什么选这个抓点、失败到底出在感知还是规划,几乎无法定位。 VLA
第二条路是零演示强化学习。不给示范只给奖励,让机器人自己探索。听起来省事,但稀疏奖励下的探索在真实物理世界里近乎无望。拧瓶盖这类任务,奖励函数往往只能在最后一刻给出反馈,机器人要在毫秒级连续动作空间里盲试,而现实中每一次试错都要付出真实的机器磨损和时间。
稀疏奖励真正狠的地方在于信用分配。拧瓶盖的动作由上千次关节微调组成,奖励只在瓶盖真正拧开的瞬间出现一次,机器人没法知道是哪几次动作做对了。仿真里可以开几百份并行环境加速撞墙,真实机器人却只能一次一次地花物理时间,撞一次就要校准检修一次。零演示强化学习在仿真器里都算难题,搬到真机上更是近乎不可行。
再叠上「组合式」三个字,难度又翻一档。家务机器人面对的不是一个任务,而是技能的无穷组合:拿起、倒出、拧开、折叠,今天的任务是倒水,明天是把杯子放进洗碗机。端到端方案要为每个新组合重新收集数据,而组合数涨得比数据快。组合式操作真正考验的是一种叫组合泛化的能力:新的测试任务由训练中见过的子技能以没见过的顺序拼出来,机器人必须真能拼接,而不是背答案。
所以真正的问题是:在「零演示 + 组合式」这套组合拳面前,除了堆数据和黑盒之外,还有没有第三条路?
几何契约:把「抓哪、怎么放、允许什么朝向」写成一份能检查的几何要求
ManiSkillFormer 的回答朴素得近乎反直觉:不去问机器人怎么学,而去问任务本身。把「倒水」翻译成几何语言,它无非是几条要求:抓杯身而不是杯沿,把杯口倾斜到某个角度,松开。这些要求可以写成一张清单,交给感知模块一一核对,交给控制器逐条执行。
这张清单,论文叫它 geometric contract(几何契约)。一份契约由两半组成。
前半是 semantic keypoints(语义关键点),一组带标签的点。每个点有语义标签(比如 grasp_left)和一段自由文本描述(比如「瓶身一侧暴露良好的中心点」)。后半是 surface normal constraint(表面法向约束),规定交互区域允许的法向角度范围,比如相对竖直轴 30 度到 60 度。upright(竖直)和 horizontal(水平)是常用简写,none 表示不约束。
感知模块吃的是多视角观测。论文平台提供两路 RGB-D 和两路 RGB 共四路相机,模块接受任意一个含深度或至少两个视角的子集,深度或双目视角是还原 3D 的前提。契约里的关键点在语义上定义,和具体相机视角无关,视角差异由后续的坐标统一来消化。
契约不是空穴来风,它精确地承载着任务上下文。论文给的例子是 Pour(cup)(倒水)。单独看 Grasp(抓取)这个动作,抓杯沿和抓杯壁都说得通,但这条元技能的后半段是 Rotate(倾斜倒出)。一旦抓在杯沿,杯子倾斜时就会和周围发生碰撞。所以适配阶段生成契约时,agent 把法向约束写成 horizontal,要求杯壁两侧两个对抗抓点。任务的一个细节,就这样变成了感知模块必须遵守的几何要求 ManiSkillFormer。

图注:Agentic SkillGraph 三阶段流水线。Offline 阶段人类专家定义可复用的技能结构与契约模板(绿色),Adaptation 阶段两个 LLM agent 针对每个「技能-物体」对生成几何契约与运动模板(紫色),Online 阶段感知模块把契约要求的几何在场景中落地,再参数化运动模板交给机器人执行。ManiSkillFormer Figure 2
把契约想成一份验收单,对应关系严丝合缝。人类在 Offline 阶段准备的,是验收单的空白模板,声明一份契约该有哪几类条目(关键点、法向范围),条目内容留空,不绑定任何具体物体。LLM 在 Adaptation 阶段把它填成针对「某个技能 + 某个物体」的具体验收单,抓哪里写清关键点的语义标签和自由文本描述,允许什么朝向写清法向范围。Online 阶段,感知模块拿着验收单照单找点,只有法向落在允许范围内的候选点才算通过验收。配套的 motion template(运动模板)就是验收单背面的操作步骤。整条链路里没有任何一个环节依赖「见过一次示范」。
运动模板本身也是一份结构化文档,不是一句笼统的「倒水」。以 Grasp 为例,模板按接触状态的变化切成 pre-grasp、grasp、post-grasp、retract 几个语义阶段,每个阶段标注离物体的距离档位(close、medium、far)和到达容差(precise、moderate、loose)。验收单写明找什么,模板写明怎么动、动到多精确,两半合起来才是一份完整的「技能-物体」规格。
关键点当接口这个想法本身不新。2019 年的 kPAM 已经论证过:用语义 3D 关键点而不是 6 自由度位姿作为类别级操作的接口,一套描述可以泛化到同一类的所有实例,鞋架任务成功率超过 97% kPAM。关键点接口相对位姿接口的根本优势就在这里:对类内形状差异天然鲁棒。杯子和大马克杯的位姿差得很远,但「杯底中心」这个关键点在两者身上都定义得清清楚楚,位置估计也不依赖某件物体的尺寸。但 kPAM 的 cost 和 constraint 是人工写死的,把杯底关键点钉到目标点、让杯轴对齐竖直方向,这类约束要人一条一条写。动作是一次性的刚体变换,算完就执行,没有反馈。给关键点做标注同样费人力,当年是人工在 3D 重建上标了 117 个场景,总耗时不到四小时。ManiSkillFormer 把这些人工环节全部交给 LLM 按任务现写,这是它真正往前走的一步。
不过这里有一个必须较真的疑点:契约说到底是一段 LLM 写的文字,它凭什么就能让一台没学过这个任务的机器人动起来?
没有演示数据,契约凭什么把任务做出来?
先把一个容易误解的点说清楚:ManiSkillFormer 根本不训练强化学习策略。没有奖励函数,没有试错学习,契约也不是什么 reward shaping。论文说的「零演示」,指的是对一个新物体做适配时,不需要 π₀ 那种每类 50 条的人类演示轨迹,也不需要逐物体 fine-tune。线下的 schema 定义是人类写一次性的模板,不是机器人演示 ManiSkillFormer。
那任务到底是怎么做出来的?看在线环节的四步循环:
每一步都查得到依据。感知模块先按契约预测每个标签下的 2D 关键点,这一步不针对任务微调。再用 LFM 模型把 2D 点提升到 3D,估计局部法向。只有法向落在契约允许范围内的候选点才保留,最后用标定好的相机内外参和机器人正运动学,把所有点统一到机器人基座坐标系。这一步之所以绕不开,是因为相机装在机器人的头和腕上,视角随本体运动而变,不统一坐标系就没法指挥机械臂。每步执行前还有前/后置检查,几何不满足就停下,而不是硬抓。整条链路没有任何梯度下降,难点被搬到了两个地方:感知变成照单找点,控制变成填参数。契约把「任务上下文」直接注入了感知,这是它最巧妙的地方。
任务切换靠的是 SkillGraph 技能库。原子技能按接触模式划分:MoveTo 无接触,Grasp 建立接触,Rotate 维持接触,Release 终止接触,Press 在接触下交互。元技能是原子技能的固定序列,Pour 等于 Grasp → MoveTo → Rotate,Unscrew 等于 Grasp → Rotate,Fold 等于 Press → Grasp → MoveTo。收到一条指令后,规则解析器把它切成有序的「技能-物体」调用序列,每个位置各自生成契约和运动模板。同一个技能换一个新物体,适配阶段就为这个新组合重新生成一份契约,新物体不需要任何演示数据,这正是零样本迁移的机制。每个技能模板本身按接触状态的变化或机器人与物体相对位姿的变化切成几个语义阶段,阶段切分就是执行逻辑的骨架。任务条件化(task conditioning)的实现方式就这么朴素,不学任何视觉-动作映射,一切都是语义空间里的检索和实例化。
同一件物体在不同技能下要盯的点完全不同,这种「挑点」正是契约想表达的:

图注:同一物体在不同技能下的关键点差异。左栏是 3D 感知模块输出的可视化,右栏是 SkillGraph 在真实机器人上的执行画面,论文图注原文写明 real skill execution。同一件物体,pick 要盯壶身,unscrew 要盯壶盖,不同技能向感知索取不同的语义关键点。ManiSkillFormer Figure 4
把 ManiSkillFormer 放进更宽的谱系里看会更清楚。同样是用 LLM 接机器人。2022 年的 SayCan 让 LLM 在预建技能池里打分、选出既有用又可执行的技能,它的组合评分把大模型觉得有用的技能和值函数觉得可行的技能相乘取最大,先保证每一步都下得去手 SayCan。同年 Code as Policies 用少样本提示让大模型直接写出带反馈循环和空间几何运算的 Python 策略。而 ManiSkillFormer 让 LLM 写结构化的几何契约加运动模板。三家答案不同,产物的形态也不同,一个是选技能,一个是写代码,一个是填验收单。
88.24% 是怎么打出来的:三组基准、两个消融、一个反例
论文在真实硬件上跑三组基准,全部和自家的两个消融以及外部基线对比。核心数字集中在下面这张表里 ManiSkillFormer。
| 基准 | 任务设置 | ManiSkillFormer | 关键对照 |
|---|---|---|---|
| Q1 pick-and-place | 8 类物体 × 30 实例 × 每组 17 次 | 平均 88.24% | π₀ 48.53(每类 50 条演示)、MOKA 52.21、A1 77.94、A2 80.88 |
| Q2 functional | 4 个功能任务 × 每组 17 次 | 平均 75.00% | 比 A2 在 unscrew、pour 上各高 23.53 个百分点 |
| Q3 long-horizon | 3 个长时序任务 × 每组 10 次 | 6/10、8/10、5/10 | 11 步的 Task C 仍完成 5/10 |
Q1 最扎眼的一行是 π₀:每类物体喂了 50 条人类演示的端到端模型只有 48.53%,比零演示的 88.24% 低了将近 40 个百分点。细看分组,8 类物体里 ManiSkillFormer 有 7 类拿到最高或并列最高:Bowl 满分,Cone 94.12,最弱的 Lego 结构件也有 70.59。同为 LLM 驱动的视觉标注提示方法,MOKA 拿到 52.21%,说明关键点思路本身有谱,但离完整方法还差得远。Q3 的完成率落在 50% 到 80% 之间,论文摘要里的这个区间来自三个长时序任务的生存曲线,任务步骤越多掉得越早,不过 11 步的 Task C 依然保住了 5/10。
消融 A1 回答「契约到底带来了什么」。A1 把任务描述直接丢给感知模块、不提供契约,结果在 Cone 上比完整方法掉了 29.41 个百分点。差距不在感知更强,而在契约约束了在哪里抓:

图注:A1(无契约)与 ManiSkillFormer 在 Cone、Bottle、Pen 上定位关键点的对比。没有契约时,感知返回的是边缘、角点这类普通 landmark。有契约时,它按语义要求找到手柄中心这类真正好抓的位置。ManiSkillFormer Figure 3
消融 A2 回答「为什么要联合生成」。A2 对每个原子技能独立生成契约,结果在 unscrew 和 pour 上各低 23.53 个百分点、fold 低 11.77。元技能内部的几何选择必须彼此协调:拧的动作决定了抓取姿态,拆开生成就会顾此失彼。另一个信号藏在任务内部:四个功能任务里 Press button 最简单,ManiSkillFormer、MOKA 与 A2 都停在 76.47%(A1 略低为 70.59),契约在这里几乎没有发挥空间,差距全在 unscrew、pour、fold 这类需要姿态协调的任务上。Q3 测的是长时序,Pick and Place 六件物品、叠三个锥、还有一条 11 步的复合指令,每一段都要成功、整条才算数,所以完成率天然比单步任务低,这五个数字也因此更有分量。
但契约不是免费的,唯一的反例在 Tools 组。工具类物体里有一把内六角扳手,契约坚持抓手柄中心,可手柄又滑又相对夹爪过重,反而抓不稳掉落。A1 没有这个约束,随手抓到两个更稳的角点,94.12% 反超完整方法的 82.35%。约束写过头会反噬,这是全篇最诚实的一个数字。
这套显式接口还有实打实的 LLM 调用成本:离线生成一份契约约 1,608 个 token,一份运动模板约 2,525 个 token,每次「技能-物体」请求都要花这笔钱。有意思的是钱主要花在离线那一次:在线关键点预测带契约约 1,518 个 token,不带契约约 1,429,只差约 90 个。契约把贵的事放在了适配阶段的一次性生成上,运行时几乎不添负担。把这些数字合起来读:零演示、不训练策略、只靠契约加模板的组合式系统,在真机上做到了 88.24%,比需要每类 50 条演示的端到端模型高了将近 40 个百分点,同时整体高于自家两个消融。契约是有净收益的。同一时间窗里还有一条并行的几何泛化路线:DemoMimic 用一条人类演示加接触几何奖励,在 16 个物体、4 个任务上用灵巧手做到 71% DemoMimic。它的做法是先把一条人类演示重定向到机器人,再用接触对齐、持续接触两类结构化的接触奖励让策略在局部接触几何上泛化。一条走零演示契约,一条走单演示接触几何,2026 年的几何泛化有两套解法,而不是一套。
显式接口值不值:从 kPAM 到行为树,这条路的边界在哪?
把这一串工作摆在一起,神经符号血脉的轮廓就出来了。
| 工作 | 年份 | 产出的接口形态 |
|---|---|---|
| kPAM | 2019 | 人工写死的关键点 cost/constraint,无 LLM |
| SayCan | 2022 | 在预建技能池里给技能打分、选可执行的 |
| Code as Policies | 2022 | 直接写可编译的 Python 策略代码 |
| Contract-Grounded BT | 2026 | 行为树加 MCP 技能库契约 |
| ManiSkillFormer | 2026 | 几何契约加运动模板 |
共同点是把「想让机器人会什么」写成显式、可检查、可复用的接口,再让 LLM 来填。差别在产物形态,从数字到代码到行为树再到几何契约,一个比一个结构化。两个邻居各说一句。kPAM 2.0 在 2021 年给关键点补上朝向并引入闭环反馈,把接口从开环 pick-and-place 推到插入等接触丰富任务 kPAM 2.0。2026 年 7 月的 Contract-Grounded BT 把契约定义成技能库、行为树算子、根模板的三元组,经 MCP 服务暴露给编码 agent 去合成行为树 Contract-BT。思想和 ManiSkillFormer 同源,产物形态完全不同。

图注:Code as Policies 的核心范式。经由少样本提示,代码型大模型把自然语言指令翻译成机器人策略代码,代码负责处理感知输出、参数化控制原语、递归补齐未定义的函数,随后直接编译执行。和 ManiSkillFormer 的「LLM 写几何契约」对照,是同类思想下的不同产物。CaP Figure 1
决定这条路值不值,要看论文自己交代的四条边界。第一,技能词典是预定义的,新技能不会凭空冒出来。第二,不做环境碰撞避免,场景里不能出现契约没算到的障碍物。第三,只有平夹爪,没有灵巧手。第四,没有柔顺控制,接触力学全靠模板。任何一条被戳中,比如家里满地杂物、要拧不规则瓶盖,这套系统就撑不住。论文自己也在下一步列表里写了补法:带碰撞感知的运动规划、更丰富的控制策略、自动发现技能抽象,以及接入更强的多模态感知。边界是当前的,不是永恒的。
所以它是一个选型判断,不是一个终局。数据贵、要求可解释、任务可枚举时,契约路线把成本从数据搬到了 LLM token 上。数据便宜、任务开放时,端到端 VLA 仍然占优。它没有终结端到端,就像验收单没有终结学徒制。更准确地说,两条路的差别不在谁更聪明,而在你手里有什么。有数据,端到端把一切交给学习。要解释,契约把每步决策摊在桌面上,抓哪里、为什么,都能查。ManiSkillFormer 证明的是一种资源置换:用一点 LLM token,换掉成百上千条人类演示。
机器人操作从来不是缺学会一切的办法,缺的是把「想让机器人做什么」说清楚的办法。ManiSkillFormer 证明,把话说清楚这件事本身,也能撑起一台真实机器人上 88.24% 的成功率。
想深入可以读原文:ManiSkillFormer: Demonstration-Free Compositional Manipulation via Task-Conditioned Geometric Contracts — arXiv:2609.16331
参考文献
- ManiSkillFormer(本文主线论文)— https://arxiv.org/abs/2609.16331
- Galaxea Open-World Dataset and G0 Dual-System VLA Model — https://arxiv.org/abs/2509.00576
- Galaxea R1 Lite Hardware Introduction(官方硬件文档)— https://docs.galaxea-ai.com/Guide/R1Lite/hardware_introduction/R1Lite_Hardware_Introduction
- GalaxeaManipSim(GitHub 仓库)— https://github.com/OpenGalaxea/GalaxeaManipSim
- kPAM: KeyPoint Affordances for Category-Level Robotic Manipulation — https://arxiv.org/abs/1903.06684
- kPAM 2.0: Feedback Control for Category-Level Robotic Manipulation — https://arxiv.org/abs/2102.06279
- Do As I Can, Not As I Say: Grounding Language in Robotic Affordances — https://arxiv.org/abs/2204.01691
- Code as Policies: Language Model Programs for Embodied Control — https://arxiv.org/abs/2209.07753
- One Demonstration, Many Objects: Generalizing Manipulation via Local Contact Geometry — https://arxiv.org/abs/2609.01938
- Contract-Grounded Behavior Tree Synthesis via Coding Agents — https://arxiv.org/abs/2607.12220