**本文对OpenAI的ChatGPT[1]在机器人应用中的使用进行了实验研究。**本文概述了一种策略,将prompt工程的设计原则和高级函数库的创建相结合,使ChatGPT能够适应不同的机器人任务、模拟器和形状因素。重点评估了不同的提示工程技术和对话策略对执行各种类型的机器人任务的有效性。探讨了ChatGPT使用自由形式对话、解析XML标签和合成代码的能力,以及使用特定任务的提示函数和通过对话进行闭环推理的能力。**本文研究涵盖了机器人领域的一系列任务,从基本的逻辑、几何和数学推理一直到复杂的领域,如空中导航、操纵和具身智能体。**ChatGPT可以有效地解决其中的几个任务,同时允许用户主要通过自然语言指令与之交互。此外,本文还介绍了一个名为PromptCraft的开源研究工具,其中包括一个研究人员可以协作上传并投票的机器人应用程序的良好提示方案示例的平台,以及一个集成ChatGPT的机器人模拟器示例,使用户更容易开始使用ChatGPT机器人。
自然语言处理(NLP)的快速发展导致了大型语言模型(LLMs)的发展,如BERT[2]、GPT-3[3]和Codex[4],这些模型正在对广泛的应用程序进行革命。这些模型在文本生成、机器翻译和代码合成等各种任务中都取得了显著的效果。这个模型集合的最新成员是OpenAI ChatGPT[1],这是一个预训练的生成文本模型,使用人类反馈进行了微调。与以前主要基于单个提示符操作的模型不同,ChatGPT通过对话提供了特别令人印象深刻的交互技能,结合了文本生成和代码合成。我们在本文中的目标是研究ChatGPT的能力是否以及如何推广到机器人领域。我们将ChatGPT的功能扩展到机器人领域,并使用语言直观地控制了多个平台,如机器人手臂、无人机和家庭助理机器人。
你有没有想过用你自己的语言告诉机器人该做什么,就像你对人类做的那样?如果只是告诉你的家庭机器人助手:“请把我的午餐热一下”,然后让它自己找到微波炉,这不是很神奇吗?尽管语言是我们表达意图最直观的方式,但我们仍然严重依赖手写代码来控制机器人。我们的团队一直在探索如何改变这一现实,并使用OpenAI的新AI语言模型ChatGPT使自然的人-机器人交互成为可能。
ChatGPT是一个在大量文本和人类交互语料库上训练的语言模型,它可以对各种各样的提示和问题生成连贯且语法正确的回答。我们这项研究的目标是看看ChatGPT是否能超越文本思考,并对物理世界进行推理,以帮助机器人任务。我们希望帮助人们更容易与机器人互动,而不需要学习复杂的编程语言或机器人系统的细节。这里的关键挑战是教ChatGPT如何解决问题,考虑物理定律,操作环境的上下文,以及机器人的物理行为如何改变世界的状态。
近年来,在将语言纳入机器人系统方面有不同的尝试。这些工作主要集中在针对特定形式因素或场景使用语言token嵌入模型、LLM特征和多模态模型特征。应用范围从视觉-语言导航[5,6],基于语言的人机交互[7,8]和视觉-语言操作控制[9,10,11]。然而,尽管在机器人中使用LLMs有潜在的优势,但大多数现有方法都受到严格的范围和有限的功能集的限制,或其开环性质的限制,不允许从用户反馈中进行流动交互和行为纠正。当被要求进行高层智能体规划[12,13]或代码生成[14,15]时,GPT-3、LaMDA和Codex等模型也在零样本机器人场景中显示出希望。这些早期的演示启发我们研究ChatGPT,将其作为机器人领域的一个潜在的更多功能的工具,因为它结合了自然语言和代码生成模型的优势以及对话的灵活性。ChatGPT能够参与自由形式的对话和捕获长上下文,允许用户以更自然的方式与模型交互,并灵活地进行行为矫正。
本文旨在展示ChatGPT在机器人应用中的潜力。我们概述了一个关键概念,它解锁了用ChatGPT解决机器人应用程序的能力,这是创建一个高级函数库。由于机器人是一个多样化的领域,存在多种平台、场景和工具,因此存在各种各样的库和api。我们创建了一个简单的高级函数库供ChatGPT处理,然后可以在后端链接到所选平台的实际API,而不是要求LLM输出特定于平台或库的代码,这可能涉及大量的微调。因此,我们允许ChatGPT从自然对话框中解析用户意图,并将其转换为高级函数调用的逻辑链。本文还概述了一些帮助ChatGPT解决机器人任务的提示工程指南。
事实证明,ChatGPT本身可以做很多事情,但它仍然需要一些帮助。我们的技术论文描述了一系列设计原则,可用于指导语言模型解决机器人任务。这些包括但不限于特殊的提示结构、高级API和通过文本的人工反馈。我们相信,我们的工作只是我们如何开发机器人系统的转变的开始,我们希望激励其他研究人员进入这个令人兴奋的领域。继续阅读有关我们的方法和想法的更多技术细节。
当今机器人技术的挑战,以及ChatGPT如何提供帮助
机器人系统与纯文本应用不同,需要对现实世界的物理、环境上下文和执行物理动作的能力有深刻的理解。一个生成式机器人模型需要有一个强大的常识知识和一个复杂的世界模型,以及与用户交互的能力,以物理上可行的方式解释和执行命令,在现实世界中有意义。这些挑战超出了语言模型的原始范围,因为它们不仅必须理解给定文本的含义,还必须将意图翻译为物理动作的逻辑序列。
当前的机器人管道从工程师或技术用户开始,他们需要将任务需求转换为系统的代码。工程师在循环中,这意味着他们需要编写新的代码和规范来纠正机器人的行为。总的来说,这个过程是缓慢的(用户需要编写低级代码),昂贵的(需要具有深度机器人知识的高技能用户),并且低效的(需要多次交互才能让事情正常工作)。
ChatGPT开启了一种新的机器人范式,并允许(潜在的非技术)用户参与循环,在监视机器人性能的同时向大型语言模型(LLM)提供高级反馈。通过遵循我们的设计原则,ChatGPT可以为机器人场景生成代码。在没有任何微调的情况下,我们利用LLM的知识来控制不同的机器人形状,以完成各种任务。在我们的工作中,我们展示了多个ChatGPT解决机器人难题的示例,以及在操作、空中和导航领域的复杂机器人部署。 ChatGPT机器人技术:设计原则
LLMs是一门高度经验主义的科学。通过反复试验,我们建立了一套方法和一套设计原则,用于为机器人任务编写提示:
首先,我们定义一组高级机器人api或函数库。这个库可以特定于特定的机器人,并且应该映射到机器人的控制栈或感知库中的现有底层实现。对高级api使用描述性的名称非常重要,这样ChatGPT可以推断它们的行为; * 接下来,我们为ChatGPT编写一个文本提示,它描述了任务目标,同时也明确说明了高级库中的哪些函数可用。提示符还可以包含关于任务约束的信息,或者ChatGPT应该如何形成它的答案(使用特定的编码语言,使用辅助解析元素); * 用户停留在循环中来评估ChatGPT的代码输出,要么通过直接检查,要么使用模拟器。如果需要,用户可以使用自然语言向ChatGPT反馈答案的质量和安全。 * 当用户对解决方案感到满意时,就可以将最终代码部署到机器人上。
ChatGPT到底能做什么?
零样本任务规划
我们让ChatGPT访问控制真正无人机的功能,事实证明,它是非技术用户和机器人之间非常直观的基于语言的界面。当用户的指示模棱两可时,ChatGPT会提出澄清性问题,并为无人机编写复杂的代码结构,如z字形模式以视觉检查货架。它甚至学会了自拍!📷😎 我们还在使用Microsoft AirSim模拟器的模拟工业检测场景中使用ChatGPT。该模型能够有效地解析用户的高层意图和几何线索,从而准确地控制无人机。
循环中的用户:当一个复杂的任务需要对话时
接下来,我们将ChatGPT用于机器人手臂的操作场景。我们使用对话反馈来教模型如何将最初提供的API组合成更复杂的高级函数:ChatGPT自己编码。通过使用基于课程的策略,该模型能够将这些学习到的技能逻辑地链接在一起,以执行堆叠积木等操作。 此外,当任务是用木块构建微软标志时,该模型展示了一个连接文本和物理域的有趣示例。它不仅能够从其内部知识库中回忆徽标,还能够“绘制”徽标(作为SVG代码),然后使用上述学到的技能来确定现有的机器人动作可以组成其物理形式。
接下来,我们委托ChatGPT编写一个算法,使无人机在不撞到障碍物的情况下在太空中达到目标。我们告诉模型,这架无人机有一个面向前方的距离传感器,ChatGPT立即为算法编写了大多数关键的构建模块。这项任务需要与人类进行一些对话,我们对ChatGPT仅使用语言反馈进行本地化代码改进的能力印象深刻。
感知-行动循环:机器人在行动之前感知世界
在做某事(行动)之前感知世界(感知)的能力是任何机器人系统的基础。因此,我们决定测试ChatGPT对这个概念的理解,并让它探索一个环境,直到找到用户指定的对象。我们允许模型访问诸如对象检测和对象距离API等函数,并验证了它生成的代码成功地实现了感知-动作循环。在实验角色中,我们运行了额外的实验来评估ChatGPT是否能够根据传感器实时反馈来决定机器人应该去哪里(而不是让ChatGPT生成一个代码循环来做出这些决定)。有趣的是,我们验证了我们可以在每一步将相机图像的文本描述输入到聊天中,并且该模型能够弄清楚如何控制机器人,直到它到达特定的对象。