基于三维点云处理的包装袋绳检测

2024-01-03 12:04杨国威刘新月陈绮帆王校阳
天津科技大学学报 2023年6期
关键词:欧氏包装袋夹角

杨国威,刘新月,陈绮帆,王校阳

(天津科技大学电子信息与自动化学院,天津 300222)

在现代工业中,一些原本需要大量人力的工作越来越智能化,在降低人工成本的同时实现了生产效率的提高;货物拆包等很多枯燥、繁重的工作也渐渐由工业机器人来完成,自动拆包也是自动化行业的发展趋势。自动拆包通常需要测量包装袋上包装袋绳的位置并将位置信息提供给机械手以便于机械手进行操作。为准确可靠地定位到包装袋上包装袋绳的位置,需采用三维传感器进行测量。三维点云信息相比于二维图像信息更加精准,可以充分地描述物体的空间几何信息,能更精准地定位出包装袋绳在空间中的位置。

三维点云信息测量的设备主要有激光雷达传感器、RGB 双目相机、基于结构光的深度相机等。激光雷达传感器在深度信息的获取上,具有较高的可靠性和准确性。徐善军等[1]利用雷达激光检测引线及其引线端点,使机器人能够精确抓取引线位置从而完成自动化配网带电作业;但激光雷达成本较高,通常用于自动驾驶等多变的复杂场景下。RGB 双目相机的优点是测量精度高、鲁棒性强。朱槐雨[2]使用RGB 双目相机对番茄进行标定、立体匹配和RGB 图像与深度配准的实验,实现了对成熟番茄的定位和自动化采摘;但RGB 双目相机对图像的特征匹配依赖度极高,在光照环境不好和缺乏纹理的场景下难以准确测量。基于结构光的深度相机采用主动投影的方法实现快速鲁棒的匹配特征点,不依赖物体本身的颜色和纹理。陈勇忠等[3]针对形状各异、散乱放置、高度不一致的异构件在弱纹理、反光等场景中通过结构光相机获取数据进行三维重建并实现精准抓取。通常包装袋拆包是在工厂内部进行,不存在复杂多变的情况,但容易受光照条件的影响,因此基于结构光的深度相机更适合测量包装袋点云数据。

从工业三维相机采集的包装袋三维点云数据来看,包装袋绳的点云信息嵌入在包装袋点云里。直接对包装袋的点云数据进行目标分割,容易导致包装袋绳的信息被分割掉或者被错误地分割为包装袋的一部分。为解决这一问题,本文设计了一种先提取点云边界再分割的包装袋绳检测算法。包装袋绳与包装袋相比,棱角更加分明,点云数据曲率变化较大,通常体现为边界信息。对采集到的点云数据进行边界提取,将提取后的点云进行目标分割,便能得到完整的包装袋绳点云。

点云边界检测算法通常有两类。第一类算法利用点云自身的曲率、深度信息等特征判断采样点是否为边界。Woo 等[4]通过八叉树(octree)查找邻近点,边界处的点云法向上有较大的变化,通过计算邻近点的标准差可反映点云在法向上的变化情况,从而提取出边界。Xi 等[5]根据深度信息将三维点云转换为图像信息,再使用图像边界提取中的改进拉普拉斯算法判断边界。第二类算法是基于夹角阈值的边界提取算法,该算法将点云投影到微切面,再通过投影点连线的最大夹角判别采样点是否为边界特征点。张长勇等[6]首先使用KD-Tree(K-dimensional tree)对点云数据进行拓扑关系构建,然后使用K 领域的向量叠加边界提取算法进行粗提取,最后对候选边界点使用基于微切面的近邻最大夹角法进行精提取。

点云分割根据目标点云的几何、空间等特征将点云数据进行划分,使得划分后的相同区域具有一致的特征,属于同一个目标。常用的点云分割算法有区域生长算法[7]、随机采样一致性分割算法[8]和欧氏距离分割算法等。秦硕[9]采用区域生长算法实现了箱体表面点云的分割聚类。刘闯等[10]以法向量夹角为约束条件对点云进行分类,再结合随机采样一致性分割算法完成点云的分割。韩晓龙等[11]采用欧氏距离分割算法完成散货料堆点云的地面分割,弥补随机采样一致性分割算法分割不彻底的问题。为实现精准拆包,基于欧氏距离分割算法,通过距离阈值将边界提取后的点云进行分割。

本文采用基于夹角阈值的点云边界提取算法,先对点云数据进行边界提取,再利用欧氏距离分割算法分割点云数据,最终可以得到分割后的包装袋绳点云数据。

1 包装袋绳三维点云检测算法原理

1.1 包装袋绳点云数据分析

本文的包装袋点云数据是由基于结构光的三维相机获取,工业相机拍摄的包装袋点云如图1 所示。从图1(a)可以看出,包装袋绳点云嵌入在包装袋点云里,调整角度后能够看到空间中包装袋绳的形状;且图1(b)显示获取的点云存在噪声影响,难以直接从点云中区分出包装袋绳的点云信息。此外,包装袋绳与包装袋相比,棱角更加分明,点云数据曲率变化较大,通常体现为边界信息;因此,先选择基于夹角阈值的点云边界提取算法提取出包装袋绳的边界,再采用欧氏距离分割算法将包装袋绳点云分割出来。

图1 工业相机拍摄的包装袋点云Fig.1 Packaging bag point cloud captured by industrial camera

1.2 包装袋绳三维点云检测流程

本文设计的先提取点云边界再分割的点云处理算法流程如图2 所示。

图2 点云处理算法流程Fig.2 Flow chart of point cloud processing algorithm

为了从包装袋的三维点云中提取出包装袋绳的位置,需要进行如下处理:首先,对点云数据进行预处理[12],下采样减少点云数量的同时不改变目标轮廓;然后,通过基于夹角阈值的边界提取算法提取出包装袋边缘与包装袋绳的轮廓;最后,通过欧氏距离分割算法将包装袋绳点云从包装袋点云中分割出来。

2 基于夹角阈值的点云边界提取

为了保证包装袋三维点云边界提取的精度和效率,在边界提取前先对原始的点云数据进行滤波和下采样;这样可以有效消除噪声点,在提高边界提取效率的同时可以减少噪声点对边界特征的影响。

包装袋绳在包装袋三维点云中体现为点云边界,因此可利用基于夹角阈值的点云边界提取算法进行提取。首先确定微切面,计算向量之间的夹角,然后对边界特征点进行提取。

2.1 求取微切面

设P 为采样点,通过P 点搜索K 近邻点;此K邻域表示为 Mj( j =0,1,2, …, k-1),代表一个参考数据。采用最小二乘法拟合出微切面,假设为F ( x, y , z ) = a1x + a2y + a3z + a4=0,矩阵形式为

ATA =0进行特征值求取。矩阵A 的特征值为λi(i = 1,2,… , n ),其中λi为 ATA 的正特征值;n 为奇异值个数。求出 ATA 的最小特征值以及最小特征值所对应的特征向量,此特征向量就是Aa=0的最小二乘解。求得微切面的法向量 n= ( a1, a2, a3)。

2.2 提取边界特征点

将采样点 pi及其K 邻域 Mj( j =0,1,2, …, k -1)投影到其对应的微切面,可以获得采样点的投影和K 邻域点投影的集合( j = 0,1,2, …, k - 1)。假设空间散乱点集各个坐标为 Ni( xi, yi, zi)( i = 0,1,…, n ),则其在微切面的投影点坐标为( xi′ , yi′ , zi′),于是有

在通过式(4)计算出相邻向量的夹角后,通过排序算法求出相邻向量夹角的最大值。夹角的最大值大于夹角阈值时,判断当前点为边界特征点,否则为内部点。通过尝试不同的阈值,比较提取结果与实际边界的一致性,将夹角阈值设定为π/4。由于该实验中提取的是包装袋绳的点云数据,当包装袋绳上相邻点之间的法向量夹角大于π/4 时说明点云之间的夹角更加尖锐,符合提取包装袋绳边界的要求。

点云边界提取算法流程图如图3 所示。

图3 点云边界提取算法流程图Fig.3 Flow chart of point cloud boundary extraction algorithm

3 基于欧氏距离分割算法的点云分割

包装袋表面具有平滑性,但受传感器视场范围影响,获取的包装袋边缘也会存在点云边界;所以利用基于夹角阈值的边界提取算法提取的点云中,包含包装袋绳点云和包装袋边缘部分点云。包装袋绳上的点云之间的距离相对较近,而包装袋边缘部分点云之间的距离较远;因此,选择距离作为分割的标准,采用欧氏距离分割算法将包装袋绳点云从包装袋点云中分割出来。

基于欧氏距离的分割本质上是区分邻里关系的远近。基于欧氏距离提取集群的方法,仅仅依据距离,将小于距离阈值的点云作为一个点云集Q,如果,则两点之间的欧氏距离d 表示为

基于欧氏距离分割算法的具体算法步骤如下:

(1)设聚类结果存放在集合Z 中,待检测的点云则存放在集合A 中。

(2)随机选择点云中的某一点P 加入集合A。

(3)用KD-Tree 搜索距离P 点最近的k 个点,并计算k 个点到P 点的欧氏距离。

(4)设置距离阈值r,将距离小于r 的点都归入A。

(5)选择集合A 中未被处理过的一点作为新的点P,重复步骤(3)至步骤(5)。

(6)若集合A 中所有的点都被处理完毕,并且不再有新的点加入时,那么A 中所有点就属于同一类,将其加入集合Z 中,并重置A。

(7)当遍历完整个点云中所有的点时,集合Z 就是欧氏距离分割的最终结果。

4 实验结果与分析

4.1 实验使用设备与系统

本实验收集数据的设备为D132 型高精度工业三维相机(西安知微传感技术有限公司),此相机为基于结构光的深度相机。相机参数为:深度精度0.20~0.60 mm,工作距离700~2 000 mm,分辨率1 280 像素×1 024 像素,软件开发环境Windows。该相机的应用场景有包裹测量、无序分拣、拆垛码垛、焊接、定位引导等。将相机获取的数据以PCL(一个大型跨平台开源C++编程库)[14]为工具对点云进行处理。

4.2 数据预处理

体素滤波前后的点云数据如图4 所示。

图4 体素滤波前后点云数据Fig.4 Point cloud data before and after voxel filtering

体素滤波在达到下采样的同时不破坏点云本身几何结构,可以在一定程度上去除噪声点和离群点。将图4 中滤波前后图片进行对比可知:体素滤波能有效过滤包装袋附近的噪声点,并在不改变包装袋基本轮廓的同时减少点云数量;原始的包装袋的点云数量为1 310 720,体素滤波后的点云数量为231 605。

4.3 基于夹角阈值的点云边界提取

边界提取前后点云数据如图5 所示。图5(a)为滤波后的包装袋点云数据,将滤波后的点云作为输入,通过基于夹角阈值的边界提取算法对点云进行边界提取,提取出的实验结果如图5(b)所示。实验结果显示,边界提取算法不仅可以提取包装袋绳的边界信息,还可以提取出包装袋的外轮廓和包装袋周围的噪声点。这是因为包装袋的外轮廓和噪声点在点云数据中也属于边界的部分,符合边界提取算法的要求。图5(b)显示出包装袋绳点云与包装袋边缘的距离关系,包装袋绳的点云相对比较密集,点与点之间的距离较近,而包装袋边缘点云距离较远,基于欧氏距离的分割算法可以通过设置距离阈值对点云进行分割,最终定位出包装袋绳的位置。

图5 边界提取前后点云数据Fig.5 Point cloud data before and after boundary extraction

4.4 基于欧氏距离的目标分割

点云分割前后数据如图6 所示。图6(a)为边界提取后的点云数据,图6(b)为对边界提取后的数据进行欧氏距离分割的实验结果,图中红色线条表示包装袋绳的点云,绿色线条表示包装袋外轮廓的边缘点云。包装袋绳的点云中点与点之间的距离较近,而包装袋的边缘点云距离较远,满足基于欧氏距离的点云分割算法中通过距离进行分割的要求。

图6 点云分割前后数据Fig.6 Data before and after point cloud segmentation

对图6 中点云分割后的包装袋绳点云数据进行近邻点搜索,包装袋绳点云处理与观察视图如图7 所示,其中图7(a)为包装袋的RGB 实物图。

图7 包装袋绳点云处理与观察视图Fig.7 Bag rope point cloud processing and observation view

只依靠边界提取算法提取到的包装袋绳边界不足以定位包装袋绳在空间中的位置,需要对包装袋绳的点云信息在原始点云中进行近邻点搜索,搜索到的所有点云共同组成包装袋绳的区域位置。图7(c)中红色线条表示提取出的包装袋绳边界,绿色点云范围表示以包装袋绳为边界提取到的近邻点。上述实验中通过点云分割与近邻点搜索定位出包装袋绳的具体位置,但无法看出包装袋绳的形状和在空间中的位置。图7(d)为调整角度后的点云观察视图,可以清晰地看出包装袋绳的凸起和形状,这一结果证实了该算法在包装袋绳检测上的准确性与有效性。

为了验证该算法对包装袋绳检测与定位的适用性,分别对不同位置、不同形状的包装袋绳点云数据进行滤波、边界提取、点云分割、近邻点搜索等点云处理,实验结果如图8 所示。该实验结果证实了本文所提出的点云检测算法的有效性,此算法可以准确定位出包装袋绳在包装袋中的位置。

图8 不同位置、不同形状的包装袋绳点云数据Fig.8 Point cloud data of different positions and shapes of packaging bag ropes

本文提到的机械手臂拆包是机械手用刀割断包装袋绳,切开包装袋表面,需要通过提取出的包装袋绳点云计算出包装袋绳的中心位置坐标,并通过近邻点搜索得到包装袋绳的范围。本文算法检测到的包装袋绳中心位置坐标和包装袋绳范围基本可以满足拆包需求。

为定量分析本文提出算法的检测精度,在实验室内从不同位置对具有不同形态包装袋绳的包装袋进行测量,对使用算法分割后的包装袋绳点云采用重心法计算出其中心坐标,再将计算值与人工测量值进行对比,结果见表1。人工测量的包装袋绳中心位置是通过精度为1 mm 的卷尺多次测量并求平均值计算得到的。测得的最大误差在15 mm 以内,能够满足工业机械手臂拆包的需求,该结果表明本文提出的检测算法计算出的包装袋绳中心位置精度能应用到现场拆包中。

表1 实验室包装袋绳点云中心位置坐标Tab.1 Point cloud center location coordinates of bag ropes in the lab

为了验证该算法的现场实用性,对现场采集到的 10 个不同位置和不同形状的包装袋点云进行处理得到包装袋绳点云,计算出包装袋绳点云数据对应的中心位置坐标,同时通过点云处理实验得出算法运行时间,结果见表2。包装袋上包装袋绳定位所需平均时间约为1.255 s。由于工业拆包中的包装袋尺寸和容量相对较大,整个拆包过程会持续1~2 min,所以包装袋绳定位的算法运行时间能够满足工业拆包现场应用的需求,实验结果为现场机械手臂准确拆解包装袋提供了定位数据。

表2 包装袋绳点云中心位置坐标与算法运行时间Tab.2 Point cloud center position coordinates of bag ropes and algorithm running times

5 结 语

本文针对准确定位包装袋上包装袋绳位置的问题,设计了一种基于三维点云处理的包装袋绳检测算法。首先,通过体素滤波消除点云噪声并下采样,提高计算效率;然后,采用基于夹角阈值的边界提取算法提取出包装袋绳点云;最终,采用基于欧氏距离的点云分割算法将边界提取后的边界点云分割,分割出包装袋绳的点云信息。采用重心法计算出包装袋绳点云的中心位置坐标,实验结果显示检测误差小于15 mm,满足机械手臂拆包要求。为了验证本文所提出的检测算法的广泛应用性,又对不同位置、不同形状的包装袋点云进行检测实验。实验结果验证了所提方法的有效性和可靠性。本文算法在自动化工业领域中的机械手臂自动拆包系统中具有较好的应用前景。

猜你喜欢
欧氏包装袋夹角
包装袋
探究钟表上的夹角
求解异面直线夹角问题的两个路径
由包装袋变身的花盆
任意夹角交叉封闭边界内平面流线计算及应用
直线转角塔L形绝缘子串夹角取值分析
卖萌的包装袋
自立包装袋的发明与发展
基于多维欧氏空间相似度的激光点云分割方法
三维欧氏空间中的球面曲线