LMM-3DP:集成 LMM 规划器和 3D 技能策略实现可泛化操作

25年1月来自UCSD的论文“Integrating LMM Planners and 3D Skill Policies for Generalizable Manipulation”。

大型多模态模型 (LMM) 的视觉推理能力和 3D 特征场语义丰富性的最新进展,拓展了机器人能力的范围。这些发展对于弥合 LMM 高级推理与利用 3D 特征场低级控制策略之间的差距具有巨大潜力。这项工作引入 LMM-3DP,这是一个可以整合 LMM 规划器和 3D 技能策略的框架。该方法包括三个关键角度:高级规划、低级控制和有效集成。对于高级规划,LMM-3DP 支持对环境干扰的动态场景理解、具有自我反馈的批评智体、历史策略记忆和失败后的重试。对于低级控制,LMM-3DP 利用语义感知的 3D 特征场进行精确操作。在协调机器人动作的高级和低级控制时,代表高级策略的语言嵌入与 3D Transformer 中的 3D 特征场共同参与,以实现无缝集成。在现实厨房环境中对多种技能和长期任务的方法进行广泛评估。与基于 LLM 的基线相比,该结果表明,低级控制的成功率显著提高 1.45 倍,高级规划准确率提高约 1.5 倍。

LLM-3DP 如图所示:

请添加图片描述

制造能够执行现实世界中各种长期任务的通用机器人,是一个长期存在的问题。大语言模型 (LLM) 推动机器人技术的最新进步,这些模型在理解现实世界和常识推理方面表现出非凡的能力。一些研究利用 LLM 将抽象任务分解为一系列高级语言指令以进行规划 [1]、[2]、[3]、[4]、[5]、[6]、[7]、[8]、[9]、[10]。尽管 LLM 在各种现实世界任务中取得重大进展,但目前将其集成到机器人技术中存在几个主要缺点。首先,LLM 只能处理自然语言,而不能理解视觉,因此很难理解和适应需要丰富视觉信息的动态现实世界场景。此外,基于 LLM 的规划器通常依赖人类语言反馈来持续执行长期规划 [10]、[5]、[6],这严重限制自主性。然而,具有多感官输入的大型多模态模型 (LMM) 已成为一种强大的工具,可为机器人配备强大的视觉理解和跨各种环境的泛化能力。这使机器人能够根据环境变化调整语言规划。

现有的基于 LLM 的规划器,通常依赖一组预定义的原始技能进行低级控制 [1]、[2]、[11]、[12]、[3]、[13],这是大规模应用到开放世界环境的主要瓶颈。因此,对于大多数基于 LLM 的框架来说,如何以数据高效的方式获得能够适应新环境的鲁棒低级技能,是一个巨大的挑战。最近的一些研究使用 LLM 直接输出低级控制 [14],[15]。然而,它们只在相对简单的操作任务中有效,这些任务不涉及快速的高维控制。由于 3D 理解不足,LLM 通常会在需要有效理解场景 3D 结构的复杂环境中失败。此外,最近的研究利用视觉-语言模型 (VLM) 进行视觉基础研究,预测目标物体的边框或关键点 [16],[1]。尽管结果很有希望,但它们依赖于现成的 VLM,而这些 VLM 可能并未针对动态环境中的特定复杂任务进行完全优化。

LLM 作为任务规划器。大语言模型 (LLM) 的最新进展极大地影响机器人在各种应用中的发展。值得注意的方法通常包括使用 LLM 生成高级规划 [1]、[2]、[3]、[4]、[20]。例如,SayCan [1] 通过生成可行的语言规划并采用affordance 函数来衡量技能的执行可能性,强调 LLM 非凡的常识推理能力。一些方法还利用 LLM 生成编程代码或符号 API 作为规划 [12]、[21]、[8]、[22]、[23]、[24]、[25]。然而,这些方法仅将自然语言指令作为输入,缺乏通过多模态感官观察感知世界的能力。因此,它们无法根据环境反馈调整语言规划,这严重限制它们在动态现实环境中的性能。由于 LMM 的出现,一些研究 [26]、[27]、[28] 利用 GPT-4V [17] 进行视觉输入规划。然而,他们只将 GPT-4V 用作一个固定的规划器,没有批评和自我改进。

低级机器人原语。尽管在高级规划方面取得了重大进展,但之前基于 LLM 的语言规划器 [1]、[2]、[11]、[12]、[3] 强烈假设存在可靠的低级技能供高级规划器检索,这些技能通常是手动预定义的技能集。一些研究 [14]、[12]、[29]、[30] 使用 LLM 在文本中输出直接的低级控制,这对于应用高维控制的复杂现实世界任务是不切实际的。一些方法 [16]、[31]、[32]、[33]、[34] 还利用视觉语言模型 (VLM) 来推断基于语言的功能 affordance 并执行运动规划。然而,对于具有多种几何形状和复杂 3D 结构的具有挑战性环境,它们仍然缺乏准确的 3D 理解。然而,LMM-3DP 通过将高级规划器与语言条件 3D 策略相结合来解决这一挑战,该策略可以通过对场景结构的全面 3D 理解有效地学习新技能。

低级技能的 3D 表示。为了学习针对各种技能的视觉模仿学习策略,大多数先前的研究 [35]、[36]、[37]、[38]、[39]、[40] 一直在利用基于 2D 图像的表示进行策略训练,而最近的研究越来越多地认识到 3D 表示相对于 2D 图像的优势 [41]、[42]、[43]、[44]、[45]、[46]。 GNFactor [42] 和 DNAct [43] 通过从视觉基础模型中提取 2D 特征来学习 3D 表示。然而,它们仍然需要费力的多视图图像收集来训练 NeRF [47] 模型,这对大规模部署构成了挑战。

如图所示LLM-3DP流水线:

请添加图片描述

用于高级规划的 LMM

带视觉反馈的规划。在现实世界中,执行任务的最佳规划可能不是最初设计的规划。例如,你可能规划将蔬菜放在最喜欢的蓝色碗里作为晚餐,但当发现蓝色碗不可用时,你会改用红色碗。同样,在机器人规划中,机器人必须能够根据当前情况更新其规划,这需要在任务执行期间提供视觉反馈。将 GPT-4V 作为规划器集成到机器人的执行循环中,使其能够在每次执行技能后更新规划。这种设计,增强机器人适应动态场景(例如当存在环境干扰时)的能力,并在低级控制无法执行时重新尝试之前的技能。

评论家智体。为了确保规划器生成的规划正确可靠,引入一个额外的评论家智体,以主动识别生成规划中的缺陷并不断自我改进。评论家智体仅将视觉观察和提出的规划作为输入(无需人工指令),它会检查下一步在当前情况下是否可行。如果评论家发现执行下一步将导致不良结果,则其推理将输入回规划器,然后规划器提出新规划。例如,规划器的输出很容易受到人类指令的影响。即使使用流行的提示技术 [49],这个问题仍然存在。如果人类指令是关闭所有抽屉,但场景中有些抽屉已经关闭,规划器仍可能生成一个涉及关闭所有抽屉的规划。但是,评论家可以准确地判断机器人不应该关闭已经关闭的抽屉,从而纠正规划器的错误。

终身学习。目标是让规划器随着时间的推移而改进,并通过从过去的经验中学习来避免重复犯错,就像人类学习一样。然而,对规划器进行微调需要耗费大量的计算资源。相反,利用人类对 GPT-4V 输出规划和推理的批评,然后总结这些批评以进行上下文学习。这些总结被存储为记忆,供规划者将来参考。此外,规划者可以在必要时向技能库提出新技能,然后低级策略将根据这些新技能进行相应更新。例如,在烹饪任务中,如果没有点击技能,机器人就无法打开炉子。规划者会将点击技能确定为未来学习的必需技能。随着技能库的扩展,这种方法使提出的框架能够处理更复杂的任务。

如图所示是规划器如何在机器人执行期间更新规划的示例:

请添加图片描述

使用 3D 语义表征的技能学习

根据规划器生成的语言指令,训练一个语言条件化的 3D 策略,从人类演示数据中学习所需的低级技能。不是预测每个连续动作,而是提取关键帧动作并将技能学习转换为基于关键帧的动作预测问题。这种方法简化连续控制,并且在学习可处理新目标和环境的泛化策略时样本效率更高。

视觉和语言编码器。为了应对具有各种目标和场景结构的复杂现实环境,采用双分支架构学习统一的 3D 和语义表示:i)使用互联网规模数据进行预训练的视觉基础模型,在理解复杂场景方面取得了巨大成功,具有强大的零样本泛化能力。为了在机器人技术中利用这些强大的视觉基础模型,应用基础模型(例如 DINO [48])来提取具有丰富语义的 2D 图像特征。然后,将 2D 特征图反向投影到 3D 空间来获得 3D 点特征。ii)尽管视觉基础模型具有丰富的语义,但它仍然缺乏准确的几何理解。因此,采用基于点模型的单独分支(例如 PointNext [19])来学习几何点特征,以更好地捕捉局部 3D 结构。随后,语义和几何点特征都由 MLP 层融合。为了将语言理解纳入策略,用来自 CLIP [50] 的预训练语言编码器来获得语言嵌入。

关键帧动作预测。给定融合的 3D 点特征、语言嵌入和机器人本体感受,用 3D Transformer 架构来预测下一个最佳关键帧的 6-DOF 姿势。不再预测连续动作,而是将模型预测简化为平移 a/trans、旋转 a/rot、夹持器张开度 a/open 和防撞概率 a/collision。具体来说,通过在夹持器的工作空间中采样一组固定的查询点来近似连续的 3D 场。

这样做是因为,与基于体素的方法(这些方法会离散化输出空间并且内存效率低下)不同,基于采样的方法提供了连续的输出空间并在训练期间节省内存。还定义一个可学习的 token,以更有效地关注局部结构。查询点和可学习的token都通过具有视觉和语言特征的多个交叉注意层,以获得 token 特征 f/t 和查询点特征 f/q。然后,计算 f/t 和 f/q 的内积,为每个查询点分配一个分数。通过对分数应用 argmax 运算来选择下一个最佳路径点 P/i。受 [51] 的启发,随后在 P/i 周围重新采样一组减少的查询点,并根据之前的预测在这些查询点中优化路径点的选择。

对于平移,计算预测点索引 Q/trans 与真值 Y/trans 之间的交叉熵损失。将标签平滑函数 LS 应用于平移损失,以防止过拟合并减轻现实世界演示中的标签噪声。

实验设置和实施细节如下。

为实验设置一个真实的厨房环境,与简单的桌面设置相比,该环境更复杂,并且具有更多视觉特征。机器人是一个 7-DoF Franka Emika Panda 机器人,带有 1-DoF 可变形夹持器。对于视觉输入,使用两个 Intel RealSense D435 摄像头:一个提供正面视图,另一个安装在夹持器上。为了收集基于模仿学习的低级策略数据,用 HTC VIVE 控制器和基站来跟踪人类手部运动的 6-DOF 姿势。然后用 SteamVR 将控制器运动映射到 Franka 机器人的末端执行器。在低级策略训练中,对一个厨房设置使用 100 个人类演示,对两个厨房设置使用 200 个演示(每个任务 10 个演示)。用 Adam 优化器,学习率为 3 × 10−4。训练在一台 NVIDIA GeForce RTX 3090 上进行,批次大小为 16。用色彩丢失和平移增强的技术来提高模型性能。

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

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

相关文章

idea整合deepseek实现AI辅助编程

1.File->Settings 2.安装插件codegpt 3.注册deepseek开发者账号,DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息,File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…

2025年日祭

本文将同步发表于洛谷(暂无法访问)、CSDN 与 Github 个人博客(暂未发布) 本蒟自2025.2.8开始半停课。 任务计划(站外题与专题) 数了一下,通过人数比较高的题,也就是我准备补的题&a…

重学SpringBoot3-Spring WebFlux之SSE服务器发送事件

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞??收藏评论 Spring WebFlux之SSE服务器发送事件 1. 什么是 SSE?2. Spring Boot 3 响应式编程与 SSE 为什么选择响应式编程实现 SSE? 3. 实现 SSE 的基本步骤 3.1 创建 Spr…

HarmonyNext当自定义Dialog有TextInput输入框组件时,弹出软键盘时,dialog布局与软键盘之间有16vp间隙,如何解决,正宗方案

网上的解决方案都是在Dialog组件的根容器中设置偏移量.offset({x:0,y:16}) 大概这种的,这种垃圾解决方式最不可靠,倘若dialog输入框时根据状态变量动态显示的话,即使设置了也没有用 正宗解决方案 首先自定义dialog 三个地方需要注意 1、cu…

idea 如何使用deepseek 保姆级教程

1.安装idea插件codegpt 2.注册deepseek并生成apikey deepseek 开发平台: DeepSeek​​​​​​​ 3.在idea进行codegpt配置 打开idea的File->Settings->Tools->CodeGPT->Providers->Custom OpenAI Chat Completions的URL填写 https://api.deepseek…

响应式编程库(三) -r2dbc

r2dbc整合 什么是r2dbc版本选择简单试用整合springbootDatabaseClient 进行查询使用Repository接口(对应mapper)实体类复杂查询(一对一)实体类转换器测试代码一对多关系 什么是r2dbc 反应式关系数据库连接(R2DBC)项目为关系数据库…

第26场蓝桥入门赛

5.扑克较量【算法赛】 - 蓝桥云课 C&#xff1a; #include <iostream> #include <algorithm> using namespace std;int a[100005];int main() {int n,k;cin>>n>>k;for (int i1; i<n; i)cin>>a[i], a[i] % k;sort(a1, a1n);int mx a[1]k-a…

封装descriptions组件,描述,灵活

效果 1、组件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…

【专题】2025年我国机器人产业发展形势展望:人形机器人量产及商业化关键挑战报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p39668 机器人已广泛融入我们生活的方方面面。在工业领域&#xff0c;它们宛如不知疲倦的工匠&#xff0c;精准地完成打磨、焊接等精细工作&#xff0c;极大提升了生产效率和产品质量&#xff1b;在日常生活里&#xff0c;它们是贴心…

能够从优秀工控app中学到什么?

美的工控类APP设计在多个方面都有值得学习的地方&#xff0c;包括用户体验、视觉设计、功能布局等&#xff0c;以下是具体内容&#xff1a; 用户体验方面 精准的用户需求洞察&#xff1a;工控类APP的目标用户通常是专业的工程师、技术人员等&#xff0c;其设计会深入了解这些…

334递增的三元子序列贪心算法(思路解析+源码)

文章目录 题目思路解析源码总结题目 思路解析 有两种解法:解法一:动态规划(利用dp找到数组最长递增序列长度,判断是否大于3即可)本题不适用,因为时间复杂度为O(n^2),超时。 解法二:贪心算法:解法如上图,题目要求长度为三,设置第一个元素为长度1的值,是指长度二的…

深入探究 C++17 std::is_invocable

文章目录 一、引言二、std::is_invocable 概述代码示例输出结果 三、std::is_invocable 的工作原理简化实现示例 四、std::is_invocable 的相关变体1. std::is_invocable_r2. std::is_nothrow_invocable 和 std::is_nothrow_invocable_r 五、使用场景1. 模板元编程2. 泛型算法 …

P1049 装箱问题(dp)

#include<bits/stdc.h> using namespace std;int main() {int v,n;cin>>v>>n;int a[30];int dp[20005];for(int i0;i<n;i){cin>>a[i];}memset(dp,0,sizeof(dp));// 设置所有元素为0&#xff0c;表示最大体积为0for(int i0;i<n;i){for(int jv;j&…

Groovy基础

引言&#xff1a; Groovy 是一种基于 Java 平台的动态编程语言&#xff08;指在运行时进行类型检查的语言。在使用动态语言编写程序时&#xff0c;变量的类型不需要在声明时明确指定&#xff0c;而是在运行时根据赋给变量的值来确定类型。动态语言在代码执行过程中会进行类型检…

Flink CDC YAML:面向数据集成的 API 设计

摘要&#xff1a;本文整理自阿里云智能集团 、Flink PMC Member & Committer 徐榜江&#xff08;雪尽&#xff09;老师在 Flink Forward Asia 2024 数据集成&#xff08;一&#xff09;专场中的分享。主要分为以下四个方面&#xff1a; Flink CDC YAML API Transform A…

OpenCV:视频背景减除

目录 简述 1. MOG &#x1f537;1.1 主要特点 &#x1f537;1.2 代码示例 &#x1f537;1.3 运行效果 2. MOG2 &#x1f537;2.1 主要特点 &#x1f537;2.2 代码示例 &#x1f537;2.3 运行效果 3. KNN 4. GMG 5. CNT 6. LSBP 7. 如何选择适合的接口&#xff…

PAT乙级( 1009 说反话 1010 一元多项式求导)C语言版本超详细解析

1009 说反话 给定一句英语&#xff0c;要求你编写程序&#xff0c;将句中所有单词的顺序颠倒输出。 输入格式&#xff1a; 测试输入包含一个测试用例&#xff0c;在一行内给出总长度不超过 80的字符串。字符串由若干单词和若干空格组成&#xff0c;其中单词是由英文字母&#x…

OpenCV2D 特征框架 (19)目标检测类cv::CascadeClassifier的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::CascadeClassifier 是 OpenCV 中用于对象检测的一个核心类&#xff0c;特别适用于基于 Haar 特征和 LBP&#xff08;局部二进制模式&#xf…

大数据学习之SparkSql

95.SPARKSQL_简介 网址&#xff1a; https://spark.apache.org/sql/ Spark SQL 是 Spark 的一个模块&#xff0c;用于处理 结构化的数据 。 SparkSQL 特点 1 易整合 无缝的整合了 SQL 查询和 Spark 编程&#xff0c;随时用 SQL 或 DataFrame API 处理结构化数据。并且支…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(四)

#作者&#xff1a;闫乾苓 系列前几篇&#xff1a; 《RabbitMQ 从入门到精通&#xff1a;从工作模式到集群部署实战&#xff08;一&#xff09;》&#xff1a;link 《RabbitMQ 从入门到精通&#xff1a;从工作模式到集群部署实战&#xff08;二&#xff09;》&#xff1a; lin…