Home / 机器人学习 / VoxPoser:从语言构造三维价值地图

064|VoxPoser:从语言构造三维价值地图

系列首页 · 上一篇 · 下一篇

原论文:VoxPoser: Composable 3D Value Maps for Robotic Manipulation with Language Models,Wenlong Huang 等,2023,本文对应 arXiv v2。论文。

先接住前作的问题

SayCan在固定技能中做选择,但“避开花瓶、沿桌边慢走”包含连续空间约束,未必能由几个技能名称表达。VoxPoser让语言程序构造空间代价,再由规划器求轨迹;它生成任务表示,不学习Bellman价值。

五个前置概念

五个前置概念:

  1. 语言接地:把词语对应到当前感知中的对象和几何关系。
  2. 体素:三维空间中的离散格子,用于保存位置相关信息。
  3. 模型预测控制:不断重规划并只执行当前一小段。
  4. 操作空间控制:把末端目标转换为底层机器人控制。
  5. 探索先验:让动作采样更偏向可能相关的区域,而非均匀尝试。

一、问题设定:语言里的目标、障碍和速度怎样变成轨迹

“把杯子拿过来,避开花瓶,经过桌沿时慢一点。”这句话包含目标、障碍和速度要求。把它翻译成几个动作名称容易,变成机器人此刻能执行的空间轨迹却困难。

SayCan 一类方法擅长从技能库中选择下一步;如果技能库没有“沿杯子左边绕过去”,语言理解再好也不能直接补出这个运动。

VoxPoser 把重点放在每个子任务的轨迹生成。输入包括自然语言、RGB-D 观测和机器人状态;输出是带姿态、速度及夹爪命令的末端路点。子任务排序也由语言程序参与完成,但并非论文重点。

一个容易忽略的区分是“关注实体”。它可能是末端,也可能是被推动的物体。如果目标是让杯子到达桌角,优化的应是杯子的位置;末端路径只是一种实现手段。这时系统必须知道末端动作如何改变杯子,不能只在杯子周围画一个高分区域。

原文主要包含无额外任务训练的规划,以及单独的在线动力学学习实验。前者的“零样本”不意味着没有预训练模型、提示示例或人工接口。GPT-4 的语言程序提示包含示例,视觉模块也使用预训练模型。机器人交互数据、互联网预训练数据与上下文示例是三种不同资源。

二、用可组合空间地图连接感知与规划

VoxPoser 的做法是让语言模型写程序:调用视觉接口找到对象,在三维空间里构造吸引区域、回避区域、姿态与速度要求,再交给运动规划器求轨迹。语言负责描述“哪些位置有意义”,规划器负责计算“怎样走过去”。

这里的 value map 不是通过 Bellman 方程学出的 Q 值,也不是每个体素对应长期回报的统计估计。它首先是语言与感知组合出来的任务目标表示。

从代价函数理解整体架构

原文式 1 的核心是:

min⁡τr  Ftask(T,ℓ)+Fcontrol(τr)s.t.C(T).\min_{\tau^r}\; F_{\rm task}(T,\ell)+F_{\rm control}(\tau^r) \quad\text{s.t.}\quad C(T).

ℓ\ell 表示当前子任务,TT 是环境状态随时间的变化,τr\tau^r 是机器人轨迹。任务代价问“是否实现指令”,控制代价问“运动是否合理”,约束 CC 包括动力学和运动学可行性。

若关注实体在第 jj 步的位置为 pjep_j^e,空间地图为 VV,论文用沿轨迹累积地图值近似任务目标:

Ftask=−∑jV(pje).F_{\rm task}=-\sum_jV(p_j^e).

负号表示高地图分数对应低代价。这不是价值学习的自举:地图并未由下一状态的价值回传而来。它更接近根据语义构造的空间势场。

地图为什么能组合

“接近把手”给出目标区域,“远离花瓶”给出避让区域。把它们组合,就可以同时考虑两件事,而不是先生成一条直线、碰上障碍后才临时改命令。

位置分数仍不足以表达拧瓶盖。系统还构造旋转、速度和夹爪地图,作为轨迹参数。它们不是都被压成一个实数:姿态是旋转,夹爪是离散开合,速度是缩放量。把这些统称为 value maps 是接口设计,不代表数学对象完全相同。

感知链条先定位语义对象,再分割和跟踪,结合深度得到几何信息。语言程序据此操作体素数组。地图的平滑能让目标附近存在可优化的梯度或邻域趋势,却不能纠正对象识别错误。

闭环的关键不是每一步重问语言模型

语言生成的程序可以缓存,随着最新观测重新计算目标位置和地图。规划器只执行部分计划,随后重新观察并规划。因此目标移动时,空间约束能够更新。

论文实际实现对末端位置地图进行规划,再附加其余轨迹参数;这比式 1 的一般约束优化描述更具体。物体推动还使用简化动力学及推动原语。不能把标题理解为彻底取消所有手工结构。

教学伪代码如下:

这个流程里的“可执行”必须依赖真实控制接口。体素路径没有碰到花瓶,不等于整条机械臂的肘部都安全。

在线学习究竟优化什么

可选动力学模型用实际转移监督:

Ldyn(θ)=E[∥gθ(ot,at)−ot+1∥2].L_{\rm dyn}(\theta) =\mathbb E\left[\|g_\theta(o_t,a_t)-o_{t+1}\|^2\right].

语言轨迹主要改变采样分布,使数据集中在与目标有关的接触附近。模型误差下降和任务成功率提高是两个不同指标:如果采到的只是无接触动作,预测很准也可能毫无帮助。

空间地图的加权和通常是软偏好,不是硬安全约束。教学例:目标区域得分+2,穿过花瓶区域惩罚−1,若两项直接相加,规划器仍可能认为穿过障碍净收益为正;要保证禁入需显式可行域过滤或无穷代价,而不能只把它称为avoidance map。原文实际采用归一化地图加权与末端路径搜索,地图权重因此会改变行为。原文Motion Planner

即使末端路径全部在自由体素,肘部扫过花瓶仍可能碰撞。需要区分实体路径的任务评分与整机运动学碰撞检查;更好的语言程序不能弥补后者缺失。这个反例是系统分析,不是报告论文发生了该事故。

一个小例子与五个前置概念

以下是自构例子,未运行。设目标在桌面右侧,花瓶在直线路径中央。只给末端一个目标坐标,求最短距离会穿过花瓶;给花瓶附近附加代价后,规划器可以选择绕行。

但若避让项权重太小,穿过障碍的总分仍可能更高。因此“语言说了避开”不代表数学上已经硬性禁止碰撞。软代价与硬约束必须区分。如果任务涉及脆弱物体,规划表示应把不可碰撞区域作为可行域限制,而不是只期待权重足够大。这是对架构的教学分析,不是论文已验证的保证。

三、缓存空间程序并随新观测重建地图

代码可被复用,地图仍根据当前物体位置重新计算。规划器用这次地图搜索动作,因而缓存程序不等于开环重放旧轨迹。

输入:自然语言任务、RGB-D 图像、机器人状态
语言规划器给出子任务序列
对每个子任务:
    生成并缓存地图程序
    在当前视觉观测中检测、分割、跟踪有关对象
    循环直到子任务完成:
        用最新几何信息重新计算位置和约束地图
        生成候选末端轨迹
        若关注实体是物体:用动力学预测它如何运动
        按任务代价与运动代价选择可执行轨迹
        添加姿态、夹爪和速度参数
        只执行下一段;重新获取观测
可选在线学习:
    在初始语义轨迹附近加入扰动采样
    用实际转移更新动力学模型,再规划
输出:执行轨迹及任务结果

四、分开空间约束能力与低层模型贡献

作者的真实测试支持这种表示比所用动作原语基线更适合空间约束与扰动恢复;这没有证明语言模型能独立处理任意接触动力学。

原图怎么读: 图4,原论文图注与图像。按错误类别拆分系统失败,观察任务规格错误与其他执行错误是否同步下降。语言程序更准确不保证感知、规划与底层动作的错误也一并消失。

VoxPoser: Composable 3D Value Maps for Robotic Manipulation with Language Models,图4:按错误类别拆分系统失败,观察任务规格错误与其他执行错误是否同步下降。语言程序更准确不保证感知、规划与底层动作的错误也一并消失。
实验图原图摘引:Wenlong Huang 等,2023,HTML S4.F4.fig2,图4。核对原文。原版权保留。
项目 原文设定及应有解释
真实平台 Panda 桌面系统,两台 RGB-D 相机;附录 A.4
真实任务 五项定量任务,分别评估静态与扰动条件
扰动 对机器人施力、移动对象、逆转任务进度;不等于任意强度的鲁棒性测试
对照 语言模型加动作原语的 Code as Policies 变体
仿真泛化 自建桌面任务,区分已见指令、未见指令与属性
在线学习 接触任务在仿真中进行;与主要真实零样本表分开
重复 真实每任务每条件十次;仿真泛化每任务二十回合;在线学习三次随机种子
资源边界 预训练视觉语言模型和提示工程不可从成本中排除;完整 API 时延与总费用未逐项核实

对照确实回答了“空间组合是否比这套顺序原语表达更有效”,但它不是对所有技能库系统的最终比较。更强的闭环原语、碰撞规划和对象跟踪,也可能改善对照。

此外,未见属性是相对于提示或监督基线训练划分而言,并不表示颜色词、空间关系从未出现在基础模型预训练中。测试的是知识如何进入机器人接口,不是从零学会这些概念。

五处证据及其边界

表1:真实执行。 静态条件总体成功率为 88%,所用原语基线为 24%;扰动条件下分别为 70% 与 0%。前一差值是 64 个百分点,不能写成“提高 64%”。表格支持这套系统在选定任务上的优势,不支持开放世界任意任务成功率。

表2:语言与属性泛化。 地图规划在所列汇总条件下优于两类对照。这里必须连同任务模板和属性划分阅读;一个未见模板不是一个全新物理技能的同义词。

附录 A.5.2:汇总优势不等于逐任务领先。 细分结果中存在基线更好的任务。读者应检查抓取、空间移动和推动分别发生了什么,而不是用总体均值宣布一种接口永远更强。

表3:在线交互的价值。 语言轨迹先验帮助动力学学习,但零样本轨迹本身在这些接触任务上表现较弱。这组结果说明常识能引导探索,而不能替代物理识别;它发生在仿真,不是几分钟真实机器人学习的证据。

图4 与 §4.4:错误来自哪一层。 作者利用仿真中的真值感知和动力学分析误差来源。消除某层误差后的改善说明该层是瓶颈之一;模块互相影响,所以这种分解不一定能简单相加为独立因果贡献。

还有一个有教育意义的反例在附录 A.2:语言模型提出的物理实验并不必然正确。能写出连贯程序,只说明指令可被执行,不保证实验能识别目标物理量。

五、地图正确仍依赖对象定位和动力学接口

本论文把语言知识落到一个规划器容易消费、研究者也能检查的中间表示。看到机器人走偏时,可以分别检查对象检测、地图位置、约束组合和执行轨迹,这比只观察一个高维隐状态更容易诊断。

但可解释不等于正确。语义地图可能把目标放错;避让权重可能不足;未知接触可能使预测失真;末端可行轨迹也可能对应全臂不可行运动。作者明确指出感知、通用动力学、全臂规划及提示工程的局限。

本文的进一步分析是:空间地图适合“哪里、朝哪、快慢、避开什么”这类要求,却不天然表达所有时间关系。例如“只有杯子放稳以后才松手”包含事件条件,不能只靠当前位置决定。高层程序和状态判定仍然重要。

追问:多个地图提出互相冲突的要求时,高分轨迹还能代表任务完成吗?

参考答案:地图加权后的最优解可能只是各要求之间的折中。例如目标吸引与障碍回避权重失衡,规划仍可能穿过不能碰的区域。应区分软偏好和硬约束,检查每项条件是否满足,而不只报告总代价。语言生成了可计算地图,也没有自动解决约束优先级与不可行任务检测。

六、沿机制关系继续读

与SayCan是平行语言接地:本篇生成空间代价供规划器使用,SayCan对固定技能打分;与PerAct只有三维空间表示的教学联系,VoxPoser地图不是通过行为克隆得到的动作分类logit。

七、自测三题与参考答案

问题1:VoxPoser 的 value map 与强化学习的 Q(s,a)Q(s,a) 有什么本质区别?

答案:前者主要由语言程序和几何观测构造,描述位置或参数的任务偏好;后者通常估计在某策略下采取动作后的累积回报。前者不自动包含未来可达性、接触后果和策略表现,必须与规划及模型配合。

问题2:为什么缓存代码仍然可以是闭环控制?

答案:闭环要求动作依赖最新反馈,不要求每个周期重新生成源代码。同一个程序读取新的对象位置,就可以生成新的地图和轨迹;若只缓存初次计算的地图而不更新观测,才会丢失这部分闭环能力。

问题3:语言探索先验可能什么时候反而有害?

答案:当它把正确动作区域排除在采样范围之外。例如假定抽屉向外拉,但实际需要先解除锁扣,局部扰动可能始终收不到关键转移。可以设置先验与广域采样的混合、监测长期无进展并扩大探索;这种修正需要单独实验验证。