【论文笔记】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 个任务。

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

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

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

相关文章

【MySQL】9. 内置函数

函数 1. 日期函数 获得年月日: mysql> select current_date(); ---------------- | current_date() | ---------------- | 2024-03-23 | ---------------- 1 row in set (0.00 sec)获得时分秒: mysql> select current_time(); ------------…

vue3+Pinia的使用 - 封装

目录: persist.ts 可存储到本地 import { PersistedStateOptions } from "pinia-plugin-persistedstate";/*** description pinia 持久化参数配置* param {String} key 存储到持久化的 name* param {Array} paths 需要持久化的 state name* return per…

基于人类反馈的强化学习:最核心的5个步骤

基于人类反馈的强化学习( Reinforcement Learning with Human Feedback)工作原理 强化学习正在彻底改变技术和商业世界中复杂问题的处理方式。这是一种强大的工具。通过该工具,机器能够从环境中学习并根据奖惩做出明智的决策。 但是&#x…

约克中央空调YES-will系列,舒适冷暖与高品质家居的优选

漫漫寒冬,室内一片寒意,开启空调多久才能享受到暖意?如果冬季气温较低,空调能否保持正常的制热运行? 炎炎夏季,即便在室内也同样是“暴汗”不断,身上黏糊糊,什么样的家用中央空调才能快速制冷,让全家人感受到舒适,同时又能避免传统空调直吹带来的一系列问题? 遇上梅雨季节…

面试题 之 webpack

1.说说你对webpack理解?解决什么问题? Webpack 是实现前端项目的模块化,用于现代 JavaScript 应用程序的静态模块打包工具,被webpack 直接引用的资源打包进 bunde.js的资源,当webpack 处理应用程序时,它会在内部构建一…

迁移android studio 模拟器位置

android studio 初始位置是安装在c盘,若是要迁移需 1创建一个目标位置如我的F:/avd 2在系统环境变量里面设置新的地址 变量名:ANDROID_SDK_HOME 变量值:F:/avd 3最重要的是文件复制,将C盘里面avd的上层目录.android的目录整体…

【哈希专题】【蓝桥杯备考训练】:星空之夜、模拟散列表、字符串哈希、四平方和、扫雷【已更新完成】

目录 1、星空之夜(usaco training 5.1) 2、模拟散列表(模板) 3、字符串哈希(模板) 4、四平方和(第七届蓝桥杯省赛C A组/B组 & JAVA B组/C组) 5、扫雷(Google Ki…

2024室内设计和建筑必须知道的十大3D渲染趋势!

2023年对建筑圈是非常不平凡的一年,高清视频渲染、元宇宙全覆盖、AI模型大爆发.....不断发展的 3D 数字技术世界正迅速重塑建筑设计行业。 2024年,室内设计和建筑设计领域在3D渲染方面又将迎来怎样的变革?以下十大3D渲染趋势,你不…

五、Elasticsearch 集成

目录 5.1 Spring Data 框架集成5.1.1 Spring Data 框架介绍5.1.2 Spring Data Elasticsearch 介绍5.1.3 Spring Data Elasticsearch 版本对比5.1.4 集成步骤 5.1 Spring Data 框架集成 5.1.1 Spring Data 框架介绍 Spring Data 是一个用于简化数据库开发的开源框架。其主要目…

【JVM】JVM简介

文章目录 🌴简介🌲JVM发展史🌸Sun Classic VM🌸Exact VM🌸HotSpot VM🌸JRockit🌸J9 JVMTaobao JVM(国产研发) 🌳JVM 运行流程⭕总结 🌴简介 JVM …

c语言中动态内存管理

说到内存,大家一定都知道。但是有一种函数可以实现动态内存管理,下面大家一起学习。 文章目录 一、为什么要有动态内存管理?二、malloc 和 free1.malloc2.free 三、calloc 和 realloc1.calloc2.realloc3.常见的动态内存的错误3.1对NULL指针的…

c++ 有名对象和匿名对象

c 有名对象和匿名对象 有名对象就是有名字的对象&#xff0c;匿名对象就是没有名字的对象。 #define _CRT_SECURE_NO_WARNINGS 1 using namespace std; #include<iostream> class score { public:score(){math 100;chinese 100;english 100;}score(int _math, int _…

Java Web-Tomcat

Web服务器 Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。 Tomcat&#xff0c;是一个 HTTP 服务器。我们只需要在服务器中安装一个Web服务器如Tomcat&#xff0c;然后就可以将…

数据安全之路:Databend 用户策略指南

在 Databend 中&#xff0c;我们致力于保护用户的数据安全。除了身份认证之外&#xff0c;我们还提供了多种访问策略&#xff0c;包括网络策略&#xff08;Network Policy&#xff09;、密码策略&#xff08;Password Policy&#xff09;和数据脱敏策略&#xff08;Masking Pol…

JavaScript进阶5之垃圾回收(计算机组成、解释与编译、JavaScript引擎、垃圾回收、内存管理)、运行机制(浏览器进程分类、浏览器事件循环)

垃圾回收&运行机制 垃圾回收计算机组成解释与编译JavaScript引擎V8引擎 垃圾回收引用计数法标记清除&#xff08;mark-sweep&#xff09;算法 内存管理新生代 运行机制浏览器进程分类&#xff1a;浏览器事件循环宏任务微任务整体流程浏览器事件循环案例一案例二 垃圾回收 …

Unity学习日记 11.单词识别游戏

目录 1.返回鼠标单击对象的名字 2.鼠标拖动移动对象 3.实现鼠标跟随 4.场景准备工作 5.判断图片与框配对 6.根据配对结果放置图片 1.返回鼠标单击对象的名字 步骤&#xff1a; 创建一个ShowName的脚本&#xff0c;并挂载在摄像机上 RaycastHit2D hitInfo;void Update(){…

CANalyzer使用_04 使用CAN报文发送数据

本文手把手介绍使用CAN来发送数据。分为创建工程&#xff0c;创建CAN报文&#xff0c;运行效果&#xff0c;参考文献。 1 创建工程 双击“CANalyzer->单击“I accept”->等一会等软件打开后&#xff0c;单击“File”->单击"New"->双击"CAN 500kBa…

vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程

文章目录 效果展示template代码script代码样式代码 效果展示 template代码 <template><el-container class"home"><el-aside class"flex" :style"{ width: asideDisplay ? 70px : 290px }"><div class"aside-left&q…

json文件美化工具(json tools)

自动整理json文件&#xff0c;使用&#xff1a;ctrlaltM

【数学】第十三届蓝桥杯省赛C++ A组/研究生组 Python A组/研究生组《数的拆分》(C++)

【题目描述】 给定 T 个正整数 &#xff0c;分别问每个 能否表示为 的形式&#xff0c;其中 , 为正整数&#xff0c;, 为大于等于 2 的正整数。 【输入格式】 输入第一行包含一个整数 T 表示询问次数。 接下来 T 行&#xff0c;每行包含一个正整数 。 【输出格式】 对于…