GaP 方法通俗讲解:让大语言模型给机器人画一张会执行的流程图
0. 用一个例子,30 秒看懂 GaP
假设我们要让机器人完成:
找到蓝黄色罐头,把它抓起来,再放进篮子。
传统固定程序可能会记住一个固定坐标:
去桌面左边 30 cm 的位置抓取。
但下一次罐头换了位置,程序就会抓空。
GaP 不死记坐标,而是让机器人按照一张流程图做事。这里会用到大语言模型(下文简称 LLM):
整套方法可以记成四步:
- 画流程:LLM 根据任务和技能库,生成机器人操作流程图。
- 试流程:在许多不同的仿真场景里完整试跑。
- 改流程:根据真实物理结果,找到失败步骤并修改。
- 跑流程:固定流程图,机器人根据实时观察长期执行。
可以把各部分想成:
| GaP 中的部分 | 生活化理解 |
|---|---|
| LLM | 流程设计师 |
| 技能库 | 工具箱 |
| 可执行图 | 操作手册 |
| 图执行器 | 严格照手册工作的执行者 |
| 仿真排练 | 正式上岗前的彩排 |
最重要的结论是:
GaP 不是一个新的机器人神经网络。它是一套“生成流程、检查流程、试跑流程、执行流程”的方法。
1. GaP 想解决什么问题
GaP 主要面向这种场景:
- 工作台、机器人和相机基本固定;
- 任务会重复很多次;
- 但物体的位置、朝向、大小或种类会变化。
论文把它叫作 Variational Automation(变化型自动化)。通俗地说,就是:
工位是熟悉的,但每次桌面上的具体情况不完全一样。
GaP 的思路不是让 LLM 直接控制电机,而是让它做更擅长的事情:
从已有能力中挑选合适工具,并把它们组织成一个完整流程。
真正负责看图像、算三维位置、规划轨迹和驱动机器人关节的,仍然是专门的视觉、几何、规划和控制模块。
2. 最核心的原理:图本身就是策略
在机器人领域,“策略”可以简单理解为:
当前看到这种情况时,下一步应该做什么。
GaP 把这个“做事方法”直接写成一张图。
这张图里只有四种东西:
| 图中的东西 | 它表示什么 |
|---|---|
| 步骤 | 做一件事,例如检测、抓取、移动 |
| 箭头 | 下一步去哪里 |
| 分支 | 根据结果选择不同路线 |
| 数据 | 上一步交给下一步的信息 |
例如,感知步骤不会只说“找到了”。它还会交出目标的位置、大小和朝向;抓取步骤据此决定夹爪应从哪里、以什么角度接近;路线计算步骤再给出一条不碰障碍的移动路线。
因此,这张图不是一张供人阅读的示意图,而是一个真的可以执行的程序:
- 步骤可以调用真实工具;
- 箭头决定执行顺序;
- 分支处理成功、失败和重试;
- 数据在步骤之间传递;
- 结果检查判断物理任务是否真的完成。
这就是 Graph-as-Policy 这个名字的含义:
Graph(图)本身就是 Policy(机器人做事的方法)。
3. GaP 的整体结构
GaP 由四部分组成:LLM、机器人技能库、可执行流程图和流程执行器。
LLM 根据任务和技能库写出流程;流程图保存步骤、分支、数据和检查规则;部署时,执行器读取实时观察并严格照图调用技能。
生成好的图可以保存、查看、修改和重复运行。如果任务逻辑不变,就不需要每次都让 LLM 重新设计。
通常情况下,负责写图的 LLM 不参与每一个在线控制步骤。所以 GaP 的核心是一套组合系统,而不是一个新训练的机器人网络。
4. 一句话任务怎样变成可执行图
面对一个完整机器人任务,LLM 容易漏步骤、接错数据或忘记失败处理。GaP 因此先把任务拆成几个阶段,再按顺序为每个阶段组合技能,最后合并并检查整张图。
例如“把罐头放进篮子”会被拆成:找罐头、找篮子、抓取、运输和结果检查。论文实现会让多个专门角色分工,但理解核心方法时,只需要记住“先拆阶段,再写小流程,最后统一验证”。
4.1 技能库有什么作用
技能库可以理解为机器人的工具箱。里面可能有:
- 检测指定物体;
- 分割目标轮廓;
- 计算物体在三维空间中的位置、大小和朝向;
- 决定夹爪从哪里、以什么角度接近;
- 计算一条不碰障碍的移动路线;
- 打开或闭合夹爪;
- 检查接触、位置或覆盖关系。
LLM 的工作不是凭空发明这些能力,而是选择、配置和连接已有能力。
4.2 生成后为什么还要验证
结构检查会发现这类问题:
- 箭头指向不存在的步骤;
- 某个阶段没有出口;
- 抓取步骤需要“目标位置”,上一步却没有提供;
- 成功和失败路线没有接完整。
但要注意:
结构正确,只说明流程“能运行”;它不保证机器人在物理世界里一定成功。
5. 图在机器人上怎样运行
图生成完成后,在线执行并不神秘。它就是不断重复:
看当前情况 → 执行当前步骤 → 读取结果 → 选择下一条箭头。
在线数据大致会经历“彩色图像和距离信息 → 找到目标 → 恢复三维位置 → 计算抓法和移动路线 → 控制机械臂 → 再次观察”。这里最值得理解的不是数据格式,而是:
- 图并不是提前写死一串关节动作;
- 它会在关键步骤重新观察环境;
- 后续动作根据当前物体位置重新计算;
- 失败时可以走另一条路线。
这是一种“边做边看”的执行方式,机器人领域称为闭环,而不是“一次规划后盲目做到底”。
5.1 为什么必须检查真实物理结果
调用“闭合夹爪”成功,只能说明命令执行了,不能说明目标真的被抓住。
GaP 因此会使用结果检查(论文和代码中称 checkpoint)验证任务完成后的真实状态。
它不是“保存模型权重的 checkpoint”,而是在问:
- 目标真的被夹住了吗?
- 物体真的进入容器了吗?
- 插头真的插进接口了吗?
- 锅和炉盘的覆盖关系真的满足要求吗?
这一步把“程序正常返回”和“任务真的成功”区分开来。论文在仿真排练中可以直接读取接触和物体位置;真实机器人则需要额外传感器或任务评测逻辑来完成这些检查。
6. GaP 怎样通过仿真排练变得更好
这是论文中最容易被误解的部分。
GaP 所说的“学习”,主要不是训练神经网络权重,而是:
在许多仿真场景中试跑流程,找到经常失败的步骤,再让 LLM 修改流程图。
它可能修改的内容包括:
| 发现的问题 | 可能怎样改 |
|---|---|
| 经常认错物体 | 修改感知描述,或换感知技能 |
| 经常抓空 | 换抓取方法,增加候选姿态 |
| 抓住后容易滑落 | 调整抓取方向、力度或等待时间 |
| 物体经常放偏 | 调整释放位置和偏移量 |
| 某条失败路线无效 | 修改分支、重试或阶段顺序 |
极简伪代码如下:
def 通过排练改进流程(初始流程, 场景分布):流程 = 初始流程for _ in range(最大改进轮数):# 中文注释:每轮都在许多不同物体位置和朝向下完整试跑试跑结果 = 并行仿真(流程, 从场景分布采样())# 中文注释:用真实位置、接触和任务结果定位失败步骤失败报告 = 分析物理失败(试跑结果)if 已经足够稳定(试跑结果):return 流程# 中文注释:改的是步骤、连线、提示或数值参数,不是网络权重流程 = LLM修改局部流程(流程, 失败报告)流程 = 再次检查结构(流程)return 流程
6.1 怎样判断流程变得更好
判断标准很简单:成功率更高,同时完成时间更短。论文会综合成功奖励和执行效率,为不同流程打分。
GaP 没有专属的神经网络 Loss,也不通过反向传播训练权重;它比较试跑结果,然后保留更好的流程。
论文的爆米花案例中,初始流程的仿真成功率约为 33%。在更换抓法、改变感知目标并调整放置偏移后,仿真成功率达到 94%,实机达到 18/20。
7. 贯穿示例:把蓝黄罐头放进篮子
现在把前面的概念合在一起。
一次成功执行大致是:
- 相机看到桌面;
- 感知步骤找到罐头,并估计它现在在哪里;
- 感知步骤找到篮子;
- 抓取步骤根据罐头当前位置重新计算抓法;
- 抓取阶段结束后,可运行结果检查并记录罐头是否被夹住;严格检查失败时,本次运行会中止;
- 运输步骤计算到篮子的安全轨迹;
- 机器人下降、打开夹爪并离开;
- 最终是否成功,由环境评测规则或额外的放置检查确认。
7.1 失败时,GaP 知道该改哪里
这正是显式流程图的价值:
- 失败能够定位到某个阶段;
- 修改可以只影响局部;
- 其余已经可靠的步骤不必全部重做;
- 人也能看懂机器人为什么这样做。
需要注意:当前 quickstart 只提供抓取后的 target_held 检查,没有最终放置检查。流程到达 placed 或 success 出口,只表示控制流走到了那里,不能单独证明物体真的放好。
8. GaP 最终输出什么
GaP 最重要的输出是一份可保存、可查看、可执行的机器人流程文件。仿真排练还会产生成功率和失败报告;在线执行会留下任务结果、检查结果和执行记录。
这份流程文件可以长期复用。它不是一串临时动作,也不是新训练出的权重文件。
9. 这个方法什么时候最有价值
GaP 最适合同时满足三点的任务:工位和任务类型基本已知;物体位置、朝向或种类会变化;机器人已经拥有可靠的感知、路线计算和控制能力。
如果环境完全开放,或者连基础机器人能力都没有,GaP 就不是最自然的首选。
9.1 主要优势
- 看得懂:策略是显式流程,不是黑盒动作序列。
- 容易排错:能知道失败发生在感知、抓取还是放置。
- 容易组合:传统算法、学习模型和控制器都可以成为图中的步骤。
- 容易复用:可靠的小流程可以在其他任务中重复使用。
- 适合长期任务:固定后的图可以在边缘设备上重复执行。
9.2 主要限制
- 依赖已有技能库;没有真实能力,LLM 不能凭文字创造出来。
- 更适合边界已知的固定工位,不是为完全开放世界设计的。
- 仿真和真实世界存在差距,仍然需要实机标定与验证。
- LLM 生成的图仍需严格检查,不能直接盲目信任。
10. 论文方法和当前公开代码的边界
当前目录同时包含论文和公开代码。两者不是完全相同的范围:
| 能力 | 论文完整方法 | 当前公开代码 v1 |
|---|---|---|
| 从语言任务生成流程图 | 有 | 有 |
| 结构检查和有限修复 | 有 | 有 |
| 执行流程、结果检查和记录 | 有 | 有 |
| 在许多机器人仿真场景中并行排练 | 有 | 未发布 |
| 把执行失败自动反馈给 LLM 并反复改图 | 有 | 未发布 |
因此:
- 论文完整方法包含“排练 → 分析 → 改图”的自学习闭环;
- 当前公开代码可以生成、检查和执行图;
- 但不能直接端到端复现论文中的完整自动自学习系统。
这是理解论文和运行代码时最重要的版本边界。
11. 最后只记住这六句话
- GaP 把机器人策略表示成一张可执行流程图。
- LLM 负责设计和修改流程,不直接负责底层电机控制。
- 节点调用已有技能,箭头表示顺序、分支和重试。
- 执行器根据实时观察边做边看,而不是盲目执行固定动作。
- 论文中的“学习”是仿真试跑后修改流程图,不是反向传播训练 GaP 权重。
- 固定图部署后,写图的 LLM 通常不再参与在线动作循环。
