当前位置: 首页 > news >正文

【机器人】Graspness 端到端 抓取点估计 | 论文解读

在复杂场景中实现抓取检测,Graspness是一种端到端的方法;

输入点云数据输出抓取角度、抓取深度、夹具宽度等信息。

 开源地址:GitHub - rhett-chen/graspness_implementation: My implementation of Graspnet Graspness.

论文地址:Graspness Discovery in Clutters for Fast and Accurate Grasp Detection

看看检测效果,输出彩色+三维点云的抓取效果: 

然后输出纯三维点云的抓取效果:

论文复现参考我这篇博客:【机器人】Graspness 端到端抓取点估计 | 环境搭建 | 模型推理测试-CSDN博客

 

简单总结一下GraspNess 

将通用的抓取位姿检测,分解为两个阶段(two-stage)问题:

  1. where阶段:从单视角点云中找到高可抓取性(high graspability)的区域,即识别出场景中值得关注的局部空间点。
  2. how阶段:在确定了待抓取区域的基础上,为这些点确定具体的抓取参数,包括抓取器相对于物体的入射角度绕物体表面的平面内旋转角度抓取深度抓取分数(置信度)以及抓取器张开的宽度等。

该两阶段划分将复杂的抓取检测过程拆分:首先关注 “抓哪儿”(区域选择),然后再精确计算 “怎么抓”。

目录

1、研究背景与动机

2、改进思路

3、模型框架

第一阶段:可抓取性模型

第二阶段:抓取操作模型

特征图维度变化总结

4、细节设计

4.1 抓取性度量的引入

4.2 单物体抓取性得分的计算公式

4.3 复杂抓取性得分的计算公式

4.4 t-SNE数据降维可视化

4.5 最远点采样(FPS)

4.6 圆柱分组(Cylinder-Grouping)

4.7 抓取参数估计

4.8 多任务损失

五、实验测试


1、研究背景与动机

对于机器人操作而言,抓取是一个关键但具有挑战性的任务。

在传统的6DoF抓取检测方法中,一般会对场景中的所有点进行均等处理(如在点云中均匀采样抓取位姿候选),试图寻找最优的抓取姿势。

然而,这种“不加区分”的处理方式会带来两个明显的问题:

  • 速度问题:在一个复杂或拥挤(cluttered)的场景中,不区分优先级地处理大量候选抓取点位,将导致计算成本过高,降低推理速度。
  • 精度问题:忽视场景中不同区域的质量差异会使得搜索过程变得无谓冗余,影响整体的抓取检测准确性。

现有6-DoF抓取姿态检测方法主要着力于“how阶段”,即专注于提高最终抓取参数预测的质量,而对“where阶段”(初步过滤场景中那些明显不可能抓取的区域)关注不足。

已有方法可分为两类:

  1. 采样-评估范式(sampling-evaluation):这类方法在场景中均匀地随机采样大量抓取候选点,然后用模型对这些点逐一评估抓取质量。
  2. 端到端方法(end-to-end):这类方法采用端到端神经网络,从输入的点云直接预测整个场景的抓取参数。有的在网络输入前对点云进行下采样,有的在网络前向传播过程中进行采样。但本质上仍然没有显式区分出“值得关注的点”(可抓取点)和“不值得关注的点”。

然而,无论是上述哪一类方法,它们并没有显式地在第一阶段对场景进行有效过滤,都采用了均匀分布的候选点。

这意味着不管场景中是否存在大量不可抓取区域,这些方法都会耗费大量资源在不必要的点上,从而导致计算冗余。

2、改进思路

作者指出,均匀采样策略在实际中存在很大缺点。3D空间中无数点存在,能够真正被稳定抓取(可抓取区域)的点只是很小一部分。

关键点1:在通过场景的局部几何特征,来区分哪些区域更具有可抓性

  • 在尝试实际抓取参数计算之前,先通过对局部空间点的几何结构分析,为其分配一个“可抓取程度”的分数。
  • 这种先行的度量可以让算法在早期对整个场景进行过滤。

关键点2:从认知科学视角审视,人类在实际抓取任务中,会将视觉注意力偏向于那些最易于抓取的区域

  •  在实际行动(抓取参数预测)之前,先通过感知偏向将注意力分配到高可抓取区域
  • 在机器人抓取任务中类比这种注意力分配机制

整体模型框架,是一个两阶段-端到端网络,其流程如下:

  1. 输入完整的场景点云。
  2. 第一阶段利用可抓取评分筛选出高抓取性点(where阶段),舍弃低分点,从而减少后续计算量。
  3. 第二阶段对所选择的高分点进一步预测完整的抓取参数(how阶段)。

3、模型框架

整体模型框架,是一个两阶段-端到端网络,如下图所示

  • 第一阶段:可抓取性模型(上图部分)
  • 第二阶段:抓取操作模型(下图部分)

第一阶段:可抓取性模型

  1. 输入点云:接收一个点云作为输入,维度Nx3,其中包含场景的3D坐标信息。

  2. 点编码器-解码器:点云通过一个点编码器-解码器结构,维度Nx(3+C),该结构输出每个点的C维特征向量。

  3. 点级抓取性景观:通过一个多层感知机MLP,生成点级抓取性得分,这些得分表示每个点的抓取可能性。

  4. 抓取可能性高的点:使用最远点采样FPS策略从点级抓取性景观中选择M个种子点,维度Mx(3+C),这些点具有较高的抓取性得分

  5. 种子点:选出的种子点用于生成视图级抓取性景观。

  6. 视图级抓取性景观:通过MLP为每个种子点生成视图级抓取性得分,维度Mx(V+C),这些得分表示在不同视图方向上的抓取可能性.

第二阶段:抓取操作模型

  1. 选择最佳的抓取视图:结合了“抓取位置可能性高的点”和“抓取方向信息”,选择最佳的抓取视图。输入维度是维度Mx(3+C)和Mx(V+C);其中V是其是也是3;形成的维度Mx(3+3+C)

  2. 圆柱分组:种子点被分组到圆柱形区域中,这些区域由种子点的位置和选定的视图方向确定。每个圆柱组包含 K个点,特征维度为 K×(3+C)

  3. 圆柱组:每个圆柱形区域中的点被采样并用于抓取参数的估计。

  4. MLP处理:每个圆柱组的点通过MLP处理,生成抓取候选点的特征向量,维度为 M×C′,其中 C′是MLP输出的特征维度。

  5. 角度-深度搜索:在每个圆柱组中,通过搜索不同的角度和深度来优化抓取姿态,输出抓取姿态的得分和夹持器宽度,维度为 M×(A×D×2),其中 A是角度的数量,D 是深度的数量,2代表得分和宽度。

  6. 输出抓取姿态:对于每个圆柱组,网络输出M个抓取姿态,包括抓取得分和夹持器宽度。

特征图维度变化总结

  • 输入到编码器-解码器:N×3到 N×(3+C)
  • 点级抓取性得分:N×(3+C) 到 M×(3+C)
  • 视图级抓取性得分:M×(3+C) 到 M×(V+C)
  • 视图选择:Mx(3+C)和Mx(V+C),到Mx(3+3+C)
  • 圆柱分组:M×(3+3+C) 到 K×(3+C)
  • 抓取候选点特征:K×(3+C) 到 M×C′
  • 输出抓取姿态:M×C′到 M×(A×D×2)

4、细节设计

4.1 抓取性度量的引入

引入了点级抓取性和视图级抓取性,两种抓取性度量:

  • 点级抓取性(Point-wise Graspness):表示为Sp={sp_{i}sp_{i}⊂[0,1],i=1,...,N},其中[0,1][0,1]表示每个点的抓取性得分范围。
  • 视图级抓取性(View-wise Graspness):表示为Sv={sv_{i}sv_{i}[0,1]^{V},i=1,...,N},其中[0,1]^{V}表示在V维空间中的抓取性得分。

 抓取性度量的基本符号

  • 点集P={p_{i}∣i=1,...,N},表示场景中的所有点。
  • 视图方向集V={V_{i}∣j=1,...,V},表示在球面空间中均匀分布的视图方向。

4.2 单物体抓取性得分的计算公式

点级抓取性得分(Point-wise Graspness Score)

  • 其中,1(g)是一个指示函数,如果抓取 g成功则为1,否则为0。
  • G_{i,j}是以点p_{i}为中心,视图V_{i}下所有可行抓取姿态的集合。
  • 一个点在所有可能的抓取方向上成功抓取的平均概率。
  • 得分越高,表示该点在更多方向上具有成功的抓取潜力,因此更适合作为抓取点。

视图级抓取性得分(View-wise Graspness Score)


 

  •  是用于评估在特定视图方向上抓取成功可能性的量化指标
  • 帮助于机器人在复杂环境中快速识别出哪些方向更有可能成为成功的抓取方向

4.3 复杂抓取性得分的计算公式

在复杂场景中,抓取性不仅取决于点的几何特性,还受到场景中其他物体的影响。

碰撞检测用于评估在特定抓取姿态下,夹持器是否会与场景中的其他物体发生碰撞。

  • 作者提出了一种方法,通过重建场景并进行碰撞检测来处理碰撞问题。
  • 每个抓取候选点g_{k}^{i,j}都会经过碰撞检测,并根据结果更新抓取性得分。
  • 使用物体的3D模型和相应的6D姿态重建场景,对每个抓取候选点进行碰撞检测,并分配碰撞标签c_{k}^{i,j}

其中,q_{k}^{i,j}是抓取质量得分,c是一个阈值,用于过滤不成功的抓取。

  • 重建场景:使用物体的3D模型和相应的6D姿态(位置和方向)来重建场景。
  • 评估抓取候选点:对每个抓取候选点g_{k}^{i,j}进行碰撞检测,确定它是否与场景中的其他物体发生碰撞。
  • 更新抓取性得分:根据碰撞检测的结果更新抓取性得分。如果抓取候选点与场景中的其他物体发生碰撞,其抓取性得分将被降低。
  • 正负样本的选择:作者将抓取性得分高于0.3的点视为正样本,而抓取性得分低于0.1的点则作为同样数量的负样本。

4.4 t-SNE数据降维可视化

利用t-SNE(t-distributed Stochastic Neighbor Embedding)方法对GraspNet-1Billion数据集中所有场景的训练集和测试集进行了局部几何特征的可视化

  • t-SNE是一种用于高维数据降维的技术,它能够将高维空间中相似的点映射到低维空间中相近的位置,从而便于观察数据的分布情况。
  • 作者观察到不同抓取性得分的区域在几何上是相当可区分的。
  • 这意味着高抓取性得分的区域与低抓取性得分的区域在局部几何特征上存在明显差异。这些观察结果证明了抓取性度量是合理的

4.5 最远点采样(FPS)

为了最大化种子点之间的距离,从而确保采样点在空间上尽可能分散,采用最远点采样策略。

这个过程开始于随机选择一个种子点,然后迭代选择距离已选种子点集合最远的点作为新的种子点。

这个过程重复进行,直到选择了足够数量的种子点。

4.6 圆柱分组(Cylinder-Grouping)

  • 种子点-视图对:首先,根据种子点和视图向量确定圆柱空间的位置和方向。
  • 分组和采样:对于每对种子点和视图,使用固定高度和半径的圆柱体从种子点中分组并采样点。这些点将用于抓取参数的估计。

4.7 抓取参数估计

  • 坐标归一化:将圆柱体内的点坐标按圆柱半径归一化,并与通过抓取性FPS和抓取性PVS输出的特征向量拼接。
  • 特征向量:分组后的点集被称为抓取候选点,其大小为 M×K×(3+C),其中 M是种子点的数量,K是每个分组中采样的点数,C是特征向量的维度。

4.8 多任务损失

  • 级联抓取性模型和抓取操作模型同时训练,
  • 使用多任务损失函数,包括物体分类损失、点级抓取性、视图级抓取性、抓取得分和夹持器宽度的回归损失。

五、实验测试

  • 基准数据集 GraspNet-1Billion:这是一个大规模的数据集,用于抓取姿态检测,包含190个场景,每个场景有256个不同视角的视图,由两个相机(RealSense/Kinect)捕获。
  • 点云下采样:在输入网络之前,点云通过体素网格下采样,体素大小为0.005米,仅包含相机坐标系中的XYZ信息。
  • 数据增强:在训练过程中,通过随机翻转YZ平面,和围绕Z轴随机旋转±30°来增强输入云。
  • 抓取性模型:对于GraspNet-1Billion中的场景,为每个点密集标记300个不同视图每个视图48个抓取的质量得分

Graspness的方法,比GraspNet方法高出接近40个点,巨大的涨幅。

看看不同采用点的方法

分析使用可抓取最远点采样(Graspable FPS)与其他采样方法(如随机采样、普通FPS)对模型性能的影响

看一下模型效果

 论文复现参考我这篇博客:【机器人】Graspness 端到端抓取点估计 | 环境搭建 | 模型推理测试-CSDN博客

分享完成~

相关文章:

【机器人】Graspness 端到端 抓取点估计 | 论文解读

在复杂场景中实现抓取检测,Graspness是一种端到端的方法; 输入点云数据,输出抓取角度、抓取深度、夹具宽度等信息。 开源地址:GitHub - rhett-chen/graspness_implementation: My implementation of Graspnet Graspness. 论文地…...

力扣2300.咒语和药水的成功对数(二分法)

根据 灵茶山艾府 题解所写 题目描述: 给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 spells[i] 表示第 i 个咒语的能量强度,potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药…...

WEB开发: 全栈工程师起步 - Python Flask +SQLite的管理系统实现

一、前言 罗马不是一天建成的。 每个全栈工程师都是从HELLO WORLD 起步的。 之前我们分别用NODE.JS 、ASP.NET Core 这两个框架实现过基于WebServer的全栈工程师入门教程。 今天我们用更简单的来实现: Python。 我们将用Python来实现一个学生管理应用&#xff0…...

云原生周刊:Kubernetes v1.32 正式发布

开源项目推荐 Helmper Helmper 简化了将 Helm Charts导入OCI(开放容器倡议)注册表的过程,并支持可选的漏洞修复功能。它确保您的 Helm Charts不仅安全存储,还能及时应用最新的安全修复。该工具完全兼容 OCI 标准,能够…...

京准电钟:电厂自控NTP时间同步服务器技术方案

京准电钟:电厂自控NTP时间同步服务器技术方案 京准电钟:电厂自控NTP时间同步服务器技术方案 随着计算机和网络通信技术的飞速发展,火电厂热工自动化系统数字化、网络化的时代已经到来。一方面它为控制和信息系统之间的数据交换、分析和应用…...

深入探索Flink的复杂事件处理CEP

深入探索Flink的复杂事件处理CEP 引言 在当今大数据时代,实时数据处理变得愈发关键。Apache Flink作为一款强大的流处理框架,其复杂事件处理(CEP)组件为我们从海量实时数据中提取有价值信息提供了有力支持。本文将详细介绍Flink…...

clickhouse-数据库引擎

1、数据库引擎和表引擎 数据库引擎默认是Ordinary,在这种数据库下面的表可以是任意类型引擎。 生产环境中常用的表引擎是MergeTree系列,也是官方主推的引擎。 MergeTree是基础引擎,有主键索引、数据分区、数据副本、数据采样、删除和修改等功…...

力扣hot100——哈希

1. 两数之和 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> ans;map<int, int> mp;for (int i 0; i < nums.size(); i) {if (mp.count(target - nums[i])) {ans.push_back(mp[target - nums[i]])…...

少样本学习之CAML算法

上下文感知元学习&#xff08;Context-Aware Meta-Learning, CAML&#xff09; 概述 在机器学习和深度学习领域&#xff0c;元学习&#xff08;Meta-Learning&#xff09;旨在通过学习如何学习&#xff0c;使模型能够在面对新任务时快速适应。传统的元学习方法通常需要在特定…...

C# 中的闭包

文章目录 前言一、闭包的基本概念二、匿名函数中的闭包1、定义和使用匿名函数2、匿名函数捕获外部变量3、闭包的生命周期 三、Lambda 表达式中的闭包1、定义和使用 Lambda 表达式2、Lambda 表达式捕获外部变量3、闭包的作用域 四、闭包的应用场景1、事件处理2、异步编程3、迭代…...

网络编程 03:端口的定义、分类,端口映射,通过 Java 实现了 IP 和端口的信息获取

一、概述 记录时间 [2024-12-19] 前置文章&#xff1a; 网络编程 01&#xff1a;计算机网络概述&#xff0c;网络的作用&#xff0c;网络通信的要素&#xff0c;以及网络通信协议与分层模型 网络编程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分类&#xff0c;通过 …...

制作项目之前的分析

对网页的分析可以从多个角度入手&#xff0c;具体包括内容分析、技术分析、用户体验分析。 以下是对网页分析的详细步骤&#xff0c;帮助你从不同维度评估一个网页的效果与质量&#xff1a; 1. 内容分析 内容是网页最核心的部分&#xff0c;确保其符合用户需求是网页设计的首…...

LeetCode 1925 统计平方和三元组的数目

探索平方和三元组&#xff1a;从问题到 Java 代码实现 在数学与编程的交叉领域&#xff0c;常常会遇到一些有趣且富有挑战性的问题。今天&#xff0c;就让我们深入探讨一下 “平方和三元组” 这个有趣的话题&#xff0c;并使用 Java 语言来实现计算满足特定条件的平方和三元组…...

java开发入门学习三-二进制与其他进制

常见的进制 常用的进制有二进制&#xff0c;八进制&#xff0c;十进制&#xff0c;十六进制。而我们最熟悉的是十进制&#xff0c;他们分别是怎么表达的呢&#xff1f; 定义不同的进制&#xff0c;写法不同 二进制&#xff08;Binary&#xff09;&#xff1a; 使用前缀 0b 或…...

C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)

适用软件&#xff1a;C/S系统、Winform桌面应用软件。 运行平台&#xff1a;Windows .NETCore&#xff0c;.NET8 开发工具&#xff1a;Visual Studio 2022&#xff0c;C#语言 数据库&#xff1a;Microsoft SQLServer 2012&#xff0c;Oracle 21c&#xff0c;MySQL8&#xf…...

Linux —— 管理进程

一、查看进程 运行态&#xff08;Running&#xff09; 定义&#xff1a;处于运行态的进程正在 CPU 上执行指令。在单 CPU 系统中&#xff0c;同一时刻只有一个进程处于运行态&#xff1b;在多 CPU 或多核系统中&#xff0c;可能有多个进程同时处于运行态。示例&#xff1a; 当…...

Diffusino Policy学习note

Diffusion Policy—基于扩散模型的机器人动作生成策略 - 知乎 建议看看&#xff0c;感觉普通实验室复现不了这种工作。复现了也没有太大扩展的意义。 Diffusion Policy 是监督学习吗 Diffusion Policy 通常被视为一种基于监督学习的方法&#xff0c;但它的实际训练过程可能结…...

【Python】*args和**kwargs

【Python】*args和**kwargs 一、*args: 接收不定数量的位置参数示例1&#xff1a;简单的加法计算器示例2&#xff1a;转发参数给另一个函数 二、**kwargs: 接收不定数量的关键字参数示例3&#xff1a;创建用户配置文件示例4&#xff1a;合并多个字典 三、组合使用*args和**kwar…...

使用正则表达式提取PDF文件页数的实现方案

文章目录 背景介绍实现原理代码实现1. 基础函数结构2. 页数提取逻辑3. 使用示例 正则表达式解析优点与局限性优点局限性 错误处理建议性能优化建议最佳实践建议总结参考资源 背景介绍 在Web应用开发中,我们经常需要获取上传PDF文件的页数信息。虽然可以使用pdf.js等第三方库,但…...

Android实现RecyclerView边缘渐变效果

Android实现RecyclerView边缘渐变效果 1.前言&#xff1a; 是指在RecyclerView中实现淡入淡出效果的边缘效果。通过这种效果&#xff0c;可以使RecyclerView的边缘在滚动时逐渐淡出或淡入&#xff0c;以提升用户体验。 2.Recyclerview属性&#xff1a; 2.1、requiresFading…...

springboot443旅游管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统旅游管理系统信息管理难度大&#xff0c;容错率低&#…...

利用git上传项目到GitHub

GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了&#xff0c;非常受欢迎&#xff0c;比之svn更好。 GitHub可以免费使用&#xff0c;并且快速稳定。 利用GitHub&#xff0c;你可以将项目存档&#xff0c;与其他人分享交流&#xff0c;并让其他开发者帮助你一…...

Rust之抽空学习系列(四)—— 编程通用概念(下)

Rust之抽空学习系列&#xff08;四&#xff09;—— 编程通用概念&#xff08;下&#xff09; 1、函数 函数用来对功能逻辑进行封装&#xff0c;能够增强复用、提高代码的可读 以下是函数的主要组成部分&#xff1a; 名称参数返回类型函数体 1.1、函数名称 在Rust中&…...

K-Means 聚类:数据挖掘的瑞士军刀

引言 在数据科学领域&#xff0c;聚类算法是一种非常重要的无监督学习方法&#xff0c;它能够帮助我们发现数据中的自然分组或模式。其中&#xff0c;K-Means 聚类算法因其简单高效而成为最常用的聚类算法之一。无论是市场细分、社交网络分析&#xff0c;还是图像分割等领域&a…...

项目练习:若依-前端项目的目录结构介绍

文章目录 一、目录截图二、目录讲解 一、目录截图 二、目录讲解 1、首先&#xff0c;我们可以看到&#xff0c;这个VUE项目&#xff0c;只有一个App.vue&#xff0c;所以&#xff0c;它是一个单页面系统。 这个App.vue是根组件&#xff0c;root组件。 2、public目录 在Vue 3.…...

知网研学 | 知网文献(CAJ+PDF)批量下载

知网文献&#xff08;CAJPDF&#xff09;批量下载 一、知网研学安装二、插件及脚本安装三、CAJ批量下载四、脚本下载及PDF批量下载浏览器取消拦截窗口 一、知网研学安装 批量下载知网文件&#xff0c;格式为es6文件&#xff0c;需使用知网研学软件打开&#xff0c;故需先安装该…...

设计模式期末复习

一、设计模式的概念以及分类 二、设计模式的主题和意图 三、面向对象程序设计原则&#xff0c;记住名字&#xff0c;还要理解它的使用场景以及如何用&#xff1f; 四、松耦合、紧耦合、强关联、弱关联、静态复用、动态复用的概念&#xff0c;还有静态委派&#xff0c;动态委…...

CentOS7源码编译安装nginx+php+mysql

1.安装nginx 安装依赖 yum -y install gcc gcc-c wget automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl openssl-devel 创建一个不能登录的nginx运行用户 groupadd www-data useradd -s /sbin/nologin -g www-d…...

linux CentOS系统上卸载docker

一、停止Docker服务 首先&#xff0c;需要停止Docker服务。使用systemctl命令来停止Docker服务&#xff1a; bash复制代码sudo systemctl stop docker二、卸载Docker软件包 接下来&#xff0c;使用CentOS的包管理器yum来卸载Docker软件包。根据安装的Docker版本和组件&#…...

css中相对定位的应用场景

元素位置微调 文本与图标组合微调&#xff1a;在网页设计中&#xff0c;经常会有文本和图标的组合&#xff0c;比如一个带有搜索图标的搜索框。可以使用相对定位来微调图标在搜索框内的位置。例如&#xff0c;有以下HTML结构&#xff1a; <input type"text" class…...