【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT
【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT
文章目录
- 【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT
- Abstract
- I. INTRODUCTION
- II. RELATED WORK
- 1. LLMs for Robotics
- 2. Robot Learning
- III. METHODOLOGY
- 1. ChatGPT Prompts for Robot Manipulation
- (1) Prompting Description
- (2) Self-Correction
- (3) Generated Code Evaluation
- 2. Robot Learning
- (1). Action, State Space and Reward
- (2). Algorithm
- IV. EXPERIMENTS
- 1. Metrics
- 2. Experiment Setup
- 3. Simulation Experiment
- 4. Real Robot Experiment
- 5. AB test
- V. CONCLUSION
Abstract
-
研究背景:人类指令 → \rightarrow → ChatGPT → \rightarrow → 机器人执行代码 → \rightarrow → 机器人执行
-
关键科学/技术问题:
The execution code generated by ChatGPT cannot guarantee the stability and safety of the system.
用 ChatGPT 生成的执行代码不能保证系统的稳定性和安全性。
大规模语言模型的本质是基于已知的 token 预测下一个/下几个 token 。目前把语言模型建模成了概率分布 p ( s t + 1 ∣ s t , ⋯ , s 0 ) p(s_{t+1}|s_{t},\cdots,s_{0}) p(st+1∣st,⋯,s0) ,并用海量数据集和超大规模神经网络拟合这个概率分布。概率分布天生蕴含不确定性,因此直接把预测 token 的结果部署到系统机器人上会造成 “同一个问题会有多种答案” 的现象,导致决策系统很不可靠。
OpenAI 系的模型带有一个温度参数
temperature
,把temperature
调成 0 确实可以增强稳定性,但是决策的多样性降低了,可能会表现得 “傻” 一点。我自己实践也是得出这样的结论,低的温度参数会在 “蕴含” 性语义上表现一板,显得比较木讷。 -
研究思路:
Our objective is to leverage ChatGPT’s problem-solving capabilities in robot manipulation and train a reliable agent.
使用 ChatGPT 的问题解决能力来训练一个可靠的智能体。
-
具体技术路线:
The framework includes an effective prompt structure and a robust learning model. Additionally, we introduce a metric for measuring task difficulty to evaluate ChatGPT’s performance in robot manipulation.
- 一个高效的提示学习框架 → \rightarrow → 使用 ChatGPT 解决问题;
- 一个鲁棒学习的模型 → \rightarrow → 训练一个可靠的智能体;
- 一个评估指标 → \rightarrow → 衡量任务的难度 → \rightarrow → 评测 ChatGPT 的解决问题能力;
-
实验设置:
仿真 + 实物
-
实验结论:
Compared to directly using ChatGPT to generate code, our framework signifificantly improves task success rates, with an average increase from 38.5 % \% % to 91.5 % \% %. Therefore, training a RobotGPT by utilizing ChatGPT as an expert is a more stable approach compared to directly using ChatGPT as a task planner.
任务成功率翻倍上升。与直接使用 ChatGPT 作为任务规划器相比,利用 ChatGPT 作为专家来训练 RobotGPT 模型是一种更稳定的方法。
I. INTRODUCTION
先前的工作,例如 Microsoft 技术报告,或者 Text2Motion 工作,都把 LLMs 当作 zero-shot 的行为规划器。但是截止到目前还是没有学者很清楚的解释、验证为什么 LLM 能实现 zero-shot 的行为规划,普遍理解在于 LLM 在预训练阶段的海量文本中蕴含了决策规划知识,然后在预训练中学进来了。
LLMs 的快速进步对人机交互也产生了重大影响。为了增强用户普及度和使用便利性,自然交互*(不需要使用额外的培训,可直接上手的交互)*是关键技术之一。目前在自然语言交互的研究已经取得了一些进展。
Spoken language interaction with robots: Recommendations for future research.
现存工作主流利用 ChatGPT 生成可以直接部署在机器人上的代码,需要提前用自然语言描述任务的目标以及 ChatGPT 可用的功能库,经过不断的循环反馈后,最终用 ChatGPT 操纵执行无人机导航、机器人抓取等任务。
作者的工作如下:
- 设计一种带有自我修正模块的有效提示结构,并对不同难度的任务进行了实验,以探索 ChatGPT 在机器人任务上的能力边界。设计了提示词框架,将环境信息、任务信息都翻译成自然语言。
- 设计一个系统,不直接执行 ChatGPT 生成的代码,而是采用一个智能体来学习 ChatGPT 生成的规划策略,从而增强系统的稳定性。
II. RELATED WORK
1. LLMs for Robotics
总体上分为高级解释(如语义解析、行为规划)和低级策略(如基于模型、模仿学习和强化学习)。
问题:LLMs 做规划决策的稳定性。
Text2Motion: From natural language instructions to feasible plans
Code as policies: Language model programs for embodied control
Robots that use language
Toward understanding natural language directions
Learning language-conditioned robot behavior from offline data and crowd-sourced annotation
Language models of code are few-shot commonsense learners
Language models as zero-shot planners: Extracting actionable knowledge for embodied agents
Do as I can, not as I say: Grounding language in robotic affordances
TidyBot: Personalized robot assistance with large language models
2. Robot Learning
主流框架还是强化学习和模仿学习。对比不同的强化学习算法,就需要不同的仿真环境 benchmark 。
问题:RL、IL 的数据收集问题。
III. METHODOLOGY
1. ChatGPT Prompts for Robot Manipulation
作者首先分析了 ChatGPT 直接用于决策不好的原因:
- 首先,没有考虑机器人的物理约束和限制。
- ChatGPT 缺乏推理因果关系和时间依赖性的能力。
提出了一个与 ChatGPT 交互的框架,该框架由两部分组成:代码生成和纠错。
- 在代码生成阶段,用户描述任务并提供示例来指导 ChatGPT 的响应(few-shot prompt)。
- 在纠错阶段,运行时错误和任务失败都被认为是待纠正的。
(1) Prompting Description
提出了一种五部分提示方法,包括背景描述、物体信息、环境信息、任务信息和示例。
- 背景描述:环境的基本信息,如环境的用途、布局、相关实体等。
- 物体信息:所有对象的名称、形状、姿势和其他有用信息,例如它们的属性以及与其他对象的关系。
- 环境信息:向 ChatGPT 描述可用于执行任务的机器人和 API 函数。
- 任务信息:向 ChatGPT 描述具体任务,通常是为给定的
ob
生成 Python 代码。 - 示例部分:向 ChatGPT 描述一些示例,以帮助更好地理解环境和 API 用法。
(2) Self-Correction
在为复杂任务生成响应时,ChatGPT 可能偶尔会产生需要纠正的小错误或语法错误。
介绍了一种纠正 ChatGPT 响应的交互式方法。为了采用这种方法,首先在模拟器中执行生成的代码并评估结果。
Step1. [Error Caption] 生成的代码将逐行执行,当发生运行时错误时,运行时错误(包括错误消息及其位置)将由 Code Error Catching 模块捕获。
Step2. [Rethink] 将这些数据发送回 ChatGPT 决策机器人进行进一步分析。在结果是失败的情况下,校正机器人可以根据提示分析失败的潜在原因,并生成响应,解释任务失败的原因。
Step3. [Regenerate] 原来的 ChatGPT 决策机器人会根据校正机器人的故障分析重新生成代码。
利用这些反馈,ChatGPT 修改其响应并生成准确的代码。此交互式过程最多可以迭代三次。
(3) Generated Code Evaluation
使用名为 evaluation bot 的 ChatGPT 来生成评估代码。使用 decision bot 的 ChatGPT 来做决策。
Evaluation bot 提示的结构保持不变,但背景描述和机器人 API 的内容有所不同。Evaluation bot 生成的函数 is_task_success()
将作为确定整个任务成功的标准。
人类的作用是仔细检查生成的评估代码是否正确。如果生成了错误的评估代码,人类将介入进行纠正。这样的设计可以最大限度地减轻人类的负担。
2. Robot Learning
机器人能够吸收 ChatGPT 解决一般任务的知识来学习策略。
对于机器人学习框架,利用最先进的开源机器人操作基准和学习框架 BulletArm 用 ChatGPT 生成演示训练。
(1). Action, State Space and Reward
ChatGPT 驱动的专家演示是在模拟环境中生成,该环境包括 Panda 机器人,其摄像头安装在工作空间顶部。
状态空间由自上而下的高度图 H H H、眼在手上图像 I I I 和抓手状态 g ∈ { H o l d i n g , E m p t y } g\in \{Holding, Empty\} g∈{Holding,Empty} 组成。
对于动作空间,它包括机器人技能 A s ∈ { P i c k , P l a c e } A_s \in \{Pick, Place\} As∈{Pick,Place} 和目标姿势 A p ∈ A x y θ A_p \in A^{xy\theta} Ap∈Axyθ 。其中 x x x 和 y y y 表示末端执行器的 X Y XY XY 坐标, θ θ θ 表示沿 z z z 轴旋转。
奖励被设置为稀疏奖励函数,其中当所有状态-动作对都达到目标状态时,奖励为 1 1 1 ,否则为 0 0 0 。
(2). Algorithm
SDQfD 算法 + Equivariant ASR 网络结构。
损失函数是 n n n 步TD损失和严格的大边际损失的总和。
IV. EXPERIMENTS
Task Name | Description |
---|---|
move cube | Move small cube above onto big cube. |
stacking | Stack the given blocks together. |
pyramid_stacking | Stack the given three blocks into a pyramid shape. |
house_building_1 | Construct a tall building using the given three blocks and a triangle shape. |
house_building_2 | Construct a bungalow using the given two cubes and a triangle shape. |
house_building_3 | Construct a house using the given two cubes (red) ,a brick (blue) and a triangle shape. |
bottle_arrangement | Arrange the given six bottles neatly on a tray. |
bin_packing | Pick up blocks on the table and place on tray. |
1. Metrics
对象的数量 o o o 、对象类别 c c c 和任务步骤的数量 s s s 。
这里提一下作者的思路:作者召集很多机器人的相关专家和工程师,对任务进行 “简单” 、 “复杂” 评分。然后统计了每个任务物体的数量 o o o 、类别 c c c 和任务步骤 s s s 。然后用比较简单的多项式来尝试拟合专家和工程师的评分。
于是就有了接下来的 s c o r e score score 分数。
s c o r e = o + o × c + s score = o+o\times c +s score=o+o×c+s
在接下来的定量实验中,将为每个任务生成 25 个随机场景,并计算成功的尝试次数。
2. Experiment Setup
在工作空间上方安装一个 RGB-D 传感器,以提供清晰的场景高度地图。在模拟环境中,机器人依靠 PyBullet 引擎进行运动控制。而在现实世界中,机器人则利用 MoveIt 和 ros_franka 来进行运动规划和执行。
3. Simulation Experiment
左边纯 gpt-3.5 和自己提出的 robot-gpt 做对比。作者分析了纯 gpt-3.5 效果不好的原因。
- Decision bot 的温度是 1.0 ,尽管每次都输入相同的提示,但生成的代码和结果的输出总是有显著的差异。
- 由 ChatGPT 生成的代码还包含语法或逻辑错误。虽然提出的自校正模块可以修改一些语法错误,但在大多数情况下,如果 ChatGPT 最初不能生成成功的代码,那么在这个实验中就很难获得成功。
ChatGPT 自己直接生成代码存在哪些错误?
- 由于误解了任务需求而导致的故障。
- 错误的动作序列规划,即机器人抓取图像中堆叠的块。这不合理,因为机器人应该是在抓取尚未堆叠的物体。
- 机器人的放置位置有偏差。
随着任务增加,ChatGPT 的成功率逐渐下降;而 RobotGPT 的成功率保持稳定。
4. Real Robot Experiment
- 为了克服 sim2real 差距,在转换为高度图之前,将通过对象分割和去噪对原始深度图进行预处理;
- 在真实的机器人测试中,机器人在进行拾取动作后,不会返回到观察位置来捕捉一个新的深度图
可以观察到,执行步骤较少的任务往往会有更多的成功尝试。
失败案例的主要原因不是由于智能体的错误预测,而是由于在放置过程中的精度不足,从而导致任务失败。
在闭环中探究如何让 LLMs 实现更精确的任务执行是值得研究的。
5. AB test
第一个实验涉及一个整理房间的挑战,需要组织 40 个自定义家居用品;
第二个实验是一个拼写单词游戏,旨在使用给定的一组字母 A-L 拼写最长的单词。
邀请人类受试者完成相同的任务。
我们通过五个指标来评价性能:
- 完成状态(Completion State, CS),对于人类参与,计算完成次数;对于 RobotGPT 计算是否完成;
- 代码质量(Code Quality, CQ)是指生成的代码从 0 到 1 ,由 Python 静态代码分析工具 Pylint 分析;
- 时间使用(Time Usage, TU),从阅读任务要求实现任务模拟单位秒;
- 外部帮助(External Help, EH)是指参与者是否在互联网上搜索信息;
对于人体测试, CQ 、 TU 和 EH 代表已经完成任务的个人数据的平均值。
在整理实验中,RobotGPT 将物体分为十组,分别标记为厨具、水果、零食、媒体、鞋类、办公用品、电子产品、个人护理产品、存储设备和饮料,耗时 412 秒。这是一个非常令人满意的结果。考虑到如果有 400 个物体而不是 40 个, LLMs 驱动的机器人的优势将变得更加明显。
在拼写游戏中,RobotGPT 提供的结果是一个 9 个字母的单词 “后场(backfield)” ,而人类反应的最佳结果是一个 7 个字母的单词 “被黑了(blacked)” 。更重要的是,参与者需要在线搜索信息来完成两项开放式的任务,这表明 LLMs 驱动的机器人比人类拥有更全面的知识。
V. CONCLUSION
最近提出了一种方法,从大约 200 个人类演示中生成大规模数据集,但仅用于 18 个任务。
通过合并大型模型来从人类演示中扩展任务的规模和类型将是一个有趣的方向。
相关文章:

【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT
【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT 文章目录 【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPTAbstractI. INTRODUCTIONII. RELATED WORK1. LLMs for Robotics2. Robot Learning III. METHODOLOGY1. ChatGPT Prompts for Robot …...

深度学习 Lecture 4 Adam算法、全连接层与卷积层的区别、图计算和反向传播
一、Adam算法(自适应矩估计) 全名:Adapative Moment Estimation 目的:最小化代价函数(和梯度下降一样) 本质:根据更新学习率后的情况自动更新学习率的值(可能是自动增大,也可能是…...

uniApp中使用小程序XR-Frame创建3D场景(1)环境搭建
1.XR-Frame简介 XR-Frame作为微信小程序官方推出的3D框架,是目前所有小程序平台中3D效果最好的一个,由于其本身针对微信小程序做了优化,在性能方面比其他第三方库都要高很多。 2.与Three.js的区别 做3D小程序的同学们对Three.js一定不陌生…...

AI基础知识(4)--贝叶斯分类器
1.什么是贝叶斯判定准则(Bayes decision rule)?什么是贝叶斯最优分类器(Bayes optimal classifier)? 贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险最小的…...

填补市场空白,Apache TsFile 如何重新定义时序数据管理
欢迎全球开发者参与到 Apache TsFile 项目中。 刚刚过去的 2023 年,国产开源技术再次获得国际认可。 2023 年 11 月 15 日,经全球最大的开源软件基金会 ASF 董事会投票决议,时序数据文件格式 TsFile 正式通过,直接晋升为 Apache T…...

Docker 笔记(七)--打包软件生成镜像
目录 1. 背景2. 参考3. 文档3.1 使用docker container commit命令构建镜像3.1.1 [Docker官方文档-docker container commit](https://docs.docker.com/reference/cli/docker/container/commit/)Description(概述)Options(选项)Exa…...

图论06-飞地的数量(Java)
6.飞地的数量 题目描述 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法…...
Java设计模式之单例设计模式
单例设计模式就是保证整个软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得该对象的方法。 单例设计模式包括两种:饿汉式和懒汉式。 饿汉式: 含义: 在类加载时就创建并初始化单例对象。这种方式确保了…...

多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测
多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测 目录 多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.M…...
深入了解Android垃圾回收机制
文章目录 一、内存分配二、垃圾回收触发条件三、GC算法3.1 Dalvik虚拟机的GC算法3.2 ART的GC算法 四、优化GC性能五、监控GC耗时情况六、总结 在Android应用开发中,内存管理和垃圾回收(GC)对于应用性能和稳定性至关重要。理解GC机制有助于我们…...
如何学好Python语言
学习Python:一场充满探索与实践的编程之旅 Python,作为一种解释型、交互式和面向对象的编程语言,近年来在数据科学、人工智能、Web开发等多个领域得到了广泛的应用。掌握Python,不仅可以提升个人的编程技能,还能够为未…...

计算机408网课评测+资料分享
408当然有比较好的网课推荐,比如王道的视频课 现在大部分人备战408基本都用王道的讲义,然后再搭配王道408的课程来听,可以学的很好。 其中408视频课中,我认为讲的比较好的是数据结构,和操作系统,计算机组…...

使用 ZipArchiveInputStream 读取压缩包内文件总数
读取压缩包内文件总数 简介 ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,Z…...
JavaScript对象修饰教程
在JavaScript中,对象修饰是一种常见的编程模式,用于动态地向对象添加新的功能或修改现有功能,同时保持对象的原始结构不变。对象修饰可以帮助我们实现代码的复用、扩展和维护,让代码更加灵活和可扩展。本文将深入探讨JavaScript对…...

转置卷积(transposed-conv)
一、什么是转置卷积 1、转置卷积的背景 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作。这个将图像由小分辨率映射到大分辨率的尺寸恢复操作,…...
P1481 魔族密码
P1481 魔族密码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 字典树 在插入字符串 s s s时,不断记录 s 0... k s_{0...k} s0...k的个数取最大即可。 #include <bits/stdc.h> using namespace std; const int N 1e5 21; int cnt[N], tr[N][30], idx,…...

无人机/飞控--ArduPilot、PX4学习记录(2)
这是一篇碎碎念,零零碎碎的记录了环境配置过程,仅供本人记录学习历程和参考。(记录的挺乱的,但是文章链接里的博客写的是真好) 本章主要完成的目标: 安装PX4 并 成功运行出3D无人机界面。 参考文章: 搭建PX4环境&…...

【Arxml专题】-29-使用Cantools将CAN Matrix Arxml自动生成C语言代码
目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 CAN Matrix Arxml自动生成C语言代码 2.1 批处理文件CAN_Matrix_Arxml_To_C.bat内容说明 2.2 CAN Matrix Arxml文件要求 2.3 如何…...
【id:21】【20分】E. 抄袭查找(结构体+指针+函数)
题目描述 已知一群学生的考试试卷,要求对试卷内容进行对比,查找是否有抄袭。 每张试卷包含:学号(整数类型)、题目1答案(字符串类型)、题目2答案(字符串类型)、题目3答案…...
ASP.NET-常用控件总结
一、ASP.NET基础控件 1、asp:TextBox (输入框) ASP.NET TextBox 控件用于接收用户输入。 <asp:TextBox ID"txtInput" runat"server"></asp:TextBox>2、asp:DropDownList (下拉框) ASP.NET DropDownList 控件用于提供一个下拉列表供用户选择…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...