用点云完善抓取点

在任意物体抓取过程中,需要同时考虑物体的位置和 symmetry-label 。 为实现这一目的,该步骤组合分别计算较为精确的抓取位置和长轴(X轴)所在的方向, 经过调整和筛选,得到在感兴趣区域内符合要求的抓取点。其组成如图1 所示。

用点云完善抓取点步骤组合

图1 用点云完善抓取点步骤组合

各个步骤的作用如下:

  1. 输入分配器 将输入量分配给之后几个步骤。

  2. 计算抓取点位置 输入场景中感兴趣区域内的点云和平面抓取点列表,计算空间中的抓取点,得到较为准确的抓取位置。

  3. 计算抓取点X轴方向 输入场景中感兴趣区域内的点云和物体的掩膜,计算空间中的抓取点,由于掩膜包括物体的形状信息,所以可以确定抓取点长轴所在的方向。

  4. 将位姿的某个轴指向给定方向 输入上面两步得到的抓取点列表,按照设置进行姿态调整,确定抓取点位置和长轴方向,并输出抓取点列表。

  5. 位姿变换 输入上一步骤的结果,得到抓取点在机器人坐标系下的表示。

  6. 根据与参考方向的夹角判断位姿是否有效 输入上一步的结果,计算抓取点Z轴和参考方向的夹角,与设定阈值比较,小于为True,大于为False,输出布尔值列表。

  7. 过滤 输入布尔值列表、机器人坐标系下的抓取点及其标签和抓具尺寸,输出True对应的结果。

  8. 获取在3D ROI内的位姿 输入上一步的结果,根据文件,得到感兴趣区域内的抓取点及其对应的标签和抓具尺寸,此步骤必须在机器人坐标系下进行。

计算抓取点位置

组成如图2 所示。

计算抓取点位置步骤组合

图2 计算抓取点位置步骤组合

各个步骤的作用如下:

  1. 提取圆柱范围内的点云 输入场景中感兴趣区域内的点云和平面抓取点列表,以抓取点为基准坐标,提取设定的圆柱内的点云。

  2. 验证点云是否符合要求 输入上一步的结果,将每块点云的点数和设置的阈值比较,在阈值区间内为True,否则为False,输出布尔值列表。

  3. 过滤 输入布尔值列表、抓取点对应的标签和抓具尺寸,输出True对应的结果。此步骤可以滤除空点云对应的标签和抓具尺寸。

  4. 过滤 输入布尔值列表、圆柱内的点云和物体的掩膜,输出True对应的结果。此步骤可以滤除空点云及其对应的物体掩膜。

  5. 计算平面点云的位姿和尺寸 输入点数符合要求的点云,计算每个点云对应的空间抓取点并输出。

  6. 翻转位姿的坐标轴方向 输入抓取点列表,按照指定坐标轴方向翻转,使其方向大体一致,方便后续抓取,输出翻转后的抓取点列表。

计算抓取点X轴方向

组成如图3 所示。

计算抓取点X轴方向步骤组合

图3 计算抓取点X轴方向步骤组合

各个步骤的作用如下:

  1. 提取掩膜中对应的点云 输入物体的掩膜和场景中感兴趣区域内的点云,计算掩膜对应的点云并输出。

  2. 验证点云是否符合要求 输入上一步的结果,将每块点云的点数和设置的阈值比较,在阈值区间内为True,否则为False,输出布尔值列表。

  3. 过滤 输入布尔值列表、抓取点(位置准确)和其对应的标签和抓具尺寸,输出True对应的结果。此步骤可以滤除空掩膜对应的抓取点及其标签和抓具尺寸。

  4. 过滤 输入布尔值列表和掩膜对应的点云,输出True对应的结果。此步骤可以滤除空掩膜。

  5. 计算平面点云的位姿和尺寸 输入上一步的结果,计算每个点云对应的抓取点并输出。