PointNetGPD<论文>

news2024/9/27 7:20:16

摘要

提出了一种端到端的抓取位置预测模型,能够从点云中估计出机器人的抓取位姿。网络以原始点云作为输入,能够捕捉到抓取器闭合区域点云的复杂几何结构,即使这些点云很稀疏。

PointNetGPD是一种轻量级的网络模型,能够处理抓取器闭合区域的点云,进行抓取质量估计。

此外,作者基于YCB模型库,生成了350K包含真实点云和抓取的数据集用于训练。提出的算法在仿真环境和实体机械臂上进行了定量评估,并且在单个物体和堆叠物体上进行了实际的抓取实验,结果展示了作者提出的算法得到了比当前主流算法更高的精度,也能够很好地扩展到未知物体。

1 引言

真实机器人抓取场景会有很多不稳定因素,其中就有传感器引入的数据不精确以及质量下降。因而,一个能够直接处理原始采集数据的机器人抓取位置估计算法尤为重要。一些最新的工作使用深度学习,在大规模抓取数据集上进行训练,能够得到很好的结果,并且适用于不同种类的物体、传感器和机器人,也能扩展到未知物体。然而,绝大多数这些方法仍然依赖2D图像或者2.5D深度图作为输入,一些抓取估计算法甚至需要复杂的手工设计的特征,仅有极少数考虑了3D几何信息。直观来讲,一个抓取能否成功,依赖于抓取器如何与物体表面在3D空间进行交互,因此,如果不对3D几何结构进行分析,会对抓取位置估计算法带来负面影响,尤其在对真实物体不能进行准确和完整采集的情况下。

PointNet网络能够直接作用于3D点云,进行3D物体的识别与分割。受其启发,作者提出了一个基于点云的抓取位姿估计算法PointNetGPD,使用一种有效的策略来生成和评估每一个抓取位姿;不同与之前使用Multi-view CNN或者3D-CNN进行抓取位置估计的方法,PointNetGPD不需要将3D点云投影为多幅2D照片,也不需要栅格化为稠密的3D体数据,能够最大化地保持原始点云的几何信息,更为有效的推断抓取质量。算法流程如图1所示。

图1 PointNetGPD算法流程:给定传感器输入的原始RGB-D数据,首先将深度图转换为点云;其次,根据必须的几何约束采样一些候选的抓取位姿,对于每一个候选,裁剪抓取器内部的点云,并转换为抓取器局部坐标系;最后,将候选抓取输入进抓取质量评估网络得到各自的评分,具有最高得分的候选抓取位姿被采纳并执行抓取。
 

此外,作者基于YCB数据集生成了一个包含350k真实点云、平行抓取器抓取位姿,以及解析式抓取质量评分的数据集。不同于Dex-Net数据集,该数据集针对每一个抓取位姿,提供了一种更为细致的评分。具体来讲,给定一个6D的抓取位姿,以及一个物体的CAD模型,作者通过计算force-closure和一个摩擦无关的GWS(Grasp Wrench Space),作为该抓取位姿的评分。

2 问题描述

 

3 抓取数据生成 

图2 在数据集上标记Q_{fc}的抓取实例。(a)绿色的抓取具有的摩擦系数r=0.4。(b)红色的抓取具有的摩擦系数r=2.0。在这种简单几何形状的物体上,绿色和红色的抓取在鲁棒性方面也具有很大的差异。

在这里插入图片描述

4 新的网络框架及抓取表示

抓取质量评估网络如图3所示。该网络结构类似于PointNet,输入的抓取表示为抓取器闭合区域内部的点云,没有将整个点云作为输入,能够提高学习和推断的效率。点云首先被转换到统一的抓取器局部坐标系,如图4所示,这就消除了由于不同的实验设置下导致的抓取位置的歧义性。之后,这些点云就被输入进网络来估计抓取质量的层次。和其他的基于CNN的抓取质量评估网络相比,该网络是轻量级的,只具有近似160万个参数。

图3 基于PointNet的抓取质量评估网络结构。给定一个抓取位姿和原始点云,将抓取器闭合区域的点云代表一个抓取,变换到抓取器局部坐标系后输入进网络。经过多个空间变换和特征提取,最终的全局特征用来划分输入抓取的质量水平。 

 图4 局部抓取器坐标系下的抓取表示。(a)一个典型的抓取位姿;(b)局部坐标系的坐标轴。作者将抓取器的前进方向、平行方向以及正交方向分别作为XYZ轴,将抓取器底部中间位置作为原点。

训练集:
由于抓取质量是一个定量的结果,而不是一个二元的值,因此适合进行多类别的抓取质量分类。基于47个YCB物体模型生成了350k个点云。为了平衡不同抓取质量的抓取,作者在不同摩擦系数下采样了等数量的抓取,Q_{fc}值为{1/0.4, 1/0.45, 1/0.5, 1/0.8, 1/1.2, 1/1.6, 1/2.0}。对于点云,作者使用了YCB模型库提供的真实点云,而不是由CAD模型渲染得到的点云,以便能够对真实世界的抓取任务有更好的泛化。

训练细节:
我们使用了一个C-类的交叉熵损失作为分类器的目标函数。整个网络结构使用了Adam优化器进行优化。网络所有参数的初始化值,由0-均值高斯分布采样而来。对输入的点云进行了随机的偏移来进行数据增强。

5 抓取候选点生成

为了构建一个完整的抓取框架,先决条件是进行候选抓取位姿的生成。作者采用了GPG算法来启发式地进行抓取位姿采样。另外,作者对原始GPG进行了一些调整来减少抓取位姿与模型表面的碰撞:首先抛弃和支撑表面太近的采样抓取位置;移除抓取时远离支撑表面的抓取候选;对于一个碰撞的抓取,向逆抓取方向拉,直至碰撞消失,如果此时仍然有很多点存留在抓取器的闭合区域内,此时调整后的抓取被标记为不发生碰撞。

6 仿真境实验

作者选择 GPD(Grasp Pose Detection)算法作为基准算法进行对比。由于不能获取相机位置,来计算在15-channel GPD中用到的未观测的区域,作者只和3-channel GPD和12-channel GPD算法进行比较。另外,为了观察在稀疏点云上的稳定性,作者提供了单视角点云和完整点云的输入;单视角点云由物体前方的相机获取,完整点云由所有视角下的点云配准而来。点云数据准备好后,作者去除了那些抓取器之间点数目小于50的候选抓取,并对剩下的候选点云进行上/下采样,使点数目为1000。分别进行了3类识别和2类识别实验,对于2类识别,将总得分大于1/0.6的作为正;对于3类识别,设置的阈值为1/0.5和1/1.2。

结果分析:训练中得到的测试精度如图5所示。其中在200 epochs中最好的结果在表1进行了对比。首先,作者提出的PointNetGPD比所有的GPD都要好,即使在最困难的单视角点云上,PointNetGPD和最好的GPD相比仍然具有平均4.79%的提升。另外,从图5中可以看到,GPD很容易在数据集上过拟合,而且即使使用了DropOut,和PointNetGPD也有差距。这里部分原因是参数数量的问题。PointNetGPD具有更少的参数并且表现的更好,这说明作者提出的网络针对稀疏点云进行几何分析更为有效。另外,在3类识别实验中,具有最高抓取质量的类别的精度比2类识别实验中的类别精度要高,这意味着具有更高抓取评分的抓取更容易被识别到。

 图5 不同模型和配置下的识别精度。所有的模型在完整点云上得到了更高的精度,而提出的PointNetGPD在两种情况下都比GPD要好。

7 真实机械臂抓取实验

作者在两个机械臂真实抓取环境下评估了PointNetGPD的可靠性和有效性:分别是物体单独放置物体堆叠放置两种情况。实验使用的是UR5机械臂和Robotiq三指抓取器。如图6(a)所示,抓取器在夹紧模式下工作,只有两个接触面,可以在一个自由度下相对靠近或远离。真实实验采用的是Kinect2深度传感器,因此只有单视角点云。

作者从YCB数据集中选择了22个物体,其中11个存在于抓取数据集中,剩余11个是新的。作者还从22个物体中选择了16个来构建两个用于堆叠物体移除的数据集,如图6(b)所示。

图6 实验环境设置。(a) UR5机械臂和Robotiq三指抓取器;(b)实验中用到的物体,红色多边形内的物体包含于训练集,品红色多边形内的物体不包含于训练集。绿色和蓝色多边形内的物体分别代表用于堆叠物体实验的数据集1和数据集2。 

对于两种情况,作者提供了2类PointNetGPD和3类PointNetGPD算法的结果,并和15-channel的GPD进行比较。整个系统在ROS框架下开发,使用了MoveIt!内置的一个快速混合的渐进逆动力学算子BioIK。

单独放置的物体:每个物体测试10次,每次物体的朝向随机。如果抓取器不能成功抓取,或者5分钟内都找不到不发生碰撞的抓取位姿,则认为抓取失败。这里只考虑抓取成功率。表2展示了使用三种方法的抓取结果,PointNetGPD得到了更高的抓取精度。

堆叠放置的物体:使用的两个数据集如图6(b)中的绿色和蓝色所示,数据集1具有6个抓取成功率100%的物体,数据集2具有2个抓取成功率100%的物体。每个数据集进行5轮实验。作者也列举了3类识别中的第二类。这里使用了成功率和完成率,分别代表成功抓取的概率,以及成功移除的物体所占的比例。结果如表3所示。由表3所示,所有方法在数据集1上的结果好于数据集2,PointNetGPD的结果最好,尤其在完成率方面,在数据集2上相比于GPD有13.5%的提升。PointNetGPD第二类的结果比第一类的结果差很多,证明了设定3个类别的有效性。另外,由于我们只使用单视角点云,遮挡会导致实验失败;有些时候会将多个物体当成一个物体,也会导致抓取失败。

8 总结

该论文提出了PointNetGPD算法直接处理点云数据;生成了基于YCB模型库的包含350k真实点云的抓取数据集;比当前主流的GPD算法相比,在抓取效果上有提升;
未来可以将候选抓取位姿的生成,集成进抓取质量估计网络,以实现端到端;也可以针对堆叠情况引入场景分割,避免将多个物体当作一个物体。
代码地址:https://github.com/lianghongzhuo/PointNetGPD

 

 

 

 

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

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

相关文章

手把手教你在Centos7.6系统安装mysql5.7

文章目录 1 查看linux系统版本2 官网获取文件3 wget下载4 安装yum源5 查看是否正常工作6 安装mysql服务6.1出错6.2解决方法 7 检查配置文件8 启动mysql服务9 root第一次登录10 其他设置10.1 修改密码10.2 开启开机自启动10.3 配置my.conf 1 查看linux系统版本 需要安装对应系统…

Docker安装、Docker基本操作

一、Dokcer安装 1.安装 # 1、yum 包更新到最新,需要几分钟时间(注意:也可以直接跨过) sudo yum update # 2、作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 sudo yum install -y yum-util…

从文字到语义:文本分词和词性标注的原理与实现

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

个人博客系统调试详细过程

系统功能的详细说明和源代码见以下链接:https://blog.csdn.net/shooter7/article/details/121180333相关的源码数据库文件、软件安装包可以联系博主koukou(壹壹23七2五六98) 调试过程如下: 文章目录 调试过程如下:一、数据库安装二、sql数据文件的导入三…

java调用cmd命令

1.首先,我们需要了解一下 java是如何调用 cmd的: 6.在实际的开发中,我们有可能会遇到 java调用 cmd命令的情况: 7.对于一些特定的环境下,例如在嵌入式系统中,那么我们可以使用下面这种方式来调用 cmd命令&a…

【Redis】Redis常用基本命令

数据结构 常用基本命令 keys * 查看当前库所有的key exists key 判断某个key是否存在 type key 查看key的类型 del key 删除指定的key数据 unlink key :非阻塞删除,仅仅将keys从key元数据删除,真正的删除会异步操作 6.ttl key 查看key多少秒过期…

AIGC:ColossalChat(基于LLM和RLHF技术的类似ChatGPT的聊天机器人)的简介、安装、使用方法之详细攻略

AIGC:ColossalChat(基于LLM和RLHF技术的类似ChatGPT的聊天机器人)的简介、安装、使用方法之详细攻略 目录 ColossalChat的简介 1、局限性 LLaMA-finetuned 模型的限制 数据集的限制 2、在线演示 3、Coati7B examples Generation Open QA ColossalChat的安装…

功率电子开关的高边开关和低边开关high -side power switch

下图为使用NMOS,最简单的开关电路。(低侧驱动) CONTROL为控制信号,电平一般为3~12V。负载一端接电源正极,另一端接NMOS的D(漏极)。CONTROL电平为高时,Vgs>NMOS的Vgs导通阀值&…

数据库基础应用——概念模型

1、实体(Entity) 客观存在并可相互区别的事物称为实体。实体可以是人、物、对象、概念、事物本身、事物之间的联系。(例如一名员工、一个部门、一辆汽车等等。) 2、属性(Attributre) 实体所具有的每个特性称为属性。(例如:员工由员…

基于OpenCV的haar分类器实现人脸检测分析

基于OpenCV的haar分类器实现人脸检测分析 文章目录 基于OpenCV的haar分类器实现人脸检测分析一、基于OpenCV的haar分类器实现笑脸检测1、Haar分类器介绍2、haar分类器的静态使用(处理图片)3、haar分类器的动态使用(对摄像头视频进行处理&…

JAVA 17新特性

JAVA 17新特性 概述 JDK 16 刚发布半年(2021/03/16),JDK 17 又如期而至(2021/09/14),这个时间点特殊,蹭苹果发布会的热度?记得当年 JDK 15 的发布也是同天 Oracle 宣布&#xff0…

S32K3学习笔记_电源管理

S32K3学习笔记_电源管理 1、缩略词 PMC:Power Management Controller,电源管理控制器 FPM:Full Performance mode,全性能模式 LPM:Low Performance mode,低性能模式 LPCMP:低功耗比较器 S…

C语言单链表

本节目标: ①定义单链表结构体 ②初始化单链表 ③单链表增加结点(头插法、尾插法) ④删除指定结点 ⑤打印输出 目录 导入头文件 定义单链表结构体 初始化单链表 头插法 尾插法插入 删除指定结点 打印单链表 全部代码展示 导入头文件 …

NP完全性PART1:多项式时间与形式化语言体系

算法导论第三版,CH34笔记 NP完全性 Chapter Introduction 一般来说,我们认为可以在多项式时间内求解的问题是易处理的问题,在超多项式时间内解决的问题是不易处理的问题。 下面列出的几对问题,前者可以用多项式时间算法求解&…

MATLAB 点云法向量计算与可视化 (9)

MATLAB 点云法向量计算与可视化 (9) 一、实现效果二、算法介绍三、函数说明四、具体代码(注释详细)一、实现效果 红色线即代表该点位处的法向量计算结果 二、算法介绍 用于拟合局部平面的法线,以 M 乘3或 M 乘 N 乘3矩阵的形式返回。法向量由 k 值定义的邻域数局部计算。…

Packet Tracer - 配置 IP ACL 来缓解攻击

Packet Tracer - 配置 IP ACL 来缓解攻击 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 交换机端口 R1 G0/1 192.168.1.1 255.255.255.0 不适用 S1 F0/5 S0/0/0 (DCE) 10.1.1.1 255.255.255.252 不适用 不适用 R2 S0/0/0 10.1.1.2 255.255.255…

10款UML建模工具更新(2023.4)Software Ideas Modeler 、Rhapsody、Papyrus

最近一段时间更新的工具有: 工具最新版本:Software Ideas Modeler 13.99 更新时间:2023年4月17日 工具简介 轻量级建模工具,支持UML、BPMN、SysML。 平台:Windows 获得地址 https://www.softwareideas.net/en/do…

java学习之异常二

目录 一、异常处理机制 一、try-catch-finally 二、throws 二、try-catch 异常处理使用细节 三、try-catch-finally练习 第一题 第二题 第三题 第四题 一、异常处理机制 共有两种异常处理机制 一、try-catch-finally 处理机制图示 二、throws 关于第二点,如E…

Linux性能分析工具perf和火焰图使用方法

简介 perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些数据来对程序性能进行分析。 perf可以统计或采样的event有…

JVM学习随笔02——虚拟机内存区组成与内存溢出异常

一、Java虚拟机内存区组成图 1、程序计数器: 每个线程独占一个计数器,用来指示该线程下一条要执行的指令的地址。这一部分不会导致内存异常。PS:如果一个线程进入的是一般的Java方法,计数器指示的是下一条指令地址;如果…