一种基于轮廓特征匹配的零件位姿估计方法

2023-09-18 14:18孙长江段旭洋陈智超
机械设计与研究 2023年3期
关键词:位姿景点轮廓

孙长江, 段旭洋, 王 皓, 陈智超, 徐 鹏

(1.上海交通大学 上海市复杂薄板结构数字化制造重点实验室,上海 200240,E-mail:scj0013@sjtu.edu.cn;2.上海交通大学 弗劳恩霍夫协会智能制造创新中心,上海 201306; 3.上海交通大学 机械系统与振动国家重点实验室,上海 200240; 4.上海飞机制造有限公司5G工业创新中心,上海 201202)

采用机器人进行工业零件的自动化分拣是制造业企业智能化升级的一个重要内容,其中目标识别和位姿估计算法的速度和准确性是影响机器人抓取效率和成功率的关键因素[1-2]。由于零件散乱堆叠场景下物体相互遮挡、背景杂乱、传感器噪声干扰等问题,准确的零件六维位姿估计仍然面临着较大的挑战。

近年来,针对工业零件的位姿估计方法主要采用基于图像或三维点云的匹配方法[3-4]。Hinterstoisser等[5-6]提出LINEMOD方法从多视角渲染目标物体模板,根据场景图像的边缘梯度和物体表面法向建立特征进行模板匹配,搜索与场景目标匹配的图像模板并获得目标位姿。Rios-Cabrera等[7]在LINEMOD的基础上使用背景图片构建负样本集,采用支持向量机对模板进行学习和聚类从而减少模板数量提高匹配算法速度。Ulrich等[8]利用CAD模型的边缘轮廓特征建立分层级模板金字塔,实现单个图像中三维物体的快速识别和位姿估计。模板匹配的方法通过查找与场景相似的模板可以快速估计物体位姿,但无法应对遮挡情况且匹配精度受尺度变化影响较大。Drost等[9]提出基于点对特征(Point Pair Feature, PPF)的匹配方法,通过对模型和场景的点对特征进行匹配来估计目标位姿并聚类获得最优结果,该方法针对噪声和部分遮挡仍有较好的识别性能,但算法耗时长。鲁荣荣等[10]提出增强型点对特征,减少了点对数目且区分性更强。陆军等[11]使用ISS算法在场景点云中提取关键点,并直接对关键点建立点对特征。Zhou等[12]提出BOLD3D描述子,在遮挡和杂乱场景下实现较高的匹配精度。

综上所述,采用图像模板匹配的方法对零件遮挡情况鲁棒性差且匹配精度受模板尺度变化影响较大,而采用点云的特征匹配方法存在计算效率低、对点云噪声敏感等问题。针对上述问题,本文提出了一种基于轮廓特征匹配的位姿估计方法,该方法通过将场景三维点云转换为深度图来提取场景点云轮廓,采用基于局部点云主方向的区域生长方法对轮廓点云进行聚类分割,通过采样轮廓点云提取特征点并建立轮廓点对特征,通过特征点对匹配实现场景中目标的识别和位姿估计,相比于原始点对特征匹配算法在识别效率和识别准确率方面均有所提升。

1 点云轮廓特征提取

1.1 点云轮廓提取

点云轮廓提取需要根据输入的点云数据提取出场景点云中零件的边缘轮廓点。通过将场景点云变换为深度图像后,采用Sobel滤波器进行边缘检测,根据图像灰度梯度提取出场景轮廓。

(1) 生成场景深度图像

深度图像是单通道灰度图,其中像素的灰度值表示点云中每个点距离相机的深度。已知用于拍摄场景点云的三维结构光相机的内参矩阵:

(1)

式中:f表示相机焦距,dx、dy表示像元尺寸,cx、cy表示相机成像中心的像素坐标。对点云中的每个点P(X,Y,Z),根据相机成像原理可将其映射到二维图像中,对应像素坐标:

(2)

并将点P到相机的深度距离Z线性映射为该像素点的灰度值:

(3)

式中:Zmax和Zmin是场景点云中所有点到相机的最大深度和最小深度,grmax是灰度图像的最大灰度值,通过设置场景的最大深度和最小深度,可以扩大灰度范围提高灰度精度,提升深度图边缘检测的准确度。

(2) 边缘提取

采用Sobel滤波器对深度图像进行边缘检测,Sobel算子是用于边缘检测的离散微分算子,采用两个卷积核:

(4)

分别从横纵两个方向对图像进行卷积,其卷积结果为两个方向灰度的一阶梯度:

(5)

根据梯度的范数:

(6)

进行阈值分割和区域筛选最终提取深度图像的边缘结果。

(3) 生成场景点云边缘轮廓

对深度图像中的边缘区域,根据区域中像素点的灰度值和像素坐标,重新映射得到场景点云的边缘轮廓。

(7)

(8)

(9)

图1是对场景点云进行轮廓提取的各步骤结果,其中目标零件为塑料材质的型材端盖。采用深度图像提取场景轮廓特征,不会受到环境光照和零件颜色纹理的影响,稳定性更强,且计算效率更高。

1.2 基于主方向一致性的轮廓点云聚类算法

点云轮廓边缘聚类的目的是对轮廓点云进行分割从而提取出轮廓中的直线边缘。为了准确的分割出在同一条直线段上的边缘点云,本文提出了基于主方向一致性的点云区域生长算法,主要步骤如下:

step 1: 对边缘点云进行预处理,剔除其中的离群点,得到初始点集Sorigin;

step 2: 设置搜索半径δ,对于每个点pi∈Sorigin,查找其邻域半径内的所有点记为点集Si,通过主成分分析,计算得到点集的主方向并作为点pi的方向向量ni=PCA(Si)(|ni|=1),并将pi状态标记为“未访问”;

▲图1 点云轮廓提取过程

step 5: 记录点集Lj;如果所有点状态均为已访问则区域生长结束,得到完成聚类的全部点集L1,L2,…,Lj,否则跳转到step 3。

采用该方法,可以准确的对轮廓点云进行聚类得到每个直线边缘,同时计算得到直线边缘的方向向量,具体实验结果如图2所示,其中图2(a)是轮廓点云,图2(b)是通过聚类算法得到的直线边缘点云。

▲图2 边缘点聚类结果

2 轮廓特征描述方法

对提取得到的点云轮廓特征,建立轮廓点对特征描述方法,并构建模型全局特征描述。

2.1 轮廓点对特征

轮廓点对特征使用两个点之间的距离关系和方向关系描述不同直线轮廓上的任意两个点之间的空间关系。如图3所示,对直线轮廓L1,L2上的两个点ml,mr,定义其点对特征:

(10)

▲图3 轮廓点对特征示意图

2.2 全局特征描述构建

全局特征描述用于表示模型轮廓特征点与点对特征空间的映射关系。通过构建全局特征描述,可以在点对特征匹配阶段根据场景轮廓的点对快速查找到具有相同特征值的模型轮廓点对。

全局特征描述采用哈希表数据结构进行存储,将具有相同特征值的模型轮廓特征点对存储在同一个索引项中,并能够根据特征值快速检索到对应的特征点对。对于模型表面轮廓采样点集合L中的任意点对(mi,mj)∈L2(i≠j),计算特征向量FB2B(mi,mj)。为降低点对特征的数量并提高特征匹配的鲁棒性,设定距离采样步长ddist与角度采样步长θ,将特征向量中的值离散为采样步长的整数倍:

(11)

▲图4 全局特征描述

3 三维目标位姿估计

基于轮廓特征的三维目标位姿估计算法分为离线和在线两个阶段。如图5所示。

在离线阶段,根据目标三维模型提取模型轮廓点云,建立模型全局特征描述;在在线阶段,分割并聚类得到场景点云的直线轮廓点云,在轮廓点云中选取采样点建立点对特征并从模型全局特征描述中匹配具有相同特征值的点对,并将场景点对和模型点对进行匹配得到一系列候选模型位姿,最终通过位姿投票和位姿聚类得到场景点云中的一组最佳位姿。

▲图5 三维目标位姿估计过程

3.1 轮廓点对特征匹配

▲图6 点对匹配示意图

(12)

3.2 位姿投票

对于场景轮廓的任意参考点sr,在轮廓点对特征匹配阶段会得到多组可能与之对应的模型轮廓关键点和旋转角(mr,α),因此在位姿投票阶段通过广义霍夫投票得到参考点sr的最佳提议位姿。

如图7所示,构建用于位姿投票的二维累加数组,其中每一行对应模型轮廓关键点,每一列对应离散的旋转角,数组的行数为模型轮廓采样点的数目,列数为离散旋转角的数目。

▲图7 位姿投票示意图

3.3 位姿聚类

通过广义霍夫投票,可以获得单个场景采样点sr到模型点云的最佳变换位姿。对于场景中的不同采样点,需要通过位姿聚类的方式将相似的位姿结果聚为一类,从而减少位姿数量,提高位姿精度。

首先按照投票数由高到低对位姿结果进行排序,将投票数最高的位姿创建一个位姿类别;从未聚类的位姿结果中找到属于该类别的位姿,其判断方式为计算未聚类位姿与最高票数位姿之间的距离和角度偏差,如式(13)所示:

(13)

式中:P*为聚类中心的位姿,P为候选位姿,tr(·)为迹运算,t*和t为P*和P中的平移向量,ε、δ分别为旋转矩阵的角度偏差阈值和平移向量的距离阈值。当偏差小于指定阈值时将该位姿标记为同一类。之后根据位姿的投票数采用加权平均的方式对聚类位姿进行平均,从而得到最终位姿。聚类位姿的加权平均方法如式(14)、(15)、(16)所示:

(14)

(15)

(16)

通过位姿聚类获得场景点云中目标物体的一组位姿结果,根据位姿结果的最终投票数可以筛选出最佳的一个或多个结果。同时为了优化位姿结果,可以采用迭代最近点算法(Iterative Closest Point, ICP)对位姿结果进行进一步的精配准。在本文中为了评价位姿估计算法的精度,并未采用ICP算法对位姿结果进行优化。

4 实验与分析

本文算法采用开源点云库PCL1.11.1和开源视觉算法库OpenCV4.5,使用C++语言实现,且未采用OpenMP、Cuda等并行加速工具。本文实验使用的计算机配置为AMD R5 4600H 3.0 GHz处理器,16 GB内存,64位Win10操作系统。本文实验使用开源数据集和实验室采集场景数据对所提算法和已有的基于点对特征的匹配算法进行算法运行效率和识别准确率的对比测试。

4.1 实验数据集

为测试算法的运行效率和目标位姿估计准确率,本实验采用MVTec ITODD[14]数据集和实验室自采数据进行算法测试。

ITODD数据集是MVTec公司开源的用于工业零件3D物体检测和位姿估计数据集,该数据集由28个工业场景对象和3 500个标记场景组成。本实验从ITODD测试数据集中选择三种零件作为待识别的目标物体如图8(a)、8(b)、8(c)所示。同时,利用实验室的三维结构光相机拍摄采集了两种零件型材端盖如图8(d)及连接件如图8(e)的多个场景点云。部分场景如图9所示,图9(a)、9(b)为端盖和连接件的场景图像,图9(c)、9(d)为对应的场景点云。上述目标零件的尺寸如表1所示。

表1 待识别目标物体尺寸/mm

▲图8 数据集零件实物图

▲图9 实际采集的场景数据

针对上述目标零件和场景数据,为评估位姿估计算法的准确率,还需要标定场景中目标零件的真实位置和姿态。本文采用BOP工具箱[15]中的手动标注工具进行场景目标的位姿标定。首先使用手动方式调整模型点云的位置和姿态将点云与场景中目标大致对齐,进一步通过ICP迭代优化位姿从而获得场景目标的真实位置和姿态,最后将位姿结果记录保存用于算法识别目标的准确率评估。

4.2 算法识别结果分析

在机器人零件抓取场景中,针对散乱堆叠零件的自动分拣往往在每次机器人抓取前都需要进行场景点云的拍摄并重新进行位姿估计,因此位姿估计算法的运行效率对整个抓取分拣系统的运行效率有较大影响。同时由于机器人每次只会抓取一个零件,因此对场景中零件的识别数量无较高要求,而是更关注识别零件的准确率。本小节从算法的运行效率和识别准确率两方面对所提出算法和原始基于点对特征的匹配算法进行对比分析。

(1) 算法运行效率分析

在点对特征匹配算法中,场景点云的点云数量和选取的关键点的数量对算法在在线匹配阶段的运行速度有很大的影响。关键点数量越多,在线匹配阶段需要匹配的场景点对和模型点对数量也会更多,从而降低算法运行效率。表2对比了在五个不同零件场景下本文算法和原始PPF算法的关键点数目和在线匹配阶段的识别时间,其中场景I到场景Ⅴ分别对应了图9(a)-图9(e)的5种零件。

表2 两种算法在不同场景下的运行速度对比

通过表2可以得出,本文算法相比于原始PPF算法,需要的场景关键点数目更少,且在时间方面本文算法也有明显的优势。这是因为本文算法对场景点云进行轮廓提取,并从轮廓点云中采样得到关键点,相比与原有算法从整个场景点云中采样关键点需要的关键点数目更少。

(2) 算法准确率分析

为评估位姿估计算法的准确率,分别测试本文算法和原始PPF算法在场景Ⅰ~Ⅴ中识别到的目标零件数目和其中正确位姿的数目并计算对应的识别准确率。识别准确率是算法在场景点云中识别到的目标位姿中正确位姿的占比,且当目标位姿与真实位姿的旋转误差<5°,平移误差<模型直径的10%则认为该位姿为正确位姿,即:

(17)

式中:[R,t]和[R*,t*]为目标估计位姿和对应的真实位姿,ε是旋转误差阈值设为5°,σ是平移误差阈值设为0.1Dm。图10为本文算法在场景Ⅴ中的识别结果,其中绿色模型为正确位姿,红色为误识别位姿。

▲图10 场景Ⅴ识别结果

表3列出了两个算法在不同场景下的目标零件识别准确率对比结果,从结果中可以看出本文算法的平均识别准确率为76%,而原始PPF算法的平均识别准确率为58.5%。

表3 两种算法在不同场景下的识别准确率对比

一方面,由于原始的PPF算法对点云的法向量变化较为敏感,对于表面曲率变化不明显或者存在较大平面的零件算法效果较差,而本文算法采用场景点云轮廓建立点对特征对表面曲率变化不明显的零件仍然能够取得较好的识别效果;另一方面,原始的PPF算法可能会将场景的背景点云误识别为目标零件从而导致识别的准确率降低。因此,相比于原始的PPF算法,本文算法在识别准确率方面效果更优。

5 结论

本文针对工业零件的自动化分拣场景中的零件六维位姿估计问题,在点对特征匹配算法的基础上进行改进,提出了一种基于轮廓特征匹配的目标位姿估计方法。通过将场景点云转换为深度图并进行边缘检测,实现快速的轮廓点云提取,并提出基于主方向一致性的点云聚类算法,对同一边缘的轮廓点云进行聚类。基于轮廓点对特征的匹配算法所需要的场景关键点数目更少,算法识别时间也更快。使用ITODD数据集和自采集场景数据进行算法测试,证明本文算法相比于原始PPF算法在运行速度和识别准确率方面均有提升。

猜你喜欢
位姿景点轮廓
OPENCV轮廓识别研究与实践
基于实时轮廓误差估算的数控系统轮廓控制
打卡名校景点——那些必去朝圣的大学景点
英格兰十大怪异景点
基于共面直线迭代加权最小二乘的相机位姿估计
基于CAD模型的单目六自由度位姿测量
小型四旋翼飞行器位姿建模及其仿真
没有景点 只是生活
景点个股表现
在线学习机制下的Snake轮廓跟踪