ChatGPT 控制机器人的基本框架

news2025/2/27 16:34:10

       

        过去的一年,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.coloradmin.cn/o/1504569.html

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

相关文章

LoadBalancer (本地负载均衡)

1.loadbalancer本地负载均衡客户端 VS Nginx服务端负载均衡区别 Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求,即负载均衡是由服务端实现的。 loadbalancer本地负载均衡,在调用微服务接口时候&a…

云计算项目十一:构建完整的日志分析平台

检查k8s集群环境,master主机操作,确定是ready 启动harbor [rootharbor ~]# cd /usr/local/harbor [rootharbor harbor]# /usr/local/bin/docker-compose up -d 检查head插件是否启动,如果没有,需要启动 [rootes-0001 ~]# system…

VARMA(Vector Auto Regressive Moving Average) in Time Series Modelling

what is VARMA? ARIMA是针对单一变量进行建模的方法,当我们需要进行多变量时序建模时,需要使用VAR and VMA and VARMA模型。 VAR:Vector Auto-Regressive,a generalization of the auto-regressive model for multivariate time series where the time series is station…

【重新定义matlab强大系列十七】Matlab深入浅出长短期记忆神经网络LSTM

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

音视频按照时长分类小工具

应某用户的需求,编写了这款根据音视频时长分类小工具。 实际效果如下: 显示的是时分秒: 核心代码: MediaInfo MI; if (MI.Open(strPathInput.c_str()) 0){return -1;}_tstring stDuration MI.Get(stream_t::Stream_Audio,0,_T…

【Flink】Flink 的八种分区策略(源码解读)

Flink 的八种分区策略(源码解读) 1.继承关系图1.1 接口:ChannelSelector1.2 抽象类:StreamPartitioner1.3 继承关系图 2.分区策略2.1 GlobalPartitioner2.2 ShufflePartitioner2.3 BroadcastPartitioner2.4 RebalancePartitioner2…

手机APP测试——如何进行安装、卸载、运行?

手机APP测试——主要针对的是安卓( Android )和苹果IOS两大主流操作系统,主要考虑的就是功能性、兼容性、稳定性、易用性、性能等测试,今天先来讲讲如何进行安装、卸载、运行的内容。 一、App安装 1、点击运行APP安装包,检测安装包是否正常; . 2、进入[安装向导]…

Java17 --- SpringCloud之OpenFeign

目录 一、OpenFeign实现服务调用 1.1、创建openfeign微服务 二、Openfeign超时控制 2.1、全局默认配置 2.2、单个微服务配置 三、重试机制 四、替换openfeign默认的HttpClient 五、请求响应压缩 六、日志打印 一、OpenFeign实现服务调用 1.1、创建openfeign微服…

LLM长上下文外推方法

现在的LLM都集中在卷上下文长度了,最新的Claude3已经支持200K的上下文,见:cost-context。下面是一些提升LLM长度外推能力的方法总结: 数据工程 符尧大佬的最新工作:Data Engineering for Scaling Language Models to …

[虚拟机保护逆向] [HGAME 2023 week4]vm

[虚拟机保护逆向] [HGAME 2023 week4]vm 虚拟机逆向的注意点:具体每个函数的功能,和其对应的硬件编码的*长度* 和 *含义*,都分析出来后就可以编写脚本将题目的opcode转化位vm实际执行的指令 :分析完成函数功能后就可以编写脚本输出…

c++ primer plus 笔记 第十六章 string类和标准模板库

string类 string自动调整大小的功能: string字符串是怎么占用内存空间的? 前景: 如果只给string字符串分配string字符串大小的空间,当一个string字符串附加到另一个string字符串上,这个string字符串是以占用…

Spring web开发(入门)

1、我们在执行程序时,运行的需要是这个界面 2、简单的web接口(127.0.0.1表示本机IP) package com.example.demo;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestCont…

代码学习记录15

随想录日记part15 t i m e : time: time: 2024.03.09 主要内容:今天的主要内容是二叉树的第四部分,主要涉及平衡二叉树的建立;二叉树的路径查找;左叶子之和;找树左下角的值&#xff…

考研复习C语言初阶(4)+标记和BFS展开的扫雷游戏

目录 1. 一维数组的创建和初始化。 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 2. 二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存储 3. 数组越界 4. 冒泡…

3.DOM-事件进阶(事件对象、事件委托)

环境对象this 环境对象本质上是一个关键字 this this所在的代码区域不同,代表的含义不同 全局作用域中的this 全局作用域中this代表window对象 局部作用域中的this 在局部作用域中(函数中)this代表window对象 原因是函数调用的时候简写了,函数完整写…

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

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

[数据集][目标检测]变电站缺陷检测数据集VOC+YOLO格式8307张17类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8307 标注数量(xml文件个数):8307 标注数量(txt文件个数):8307 标注…

Java8 CompletableFuture异步编程-进阶篇

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前言 我们在前面文章讲解了CompletableFuture这个异步编程类的基本用法,…

【操作系统概念】第11章:文件系统实现

文章目录 0.前言11.1 文件系统结构11.2 文件系统实现11.2.1 虚拟文件系统 11.3 分配方法11.3.1 连续分配11.3.2 链接分配11.3. 3 索引分配 11.5 空闲空间管理11.5.1 位图/位向量11.5.2 链表11.5.3 组 0.前言 正如第10章所述,文件系统提供了机制,以在线存…

【数据分享】2000-2022年全国1km分辨率的逐年PM2.5栅格数据(免费获取)

PM2.5作为最主要的空气质量指标,在我们日常研究中非常常用!之前我们给大家分享了2013-2022年全国范围逐日的PM2.5栅格数据(可查看之前的文章获悉详情)! 本次我们给大家带来的是2000-2022年全国范围的逐年的PM2.5栅格数…