ChatGPT 控制机器人的基本框架

       

        过去的一年,OpenAI的chatGPT将自然语言的大型语言模型(LLM)推向了公众的视野,人工智能AI如一夜春风吹遍了巴黎,全世界都为AI而疯狂。

      OpenAI ChatGPT是一个使用人类反馈进行微调的预训练生成文本模型。不像以前的模型主要在单个提示符上操作,ChatGPT通过对话提供了特别令人印象深刻的交互技能,结合了文本生成和代码合成。这些模型正在广泛的应用中发生革命性的变化。这些模型在文本生成、机器翻译和代码合成等各种任务中取得了显著的成果。进而迅速发展到文生图,文生视频的阶段,几个月前,SORA的出现更使人们惊呼人工智能时代已经到了。

  到目前为止,chatGPT输出的文本对于人类而言,已经近乎于完美,而生成的图片和视频不乏惊艳之作。但是生产的文本依然会出现文不对题的现象,而且每次输出的文本存在区别。而图片和视频还略显幼稚。有待进一步地提升。

    基于大语言模型的各种生成系统的不确定性和错误的风险,给人们一个感觉,将LLM 应用于物理设备的控制目前仍然是不现实的。LLM 在工业领域的应用仅限于知识库,图像识别的少数领域。

     本文介绍国外论文中的一些内容,探讨ChatGPT的能力是否以及如何推广到机器人领域。如果控制物理的机器人成为可能,那么将chatGPT技术延伸到物理世界就只是时间问题了。

基本思路

        机器人系统与纯文本应用程序不同,需要对现实世界的物理、环境背景以及执行物理动作的能力有深刻的理解。生成式机器人模型需要具有强大的常识性知识和复杂的世界模型,以及与用户交互的能力,以物理上可能且在现实世界中有意义的方式解释和执行命令。这些挑战超出了语言模型的原始范围,因为它们不仅必须理解给定文本的含义,还必须将意图转化为物理动作的逻辑序列。

        鉴于机器人技术是一个多种多样的领域,存在多种平台、场景和工具,因此存在各种各样的库和api。我们没有要求LLM输出特定于平台或库的代码,这可能涉及大量的微调,而是为ChatGPT创建一个简单的高级函数库来处理,然后可以在后端链接到所选择平台的实际api。因此,我们允许ChatGPT从自然对话中解析用户意图,并将其转换为高级函数调用的逻辑链。

        从上图可见,机器人的控制依然保留了现有工程控制的方式,使用API和程序库来控制机器人的动作,这里将会使用各种数字化模型,例如OPCUA ,工业4.0 管理壳等。物理设备仍然基于已有的数学模型,物理原理和机电控制算法来控制,我们并没有打算让chatGPT 来代替传统的工程设计,而是为chatGPT构建一个连接物理世界的接口。

机器人与ChatGPT

        推动机器人控制的LLM提出了几个挑战,例如提供对问题的完整而准确的描述,识别允许的函数调用和api的正确集合,以及使用特殊参数使答案结构有偏差。为了在机器人应用程序中有效地使用ChatGPT,我们构建了一个由以下步骤组成的管线:

  1. 定义一个高级机器人函数库。此库可以特定于感兴趣的形式因素或场景,并且应该映射到机器人平台上的实际实现,同时具有足够的描述性以供ChatGPT遵循;
  2. ChatGPT构建一个提示符( prompt),它描述了目标,同时还标识了库中允许的高级函数集。提示符还可以包含有关约束的信息,或者ChatGPT应该如何构建其响应;
  3. 用户在循环中评估ChatGPT输出的代码,通过直接分析或模拟,并向ChatGPT提供关于输出代码质量和安全性的反馈;
  4. 在对chatgpt生成的实现进行迭代之后,可以将最终代码部署到机器人上。

      通过这项工作,人们希望为融合LLM和机器人技术的未来研究开辟新的机会和途径。我们相信,我们的研究结果将启发和指导这个令人兴奋的领域的进一步研究,为开发新的、创新的机器人系统铺平道路,这些系统可以以自然、直观的方式与人类互动。

机器人API库的构建和描述

        机器人技术是一个成熟的领域,已经存在大量的库,无论是黑盒还是开源,都可以用于感知和动作领域的基本功能(例如对象检测和分割,映射,运动规划,控制,抓取)。如果在提示符中适当指定,LLM能够使用这些预定义的功能进行机器人推理和执行。

        提示符设计的一个重要要求是,所有API名称必须描述整个函数行为。明确的名称对于LLM推断api之间的功能连接并为问题产生所需的结果至关重要。因此,我们可以定义高级函数,它们作为来自各自库的实际实现的包装器。例如,一个名为detect_object(object_name)的函数可以在内部链接到一个OpenCV函数或一个计算机视觉模型,而像move_to(x, y, z)这样的函数可以在内部调用一个运动规划和避障管道,以及用于无人机的适当的低级电机命令。在提示符中列出这样一组高级函数是允许ChatGPT创建行为原语的逻辑序列,以及推广到不同场景和平台的关键。

提示符中清晰地描述任务细节

        通过提供对所需机器人任务及其上下文的清晰而简洁的描述,ChatGPT可以生成更准确的响应。除了机器人的api,一个好的上下文描述应该包含:

  • 约束和需求:指定与任务相关的约束或需求。如果任务涉及移动物体,你可以指定要移动的物体的重量、大小和形状。
  • 环境:描述机器人任务发生的环境。例如,如果任务是在迷宫中穿行,你可能会描述迷宫的大小和形状,以及需要避开的障碍物或危险。
  • 当前状态:描述机器人系统的当前状态。例如,如果任务是捡起一个物体,你可能会描述机器人和物体的当前位置和方向。
  • 目标和目的:陈述任务的目标和目的。如果任务是组装一个拼图,你可以指定需要组装的碎片的数量和期望的完成时间。
    •  解决方案示例:演示如何解决类似的任务,作为指导LLM案策略的一种手段。例如,如果一个任务涉及到与用户的交互,我们可以描述一个例子,说明机器人应该如何以及何时要求用户输入。注意,启动也会引入偏差,所以我们应该提供多样化的例子,避免过度规定性的语言。  
    • 任务描述

    • 完成提示工程之后,就可以向chatGPT 提出任务了,下面是一个例子

        为机器人问题定义不同api时的良好提示实践示例。明确机器人可以执行的函数定义,明确说明任务目标 。

                即使是设计良好的提示也可能不包含解决问题所需的所有必要信息,或者在某些情况下,ChatGPT无法以零概率的方式生成正确的响应。在这些情况下,我们发现用户可以采取的一个简单而有效的策略是,以聊天格式向ChatGPT发送描述问题的附加指令,并让它自行纠正。以前依赖于GPT-3模型的方法。要求用户重新设计输入提示符并从头生成新的输出。然而,ChatGPT的对话功能是一种非常有效的行为纠正工具。

仿真的重要性

        虽然ChatGPT的功能令人印象深刻,但不应忽视实际部署的安全考虑,特别是在物理机器人部署的情况下。 我们发现在ChatGPT产生意外行为的情况下,有必要让一个人在循环中进行监视和干预。此外,在将模型部署到现实世界之前,使用模拟器对评估模型的性能特别有帮助。我们强调,ChatGPT在机器人中的应用并不是一个完全自动化的过程,而是作为一种增强人类能力的工具。

结束语

        当chatGPT后,人们最沮丧的事情也许是突然发现过去的艰辛努力获得的经验,技术突然之间被AI白嫖了,而且自己在未来的角色也显得不重要了。这就是AI代替和超越人类的终结目标。现在看来并非如此。让AI 直接从头学习和理解物理世界是不现实的。将AI作为思考,推演和交互工具,与传统的物理系统作为观测与执行机构相结合是可行之路。今天,我们在解决IT/OT 融合,在不远的将来,我们将面临AI/OT的融合。

  •     AI/OT的融合是一个有趣的话题,也是可以马上开始的探索之路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Gateway自定义过滤器

自定义全局过滤器 相关面试题:统计接口调用耗时,如何落地,谈谈设计思路? 自定义统计接口耗时的全局过滤器 https://docs.spring.io/spring-cloud-gateway/docs/4.0.9/reference/html/#gateway-combined-global-filter-and-gatewa…

python中def简介及用法

什么是def? def是python中的一个关键字,它用于定义一个函数。函数是一段具有特定功能的代码,可以被重复调用,从而提高代码的复用性和可读性。 如何使用def? def的基本语法如下: def 函数名(参数列表):#…

MYSQL | 数据库到底是怎么来的?

“以史为鉴,可以让我们更深刻地理解现在,预见未来。” 要想知道一件东西是怎么发生的, 我们不妨把时间拨回关系型数据库被提出前后来探索。在信息技术飞速发展的今天,回望数据库管理系统的演进之路,我们可以深刻理解到技术进步如…

Go语言数据结构(二)堆/优先队列

文章目录 1. container中定义的heap2. heap的使用示例3. 刷lc应用堆的示例 更多内容以及其他Go常用数据结构的实现在这里,感谢Star:https://github.com/acezsq/Data_Structure_Golang 1. container中定义的heap 在golang中的"container/heap"…

ffmpeg批量旋转视频

1、新建一个txt文件,并复制如下代码进入,然后保存。 echo off & titlecd /d %~dp0md rotatefor %%a in (*.mp4) do (ffmpeg -i "%%~sa" -y -vf "transpose1" -q:v 1 "rotate\%%~na.mp4")pause2、把文件后缀修改为bat…

STC8G1K08串口通讯

/***豆腐干下位机测试 L573 CODE 3919 2021 1 25***/ /***STC8G1K08 三段时间控制程序 电机自动启停***/ #include <REG52.H> //下降一段设置 #include <intrins.h> //保压时间 #in…

js-判断变量是否定义

if (typeof myVar undefined) {// myVar (未定义) 或 (已定义但未初始化) } else {// myVar (已定义和已初始化) } 参考 https://www.cnblogs.com/redFeather/p/17662966.html

yield代码解释

目录 我们的post请求爬取百度翻译的代码 详细解释 解释一 解释二 再说一下callback 总结 发现了很多人对存在有yield的代码都不理解&#xff0c;那就来详细的解释一下 我们的post请求爬取百度翻译的代码 import scrapy import jsonclass TestpostSpider(scrapy.Spider):…

Linux网络套接字之预备知识

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、预备知识 1.理解源IP地址和目的IP地址 …

表单进阶(4)-下拉菜单

select支持&#xff1a; 1.size显示几个 2.multiple同时选中多个 如果用select&#xff0c;option必须设置value值 option支持的属性&#xff1a; 1.value&#xff0c;提供给后端的值 2.selected&#xff0c;默认选中 <!DOCTYPE html> <html lang"en"> …

编程示例: 矩阵的多项式计算以javascript语言为例

编程示例: 矩阵的多项式计算以javascript语言为例 国防工业出版社的《矩阵理论》一书中第一章第8个习题 试计算2*A^8-3*A^5A^4A^2-4I A[[1,0,2],[0,-1,1],[0,1,0]] 代码如下 <html> <head> <title> 矩阵乘法 </title> <script srcset.js ><…

【解读】OWASP 大语言模型(LLM)安全测评基准V1.0

大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;是指参数量巨大、能够处理海量数据的模型, 此类模型通常具有大规模的参数&#xff0c;使得它们能够处理更复杂的问题&#xff0c;并学习更广泛的知识。自2022 年以来&#xff0c;LLM技术在得到了广泛的应…

Selenium WebDriver API 中涉及的一些常用方法和类

Selenium WebDriver API 是 Selenium 提供的一组方法和类&#xff0c;用于控制浏览器和操作 Web 元素。这些 API 提供了丰富的功能&#xff0c;包括但不限于&#xff1a; 1. **查找元素**&#xff1a;通过不同的定位方式&#xff08;如ID、Class Name、XPath等&#xff09;在页…

C++学习随笔(1)——初识篇

前面一章我们简单介绍了一下C与C语言之间的关系&#xff0c;本章就让我们来正式入门学习一下C吧&#xff01; 目录 1.第一个C程序 2.头文件 &#xff08;1&#xff09;简介 &#xff08;2&#xff09;常见的头文件&#xff1a; 2. 命名空间 2.1 命名空间定义 2.2 命名空…

leetcode 热题 100_搜索二维矩阵

题解一&#xff1a; 二叉搜索树&#xff1a;从矩阵右上角观察&#xff0c;结构类似二叉搜索树&#xff0c;因此可以用类似的解法来做。具体做法是双指针从右上角开始&#xff0c;向左下角逐步搜索&#xff0c;如果当前值比目标值大&#xff0c;则向下移动&#xff0c;如果当前值…

了解 HTTPS 中间人攻击:保护你的网络安全

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

mybatis-plus整合spring boot极速入门

使用mybatis-plus整合spring boot&#xff0c;接下来我来操作一番。 一&#xff0c;创建spring boot工程 勾选下面的选项 紧接着&#xff0c;还有springboot和依赖我们需要选。 这样我们就创建好了我们的spring boot&#xff0c;项目。 简化目录结构&#xff1a; 我们发现&a…

Qt 实现诈金花的牌面值分析工具

诈金花是很多男人最爱的卡牌游戏 , 每当你拿到三张牌的时候, 生活重新充满了期待和鸟语花香. 那么我们如果判断手中的牌在所有可能出现的牌中占据的百分比位置呢. 这是最终效果: 这是更多的结果: 在此做些简单的说明: 炸弹(有些地方叫豹子) > 同花顺 > 同花 > 顺…

Day27:安全开发-PHP应用TP框架路由访问对象操作内置过滤绕过核心漏洞

目录 TP框架-开发-配置架构&路由&MVC模型 TP框架-安全-不安全写法&版本过滤绕过 思维导图 PHP知识点 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框架开发等 技…

安卓提示风险解决源码搭建教程

一&#xff0e;环境 1.安装Nginx 2.安装Tomcat8.5 3. 安装Mysql5.7 二&#xff0e;修改app已生成的文件下载地址 1.打开编辑config.properties 2.填写你的ip&#xff0c;端口不用修改 三&#xff0e;启动教程 启动命令&#xff1a;sh.start.sh 源码下载链接:https://p…