最近几个月,ChatGPT 大火,它是OpenAI于去年11月底推出的人工智能聊天机器人程序,已经成为了历史上增长最快的消费者应用程序 [1]。毫无疑问,ChatGPT受到了各个行业的广泛关注。
其中在机器人领域,微软于今年2月20日发布了"ChatGPT for Robotics"的技术报告 [2],为如何将ChatGPT 融入机器人领域提供了一种可能的视角。与纯文本的应用不同,机器人系统需要对现实世界的物理、环境背景和物理动作的执行能力有深入的了解。而且所生成机器人模型需要具备相当的常识性知识和符合实际的物理模型,以及与用户交互以解释和执行实际现实中可行的命令。下面笔者将根据这份报告,解读怎样在机器人领域使用ChatGPT 来提升生产力。
一、Pipeline设计流程
1. 整体流程
ChatGPT 本质上是一个语言模型,采用对话的形式,根据用户的指令做出相应的回应。从最基本的语言回应,到代码生成与debug,再到情景角色扮演,这些应用的一个核心关键就是用户提示词的撰写(prompt),用户需要通过准确详细的提示词告诉ChatGPT应该做什么,然后让ChatGPT 去执行。为此,
1.首先需要手工设计一系列的机器人功能库函数来实现底层执行器的命令,如,移动,停止,获得目标的位置信息等等。
2.第二步是给ChatGPT 写一个提示词,用来描述需要让ChatGPT 执行的目标。
3.第三步是使用者评估ChatGPT 生成的代码,并且给ChatGPT 提供反馈,让ChatGPT 进行下一步改进。
4.通过提供反馈,将代码进行不断迭代改进,当用户测试通过之后,就可以部署到实际的系统中了。
流程图如下:
图 1 利用ChatGPT 进行机器人顶层算法设计 [2]
2. 关于Prompt 的注意事项
如果想要让ChatGPT 更容易理解用户的意思,产生更准确的回应,那么用户所给出的提示词就需要清晰明了:描述中除了要包含让ChatGPT调用的底层机器人功能库函数之外,还要考虑以下几点内容:
1.具体的任务要求和约束条件:举个例子比如说想要让机器人移动物体,那么prompt 里面首先要介绍相关信息告诉ChatGPT,比如物体的位置、尺寸等等。
2.对环境的描述:提示词中需要描述清楚这个任务是在什么环境下进行的。举个例子来说,比如目标任务是在迷宫中导航,那么就需要介绍迷宫的尺寸和形状,以及里面存在的障碍物等信息。
3.目前的状态信息:需要告诉ChatGPT 机器人系统目前的它的状态信息,比如位置、朝向等等。
4.目标:比如任务是组装一个拼图,那就需要告诉ChatGPT 需要拼接的零件数目以及期望的完成时间。
5.解决方案的样例:当任务比较复杂的时候,比如需要ChatGPT 与使用者进行交互的时候,可以通过给一些例子来描述这个过程。见下图。作者向ChatGPT提供了一个机器人何时向人类询问以获取进一步指令的例子。
图 2 提供范例告诉ChatGPT如何以及何时与用户进行交互以寻求帮助 [2]
(点击图片查看大图)
6.提示词的设计原则:可参考:https://learningprompt.wiki,该网站指出了设计提示词的所有技巧和原则。也可以参考https://promptperfect.jina.ai/,该网站能够自动优化所使用的提示词,从而让ChatGPT提供期望的高质量结果。
二、潜在应用前景
在设计完成Pipeline 之后,就可以把目光转到ChatGPT的具体机器人应用上来:如仿真环境下无人机的任务规划和避障,现实世界的空中无人机感知和操纵部署等等。
值得注意的是,在微软的文章中 [2],除了展示ChatGPT 的强大能力之外,也强调了ChatGPT的局限性:不应忽视实际的部署安全性问题,尤其是在实际物理系统机器人部署的情况下。在 ChatGPT有可能产生意外行为的情况下,必须有人在循环中进行监控和干预。此外,在将模型部署到现实世界之前,使用模拟器进行仿真有助于更好地评估模型的性能。文中强调,将 ChatGPT 用于机器人技术并不是完全自动化的过程,而是充当增强人类能力的工具。
本文中主要把应用场景分成了三类:零样本任务规划、通过人在回路的反馈交互来完成复杂任务、包含感知层的任务执行。笔者将针对这三种情况进行一一介绍。
1. 零样本任务规划
(1)在AirSim 环境下的工业巡检
在该情境下,即使是让非专业的使用者通过ChatGPT 也能够控制无人机完成工业巡检任务目标。
ChatGPT 能够理解用户的意图并且能够精准控制无人机完成任务。视频见https://www.youtube.com/watch?v=38lA3U2J43w
图 3 AirSim 环境下的工业巡检 [2]
(2)通过人与机器人的语言交互达成现实世界中无人机的飞行任务
ChatGPT 在用户和机器人之间提供了极其直观的自然语言交互界面,仅仅根据一些模棱两可和定义不明确的指令就可以编写机器人代码,并在必要时请求问题的进一步阐释。这种交互模式能够为无人机导航的任务编写复杂的代码结构。视频链接见https://youtu.be/i5wZJFb4dyA
2. 使用者在回路:通过与ChatGPT交互式对话实现复杂任务
这一部分专注于让ChatGPT 执行复杂任务。这种交互方式允许复杂的结构,例如课程学习(curriculum learning)。在这种情况下,会教授给ChatGPT较小规模的技能,这些技能可以结合起来用于更大、更复杂的任务。此外,ChatGPT 能够获取有关生成的代码的文本反馈,并修改其代码,从而使非专业使用者能够轻松地与之交互。
(1)利用Curriculum learning 实现对物体的操纵摆放
第一个例子是使用机械臂设置了一个块排列任务,为此设计了一个课程。ChatGPT 被要求学习更简单的拾取对象然后放置它们的技能。随后,当被要求使用这些技能来执行更复杂的块排列任务时,ChatGPT将这些学到的技能能够组合在一起。此外,当任务是用五块构建微软徽标时,该模型展示了一个典型的通用性示例,它可以桥接文本域和物理域:因为此任务需要记住公司徽标的外观,包括其颜色,然后将徽标抽象为可由现有机器人动作构建的物理部分。
图4 用机械臂实现物块摆放 [2]
视频链接见https://youtu.be/wLOChUtdqoA
(2)在AirSim 环境下实现无人机避障
ChatGPT 可以为配备前向距离传感器的无人机编写具有避障功能的目标到达算法。ChatGPT 构建了避障算法的大部分关键模块,但仍需要一些人工反馈以进行矫正。尽管人工反馈以高级文本形式提供,但ChatGPT 能够理解人的指令要求并对代码进行相应的修改。
图5 AirSim 环境下实现无人机避障 [2]
视频链接见https://youtu.be/Vn6NapLlHPE
3. 具备感知功能后进行行动
文章还评估了 ChatGPT 进行感知-动作循环的能力。首先,模型能够利用 API 库在其输出代码中构建感知-动作循环的能力。它能够正确地利用图像采集和目标检测等感知功能来提取机器人导航和控制的相关信息。然后进一步的,使用者可以通过文本对话不断向模型提供感知信息,用户在对话期间可以将观察结果(转换为文本格式)输入 ChatGPT。ChatGPT 能够解析此观察流并输出相应的操作。
具身智能:目标导航
该任务中ChatGPT 拥有了对计算机视觉模型的访问权限,并作为其功能库的一部分,赋予它探索未知环境并导航到用户指定对象的任务。对象检测 API(后端的 YOLOv8 [3])返回边界框,ChatGPT 生成代码来估计相对对象角度并向它们导航。当用户向 ChatGPT 提供来自深度传感器的附加信息时,它产生了一种带有像素深度掩码的改进算法。
图6 提供视觉接口后进行目标导航 [2]
视频链接见 https://youtu.be/p0fDH9zZm_c
三、总结
在微软的这份文档中,提出了一个将 ChatGPT 用于机器人应用程序的框架。该框架首先需要设计和实施用于机器人控制的 API 库,这些 API 可以帮助 ChatGPT 进行顶层设计。并且,该框架能够用于多种机器人应用场景中:如空中机器人、操纵和视觉导航的部署等等。同时文章也强调,不应让这些工具完全控制机器人系统,尤其是对于安全关键型系统, 因为ChatGPT具有生成错误响应的倾向。因此在实际机器人上执行代码之前,应该在人工监督下确保代码的质量和安全性。
参考文献
[1] https://redian.news/wxnews/251179
[2] Vemprala, Sai, et al. "ChatGPT for Robotics: Design Principles and Model Abilities." (2023).
[3] Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings ofthe IEEE conference on computer vision and pattern recognition. 2016.
本文共2793字
由西湖大学智能无人系统实验室博士生小米原创
申请文章授权请联系后台运营人员
﹀
﹀
﹀
-END-
往期推荐
【集群控制】基于维诺图的集群控制方法
【强化学习】强化学习环境ISAAC GYM(二)-再探索(Docker + 4090)
【视觉感知】运动目标检测算法简介及其应用
【一张图讲完强化学习原理】 30分钟了解强化学习名词脉络
软件设计——SOLID原则(一)
浅析Fisher 信息
▌知乎:空中机器人前沿
▌Bilibili:西湖大学空中机器人
▌Youtube:Aerial robotics @ Westlake University
▌实验室网站:https://shiyuzhao.westlake.edu.cn