AnyPlace:学习机器人操作的泛化目标放置

news2025/2/13 5:54:06

25年2月来自多伦多大学、Vector Inst、上海交大等机构的论文“AnyPlace: Learning Generalized Object Placement for Robot Manipulation”。

由于目标几何形状和放置的配置多种多样,因此在机器人任务中放置目标本身就具有挑战性。为了解决这个问题,AnyPlace,一种完全基于合成数据训练的两阶段方法,能够预测现实世界任务中各种可行的放置姿势。其关键见解是,通过利用视觉-语言模型 (VLM) 来识别粗略的放置位置,只关注与局部放置相关的区域,这样能够训练低级放置-姿势-预测模型,以有效捕捉不同的放置位置。为了进行训练,生成一个完全合成的数据集,其中包含不同放置配置(插入、堆叠、悬挂)中随机生成的目标,并训练局部放置-预测模型。其在模拟中进行广泛的评估,证明在成功率、可能的放置模式覆盖率和精度方面都优于基线。在现实世界的实验中,展示如何将纯粹基于合成数据训练的模型直接迁移到现实世界,它可以在其他模型难以应对的场景中成功执行放置 - 例如具有不同的目标几何,多种放置模式以及实现精细放置的高精度。

如图所示机器人执行 AnyPlace 方法:

添加图片注释,不超过 140 字(可选)

放置目标是人类在日常生活中毫不费力完成的一项基本任务,从将物品摆放在桌子上到将电缆插入插座。另一方面,让机器人执行这样的任务往往极具挑战性。挑战来自于不同放置任务的各种约束以及泛化到未见过目标的难度。现有方法通常是针对特定任务的,对单个放置任务使用大量演示,例如将目标挂在架子上 [28],希望机器人可以推广到未见过的目标。或者,少样本方法,专注于仅使用少量演示来学习目标放置,旨在让模型在类似目标和设置的随机初始配置中复制相同的放置操作。

学习不同的目标放置,对现有模型提出了重大挑战,主要是因为泛化难度大。泛化可以分为两个方面:目标级和任务级。目标级泛化侧重于开发各种目标和放置配置的鲁棒表示,使模型能够有效地处理未见过的目标。任务级泛化涉及模型根据给定点云预测不同放置配置的能力。此外,预测多模态放置输出(涵盖一系列有效位置和模式)仍然具有挑战性,尤其是在存在多个可行解决方案的情况下。例如,机器人将小瓶插入小瓶板上的许多空槽之一。现有方法 [26、3、27、21、24、23、9、6、15、14] 通常在少样本学习框架内运行,其中它们学习涉及两个特定目标的特定放置,导致对不同任务和目标类型的泛化能力较差。相比之下,RPDiff [28] 使用相对较大的数据集针对三种放置场景(例如,架子上的杯子、书架上的书、罐头堆叠)训练单独的模型,展示一定程度的类内目标级泛化,但其对新任务的泛化尚未研究。
机器人操作中的目标拾取和放置。机器人拾取和放置问题通常以两种方式表述:目标重排列和直接末端执行器姿势预测。在目标重排列中,目标是训练一个模型来预测目标从其初始姿势到其最终放置姿势的相对变换。假设抓取姿势由现有模型生成,将预测的相对变换与抓取姿势相乘来计算末端执行器的最终放置姿势。在这种情况下,许多工作都侧重于预测两个目标的明确任务相关特征,然后通过优化或回归求解相对姿势。具体而言,神经描述子场 (NDF) 系列论文 [26, 3, 27] 学习点云的占用场作为表示。然后,使用附加到放置目标的一组预定义关键点与目标物体的占用特征场进行交互并对其进行查询。通过将每个点的查询特征与演示期间收集的特征进行匹配,可以确定最佳目标变换。 TaxPose [21] 利用基于 Transformer 的交叉注意来预测两个目标之间的对应点,并使用可微分奇异值分解 (SVD) 来求解相对变换。为了保证放置-姿势-预测模型对 SE(3) 变换,即 SE(3) 等变,具有鲁棒性,方法 [24、23、9] 明确预测目标点云的点类型 0 和类型 1 特征,然后解决一个优化问题,其基于演示将这些特征对齐到特定配置中。所有这些方法都在少样本设置下运行,并且可以在给定两个目标的情况下预测单个放置姿势。对于模型来说,捕捉和预测放置姿势的分布至关重要,因为由于运动学限制,机器人并非能够实现每个放置姿势。相比之下,RPDiff [28] 在大型数据集上训练具有扩散机制的 Transformer,逐渐对目标放置姿势进行去噪。然而,他们的实验表明,可能的放置位置的覆盖范围并不完整。扩散过程中固定-大小的裁剪机制可能也难以泛化到不同尺寸的目标。此外,最近的一项研究 [5] 在模拟中对多个稳定位置进行采样,并使用 VLM 根据语言查询选择适当的模式。虽然这些模式是离散的,但每种模式都允许目标沿其对称轴旋转,从而产生形成连续分布的有效放置姿势。

拾取-和-放置任务的另一种方法,是直接预测机器人的末端执行器姿势。M2T2 [33] 和 Pick2Place [12] 专注于杂乱场景中的平面目标放置。M2T2 [33] 采用多任务 transformer,带有单独的解码器来预测每个离散旋转 bin 的抓取姿势和放置位置 affordance 图。其他工作,如 Pick2Place [12],专注于预测关键的末端执行器姿势以完成特定任务。 RVT [10] 和 RVT-2 [11] 也利用了Transformer,利用场景的多视图 RGB 图像来预测机器人下一个末端执行器位置的热图。另一方面,由粗到细的 Q-attention [16] 利用场景的体素来识别当前分辨率下最有趣的空间点。该点将成为下一步细化步骤的体素质心,使模型能够收集更准确的 3D 信息。

机器人操作中的多模态预测。考虑一个以各种姿势挂在架子上不同挂钩上的杯子。放置姿势的多模态在操作中很常见。最近,行为克隆方法的进展,例如基于能量的 IBC 模型 [8] 和扩散策略 [2],试图捕捉这种多模态性。具体来说,对于扩散策略,它学习从随机噪声分布开始对​​动作轨迹进行去噪,从而使模型能够捕捉可能解决方案的分布。对这些分布进行建模的另一种方法是通过变分自动编码器 (VAE)。例如,行为 Transformer(BeT) [25] 和 VQ-Bet [17] 训练一个 VQ-VAE [30],将连续动作离散化并编码为潜表示,从而更容易处理多模态和高维行为数据。为了根据图像输入训练整个策略,他们采用基于 Transformer 的模型以及 VAE 解码器来预测动作序列。作者证明,他们的方法在常见基准上优于扩散策略 [2]。

为了让机器人能够在场景中执行不同的目标放置,将放置姿势预测问题分解为两个子任务:高级放置位置建议任务和低级细粒度放置姿势预测任务。对于高级任务,结合了视觉-语言模型,该模型经过训练可根据给定的文本提示输出图像中的 2D 关键点位置。然后可以提取候选放置位置周围的一小块局部区域并将其转发到低级姿势预测模型。这样通过使用更小的点云作为输入,大大简化低级姿势预测问题,并且有助于泛化,因为局部区域之外的任何特征都不会影响预测。这样能够专注于有限的一组一般放置类型并利用完全合成的数据集,但最终模型在广泛的现实世界放置任务中有效。

AnyPlace 放置姿势预测方法的概述如图所示:

添加图片注释,不超过 140 字(可选)

问题设置。制定目标放置任务来预测相对变换。具体来说,给定一个输入元组 {D, I},其中 D 表示放置任务的语言描述,I 是场景的 RGBD 图像,目标是预测一组刚性变换 {T_n},将目标物体 C 从其当前位置移动到基物体 B 上所有满足语言条件 D 的可行放置位置。假设抓握姿势 T_grasp 由一个抓握预测模型提供,最终末端执行器姿势 T_place 可以使用初始目标姿势和其最终放置姿势之间的预测相对变换来计算,即 T_place = T_nT_pick。

VLM 引导的放置位置预测

当目标具有多个潜在放置位置时,现有模型在以端到端方式进行训练时通常难以捕捉所有这些离散位置。为了解决这个问题,利用 VLM 的最新进展来直接识别放置位置,VLM 已展示出基于语言描述在图像中定位点和区域的能力。具体而言,给定放置任务 D 的语言描述和 RGBD 图像 I,旨在提取目标物体 P_c 的点云和基物体 P_b_crop 的局部感兴趣区域。利用 Molmo [4] 将所有潜在放置位置检测为图像空间中的关键点,例如指定可以将小瓶插入小瓶盘的所有位置。这种方法使低级姿势预测模型能够专注于学习两个物体的不同放置配置并预测放置姿势,而无需明确捕捉多个放置位置。

首先,提取目标物体 C 和基物体 B 的分割掩码。为此,首先查询 VLM 以获取图像中每个物体的点位置,然后将这些点传递给分割模型以获取分割掩码。这样能够在物体选择中进行复杂的语言调节(例如,“蓝色小瓶”、“秤前面的小瓶架”等)。接下来,再次在基物体 B 上查询 VLM 以找到放置的所有离散模式(如图所示)。对于图像中每个已识别的点,提取点云中的局部区域并将其用作姿势预测模型的输入。

添加图片注释,不超过 140 字(可选)

在处理具有多种可能放置姿势的不同物体时,明确识别放置模式(而不是依赖模型探索整个物体的放置)更可靠、更实用。此外,由于高级模块建立在通用 VLM 上,因此系统可以处理不同的放置并执行复杂的语言调节。具体来说,这样能够进行复杂的语言调节:(1) 选择放置哪个物体;(2) 选择将其放置在哪个物体上;(3) 选择在该物体上执行放置的位置。这样其保证即使在放置的物体很大或难以分割时也能有效发挥作用。这是因为无论物体的大小如何,模块始终都会输出潜在放置位置周围的一个小的局部区域。

细粒度放置姿势预测

给定来自高级模块的点云 P_c 和 P_b_crop,低级姿势预测模型仅专注于学习不同的局部放置安排,而无需捕获不同放置位置的分布。直觉是,借助庞大的合成数据集,该模型应该能够有效地捕获基于物体几何形状不同放置配置的关键表示,这使其能够泛化到未见过物体并对噪声数据保持稳健。仅将局部区域作为输入,姿势预测模型应该能够实现更好的精度,这在许多相关的放置任务中至关重要。

用离散的时间步长预测扩散过程中的相对变换。从两个物体点云开始,扩散过程迭代地对相对变换进行去噪,逐渐将放置的物体移向其最终姿势。首先,使用随机变换 T_init = (R,t) 变换物体点云 P_c 以获得 P_c(0) ,其中 R 在 SO(3) 空间上随机采样,t 在裁剪放置区域的边框内采样:P_c^(0)=T_init P_c,其中 T_init = (R, t)。

在每个去噪时间步 t,P_c(t) 和 P_b_crop 都会输入到编码器中。具体来说,两个点云首先使用最远点采样 (FPS) 方法下采样到 1024 个点,并归一化为单位立方体的大小。下采样的点云,通过线性层提取潜特征,随后将其与用于识别相应点云的 one-hot 向量连接起来。然后,这些组合特征由 Transformer 编码器 [31, 1] 处理,其中应用自注意层来有效地从点云中提取特征。然后,利用交叉注意层和池化层进一步聚合这些特征,从而生成一个统一的特征表示,以捕获两个物体之间的空间关系。在解码器中,首先获得扩散时间步 t 的正弦位置嵌入。最后,将联合点云特征表示与编码的时间步一起输入到 MLP 层中,预测由旋转 R 和平移 t 组成的相对变换 T_n(t),以细化物体的姿势。然后对目标物体点云进行相应的变换,然后继续进行下一个去噪步骤,因为 P_c(t-1) = T_n^(t) P_c^(t)。将物体从其初始位置转换为放置姿势的完整变换 T_n,是通过扩散步骤预测的所有增量变换乘积。

在训练期间,执行 5 个去噪步骤。不是像通常的做法 [13] 那样在前向过程中逐渐向输入添加高斯噪声,而是手动定义在每个时间步添加的噪声。在本文例子中,噪声是模型预测的相对变换。具体而言,中间的真值相对变换 T_n,GT(t) 是通过线性插值平移并使用球面线性插值 (SLERP) 来采样物体的初始姿势和最终放置姿势之间的旋转而生成的。在推理过程中,通过多次采样扩散模型来生成不同的放置姿势,每次都从随机变换的初始物体点云 P_c^(0) 开始。在测试时执行大量的去噪步骤,通过重复最后的去噪步骤更多次,总共是 50 个去噪步骤。

在训练期间的每个扩散步骤中,给定真值 T_n,GT(t) 和预测值 T_n^(t),用 L1 距离作为平移损失 L_translation。对于旋转,测量真值和预测旋转之间的测地距离。此外,在由真值姿势和预测姿势转换的点云之间应用 Chamfer 损失。

机器人拾取和放置执行

确定放置姿势后,实施拾取和放置流水线来操纵物体并将其准确定位在目标姿势上。具体来说,利用 AnyGrasp [7] 为目标物体 C 找到可行的抓取,并使用 cuRobo [29] 作为运动规划器来执行无碰撞放置。对 (T_place , T_pick) 对执行拒绝采样,为模型预测的特定放置姿势,识别有效的抓取,由机器人执行。

抓取检测,从一个RGBD 图像中提取的目标物体点云 P_c 开始。 AnyGrasp [7] 随后处理生成的点云,以确定按置信度排序的最佳抓取候选点。为了拾取物体,夹持器首先移动到预抓取姿势,沿夹持器 z 轴距离目标 10 厘米。然后,夹持器沿直线接近目标,同时保持其方向。同样,在放置过程中,机器人首先移动到预放置姿势,然后在不改变夹持器方向的情况下进行最终接近。根据物体的大小调整从预放置姿势到最终放置姿势的距离,以避免在过渡到预放置位置时发生碰撞。在定义路点和末端执行器方向约束后,用 cuRobo 生成完整的机器人拾取和放置运动规划。

构建合成数据集的目的,是捕获广泛的局部放置安排。现有模型使用一些非常具体的任务(例如将书插入书架)来简单地评估其模型在给定此类任务的放置数据用于训练时的效果 [33, 12, 32]。

另一方面,目标不仅是使用数据集来评估所提出的模型,而且要构建表示各种类型的放置(堆叠、悬挂、插入)的模型,如图所示。姿势预测模型的局部性质使这项任务变得容易得多,并能够构建一个可以泛化到各种现实世界放置任务的数据集。

添加图片注释,不超过 140 字(可选)

数据生成流水线由两个主要组件组成:目标生成和放置姿势生成。具体来说,用 Blender 程序化地生成 3D 目标,例如钉子、孔、杯子、架子、烧杯、小瓶和小瓶架。目标参数(包括高度、宽度、长度和边数)是随机的,以增加可变性。对于架子和小瓶板,还将杆和孔的数量随机化。此外,沿 x、y 和 z 轴应用随机缩放以进一步增强多样性。

为了确定目标的稳定位置,用 NVIDIA IsaacSim 确定三种配置的目标放置姿势:堆叠、插入和悬挂。在每次试验开始时,随机抽取两个目标并将其加载到模拟中。由于所有目标都是程序生成的,并且在生成过程中已知可能的放置位置(例如,小瓶板上每个孔的中心),因此可以轻松确定放置目标的理想放置位置。这种方法可以找到目标放置位置,以最大化目标在最终放置配置中的间隙。对于目标放置旋转,然后沿其对称轴随机采样以探索各种放置姿势。设置四个摄像头来捕捉密集的目标点云并渲染 RGBD 图像。该数据集涵盖现实生活中遇到的广泛放置场景。总共创建 13 个类别的 1489 个目标,并生成 5370 个放置姿势。

训练细节

在完整数据集的子集上独立训练每个模型,根据放置配置的类型进行拆分,并在组合数据集上进行训练(称为“多任务”变型)。虽然类似的方法通常针对单个任务进行训练(例如 [28]),但目标是构建一个能够执行多种放置任务的单个模型。所有单任务模型都经过三天的训练,而多任务模型则在单个 NVIDIA A100 GPU 上经过五天的训练。

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

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

相关文章

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…

基于全志T507的边缘计算机,推动光伏电站向智能运维转型

智能监控与维护 光伏电站通常分布在广阔的地域内,传统的监控方式往往需要大量的人力物力进行现场检查和数据采集。采用全志T507为核心的嵌入式工控机或边缘计算控制器可以实现光伏电站的实时监测,通过连接传感器网络收集电站各个组件的工作状态信息&…

用户认证练习实验

一.拓扑 二.sw2配置 三.ip配置 四.dhcp分配IP地址 五.安全区域配置 六.防火墙地址组信息 七.管理员 创建管理员角色 创建管理员 启动tenlnet 八.用户认证配置 认证策略 九.安全策略配置

【登录认证】

目录 一. 会话技术1.1 cookie1.2 session1.3 令牌方案 二. JWT令牌三. 过滤器Filter四. 拦截器Interceptor \quad 一. 会话技术 \quad \quad 1.1 cookie \quad \quad 1.2 session \quad \quad 1.3 令牌方案 \quad \quad 二. JWT令牌 \quad \quad 三. 过滤器Filter \quad \quad …

DeepSeek 赋能智慧教育 | 讯方“教学有方”大模型全面接入 DeepSeek!

国产 DeepSeek 大模型以强大的深度学习能力和广泛应用场景迅速火爆全球,其在智能对话、文本创作、语义解析、计算推理、代码生成与补全等多个应用领域,展现出了无与伦比的实力和魅力。2月10日 ,由讯方技术自研的教育行业大模型“教学有方”全…

Unity中自定义协程的简单实现

在 Unity 中,协程(Coroutine)是一种非常强大的工具,它允许我们在不阻塞主线程的情况下,将代码的执行分成多个步骤,在不同的帧中执行。 Unity中协程实现原理 迭代器与状态机:本质上是基于C#的迭…

打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?

两个月没有使用vscode编写代码,今天使用的时候发现了以上的问题导致我的vscode无法编写程序,接下来我将本人解决该问题的思路分享给大家。 首先我们要清楚WSL是适用于linux的window的子系统,是一个在Windows 10\11上能够运行原生Linux二进制可…

Linux(socket网络编程)TCP连接

Linux(socket网络编程)TCP连接 基础文件目录函数系统进程控制函数fork()exec系列函数void abort(void)void assert(int expression)void exit(int status)void _exit(int status)int atexit(void (*func)(void))int on_exit(void (*function)(int,void*)…

Rust学习总结之所有权(一)

不管是计算机的哪种语言,都有内存的管理方式。主流有两种,一是以C为代表的由开发者来决定申请和释放内存,二是以Python为代表的通过语言本身的垃圾回收机制来自动管理内存。Rust开辟了第三种方式,通过所有权系统管理内存。 Rust所…

汇编简介常用语法

为什么要有汇编 因为Cortex-A芯片一上电SP指针还没初始化,C环境还没准备 好,所以肯定不能运行C代码,必须先用汇编语言设置好C环境,比如初始化DDR、设置SP 指针等等,当汇编把C环境设置好了以后才可以运行C代码 GNU语法…

ANR学习

一、ANR 概述 ANR 是 Android 系统用于监控应用是否及时响应的关键机制。形象地说,如同设置定时炸弹场景:系统的中控系统(system_server 进程)启动倒计时,若应用进程在规定时间内未完成特定任务,中控系统将…

Tcp_socket

Tcp不保证报文完整性(面向字节流) 所以我们需要在应用层指定协议,确保报文完整性 // {json} -> len\r\n{json}\r\n bool Encode(std::string &message) {if(message.size() 0) return false;std::string package std::to_string(m…

< 自用文儿 > 在 Ubuntu 24 卸载 Docker 应用软件与运行的容器

环境: Host: usw OS: Ubuntu 24.04 TLS 目标: 卸载在运行的 Docker APP。 (上运行了一个 container: 可以在线看 WSJ RSS 新闻,都 docker 预装两个网口,今天发现路由表有些看不懂,决定卸载) 卸载 Dock…

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强,智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备,能够实时采集用户的腰部健康数据,如姿势、运动…

Python的那些事第十八篇:框架与算法应用研究,人工智能与机器学习

人工智能与机器学习:框架与算法应用研究 摘要 本文深入探讨了人工智能与机器学习领域的核心框架和技术,包括TensorFlow、PyTorch和Scikit-learn库。文章首先介绍了TensorFlow和PyTorch的安装与配置方法,详细阐述了它们的基础概念&#xff0c…

java微服务常用技术

Spring Cloud Alibaba 1 系统架构演进 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。 1.1 单体架构 早期的软件系统通常是基于单体应用架构设计的,也就是将整个系统作为一个单一的、可执行的应用程序来构建和维护…

【Qt 常用控件】多元素控件(QListWidget、QTabelWidgt、QTreeWidget)

**View和**Widget的区别? **View的实现更底层,**Widget是基于**View封装实现的更易用的类型。 **View使用MVC结构 MVC是软件开发中 经典的 软件结构 组织形式,软件设计模式。 M(model)模型。管理应用程序的核心数据和…

解决VsCode的 Vetur 插件has no default export Vetur问题

文章目录 前言1.问题2. 原因3. 解决其他 前言 提示: 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…

python制作自己的一款Markdowm格式消除工具

01 引言 在日常使用 Markdown 编写文档时,我们有时会需要将 Markdown 格式的文本转换为纯文本,去除其中的各种标记符号,如标题符号、列表符号、代码块标记等。手动去除这些标记不仅效率低下,还容易出错。本文将介绍如何使用 Pyt…

如何从头训练大语言模型: A simple technical report

今天来快速捋一下路线,写个简短的technical report,更多是原理介绍性的。按我个人理解,从最简单的部分开始,逐步过渡到最繁复的环节: 模型架构-> Pretrain -> Post-Train -> Infra -> 数据侧。再掺杂一些杂项&#xf…