ChatGPT 的功能目前已扩展到机器人领域,可以用语言直观控制如机械臂、无人机、家庭辅助机器人等的多个平台。这会改变人机交互的未来形式吗?
你可曾想过用自己的话告诉机器人该做什么,就像对人说话那样?
比如说,只要告诉你的家庭助理机器人「请帮我热一下午餐」,然后它就能自己找到微波炉。很神奇,对吗?
尽管语言是人类表达意图的最直观的方式,但此前很长一段时间,人们仍然严重依赖手写代码来实现对机器人的控制。不过,当 ChatGPT 出现之后,这种情况要变一下了。
在最近的一项研究中,微软团队在探索如何使用 OpenAI 的新 AI 语言模型 ChatGPT 来使自然的人机交互成为可能。

论文链接:
https://www.microsoft.com/en-us/research/uploads/prod/2023/02/ChatGPT___Robotics.pdf
ChatGPT 是一个在大量文本和人类互动语料库上训练的语言模型,因此应对广泛的 prompt 和问题时,它可以生成连贯且语法正确的响应。这项研究的目标是看看 ChatGPT 是否可以超越文本思考,并对现实世界进行推理,以帮助机器人完成任务。研究者希望以此便利人们与机器人的互动,而不需要学习复杂的编程语言或机器人系统的细节。
研究的关键挑战在于教会 ChatGPT:如何通过考虑物理定律、操作环境以及机器人运用肢体动作改变周遭环境的方式来解决问题。
事实证明,ChatGPT 本身可以做很多事情,但它仍然需要一些帮助。团队在论文中描述了一系列可用于指导语言模型解决机器人任务的设计原则,包括(但不限于)特别 prompt 结构、高级 API 和通过人类文本反馈。研究者认为,这项工作只是开发机器人系统的转变的开始,并且希望通过这项研究激励其他研究人员加入这个有趣的研究领域。
当今机器人技术面临的挑战,以及 ChatGPT 能提供的帮助
目前机器人的操作流是从工程师或技术用户开始,需要他们将任务需求转换为系统代码。工程师会处于工作流程的回路中,他们需要不断编写新的代码和规范来纠正机器人的行为。总得来说,这个过程是缓慢的(用户需要编写低级代码)、昂贵的(需要对机器人技术有深入了解的高技能用户)且低效的(需要多次交互才能正常运转)。

但 ChatGPT 开启了一种新的机器人范式,并允许潜在的非技术型用户参与到回路之中,在监视机器人性能的同时向大型语言模型(LLM)提供高级反馈。通过遵循研究的设计原则,ChatGPT 可以为机器人场景生成代码。在没有任何微调的情况下,研究利用 LLM 的知识来控制不同的机器人形状,以完成各种任务。工作中,研究人员展示了多个 ChatGPT 解决机器人难题的示例,以及在操作、空中和导航领域的复杂机器人部署。
机器人与 ChatGPT:设计原则
Prompting LLM 是一门高度实证的科学。研究通过反复试验建立了一套为机器人任务编写 prompt 的方法和设计原则:

首先,研究定义了一组高级机器人 API 或函数库。这个库可以特定于特定的机器人,并且可以映射到机器人的控制堆栈或感知库中现有的低级实现。对高级 API 使用描述性名称非常重要,这样 ChatGPT 就可以推断它们的行为;
接下来,研究人员为 ChatGPT 编写一个文本 prompt,它描述了任务目标,同时明确说明来自高级库的哪些函数是可用的。Prompt 还可以囊括关于任务约束的信息,或者 ChatGPT 应该如何形成其答案(特定的编码语言,使用辅助解析元素);
用户在回路中评估 ChatGPT 的代码输出,要么通过直接检查,要么使用模拟器。如果需要,用户可以使用自然语言向 ChatGPT 反馈答案的质量和安全性。
用户满意解决方案的话,代码就可以最终部署到机器人上。
理论已经够多了,ChatGPT 到底能做什么?
让我们参看几个例子,你还可以在代码库中找到更多案例研究。
零样本任务计划
研究人员让 ChatGPT 控制真正的无人机,经证明,它是非技术用户和机器人之间非常直观的基于语言的接口。当用户的指令含糊不清时,ChatGPT 会提出要明晰问题,并为无人机编写复杂的代码结构以直观地检查架构,例如锯齿形模式。它甚至学会了自拍!


研究人员还使用 Microsoft AirSim 模拟器在一个模拟工业检验场景中使用 ChatGPT。该模型能够有效地解析用户的高级意图和几何线索,从而准确地控制无人机。


回路中的用户:当复杂的任务需要对话时
接下来,研究人员将 ChatGPT 用于机械臂的操作场景,并使用对话反馈来教会模型如何将最初提供的 API 组合成更复杂的高级函数:ChatGPT 自动编程。该模型能够使用课程本位策略,按照逻辑将学习到的技能链接在一起,以执行诸如堆叠块等操作。
此外,当用木块构建微软标志时,该模型展示了一个连接文本和物理域的完美示例。它不仅能够从内部知识库中回忆 logo,还能够「绘制」logo(作为 SVG 代码),然后使用上面学到的技能来找出哪些现有的机器人动作可以构成其外形。

接下来,研究人员让 ChatGPT 编写一个算法,让无人机在达到空中目标的同时不撞上障碍物。他们告诉模型,这架无人机有一个面向前方的距离传感器,ChatGPT 立即为算法编写了大部分关键构建块。这项任务需要与人进行一些对话,ChatGPT 仅使用语言反馈就能进行本地化代码改进的能力令人印象深刻。
感知 - 行动回路:机器人在行动前感知世界
在做某事(行动)之前感知世界(感知)的能力是任何机器人系统的基础。因此,研究人员决定测试 ChatGPT 对这个概念的理解,并要求它探索一个环境,直到找到用户指定的对象。研究为模型提供了对象检测和对象距离 API 等功能,并验证了它生成的代码成功实现了感知 - 行动循环。
在实验阶段,研究者进行了额外的实验,以评估 ChatGPT 是否能够根据传感器反馈实时决定机器人应该去哪里(而不是让 ChatGPT 生成一个代码回路来做出这些决定)。有趣的是,恰好验证了可以在对话的每一步中输入相机图像的文本描述,并且模型能够弄清楚如何控制机器人,直到它到达特定的对象。
PromptCraft, LLM + 机器人研究的协作开源工具
良好的 Prompt 工程对于大型语言模型的成功至关重要,例如 ChatGPT 用于机器人任务。可惜,Prompt 是一门实证科学,缺乏全面和可访问的资源,其中能为该领域的研究人员和爱好者提供帮助的例子也是良莠不齐。为了弥合这一差距,研究者引入了「PromptCraft」,这是一个协作开源平台,任何人在这里都可以分享不同机器人类别的 Prompt 策略示例,而且,研究者公布了在这项研究中使用的所有 Prompt 和对话。
除了 Prompt 设计,研究还希望包括多个机器人模拟器和界面,允许用户测试他们的 ChatGPT 生成的算法。作为开始,研究还发布了一个与 ChatGPT 集成的 AirSim 环境,任何人都可以使用它来展开这些想法。

ChatGPT-AirSim 接口
让机器人走出实验室,走向世界
发布这些技术是一件值得庆祝的事,因为这会扩大机器人技术的受众面。微软的研究人员相信,基于语言的机器人控制将会为让机器人从科学实验室走进日常用户的生活中奠定基础。
本文要强调的是,在没有仔细分析的情况下,ChatGPT 的输出并不意味着要直接部署在机器人上。研究者鼓励用户利用模拟的力量,以便在潜在的现实生活部署之前评估这些算法,并始终采取必要的安全预防措施。本文所讲述的工作只代表了在机器人领域运行的大型语言模型的交集中可能实现的一小部分,希望能为更多的研究提供灵感。
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年