无序抓取系列(一)

文章目录

一 摘要

二 资源

三 内容


一 摘要

        最近,已经提出了许多抓取检测方法,这些方法可用于直接从传感器数据中定位机器人抓取配置,而无需估计物体姿态。其基本思想是将抓握感知视作计算机视觉中的对象检测。这些方法将噪声和部分遮挡的 RGBD 图像或点云作为输入,并在不已知物体CAD模型的情况下生成可行的抓取位姿估计输出。尽管这些方法可以很好地将掌握知识推广到新对象,但它们尚未被证明足够可靠以供广泛使用。许多抓取检测方法对于孤立或呈现轻杂乱的新物体,其抓取成功率(抓取成功率占抓取尝试总数的分数)在 75% 到 95% 之间。对于实际抓取应用来说,这些成功率不仅太低,而且评估的轻杂波场景通常不能反映真实世界的抓取现实情况。

二 资源

文章:Grasp Pose Detection in Point Clouds

代码:GitHub - atenpas/gpd: Detect 6-DOF grasp poses in point clouds

年份:2017年

三 内容

1)摘要

最近,已经提出了许多抓取检测方法,这些方法可用于直接从传感器数据中定位机器人抓取配置,而无需估计物体姿态。其基本思想是将抓握感知视作计算机视觉中的对象检测。这些方法将噪声和部分遮挡的 RGBD 图像或点云作为输入,并在不已知物体CAD模型的情况下生成可行的抓取位姿估计输出。尽管这些方法可以很好地将掌握知识推广到新对象,但它们尚未被证明足够可靠以供广泛使用。许多抓取检测方法对于孤立或呈现轻杂乱的新物体,其抓取成功率(抓取成功率占抓取尝试总数的分数)在 75% 到 95% 之间。对于实际抓取应用来说,这些成功率不仅太低,而且评估的轻杂波场景通常不能反映真实世界的抓取现实情况。本文提出了一些创新,无论是在仿真中还是在机器人硬件上,均实现了抓取检测性能的提高。最终,我们报告了一系列机器人实验,这些实验对于在密集杂乱中的新型物体,平均端到端抓取成功率为 93%。

2)创新点

使抓取检测更准确,更易于在密集杂乱的环境中应用:

我们提出了一种生成抓取假设的方法,相对于先前的方法,不需要对要抓取的物体进行精确分割,并且可以在任何可见表面上产生假设。

我们提出了一种新的抓取描述符,它结合了表面法线和多个视图。与以往方法相比,该方法可以提高抓取分类精度约10%。

我们提出了一种结合有关对象类别的先验知识的方法,可以将抓握分类精度提高大约2%。

3)算法结构

该算法模型整体结构主要可以划分为6个步骤:

步骤1:单视角点云预处理,包括点云压缩和去噪。

步骤2:感兴趣区域检测,并不需要准确的从背景中分割出单个对象,该区域可以是包含多个对象,或者所有对象的场景,也可以是一个粗略的目标定位结果(如一个目标检测框中的点云)。

步骤3:采样候选抓取位姿:

该步骤需要满足以下两个条件:

条件1:机械手本体与点云无碰撞;

条件2:机械手的抓握闭合空间至少要包含一个点。

虽然满足上述条件的位姿不一定是完全准确的抓取位姿,但不满足上述条件的抓取一定是错误的抓取。

候选点采样主要根据上述Algorithm2进行设计:

        首先,采用均匀随机采样,从ROI区域采样得到N个点;然后,以每个采样点p为原点,利用球形邻域点云建立协方差矩阵构建局部坐标系,令F(p) = [v3(p) v2(p) v1(p)]为协方差矩阵的特征向量,v1(p)为最大特征值对应的特征向量,v3(p)为最小特征值对应的特征向量,v3(p)代表p点的表面法线的平滑度估计,v1(p)为最小曲率的平滑度估计,v2(p)为最大曲率的平滑度估计。如下图所示,v3(p)为指向向外的X轴,其他特征向量根据右手定则分配给Y轴和Z轴,从而构建完成p点的局部坐标系。

        然后,利用格网搜索(搜索范围为YOZ平面,搜素范围作者设置为10x8)进行点云裁剪,沿着X轴的负方向进行逼近,直到夹抓区间包含点云停止:将夹抓在XOY平面进行平移(x,y),绕Z轴进行旋转(φ),在满足条件1和条件2前提下的(x,y,φ)为一个抓取位姿采样结果。下图中每张图片分别显示三个随机点候选抓取位姿:

步骤4:采用CNN进行二分类,输入为关于被观察和遮挡物体表面的特征表达式,输出为该候选点是否为可抓取位姿。特征表达式具体构建步骤如下:下图(a)为基于局部点云产生的候选抓取位姿。图(b)由两部分点云组成的局部点云,洋红色点云为该视角下能够观察到的点云,蓝色点云为该视角下无法观察到的点云。将局部点云进行尺度缩放,转换为一个单位体空间,并在该体空间进行体素划分(MxMxM),每个体素值设置为0或1,若体素内包含有点云,则为被占用,值设置为1,否则为0。分别朝X、Y、Z轴方向(下图(b)中的红绿蓝箭头方向)进行投影,在每个投影面上生成3种图像,分别为占用平均高度图,可见平均高度图和法向量图

下面以投影到XOY平面为例,分别对应上图的(c-e):

        综上所述,每个投影生成三张图片,共5个通道,那么总共生成一张MxMx15的图片作为输入(15个通道)。

步骤5:以MxMx15图片作为输入,利用CNN获取一个分数用于判断该候选点是否可抓取;

步骤6:利用规则基于分数进行抓取结果选取,如最大分数规则。

4)实验

Active point cloud:主动式点云生成,采用InfiniTAM进行数据采集,抓取成功率为93%,托盘中物体清除率为89%。

Passive point cloud:被动式点云 生成,采用两个华硕 Xtion Pro 传感器进行数据采集,抓取成功率为84%,托盘中物体清除率为77%。它的精度下降主要是因为:

使用主动策略创建的点云似乎可以更好地覆盖盒子中的物体;

②使用被动策略创建的点云不能很好地看到盒子最前面附近的一些物体。

No selection strategy:与Active point cloud不同的是删除步骤6,采用随机选取替换最后的结果选取规则,其抓取成功率为75%,托盘中物体清除率为78%;

No classification:与No selection strategy不同的是,在其基础上,删除步骤5,仅仅使用采样获得的候选抓取作为抓取结果。其抓取成功率为53%,托盘中物体清除率为50%;

5)结论

        本文提出了一个案例,将抓取检测作为尝试估计要抓取物体的确切位置。这正是许多掌握感知的方法试图做的事情。不幸的是,将 CAD 模型注册到嘈杂或不完整的点云可能非常具有挑战性。此外,假设CAD模型始终可用于机器人可能需要抓取的每个对象,这与我们在开放世界环境中操作的愿望不相容。取而代之的是,抓取检测直接在点云或截断的有符号距离函数中查找抓取姿势。与物体姿态估计方法相比,抓取检测:(1)不需要任何物体分割;(二)不需要知道被抓取对象的身份、类别、形状的;(3)不尝试将物体的CAD模型注册到点云,物体分割和3D配准都是难题,如果其中任何一个失败,都会导致传统的抓取感知失败。我们将在密集杂杂乱基准测试上实现的高抓取成功率归因于这些优势。

        在仿真和硬件上进行了几次实验,以量化系统各个部分的性能贡献。结果表明,抓取检测需要几个不同的部分才能正常工作。抓取候选的表示很重要:,“正确”的表示可以将分类精度提高多达 10%。此外,在模拟点云上进行预训练并利用有关要抓取的物体的先验知识会有所帮助。我们对机器人硬件的实验表明,提高点云的质量也可以产生很大的不同。使用“主动传感”(即使用现成的公制SLAM软件)创建点云的抓取成功率比使用从固定在机器人身体上的传感器获得的点云进行抓取成功率高9%。此外,抓握选择策略也极为重要。应用简单的启发式方法来选择首先尝试哪个抓取(即首先抓取堆顶部的物体)可以将抓取成功率提高近 20%。

与更标准的方法相比,掌握检测至少有两个缺点。由于我们的算法不分割对象,因此它可以检测将多个对象视为单个原子对象的“抓取。这种类型的错误对于小孔径的手来说是不寻常的,但当手在物理上能够抓取较大的物体时,它将成为一个严重的问题。解决此问题的一种方法是使用对象分割。另一个问题是抓取检测方法是否可用于可靠地抓取感兴趣的特定对象。正如论文中所展示的,抓取检测可以与对象检测相结合,从而产生一个可以抓取特定感兴趣对象的系统。然而,目前尚不清楚这在总体上可以有多准确地完成。我们的实验表明,这种方法在实验室环境中可以达到 85% 的物体分类准确率。通过结合分割方法,可以改善这一点。无论如何,提高这 85% 的对象分类准确率结果对于在实际环境中部署此类系统至关重要。

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

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

相关文章

论文阅读:Deep divergence-based approach to clustering

论文地址:main.pdf (sciencedirectassets.com) 摘要 深度学习研究中的一个有前景的方向是通过优化判别损失函数,学习表示并同时发现无标签数据中的聚类结构。与监督式深度学习不同,这一研究方向尚处于起步阶段,如何设计和优化合适…

docker build ubuntu ssh

dockerfile 构建镜像 为了使用Dockerfile构建Docker镜像,请遵循以下步骤: 创建一个名为Dockerfile的文件,并在其中定义镜像的构建指令。 FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu:24.04# 安装openssh-server和pas…

2024.12.2工作复盘

1.今天学了什么? 简单的写了一篇博客,是关于参数校验的问题,参数校验,一个是前后端校验到底一不一致,一个是绕过前端校验,看后台的逻辑到底能不能校验住。 2.今天解决了什么问题? 3.今天完成…

关于单片机的原理与应用!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///目前正在学习C😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于单片…

【Vue3】【Naive UI】<n-upload>标签

【Vue3】【Naive UI】标签 基本设置 【VUE3】【Naive UI】<NCard> 标签 【VUE3】【Naive UI】<n-button> 标签 【VUE3】【Naive UI】<a> 标签 【VUE3】【Naive UI】<NDropdown> 标签…

Flink四大基石之CheckPoint(检查点) 的使用详解

目录 一、Checkpoint 剖析 State 与 Checkpoint 概念区分 设置 Checkpoint 实战 执行代码所需的服务与遇到的问题 二、重启策略解读 重启策略意义 代码示例与效果展示 三、SavePoint 与 Checkpoint 异同 操作步骤详解 四、总结 在大数据流式处理领域,Ap…

LeetCode Hot100 31~40

链表 31. K个一组翻转链表 题目不难理解 主要是怎么写出清晰易懂的代码 可以先分成K组 再排序 class Solution { public:ListNode* reverseKGroup(ListNode* head, int k) {ListNode* dummyHead new ListNode();dummyHead->next head;// 首先查看需要翻转几次int count…

字典树TRIE

模板 模板总共分为两部分 插入一个字符串查找一个字符串 int idx 0; int trie[3000010][150]; int ans[3000010];##原理 trie[上节点编号][下方连接的字母] 下方连接的字母的节点编号 trie[0][0]1;trie[0][1]5; trie[1][1]2; trie[2][1]4;trie[2][2]3; trie[5][2]6; tri…

Python学习第十五天--魔术方法

魔法方法就是可以给你的类增加魔力的特殊方法,它们总被双下划线所包围,像这种格式:"__方法名__",这些方法很强大,充满魔力,可以让你实现很多功能。 使用dir()查看类的所有属性和方法 class A:passprint(di…

支持JT1078和GB28181的流媒体服务器-LKM启动配置文件参数说明

流媒体服务器地址:https://github.com/lkmio/lkm GB28181信令,模拟多个国标设备工具:https://github.com/lkmio/gb-cms 文章目录 gop_cachegop_buffer_sizeprobe_timeoutwrite_timeoutmw_latencylisten_ippublic_ipidle_timeoutreceive_timeo…

【MySQL-6】MySQL的复合查询

1. 整体学习的思维导图 2. 回顾基本查询 使用scott数据库中的表,完成以下查询: 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J mysql> select * from emp where (sal>500 or jobMANAGER) and ename …

STL算法之其它算法_中

目录 lower_bound(应用于有序区间) upper_bound(应用于有序区间) binary_search(应用于有序区间) next_permutation prev_permutation lower_bound(应用于有序区间) 这是二分查找(binary search)的一种版本,试图在…

GEE教程——Google Earth Engine 处理和分析刚果民主共和国(DR Congo)地区的 Landsat 8 图像(NDVI和NDWI)

目录 简介 函数 sort(property, ascending) Arguments: Returns: Collection size() Arguments: Returns: Integer 代码解释 代码 结果 简介 GEE教程——Google Earth Engine 处理和分析刚果民主共和国(DR Congo)地区的 Landsat 8 图像(NDVI和NDWI) 函数 sor…

[高阶数据结构六]最短路径算法

1.前言 最短路径算法是在图论的基础上讲解的,如果你还不知道图论的相关知识的话,可以阅读下面几篇文章。 [高阶数据结构四] 初始图论_初始图结构-CSDN博客 [高阶数据结构五] 图的遍历和最小生成树_图的遍历和生成树求解-CSDN博客 本章重点:…

Meta Reality Labs的VR/AR投资战略转向:内部视角与市场影响

最近,关于Meta(原Facebook)计划减少其在消费者虚拟现实(VR)领域的投资而增加对增强现实(AR)眼镜的投资的消息引起了广泛讨论。这一战略调整不仅反映了Meta对未来技术趋势的看法,也揭示了公司在面对激烈的市场竞争时所采取的新方向。本文将从不同角度探讨此次战略转向的…

ASP.NET Core项目中使用SqlSugar连接多个数据库的方式

之前学习ASP.NETCore及SqlSugar时都是只连接单个数据库处理数据&#xff0c;仅需在Program文件中添加ISqlSugarClient的单例即可&#xff08;如下代码所示&#xff09;。 builder.Services.AddSingleton<ISqlSugarClient>(s > {SqlSugarScope sqlSugar new SqlSugar…

flutter_quill如何设置Editor中的文字为富文本

比如一个场景 在输入框中&#xff0c;某某某 是一个颜色&#xff0c;其他文本是一个颜色 这里要注意 const QuillEditor({required this.controller,required this.focusNode,required this.scrollController,required this.scrollable,required this.padding,required this…

uniapp:封装商品列表为组件并使用

封装商品列表为组件并使用 商品组件封装 <template><!-- 商品列表 --><view class"goods_list"><view class"goods_item" v-for"item in goods" :key"item.id"><image :src"item.img_url">…

【AI系统】LLVM 架构设计和原理

LLVM 架构设计和原理 在上一篇文章中&#xff0c;我们详细探讨了 GCC 的编译过程和原理。然而&#xff0c;由于 GCC 存在代码耦合度高、难以进行独立操作以及庞大的代码量等缺点。正是由于对这些问题的意识&#xff0c;人们开始期待新一代编译器的出现。在本节&#xff0c;我们…

【C语言】结构体(二)

一&#xff0c;结构体的初始化 和其它类型变量一样&#xff0c;对结构体变量可以在定义时指定初始值 #include <stdio.h> #include <stdlib.h> struct books // 结构体类型 {char title[50];char author[50]; //结构体成员char subject[100];int book_id; }…