【论文笔记】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

  1. 研究背景:人类指令 → \rightarrow ChatGPT → \rightarrow 机器人执行代码 → \rightarrow 机器人执行

  2. 关键科学/技术问题

    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+1st,,s0) ,并用海量数据集超大规模神经网络拟合这个概率分布。概率分布天生蕴含不确定性,因此直接把预测 token 的结果部署到系统机器人上会造成 “同一个问题会有多种答案” 的现象,导致决策系统很不可靠。

    OpenAI 系的模型带有一个温度参数 temperature ,把 temperature 调成 0 确实可以增强稳定性,但是决策的多样性降低了,可能会表现得 “傻” 一点。我自己实践也是得出这样的结论,低的温度参数会在 “蕴含” 性语义上表现一板,显得比较木讷。

  3. 研究思路

    Our objective is to leverage ChatGPT’s problem-solving capabilities in robot manipulation and train a reliable agent.

    使用 ChatGPT 的问题解决能力来训练一个可靠的智能体。

  4. 具体技术路线

    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 的解决问题能力;
  5. 实验设置

    仿真 + 实物

  6. 实验结论

    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 操纵执行无人机导航、机器人抓取等任务。


作者的工作如下:

  1. 设计一种带有自我修正模块的有效提示结构,并对不同难度的任务进行了实验,以探索 ChatGPT 在机器人任务上的能力边界。设计了提示词框架,将环境信息、任务信息都翻译成自然语言。
  2. 设计一个系统,不直接执行 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 直接用于决策不好的原因:

  1. 首先,没有考虑机器人的物理约束和限制。
  2. ChatGPT 缺乏推理因果关系和时间依赖性的能力。

2

提出了一个与 ChatGPT 交互的框架,该框架由两部分组成:代码生成和纠错。

  • 在代码生成阶段,用户描述任务并提供示例来指导 ChatGPT 的响应(few-shot prompt)。
  • 在纠错阶段,运行时错误和任务失败都被认为是待纠正的。
(1) Prompting Description

5

提出了一种五部分提示方法,包括背景描述、物体信息、环境信息、任务信息和示例。

  • 背景描述:环境的基本信息,如环境的用途、布局、相关实体等。
  • 物体信息:所有对象的名称、形状、姿势和其他有用信息,例如它们的属性以及与其他对象的关系。
  • 环境信息:向 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

4

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} ApAxyθ 。其中 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

6

Task NameDescription
move cubeMove small cube above onto big cube.
stackingStack the given blocks together.
pyramid_stackingStack the given three blocks into a pyramid shape.
house_building_1Construct a tall building using the given three blocks and a triangle shape.
house_building_2Construct a bungalow using the given two cubes and a triangle shape.
house_building_3Construct a house using the given two cubes (red) ,a brick (blue) and a triangle shape.
bottle_arrangementArrange the given six bottles neatly on a tray.
bin_packingPick 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 。然后用比较简单的多项式来尝试拟合专家和工程师的评分。

7

于是就有了接下来的 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

8

在工作空间上方安装一个 RGB-D 传感器,以提供清晰的场景高度地图。在模拟环境中,机器人依靠 PyBullet 引擎进行运动控制。而在现实世界中,机器人则利用 MoveIt 和 ros_franka 来进行运动规划和执行。

3. Simulation Experiment

9

左边纯 gpt-3.5 和自己提出的 robot-gpt 做对比。作者分析了纯 gpt-3.5 效果不好的原因。

  1. Decision bot 的温度是 1.0 ,尽管每次都输入相同的提示,但生成的代码和结果的输出总是有显著的差异。
  2. 由 ChatGPT 生成的代码还包含语法或逻辑错误。虽然提出的自校正模块可以修改一些语法错误,但在大多数情况下,如果 ChatGPT 最初不能生成成功的代码,那么在这个实验中就很难获得成功。

ChatGPT 自己直接生成代码存在哪些错误?

10

  1. 由于误解了任务需求而导致的故障。
  2. 错误的动作序列规划,即机器人抓取图像中堆叠的块。这不合理,因为机器人应该是在抓取尚未堆叠的物体。
  3. 机器人的放置位置有偏差。

11

随着任务增加,ChatGPT 的成功率逐渐下降;而 RobotGPT 的成功率保持稳定。

4. Real Robot Experiment

12

  • 为了克服 sim2real 差距,在转换为高度图之前,将通过对象分割和去噪对原始深度图进行预处理;
  • 在真实的机器人测试中,机器人在进行拾取动作后,不会返回到观察位置来捕捉一个新的深度图

13

可以观察到,执行步骤较少的任务往往会有更多的成功尝试。

失败案例的主要原因不是由于智能体的错误预测,而是由于在放置过程中的精度不足,从而导致任务失败。

在闭环中探究如何让 LLMs 实现更精确的任务执行是值得研究的。

5. AB test

14

第一个实验涉及一个整理房间的挑战,需要组织 40 个自定义家居用品;

第二个实验是一个拼写单词游戏,旨在使用给定的一组字母 A-L 拼写最长的单词。

邀请人类受试者完成相同的任务。


我们通过五个指标来评价性能:

  • 完成状态(Completion State, CS),对于人类参与,计算完成次数;对于 RobotGPT 计算是否完成;
  • 代码质量(Code Quality, CQ)是指生成的代码从 0 到 1 ,由 Python 静态代码分析工具 Pylint 分析;
  • 时间使用(Time Usage, TU),从阅读任务要求实现任务模拟单位秒;
  • 外部帮助(External Help, EH)是指参与者是否在互联网上搜索信息;

对于人体测试, CQ 、 TU 和 EH 代表已经完成任务的个人数据的平均值。

15

在整理实验中,RobotGPT 将物体分为十组,分别标记为厨具、水果、零食、媒体、鞋类、办公用品、电子产品、个人护理产品、存储设备和饮料,耗时 412 秒。这是一个非常令人满意的结果。考虑到如果有 400 个物体而不是 40 个, LLMs 驱动的机器人的优势将变得更加明显。

在拼写游戏中,RobotGPT 提供的结果是一个 9 个字母的单词 “后场(backfield)” ,而人类反应的最佳结果是一个 7 个字母的单词 “被黑了(blacked)” 。更重要的是,参与者需要在线搜索信息来完成两项开放式的任务,这表明 LLMs 驱动的机器人比人类拥有更全面的知识。

V. CONCLUSION

最近提出了一种方法,从大约 200 个人类演示中生成大规模数据集,但仅用于 18 个任务。

通过合并大型模型来从人类演示中扩展任务的规模和类型将是一个有趣的方向。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Python3的数据结构与算法 - 16 链表

目录 链表 1. 创建链表 2. 链表的插入和删除 3. 双链表 4. 链表总结 链表 链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点得指针next。通过节点之间的相互连接,最终串联成一个链表。 class Node:def __init…

数据结构——循环队列的实现

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

Python 小而精Web开发框架Flask精通指南

文章目录 Flask 简介说明Flask 核心依赖Flask 常用扩展Flask 快速启动工作流程代码示例Flask 快速启动控制台Flask 快速启动效果 Flask 启动参数Flask 路由定义Flask 支持的 HTTP 请求方式:路由装饰器中的参数 Flask 路由参数Flask 路由蓝图路由蓝图的优点路由蓝图的…

痛失offer的八股

java面试八股 mysql篇: 事物的性质: 事物的性质有acid四特性。 a:automic,原子性,要么全部成功,要么全部失败,mysql的undolog,事物在执行的时候,mysql会进行一个快照读…

获取KEGG通路的基因列表 做单细胞GSEA、GSVA分析

使用KEGG通路的基因列表进行单细胞GSEA GSVA分析的过程,我们需要遵循以下步骤: 获取KEGG通路的基因列表:这通常涉及使用专门的R包,如KEGGREST或biomaRt,来查询KEGG数据库并检索特定通路的基因列表。 准备单细胞表达数…

详解JS原型与原型链的关系

1、构造函数原型prototype (1)、构造函数通过原型分配的函数是所有对象所共享的; (2)、JavaScript规定,每一个构造函数都有一个prototype属性,指向另一个对象; (3)、注意这个prototype就是一个对象,这个对象的所有属性…

Scikit-Learn逻辑回归(二)

Scikit-Learn逻辑回归二:多项式与正则化 1、多项式回归回顾1.1、逻辑回归为什么要使用多项式1.2、多项式回归及原理 2、逻辑回归与多项式 1、多项式回归回顾 本文接上篇:Scikit-Learn逻辑回归(一) 上篇中,我们详细介绍了逻辑回归的概念、原理…

使用 React antd 的ProFormSelect组件 搜索查询 多选的写法

使用 React antd 的ProFormSelect组件 搜索查询 多选的写法 需求:需要一个搜索框,可以选择员工,(员工人数多无法一次性获取,全部放入options中),所以需要使用搜索功能,而且是可以多…

XR“黑话”

MTP(Motion-To-Photon Latency):实际人体发生运动到图像显示到屏幕上的时间延迟。早期一些vr产生晕动症的主要原因。 ATW(Asynchronous Timewarp):主要解决两个问题,一是延迟,二是补…

CSS弹性盒模型(学习笔记)

一、厂商前缀 1.1 作用 解决浏览器对C3新特性的兼容,不同的浏览器厂商,定义了自己的厂商前缀 1.2 语法 浏览器 厂商前缀内核(渲染引擎):解析htmlcssjs谷歌 -webkit-blink苹果-webkit-webkit欧朋-o-blink火狐 -moz-geckoIE-ms- trid…

OpenCV4.9.0开源计算机视觉库安装教程

返回:OpenCV系列文章目录(持续更新中......) 引言:OpenCV系列文章中的安装部分今天全部完成了,为了读者更方便阅读,大家可以按下列索引前往,成文较为仓促有错漏在所难免,欢迎大家指正…

服务器运行一段时间后

自己记录一下。 一、查看目录占用情况 df -h 命令查看磁盘空间 du -ah --max-depth=1 / 查看根目录下各个文件占用情况 二、mysql日志清空 这个日志是可以清空的 echo > /usr/local/mysql/data/syzl-db2.log #将文件清空 说明: 这个文件这么大是因为,开启 …

将OpenCV与gdb驱动的IDE结合使用

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9.0开源计算机视觉库在 Linux 中安装 下一篇:将OpenCV与gcc和CMake结合使用 ​ 能力 这个漂亮的打印机可以显示元素类型、、标志is_continuous和is_subm…

微信小程序分销返佣模式--小程序1-3级分销插件--小程序分销--

团购小程序是一种基于社区团购模式的电商平台,主要面向社区居民用户。 如果你想要开发一款分销团购小程序可以参考以下功能需求进行开发制作。 1、用户注册和登录 提供用户注册和登录功能,使用户能够创建和管理他们的账户。 2、会员管理 包括会员注…

springboot网站开发-诡异的static/images读取故障

springboot网站开发-诡异的static/images读取故障!我在本地环境测试代码,一切正常。可以读取到该路径下的图片模板,正常生成图片存储在本地D盘下面的文件夹。但是改成服务器linux环境后就不行了。打包发布后,死活读取不到图片模板。 这个故障…

HTML(一)

一、网页 1.1 什么是网页 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素,它通常由…

基于python+vue智慧农业小程序flask-django-php-nodejs

传统智慧农业采取了人工的管理方法,但这种管理方法存在着许多弊端,比如效率低下、安全性低以及信息传输的不准确等,同时由于智慧农业中会形成众多的个人文档和信息系统数据,通过人工方法对知识科普、土壤信息、水质信息、购物商城…

FreeRTOS任务相关API函数

1. FreeRTOS任务相关API函数介绍 函数描述uxTaskPriorityGet()获取任务优先级vTaskPrioritySet()设置任务优先级uxTaskGetNumberOfTasks()获取系统中任务的数量uxTaskGetSystemState()获取所有任务状态信息vTaskGetInfo()获取指定单个的任务信息xTaskGetCurrentTaskHandle()获…

解决1130-Host‘ ‘is not allowed to connect to this MySQL server,实现远程连接本地数据库

参考:https://blog.csdn.net/CoCo629vanilla/article/details/129008644 在使用Navicat远程连接本地数据库时,遇到了这样一个问题, 我使用 本地主机的地址,连接本地的数据库,报错host ‘’ is not allowed to connect to this my…

转座子插入序列分析2-自制分析流程

我们先观察一下测序的结果,是否有一些什么规律,因为使用的靶向富集法的测序,我们使用了特殊序列将插入了转座子的部分钓了出来,然后进行的测序,所以理论上富集到的所有序列都应该存在一段与我们钓鱼序列互补的“靶点序…