摘要
提出了一种端到端的抓取位置预测模型,能够从点云中估计出机器人的抓取位姿。网络以原始点云作为输入,能够捕捉到抓取器闭合区域点云的复杂几何结构,即使这些点云很稀疏。
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 在数据集上标记的抓取实例。(a)绿色的抓取具有的摩擦系数r=0.4。(b)红色的抓取具有的摩擦系数r=2.0。在这种简单几何形状的物体上,绿色和红色的抓取在鲁棒性方面也具有很大的差异。
4 新的网络框架及抓取表示
抓取质量评估网络如图3所示。该网络结构类似于PointNet,输入的抓取表示为抓取器闭合区域内部的点云,没有将整个点云作为输入,能够提高学习和推断的效率。点云首先被转换到统一的抓取器局部坐标系,如图4所示,这就消除了由于不同的实验设置下导致的抓取位置的歧义性。之后,这些点云就被输入进网络来估计抓取质量的层次。和其他的基于CNN的抓取质量评估网络相比,该网络是轻量级的,只具有近似160万个参数。
图3 基于PointNet的抓取质量评估网络结构。给定一个抓取位姿和原始点云,将抓取器闭合区域的点云代表一个抓取,变换到抓取器局部坐标系后输入进网络。经过多个空间变换和特征提取,最终的全局特征用来划分输入抓取的质量水平。
图4 局部抓取器坐标系下的抓取表示。(a)一个典型的抓取位姿;(b)局部坐标系的坐标轴。作者将抓取器的前进方向、平行方向以及正交方向分别作为XYZ轴,将抓取器底部中间位置作为原点。
训练集:
由于抓取质量是一个定量的结果,而不是一个二元的值,因此适合进行多类别的抓取质量分类。基于47个YCB物体模型生成了350k个点云。为了平衡不同抓取质量的抓取,作者在不同摩擦系数下采样了等数量的抓取,值为{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