PROGPROMPT:使用大语言模型生成情境机器人任务规划

244 篇文章 0 订阅
193 篇文章 0 订阅

22年9月来自 USC 和 Nvidia 的论文 “PROGPROMPT: Generating Situated Robot Task Plans using Large Language Models”。

任务规划可能需要定义机器人需要在其中行动的世界中大量领域知识。为了减轻这种负担,大语言模型 (LLM) 可用于在任务规划期间对潜在的下一步行动进行评分,甚至在给出自然语言指令而无需额外领域信息的情况下,直接生成行动序列。然而,这些方法要么需要列举所有可能的下一步行动进行评分,要么生成自由格式的文本,其中可能包含给定机器人在当前环境中不可能执行的操作。本文提出一种程序化的 LLM 提示结构,规划能够跨越情境环境、机器人能力和任务的生成功能。其关键见解是使用程序式规范提示 LLM,该规范可用于环境中的可用动作和目标,以及可以执行的示例程序。通过消融实验对提示结构和生成约束提出具体建议,展示 VirtualHome 家务任务的最新成功率,并将方法部署在物理机器人手臂上以执行桌面任务。

PROGPROMPT 是一种超越自然语言中 LLM 条件的提示方案。PROGPROMPT 利用编程语言结构,利用 LLM 在包含许多编程教程和代码文档的庞大网络语料库上进行训练的事实,如图所示。

请添加图片描述

将机器人规划表示为 Python 程序。按照 LLM 提示的范例,创建一个结构化为 Python 代码的提示,并使用 LLM 来完成代码。用 Python 中可用的功能来构建提示,以自然语言指令为条件,引出 LLM 生成情境机器人任务规划。如图所示是 PROGPROMPT 包括import语句、目标列表和示例任务(PROMPT for planning)。The Generated Plan 适用于 microwave salmon。突出显示提示注释、以目标为参数的导入函数调用的操作以及带有恢复步骤的assertions。PROMPT for state feedback 表示示例断言检查。进一步展示程序的执行情况。展示一个断言成功或失败的场景,以及生成的规划如何在执行下一步之前纠正错误。程序的 Full Execution 显示在右下角。

请添加图片描述

规划函数由动作原语的 API 调用、用于总结动作的注释以及用于跟踪执行的断言组成,如图所示。原语动作使用目标作为参数。例如,“将鲑鱼放入微波炉”任务包括诸如 find(salmon) 之类的 API 调用。

请添加图片描述

利用代码中的注释为后续操作序列提供自然语言摘要。注释有助于将高级任务分解为逻辑子任务。例如,上图中,“put salmon in microwave”任务使用注释“# grab salmon”和“# put salmon in microwave”分解为子任务。这种划分可以帮助 LLM 用自然语言表达其关于任务和子任务的知识并帮助规划。注释还会告知 LLM 当前目标,从而减少输出不连贯、发散或重复的可能性。先前的研究 [36] 也表明,类似的中间摘要(称为“思维链”)对于提高 LLM 在一系列算术、常识和符号推理任务上的表现非常有效。通过经验验证注释的效用。

断言提供了一种环境反馈机制,以确保先决条件成立,并在先决条件不成立时启用错误恢复。例如,上图中,在执行 grab(salmon) 操作之前,规划断言智体已接近 salmon。如果不是,智体将首先执行 find(salmon)。此类断言语句有利于规划生成。

通过提示构造向 LLM 提供有关环境和原始操作的信息。与在少样本 LLM 提示中所做的一样,向 LLM 提供了示例任务和规划的示例。提示函数 fprompt,接收所有信息(观察、动作原语、示例)并生成 Pythonic 提示,供 LLM 完成。然后,LLM 将 <next_task>(.) 预测为可执行函数。

PROGPROMPT 还包括一些示例任务——完全可执行的程序规划。每个示例任务都演示了如何使用给定环境中的可用动作和目标来完成给定任务。这些示例演示了任务名称(作为函数句柄给出)与要执行动作之间的关系,以及对要涉及的动作和目标的限制。

LLM 根据 PROGPROMPT 提示完全推断给定的任务。生成的规划在虚拟智体或物理机器人系统上使用解释器执行,该解释器针对环境执行每个动作命令。执行期间以闭环方式进行断言检查,提供当前环境状态反馈。

模拟环境

在虚拟家庭 (VH) 环境 [8] 中评估了该方法,这是一个用于典型家庭活动的确定性模拟平台。VH 状态 s 是一组目标 O 和属性 P。P 编码诸如 in(salmon, microwave) 和 agent close to(salmon) 之类的信息。动作空间为 A = {抓取、放入、放回、行走、查找、打开、关闭、打开、关闭、坐下、站立}。

对 3 个 VH 环境进行实验。每个环境包含 115 个唯一目标实例,包括类级重复项。每个目标都具有与其动作affordance相对应的属性。一些目标还具有语义状态,如已加热、已清洗或已使用。例如,食物类别中的目标可以在 in(object, microwave) ∧switched on(microwave) 时变为加热(heated)状态。

创建了一个包含 70 个家庭任务的数据集。任务由高级指令组成,例如“microwave salmon”。从初始状态收集完成任务的真实动作序列,并记录定义一组符号目标条件的最终状态 g,g ∈ P。

在执行生成的程序时,会结合环境状态反馈来响应断言。VH 以状态图的形式提供观察结果,其中包含目标属性和关系。为了检查此环境中的断言,从状态图中提取有关相关目标的信息,并提示 LLM 返回断言是否成立,给出状态图和断言作为文本提示。

真实机器人实验

用带有平行钳口夹持器的 Franka-Emika Panda 机器人。假设可以访问拾取和放置策略。该策略将目标对象和目标容器的两个点云作为输入,并执行拾取和放置操作以将目标放置在容器上或容器内。用 [37] 的系统来实现该策略,并使用 MPPI 进行运动生成,使用 SceneCollisionNet [37] 避免碰撞,并使用 Contact-GraspNet [38] 生成抓握姿势。

为 PROGPROMPT 的操作 grab 和 putin(obj1, obj2) 指定了一个导入语句。使用开放词汇目标检测模型 ViLD [39] 来识别和分割场景中的目标并构建提示的可用目标列表。与虚拟环境中的目标列表,是所有任务共同的全局变量不同,这里的目标列表是每个规划函数的局部变量,这允许更大的灵活性来适应新目标。LLM 输出一个包含形式为 grab 和 putin(obj1, obj2) 的函数调用规划。这里,目标 obj1 和 obj2 是文本字符串,用 ViLD 分割掩码和深度图像将其映射到点云。由于现实世界的不确定性,不会在桌面规划上实现基于断言的闭环选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值