论文标题:VoxPoser: Composable 3D Value Maps for Robotic Manipulation with Language Models
论文作者:Wenlong Huang, Chen Wang, Ruohan Zhang, Yunzhu Li, Jiajun Wu, Li Fei-Fei
作者单位:Stanford University, University of Illinois Urbana-Champaign
论文原文:https://arxiv.org/abs/2307.05973
论文出处:CoRL 2023 (Oral)
论文被引:64(01/05/2024)
项目主页:https://voxposer.github.io/
论文代码:https://github.com/huangwl18/VoxPoser,235 star
Abstract
大型语言模型(LLM)拥有丰富的可操作知识,可以通过推理和规划的形式提取出来,用于机器人操作。尽管取得了进展,但大多数模型仍然依赖于预定义的运动基元(motion primitives)来实现与环境的物理交互,这仍然是一个主要瓶颈。这项工作的目标是在给定开放指令集和开放物体集的情况下,为各种操作任务合成机器人轨迹(trajectories),即 6-DoF 末端执行器导航点(waypoints)的密集序列。为此,我们首先观察到 LLMs 擅长推断自由形式语言指令的负担能力(affordances)和约束条件(constraints)。更重要的是,通过利用它们的代码编写能力,它们可以与视觉语言模型(VLM)交互,组成 3D value maps,将知识融入到智能体(Agent)的观察空间中。然后,基于模型的规划框架会使用这些组成的值图(value maps),以零样本方式合成闭环机器人轨迹,使其对动态扰动具有鲁棒性。我们进一步展示了所提出的框架如何通过高效学习涉及大量接触交互的场景的动力学模型,从在线经验中获益。我们在模拟和真实机器人环境中对所提出的方法进行了大规模研究,展示了该方法执行以自由形式的自然语言指定的各种日常操作任务的能力。
Keywords: Manipulation, Large Language Models, Model-based Planning
1 Introduction
语言是一种压缩媒介,人类通过它来提炼和交流自己的知识和对世界的体验。大语言模型(LLMs)是捕捉这种抽象性的一种很有前途的方法,它通过投射到语言空间来学习表征世界[1- 4]。虽然这些模型被认为可以将可概括的知识内化为文本,但如何利用这些模型让具身Agent在现实世界中实际行动,仍然是一个问题。
我们关注的是将抽象语言指令(如 “摆放桌子”)转化为机器人动作的问题[5]。之前的研究利用词法分析来解析指令[6-8],而最近的研究则利用语言模型将指令分解为一系列文字步骤[9-11]。然而,要实现与环境的物理交互,现有的方法通常依赖于预先定义的运动基元(即技能),这些基元可由 LLM 或规划器调用,由于缺乏大规模的机器人数据,这种对单个技能获取的依赖通常被认为是系统的一个主要瓶颈。那么问题来了:我们怎样才能利用 LLM 的丰富内化知识,为机器人提供更细粒度的动作级别,而不需要费力地收集数据或为每个原始设备进行人工设计?
在应对这一挑战时,我们首先注意到,LLMs 直接在文本中输出控制动作是不切实际的,因为这些动作通常是由高维空间中的高频控制信号驱动的。不过,我们发现,LLMs 擅长推断语言条件下的负担能力和约束条件,并利用其代码编写能力,通过协调感知调用(例如通过 CLIP [12] 或开放词汇检测器 [13-15] )和数组操作(例如通过 NumPy [16]),它们可以绘制出密集的3D体素图(value maps),将其置于视觉空间中。例如,在给出 “打开最上面的抽屉,小心花瓶” 的指令时,LLM 可以推断出以下几点:
- 1)应抓住抽屉顶部的把手
- 2)把手需要向外平移
- 3)机器人应远离花瓶
通过生成 Python 代码来调用感知应用程序接口,LLM 可以获得相关物体或部件的空间几何信息,然后对3D体素进行处理,在观察空间的相关位置规定奖励或成本(例如,把手区域被赋予高值,而花瓶周围被赋予低值)。最后,组成的值图可以作为运动规划器的目标函数,直接合成实现给定指令的机器人轨迹(该方法还与路径规划[17]中的势场方法和操作规划[18]中的约束优化方法有相似之处和联系。),而无需为每个任务或 LLM 提供额外的训练数据。图 1 是我们考虑的任务示意图和任务子集。
我们将这种方法称为 VOXPOSER,它从 LLMs 中提取负担能力和约束条件,在观察空间中绘制3D value maps,用于指导机器人交互。这种方法不依赖于数量或可变性通常有限的机器人数据,而是利用 LLMs 进行开放世界推理,并利用 VLMs 在基于模型的规划框架中提供通用的视觉可执行(generalizable visual grounding),从而直接实现机器人的物理操作。我们展示了该方法在各种日常操作任务中对开放集指令(open-set instructions)和开放集物体的零样本泛化。我们还进一步展示了 VoxPoser 如何从有限的在线交互中获益,从而高效地学习涉及丰富接触交互的动力学模型。
2 Related Works
Grounding Language Instructions.
在智能Agent[19-22]和机器人[23, 6, 24, 25, 5, 7, 26]方面,语言基础已经得到了广泛的研究,在这些领域中,语言可以被用作组合目标规范的工具[5, 27-33],训练多模态表示的语义锚框(semantic anchor)[12, 34, 35],或者作为规划和推理的中间基底(intermediate substrate)[36-38, 9, 10, 39, 40]。之前的研究已经探讨了使用词法分析,形式逻辑和图形模型等经典工具来解释语言指令[27, 7, 6, 26]。最近,通过成功应用于离线领域而流行起来的端到端方法 [41-43, 1],已被应用于通过从带有语言注释的数据中学习,直接将语言指令应用于机器人交互中,包括模型学习 [44] ,模仿学习 [45, 46, 30, 47-54] 和强化学习 [55-57]。与我们的工作关系最密切的是 Sharma 等人的研究[50],他们通过监督学习优化了端到端成本预测器,将语言指令映射到二维成本图上,并利用成本图引导运动规划器以无碰撞的方式生成首选轨迹。相比之下,我们依靠预先训练好的语言模型来获取开放世界知识,并解决更具挑战性的3D机器人操作问题。
Language Models for Robotics.
利用预先训练好的语言模型进行具身应用是一个活跃的研究领域,大量研究工作都集中在利用语言模型进行规划和推理[9-11, 58, 31, 39, 59-72, 36, 73, 74]。
- 为了让语言模型感知物理环境,可以给出场景的文本描述[39, 11, 59]或感知 API [75],视觉可以在解码过程中使用[67],也可以直接作为多模态语言模型的输入[68, 2]。
- 除了感知之外,要真正实现感知-行动循环,具身语言模型还必须知道如何行动,这通常是通过一个预定义基元(primitives)库来实现的。[75]研究表明,LLMs 表现出的行为常识可用于底层控制。尽管出现了一些令人鼓舞的迹象,但仍需要手工设计运动基元,而且虽然 LLMs 被证明能够组合顺序策略逻辑,但其是否能在空间级别上进行组合仍不清楚。
- 在奖励设计[76],探索[77- 80]和偏好学习[81]方面,也有相关的工作探索了使用 LLMs 进行奖励规范。
- 在机器人应用方面,也有研究探讨了基于 LLM 的奖励生成 [82-88],其中 [82] 将 MuJoCo [89] 作为高保真物理模型用于模型预测控制。
相比之下,我们只专注于将 LLM 生成的奖励建立在机器人的3D观测空间上。
Learning-based Trajectory Optimization.
许多研究都在探索利用基于学习的方法进行轨迹优化。虽然文献浩如烟海,但大致可分为:
- 学习模型的方法[90-98]
- 学习成本/回报或约束条件的方法[99-102, 50, 103]
为了实现泛化,还包括探索从大规模离线数据[104-106, 35, 34, 44, 107, 108, 54],特别是第一视角的视频[109, 110],或利用预训练的基础模型[111-113, 33, 114, 115]中学习任务规范。然后,强化学习[111, 108, 116],模仿学习[106, 105]或轨迹优化[104, 35]会使用学习到的成本函数来生成机器人动作。
在这项工作中,我们利用 LLMs 进行了具有卓越泛化能力的零样本 in-the-wild 成本规范。与之前利用基础模型的工作相比,我们直接在3D观测空间中建立成本,并提供实时视觉反馈,这使得 VoxPoser 可用于闭环 MPC,并在执行过程中保持稳健。
3 Method
我们首先将 VoxPoser 表述为一个优化问题(第 3.1 节)。然后,我们介绍了如何将 VoxPoser 用作一个通用的零样本框架,将语言指令映射到3D值图(第 3.2 节)。随后,我们将演示如何在闭环中合成用于机器人操作的轨迹(第 3.3 节)。虽然本质上是零样本,但我们演示了 VoxPoser 如何从在线交互中学习,从而高效地解决接触丰富的任务(第 3.4 节)。
3.1 Problem Formulation
考虑一个以自由格式语言指令 L(如 “打开最上面的抽屉”)形式给出的操作问题。根据 L 生成机器人轨迹可能非常具有挑战性,因为 L 可能是任意的长视距或指定不足(即需要理解上下文)。相反,我们将重点放在问题 ℓi 的单个阶段(子任务)上,这些阶段(子任务)明确指定了操作任务(例如,“抓住抽屉把手”,“拉开抽屉”),其中 L → (ℓ1, ℓ2, … , ℓn) 的分解由高层次规划器(例如,LLM 或基于搜索的规划器)给出。这项工作研究的核心问题是为机器人 r 和指令 ℓi 描述的每个操作阶段生成运动轨迹 τ i r τ^r_i τir。我们将 τ i r τ^r_i τir 表述为操作空间控制器 [117] 执行的密集末端执行器航点序列,其中每个航点由所需的 6-DoF 末端执行器姿态,末端执行器速度和抓手动作组成。不过,值得注意的是,也可以使用其他轨迹表示法,如关节空间轨迹。给定由 ℓi 描述的第 i 个子任务,我们提出一个定义如下的优化问题:
其中,Ti 是环境状态的演变,τ ri ⊆ Ti 是机器人轨迹。Ftask 对 Ti 完成指令 ℓi 的程度进行评分,而 Fcontrol 则规定了控制成本,例如,鼓励 τ ri 尽可能减少总控制力或总时间。C(Ti) 表示动力学和运动学约束,由已知的机器人模型和基于物理或学习的环境模型强制执行。通过对每个子任务 ℓi 的优化求解,我们可以得到一系列机器人轨迹,这些轨迹共同实现指令 L 指定的总体任务。
3.2 Grounding Language Instruction via VoxPoser
计算与自由格式语言指令相关的 Ftask 极具挑战性,这不仅是因为语言可以传达丰富的语义空间,还因为缺乏标有 T 和 ℓ 的机器人数据。不过,我们提供了一个重要的观察结果,即大量任务都可以用机器人观察空间中的体素值图 V∈Rw×h×d 来表征,它指导着场景中 “感兴趣的实体”(如机器人末端执行器,物体或物体部件)的运动。例如,考虑图 2 中的任务 “打开最上面的抽屉” 及其第一个子任务 “抓住最上面的抽屉把手”(由 LLMs 推断)。感兴趣的实体是机器人的末端执行器,体素值图应反映对抽屉把手的吸引力。通过进一步发出 “小心花瓶” 的指令,该映射也可以更新为反映与花瓶的排斥力。我们将感兴趣的实体表示为 e,将其轨迹表示为 τ e。使用给定指令 ℓi 的体素值图,可以通过累积 e 穿过 Vi 的值来近似计算 Ftask,计算公式为 Ftask = - P|τ ei |j=1 V(pej ) ,其中 pej ∈ N3 是 e 在第 j 步时的离散化 (x,y,z) 位置。
值得注意的是,我们观察到大型语言模型通过在互联网规模的数据上进行预训练,不仅能够识别感兴趣的实体,还能通过编写 Python 程序来组成准确反映任务指令的值图。具体来说,当指令以注释的形式出现在代码中时,LLM 就会被提示:1)调用感知 API(调用视觉语言模型(VLM),如开放词汇检测器 [13-15])来获取相关物体的空间几何信息;2)生成 NumPy 运算来操作3D数组;3)在相关位置规定精确的值。我们将这种方法称为 VOXPOSER。具体来说,目标是通过提示 LLM 并通过 Python 解释器执行代码来获得体素值图 Vt i = VoxPoser(ot,ℓi),其中 ot 是时间 t 的 RGB-D 观察值,ℓi 是当前指令。此外,由于 V 通常是稀疏的,我们通过平滑运算对体素图进行致密化处理,因为这有助于运动规划器优化更平滑的轨迹。
Additional Trajectory Parametrization.
VoxPoser 的上述表述使用 LLMs 将 V : N3 → R 从体素空间中的离散坐标映射为实值 “代价”,我们可以用它来优化仅由位置项组成的路径。为了扩展到 SE(3) 姿态,我们还可以使用 LLMs 在与任务目标(例如 “末端执行器应面向手柄的支撑法线”)相关的坐标上组成旋转映射 Vr : N3 → SO(3)。同样,我们还进一步组成了抓手映射 Vg : N3 → {0, 1} 来控制抓手的打开/关闭,以及速度映射 Vv : N3 → R 来指定目标速度。需要注意的是,虽然这些额外的轨迹参数没有映射为实值 “成本”,但它们也可以作为优化程序(等式 1)中的因素,以参数化轨迹。
3.3 Zero-Shot Trajectory Synthesis with VoxPoser
在获得任务成本 Ftask 后,我们现在就可以处理方程 1 中定义的完整问题,规划运动轨迹。我们采用简单的零阶优化,随机抽样轨迹,并根据提出的目标对其进行评分。优化是在一个模型预测控制框架中实现的,该框架每一步都会利用当前的观测数据迭代地重新扫描轨迹,即使在动态干扰的情况下也能稳健地执行轨迹。然而,由于 VoxPoser 有效地在观测空间中提供了 “密集奖励”,而且我们能够每一步都重新扫描,因此我们惊喜地发现,即使使用简单的启发式模型,整个系统也能实现本研究中考虑的大量操作任务。由于某些值映射是在 "感兴趣的实体"上定义的,而 “感兴趣的实体” 不一定是机器人,因此我们还使用动力学模型来寻找所需的机器人轨迹,以最小化任务成本(即机器人与环境之间的交互能够实现所需的物体运动)。
3.4 Efficient Dynamics Learning with Online Experiences
第 3.3 节介绍了用于合成机器人操作轨迹的零样本框架,而 VoxPoser 也可以通过有效学习动力学模型,从在线经验中获益。考虑标准设置,即机器人交替进行以下工作:1)收集环境转换数据(ot, at, ot+1),其中 ot 是时间 t 的环境观测值,at = MPC(ot);2)通过最小化预测的下一个观测值 ˆot+1 和 ot+1 之间的 L2 损失,训练以 θ 为参数的动力学模型 gθ。决定学习效率的一个关键因素是 MPC 中的动作采样分布 P (at|ot),它通常是整个动作空间 A 上的随机分布。当目标是解决特定任务(如开门)时,这种方法通常效率不高,因为大多数动作不会与场景中的相关物体(如门把手)发生交互,也不一定会以有意义的方式与物体发生交互(如按下门把手)。由于 VoxPoser 使用 LLMs 合成机器人轨迹,而 LLMs 拥有丰富的常识性知识,因此零样本合成的轨迹 τ r0 可以作为一个有用的先验,对动作采样分布 P (at|ot, τ r0) 进行偏置,从而显著加快学习过程。在实践中,可以通过添加小噪声 ε 来只对 τ r0 附近的动作进行采样,以鼓励局部探索,而不是在整个动作空间 A 中探索。
4 Experiments and Analysis
我们首先讨论实现细节。然后,我们验证了 VoxPoser 在现实世界中的日常操作(第 4.1 节)。我们还研究了其在模拟中的通用性(第 4.2 节)。我们进一步展示了 VoxPoser 如何高效地学习更具挑战性的任务(第 4.3 节)。最后,我们分析了其错误来源,并讨论了如何改进(第 4.4 节)。
LLMs and Prompting.
我们沿用了 Liang 等人的提示结构[75],该结构使用自己生成的代码递归调用 LLM,其中每个语言模型程序(LMP)负责一个独特的功能(例如处理感知调用)。我们使用 OpenAI API 的 GPT-4 [2]。我们为每个 LMP 提供了 5-20 个查询示例和相应的响应,作为提示的一部分。示例见图 2(为清晰起见进行了简化)。完整的提示信息见附录。
VLMs and Perception.
给定一个来自 LLM 的物体/部件查询,我们首先调用开放式 vocab 检测器 OWL-ViT [15] 获得一个边界框,然后将其输入 Segment Anything [118] 获得一个掩码,最后使用视频跟踪器 XMEM [119] 跟踪掩码。跟踪到的掩码与 RGB-D 观察结果一起用于重建 object/part 点云。
Value Map Composition.
我们定义了以下几种类型的值映射:负担能力(affordance)映射,避让(avoidance)映射,末端执行器速度映射,末端执行器旋转映射和抓手动作映射。每种类型都使用不同的 LMP,该 LMP 接收指令并输出形状为(100, 100, 100, k)的体素图,其中每个值图的 k 都不同(例如,负担和避让的 k = 1,因为它指定了成本;旋转的 k = 4,因为它指定了 SO(3))。我们将欧氏距离变换应用于负担能力地图,将高斯滤波器应用于避让地图。在值图 LMP 的基础上,我们定义了两个高级 LMP 来协调它们的行为:规划器(planner)将用户指令 L 作为输入(例如,“打开抽屉”),并输出子任务 ℓ1:N 的序列;创作器(composer)接收子任务 ℓi,并调用具有详细语言参数化的相关价值图 LMP。
Motion Planner.
在规划优化过程中,我们只考虑负担能力和避让图,并通过贪婪搜索找到一连串无碰撞的末端执行器位置 p1:N∈ R3。然后,我们通过其余的值映射(如旋转映射,速度映射)在每个 p 处执行其他参数化。运动规划器使用的代价图是由权重为 2 和 1 的归一化负担能力图和避让图的加权和的负值计算得出的。合成 6-DoF 轨迹后,执行第一个航点,然后以 5 Hz 的频率重新规划新的轨迹。
Dynamics Model.
我们在所有任务中都使用了已知的机器人动力学模型,并将其用于末端执行器的运动规划,使其遵循导航点。在我们考虑的大多数任务中,感兴趣的实体是机器人,我们没有使用环境动力学模型(即假设场景是静态的),但我们每一步都会重新规划,以考虑最新的观察结果。对于感兴趣的实体是一个物体的任务,我们只研究一个由接触点,推动方向和推动距离参数化的平面推动模型。我们使用基于启发式的动力学模型,通过推动距离沿推动方向转换输入点云。我们使用随机射击 MPC 来优化动作参数。然后,根据动作参数执行预定义的推动基元(pushing primitive)。不过,我们注意到,如果在机器人的末端执行器或关节空间上定义动作参数,则不需要基元,这样可能会产生更平滑的轨迹,但需要更多的优化时间。在第 4.3 节中,我们还探讨了基于学习的动力学模型的使用,该模型可使 VoxPoser 从在线经验中获益。
4.1 VoxPoser for Everyday Manipulation Tasks
我们将研究 VoxPoser 是否能够零样本合成机器人轨迹,以执行现实世界中的日常操作任务。环境设置详情见附录 A.4。如图 1 所示,VoxPoser 可适用于开放式指令集和开放式物体集,但我们挑选了 5 个具有代表性的任务进行定量评估,见表 1。定性结果(包括环境展开和价值图可视化)如图 3 所示。我们发现,VoxPoser 可以有效地合成机器人在日常操作任务中的轨迹,并且平均成功率很高。由于具有快速重新规划能力,它还能抵御外部干扰,如移动目标/障碍物以及机器人关闭抽屉后拉开抽屉等。我们进一步比较了 Code as Policies [75] 的一种变体,它使用 LLM 对预定义的简单基元列表(如移动到姿势,打开抓手)进行参数化。我们发现,与链式顺序策略逻辑相比,在联合优化方案下考虑其他约束条件的同时进行空间组合的能力是一种更灵活的表述方式,为更多的操作任务提供了可能性,并带来更稳健的执行。
4.2 Generalization to Unseen Instructions and Attributes
为了对通用性进行严格的量化评估,我们建立了一个模拟块世界环境,该环境与我们的真实世界机器人设置[120, 121]相同,但具有 13 个高度可随机化的任务和 2766 个独特的指令。每个任务都有一个模板指令(例如,“push [obj] to [pos]”),其中包含从预定义列表中选择的可随机属性。详情见附录 A.5。看过的指令/属性可能会出现在提示中(或出现在有监督基线的训练数据中)。任务分为两类,其中物体交互任务需要与物体进行交互,而空间组成(Spatial Composition)任务则涉及空间限制(例如,在特定物体附近缓慢移动)。作为基线,我们将 VoxPoser 的两个组件——LLM 和运动规划器——与将 LLM 与基元相结合的 [75] 变体和学习 U-Net [122] 为运动规划合成代价图的 [50] 变体进行比较。表 2 显示了每项任务 20 个事件的平均成功率。我们发现,VoxPoser 在所有场景中都表现出了卓越的泛化能力。与学习成本规范相比,LLM 通过明确推理负担能力和约束条件,能更好地进行泛化。另一方面,通过价值图组合而不是直接指定原始参数,将 LLM 知识建立在机器人感知的基础上,可以提供更大的灵活性和更好的泛化能力。
4.3 Efficient Dynamics Learning with Online Experiences
如第 3.4 节所述,我们研究了 VoxPoser 在模拟环境中执行涉及更多复杂接触的任务(如开门,开冰箱和开窗户)时,如何从在线体验中获益。具体来说,我们首先使用 VoxPoser 合成 k 个零拍摄轨迹,每一个都表示为一系列末端执行器航点,作为探索的先验(例如,“要打开一扇门,需要先按下手柄”)。然后,通过迭代程序学习 MLP 动态模型,在此过程中,机器人交替进行数据收集和模型学习。在数据收集过程中,我们为 τ r0 中的每个航点添加 ε ∼ N (0, σ2),以鼓励局部探索。如表 3 所示 如表 3 所示,我们发现零样本合成轨迹通常是有意义的,但并不充分。然而,通过使用这些轨迹作为探索先验,我们可以在不到 3 分钟的在线交互时间内学习到有效的动力学模型,从而获得较高的最终成功率。相比之下,没有先验的探索都超过了 12 小时的上限。
4.4 Error Breakdown
在本节中,我们将分析 VoxPoser 各个组件造成的误差,以及如何进一步改进整个系统。我们在模拟器中进行实验,在模拟器中我们可以获得地面真实感知和动力学模型(即模拟器)。. "动力学误差 "是指动力学模型所产生的误差4。"感知误差 "指感知模块产生的误差5。"规范错误 "是指为低级运动规划器或基元指定成本或参数的模块所产生的错误。每种方法的例子包括:1)U-Net 的噪声预测;2)LLM 指定的参数不正确;3)LLM 指定的值映射不正确。如图 4 所示,VoxPoser 因其通用性和灵活性而实现了最低的规范误差。我们还发现,使用更强大的感知管道和物理上更逼真的动力学模型有助于提高整体性能。这一观察结果与我们的实际实验相吻合,在实际实验中,大部分错误都来自感知。例如,我们发现检测器对物体的初始姿态很敏感,在检测物体部分时的鲁棒性较差。
5 Conclusion, Limitations, & Future Works
在这项工作中,我们提出了一个通用框架 VOXPOSER,用于从 LLMs 和 VLMs 中提取以3D感知空间为基础的负担能力和约束条件,用于现实世界中的日常操作任务,为开放集指令和物体提供了显著的通用优势。尽管取得了令人瞩目的成果,VoxPoser 仍有一些局限性。首先,它依赖于外部感知模块,这在需要整体视觉推理或理解细粒度物体几何形状的任务中具有局限性。其次,虽然它适用于高效的动力学学习,但仍需要一个通用的动力学模型,才能以相同的泛化水平完成接触丰富的任务。第三,我们的运动规划器只考虑末端执行器轨迹,而全臂规划也是可行的,而且可能是更好的设计选择[124-126]。最后,LLM 需要人工提示工程。
我们还看到了一些令人兴奋的未来工作方向。例如,最近在多模态 LLMs 方面取得的成功 [68, 2, 127] 可以直接转化为 VoxPoser,用于直接视觉可执行(grounding)。针对对齐[128, 129]和提示[130-133]开发的方法可用于减轻提示工程的工作量。最后,还可以开发更先进的轨迹优化方法,与 VoxPoser 合成的值图实现最佳对接。
A Appendix
A.1 Code Release
我们在 github.com/huangwl18/VoxPoser 上提供了基于 RLBench [134]的 VoxPoser 开源实现,因为其任务和场景的多样性与我们的实际设置最为相似。
A.2 Emergent Behavioral Capabilities
新兴能力指的是只有在大型模型中才会出现的不可预测现象[135]。由于 VoxPoser 使用预先训练好的 LLM 作为骨干,我们观察到了由 LLM 丰富的世界知识驱动的类似的体现性新兴能力。特别是,我们将研究重点放在 VoxPoser 独有的行为能力上。我们观察到以下能力:
- 行为常识推理: 在机器人摆放餐桌的任务中,用户可以指定行为偏好,例如 “我是左撇子”,这就要求机器人在任务背景下理解其含义。VoxPoser 会决定将叉子从碗的右侧移到左侧。
- 细粒度语言校正: 对于 "用盖子盖住茶壶 "等需要高精度的任务,用户可以向机器人发出精确的指令,如 “你偏离了 1 厘米”。VoxPoser 同样会根据反馈调整自己的动作。
- 多步骤可视程序 [136, 137]: 在 "精确地将抽屉打开一半 "的任务中,由于没有物体模型,因此信息不足,VoxPoser 可以根据视觉反馈提出多步操作策略,首先完全打开抽屉,同时记录手柄位移,然后将抽屉关回中点,以满足要求。
- 估计物理特性: 给定两个质量未知的木块,机器人的任务是利用现有的斜坡进行物理实验,以确定哪个木块更重。VoxPoser 决定将两块木块推下斜坡,并选择移动最远的木块作为较重的木块。有趣的是,这反映了人类一个常见的疏忽:在一个理想的,无摩擦的世界里,两块积木在重力的作用下会移动相同的距离。这只是一个轻松的例子,说明语言模型也会表现出与人类推理类似的局限性。
A.3 APIs for VoxPoser
VoxPoser 的核心是一个由 Python 解释器执行的生成 Python 代码的 LLM。除了向 LLM 公开 NumPy [16] 和 Transforms3d 库之外,我们还提供了以下环境 API,供 LLM 选择调用:
detect(obj name)
接收物体名称并返回一个字典列表,其中每个字典对应匹配物体的一个实例,包含中心位置,占用网格和平均法向量。
execute(movable,affordance map,avoidance map,rotation map,velocity map,gripper map)
接收作为 “可移动” 的 “感兴趣的实体”(由 detect 返回的字典)和(可选)值映射列表,并调用运动规划器执行轨迹。请注意,在 MPC 设置中,“可移动” 和输入的值映射是可以重新评估的函数,以反映最新的环境观测结果。
cm2index(cm,direction)
输入以厘米为单位的所需偏移距离,并返回反映体素坐标位移的3D向量。
index2cm(index,direction)
cm2index 的倒数。输入一个整数 "索引 "和一个 "方向 "向量,然后返回 "整数 "在体素坐标中被世界坐标移动的距离(厘米)。
pointat2quat(vector)
接收末端执行器所需的指向方向,并返回满足要求的目标四元数。
set voxel by radius(voxel map,voxel xyz,radius cm,value)
为体素图中距体素 xyz 径向厘米以内的体素赋予值。
get empty affordance map()
返回初始值为 0 的默认地图,高值会吸引实体。
get empty avoidance map()
返回初始化为 0 的默认避让图,高值会排斥实体。
get empty rotation map()
返回使用当前末端执行器四元数初始化的默认旋转贴图。
get empty gripper map()
返回以当前抓取动作初始化的默认抓取图,其中 1 表示 “关闭”,0 表示 “打开”。
get empty velocity map()
返回初始化为 1 的默认地图,数字代表比例因子(例如,0.5 表示默认速度的一半)。
reset to default pose()
重置机器人休息姿势。
A.4 Real-World Environment Setup
我们使用的是 Franka Emika Panda 机器人的桌面装置。我们使用来自 Deoxys 的带阻抗的 Operational Space Controller [138]。我们将两个 RGB-D 摄像头(Azure Kinect)安装在桌面的两个相对端点:从上往下看分别位于右下方和左上方。每次滚动开始时,两个摄像头都会开始记录,并以 20 Hz 的频率返回实时 RGB-D 观察结果。
对于每项任务,我们在两种情况下对每种方法进行评估:无干扰和有干扰。对于有干扰的任务,我们在环境中施加三种干扰,并在评估开始时预先选择一个干扰序列: 1) 施加给机器人的随机力;2) 任务相关物体和干扰物体的随机位移;3) 任务进程的逆转(例如,在机器人关闭抽屉时将其拉开)。我们只将第三种干扰应用于 “相关实体” 为物体或物体部件的任务。
我们以 Code as Policies [75] 的一个变体为基准进行比较,该变体使用带有动作基元的 LLM。这些基元包括:移动到位置,按四分位旋转,设置速度,打开抓手,关闭抓手。我们不提供拾取和放置等基元,因为这些基元是为特定任务定制的,而我们的研究并不局限于这些任务(类似于 A.3 节中指定的 VoxPoser 控制 API)。
A.4.1 Tasks
Move & Avoid: “Move to the top of [obj1] while staying away from [obj2]”, where [obj1] and [obj2] are randomized everyday objects selected from the list: apple, banana, yellow bowl, headphones, mug, wood block.
Set Up Table: “Please set up the table by placing utensils for my pasta”.
Close Drawer: “Close the [deixis] drawer”, where [deixis] can be “top” or “bottom”.
Open Bottle: “Turn open the vitamin bottle”.
Sweep Trash: “Please sweep the paper trash into the blue dustpan”.
A.5 Simulated Environment Setup
我们利用 SAPIEN [120] 中的 Franka Emika Panda 机器人实现了桌面操作环境。控制器将所需的末端执行器 6-DoF 姿态作为输入,利用逆运动学计算出一连串插值航点,最后利用 PD 控制器跟踪这些航点。除了一个带有 3 个抽屉的铰接式柜子外,我们还使用了一组 10 个彩色块和 10 条彩色线。根据具体任务的不同,它们的初始化方式也不同。线条用作视觉地标,不可交互。为便于感知,在桌子的两端共安装了 4 台 RGB-D 摄像机,指向工作区的中心。
A.5.1 Tasks
我们创建了一套由 13 项任务组成的自定义任务,如表 4 所示。每个任务都有一个模板指令(如表 4 所示),可以从下面的预定义列表中随机选择一个或多个属性。在重置时,会选择一些物体(取决于具体任务),并在整个工作区进行随机化,同时确保任务在重置时尚未完成,而且任务的完成是可行的。属性的完整列表如下,分为 “seen” 和 “unseen” 两类:
A.5.2 Full Results on Simulated Environments
A.6 Prompts
第4.1节和第4.2节使用的提示可以在下面找到。
planner
: Takes in a user instruction L and generates a sequence of sub-tasks ℓi which is fed into “composer” (Note that planner is not used in simulation as the evaluated tasks consist of a single manipulation phase).
real-world: voxposer.github.io/prompts/real planner prompt.txt.
composer
: Takes in sub-task instruction ℓi and invokes necessary value map LMPs to compose affordance maps and constraint maps.
simulation: voxposer.github.io/prompts/sim composer prompt.txt.
real-world: voxposer.github.io/prompts/real composer prompt.txt.
parse query obj:
Takes in a text query of object/part name and returns a list of dictionaries, where each dictionary corresponds to one instance of the matching object containing center position, occupancy grid, and mean normal vector.
simulation: voxposer.github.io/prompts/sim parse query obj prompt.txt.
real-world: voxposer.github.io/prompts/real parse query obj prompt.txt.
get affordance map
: Takes in natural language parametrization from composer and returns a NumPy array for task affordance map.
simulation: voxposer.github.io/prompts/sim get affordance map prompt.txt.
real-world: voxposer.github.io/prompts/real get affordance map prompt.txt.
get avoidance map
: Takes in natural language parametrization from composer and returns a NumPy array for task avoidance map.
simulation: voxposer.github.io/prompts/sim get avoidance map prompt.txt.
real-world: voxposer.github.io/prompts/real get avoidance map prompt.txt.
get rotation map
: Takes in natural language parametrization from composer and returns a NumPy array for end-effector rotation map.
simulation: voxposer.github.io/prompts/sim get rotation map prompt.txt.
real-world: voxposer.github.io/prompts/real get rotation map prompt.txt.
get gripper map
: Takes in natural language parametrization from composer and returns a NumPy array for gripper action map.
simulation: voxposer.github.io/prompts/sim get gripper map prompt.txt.
real-world: voxposer.github.io/prompts/real get gripper map prompt.txt.
get velocity map
: Takes in natural language parametrization from composer and returns a NumPy array for end-effector velocity map.
simulation: voxposer.github.io/prompts/sim get velocity map prompt.txt.文章来源地址https://www.toymoban.com/news/detail-837069.html文章来源:https://www.toymoban.com/news/detail-837069.html
simulation: voxposer.github.io/prompts/sim get velocity map prompt.txt.
到了这里,关于【EAI 018】VoxPoser: Composable 3D Value Maps for Robotic Manipulation with Language Models的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!