Google机器人团队获ICRA 2023 机器人学习方向最佳论文奖:机器人实体控制的大语言模型程序

这篇论文主要讨论了大型语言模型(LLM)在机器人控制方面的应用。作者们指出,尽管LLM在理解和生成自然语言方面表现出色,但其在实际应用中,如机器人控制等领域的应用仍然有限。因此,他们提出了一种新的方法,即使用LLM编写代码来控制机器人的行为。
在这里插入图片描述

他们发现,编写代码的LLM在规划、策略逻辑和控制方面表现出色。这些模型可以被重新用于编写机器人策略代码,给出自然语言命令(格式化为注释)。策略代码可以表达处理感知输出(例如,开放词汇对象检测器)和参数化控制原语API的函数或反馈循环。当提供了几个示例语言命令和相应的策略代码(通过少量提示),LLM可以接收新的命令并自主重新组合API调用以生成新的策略代码。此外,编写代码的模型可以表达各种算术运算以及基于语言的反馈循环。他们不仅可以推广到新的指令,而且由于在数十亿行代码和注释上进行了训练,也可以根据上下文为模糊的描述(例如,“更快”和“向左”)规定精确的值,以引出行为常识。

方法部分,作者们详细介绍了如何使用大型语言模型(LLM)生成代码作为策略。他们的方法主要包括以下几个步骤:

1.定义语言模型程序(LMP):作者们首先定义了语言模型程序(LMP)的概念。LMP是由语言模型生成并在系统上执行的任何程序。他们的工作主要研究了一类名为“代码作为策略”的LMP,这类LMP将语言指令映射到代码片段,这些代码片段可以(i)响应感知输入(即来自传感器或传感器上层的模块),(ii)参数化控制原语API,并(iii)直接在机器人上编译和执行。

2.生成LMP:作者们展示了如何使用LLM生成LMP。他们提供了一些示例,如何将自然语言指令(格式化为注释)转化为代码。例如,他们展示了如何使用LLM编写代码来控制机器人的行为,如移动物体,识别物体,以及执行更复杂的任务。

3.执行LMP:为了执行LMP,他们首先检查它是否安全运行,确保没有导入语句,没有以__开头的特殊变量,也没有对exec和eval的调用。然后,他们使用Python的exec函数,将代码作为输入字符串,并使用两个字典形成该代码执行的范围:(i)全局变量,包含生成的代码可能调用的所有API,和(ii)局部变量,一个将在exec期间定义的变量和新函数填充的空字典。如果LMP预计会返回一个值,他们会在exec完成后从局部变量中获取它。

4.提示生成LMP:生成LMP的提示包含两个元素:(i)提示,例如导入语句,告诉LLM哪些API可用以及如何使用这些API;(ii)示例,这些是指令到代码对,展示了如何将自然语言指令转化为代码。这些可能包括执行算术运算,调用其他API,以及编程语言的其他特性。

5.高级LMP:作者们还展示了如何使用LLM生成更复杂的代码,如使用控制流(如if-else和循环语句)和嵌套函数调用。他们还展示了如何使用LLM生成函数以供未来使用,以及如何使用LLM遵循良好的抽象实践,避免将所有代码逻辑“扁平化”。

在这篇论文的实验部分,作者们展示了如何使用大型语言模型(LLM)编写代码来控制机器人的行为。他们提供了一些示例,包括如何使用LLM编写Python脚本,如何使用第三方库进行复杂操作,以及如何使用第一方库进行操作。他们还展示了如何使用LLM编写更复杂的代码,如使用控制流(如if-else和循环语句)和嵌套函数调用。

在这里插入图片描述

在实验中,他们使用了一些具体的任务来展示他们的方法的效果。例如,他们展示了如何使用LLM编写代码来移动物体,如何识别物体,以及如何执行更复杂的任务。他们还展示了如何使用LLM生成函数以供未来使用,以及如何使用LLM遵循良好的抽象实践,避免将所有代码逻辑“扁平化”。

以下是一些具体的实验示例:

1.他们展示了如何使用LLM编写代码来移动物体。例如,他们展示了如何使用LLM编写代码来移动一个名为“红色块”的物体。他们首先获取该物体的位置,然后将其向右移动一定的距离。

2.他们展示了如何使用LLM编写代码来识别物体。例如,他们展示了如何使用LLM编写代码来识别一个名为“蓝色块”的物体。他们使用了一个开放词汇的物体检测器来完成这个任务。

3.他们展示了如何使用LLM编写代码来执行更复杂的任务。例如,他们展示了如何使用LLM编写代码来将一个名为“蓝色块”的物体放在一个名为“蓝色碗”的物体上。

4.他们展示了如何使用LLM生成函数以供未来使用。例如,他们展示了如何使用LLM编写代码来定义一个名为“get_total”的函数,该函数接受一个名为“xs”的参数,并返回其总和。

5.他们展示了如何使用LLM遵循良好的抽象实践,避免将所有代码逻辑“扁平化”。例如,他们展示了如何使用LLM编写代码来定义一个名为“get_objs_bigger_than_area_th”的函数,该函数接受两个参数——一个名为“obj_names”的物体名列表和一个名为“bbox_area_th”的阈值,然后返回所有大于该阈值的物体的名字。

这些实验结果表明,LLM可以有效地用于编写控制机器人行为的代码,具有很高的实用性和广泛的应用前景。
在这里插入图片描述

最后作者们总结了他们的研究成果,并对未来的研究方向进行了展望。他们认为,大型语言模型(LLM)在编写代码方面的能力为机器人控制提供了新的可能性。通过使用LLM,我们可以将自然语言指令转化为机器人策略代码,从而实现更复杂的机器人行为。此外,他们还指出,LLM不仅可以理解和生成自然语言,还可以通过使用"say(text)"作为一个可用的动作原语API,参与人机对话和问答。他们的研究结果表明,LLM可以有效地编写Python程序,并能够处理各种复杂的任务,如移动物体,识别物体,以及执行更复杂的任务。他们的方法不仅可以广泛应用于机器人控制,还可以用于其他需要编写代码的领域。

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

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

相关文章

登峰造极,师出造化,Pytorch人工智能AI图像增强框架ControlNet绘画实践,基于Python3.10

人工智能太疯狂,传统劳动力和内容创作平台被AI枪毙,弃尸尘埃。并非空穴来风,也不是危言耸听,人工智能AI图像增强框架ControlNet正在疯狂地改写绘画艺术的发展进程,你问我绘画行业未来的样子?我只好指着Cont…

每日一题——LeetCode976

方法一 个人方法 找规律: 要求要围成三角形且周长最大,那么三条边自然是越大且越接近越好。那么我们就从最大的三条边开始看能不能围成三角形。如果不能组成三角形,则丢弃最长的那条,再取剩余边里最长的那条再看能不能组成三角形…

二叉树的中序遍历,力扣

目录 题目地址: 题目: 解题方法: 解题分析: 解题思路: 代码实现: 注: 代码实现(递归): 代码实现(迭代): 题目地址&#xf…

数据库——建立ER模型及关系模型转换

​ 【实验内容及要求】 使用画图工具或MySQL Workbench等建模工具设计出相应的ER图,将局部ER图合并为一个整体ER模型,在ER模型中填加多样性约束,建立显示主键的ER模型,标识实体的属性,确认主键、外键。将上述ER图转化…

Nx市工业数据洞察:Flask、MySQL、Echarts的可视化之旅

Nx市工业数据洞察:Flask、MySQL、Echarts的可视化之旅 背景数据集来源技术选型功能介绍创新点总结 背景 随着工业化的不断发展,Nx市工业数据的收集和分析变得愈发重要。本博客将介绍如何利用Flask、MySQL和Echarts等技术,从统计局获取的数据…

CentOS 7 lvm 裸盘的扩容和缩容减盘 —— 筑梦之路

背景介绍 之前写过比较多的关于lvm的文章: CentOS 7 lvm 更换坏盘操作步骤小记 —— 筑梦之路_centos更换硬盘操作-CSDN博客 xfs ext4 结合lvm 扩容、缩容 —— 筑梦之路_ext4扩盘-CSDN博客 LVM逻辑卷元数据丢失恢复案例 —— 筑梦之路_pve lvm数据恢复-CSDN博客…

各部门请注意,VELO维乐潮流骑士尼莫出街啦,快来加入吧!

VELO潮流骑士丨车界“小学生”尼莫,下面是来自她的自诉:      大家好!我是尼莫,一枚骑车届的“小学生”,我爱上骑车已经有一年的时间啦!在这一年的时间里,骑车改变了我很多:爱上…

单片机外设矩阵键盘之行列扫描识别原理与示例

单片机外设矩阵键盘之行列扫描识别原理与示例 1.概述 这篇文章介绍单片机通过行列扫描的方式识别矩阵键盘的按键,通过程序执行相应的操作。 2.行列扫描识别原理 2.1.独立按键识别原理 为什么需要矩阵按键 独立按键操作简单,当数量较多时候会占用单片机…

PAT 乙级 1033 旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其…

机器视觉实战应用:手势、人脸、动作以及手势鼠标构建(一)

CV实战应用手势、人脸、动作以及手势鼠标构建(一)总起 核心思想 手势识别是一种常见的计算机视觉应用,它可以通过摄像头或者预先录制的视频图像来追踪和识别人类手势。手势识别的应用非常广泛,例如在游戏、虚拟现实、人机交互等…

【算法】数论---欧拉函数

什么是欧拉函数? 对于正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目,记作φ(n) φ(1)1 当m,n互质时,φ(mn)φ(m)∗φ(n) 一、求一个正整数的欧拉函数---(先对它分解质因数,然后套公式&#xf…

2024年,程序员有哪些危机,有什么应对方式?

在2024年,程序员可能面临的危机主要包括技术更新迅速、职业竞争激烈、工作与生活平衡困难等方面。 为了应对这些危机,程序员可以采取以下策略: 技术更新迅速:随着技术的不断发展,新的编程语言和工具不断涌现&#xff…

spring核心与思想

spring核心与思想 Spring 是什么?什么是容器?什么是 IoC?传统程序开发传统程序开发的缺陷解决传统开发中的缺陷控制反转式程序开发对⽐总结规律 理解 Spring IoCDI 概念说明 Spring 是什么? Spring 指的是 Spring Framework&…

Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性

目录 1. 背景 2. Windows系统安装canal 3.Mysql准备工作 4. 公共依赖包 5. Redis缓存设计 6. mall-canal-service 1. 背景 canal [kənl] ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。其诞…

C语言实验5:结构体

目录 一、实验要求 二、实验原理 1. 普通结构体 1.1 显示声明结构体变量 1.2 直接声明结构体变量 ​编辑 1.3 typedef在结构体中的作用 2. 结构体的嵌套 3. 结构体数组 4. 指向结构体的指针 4.1 静态分配 4.2 动态分配 三、实验内容 1. 学生数据库 代码 截图 …

vue 项目 添加 页面上方 NProgress进度条

NProgress官网和Github地址 路由 跳转时 页面上方 和 右上角 会有一个加载进度 安装 使用npm安装 npm install --save nprogress 基本用法 main.js 引入 import NProgress from “nprogress”; import “nprogress/nprogress.css”; 开关和关闭 start()开启NProgress进度条d…

基于Ubuntu环境Git服务器搭建及使用

基于Ubuntu环境Git服务器搭建及使用 Chapter1 搭建本地git服务器及详细操作步骤1.搭建本地git服务器1.1 环境1.2 服务端配置1.3 创建git专属用户1.4 创建git仓库1.5 配置免密登录基础 2.客户端拉取推送代码2.1客户端创建ssh公钥 2.2 免密配置3.仓库使用(拉取及推送代…

【linux】tail的基本使用

在linux可以用find查找一个文件,可以用grep查找符合要求的文件内容,但是有的时候希望查看文件的前几行或者后几行(其实这种场景经常可以遇到,比如接触到日志分析的时候),那就应该使用head和tail这两个工具了…

如何使用ModuleShifting测试Module Stomping和Module Overloading注入技术

关于ModuleShifting ModuleShifting是一款针对Module Stomping和Module Overloading注入技术的安全测试工具,该工具基于Python ctypes实现其功能,因此可以通过Python解释器或Pyramid在内存中完整执行,这样就可以避免使用编译加载器了。 需要…

大语言模型(LLM)训练平台与工具

LLM 是利用深度学习和大数据训练的人工智能系统,专门 设计来理解、生成和回应自然语言。 大模型训练平台和工具提供了强大且灵活的基础设施,使得开发和训练复杂的语言模型变得可行且高效。 平台和工具提供了先进的算法、预训练模型和优化技术&#xff0c…