一种基于边缘检测和区域增长的垛位点云定位方法
技术领域
本发明涉及钢铁厂无人化行车系统领域,特别是涉及一种基于边缘检测和区域增长的垛位点云定位方法。
背景技术
随着自动化技术的发展,钢铁厂库区的无人化管理已成为重要趋势。三维激光扫描系统是无人行车系统中,通过处理三维激光点云数据来定位卡车上的垛位位置,并为无人行车提供出库物料的目标位置的系统。传统的垛位点云分割定位方法,需要对卡车车厢点云进行平面拟合,将识别到的车厢平面去除,再对平面之外的点云进行聚类分割,从而将垛位从车厢分割开来。这种方法具有一定的局限性,因为不平整的卡车车厢难以完全拟合平面,容易受到卡车上杂物的影响,且聚类分割的距离阈值难以准确选择,因而分割效率较低。
发明内容
发明目的:本发明的目的是提供一种分割效率和精度高的基于边缘检测和区域增长的垛位点云定位方法。
技术方案:为达到此目的,本发明采用以下技术方案:
本发明所述的基于边缘检测和区域增长的垛位点云定位方法,包括以下步骤:
S1:采集卡车车厢表面的三维激光点云数据,对三维激光点云数据进行边缘检测,得到稀疏的边缘点云;
S2:基于边缘点云,根据垛位形状和扫描密度共同设置距离阈值和点云数阈值,对边缘点云进行欧式聚类分割,提取出若干个有效垛位边缘点云团;
S3:基于若干个有效垛位边缘点云团,通过AABB包围盒求取垛位边缘位置,再从三维激光点云数据中分割出该AABB包围盒内的有效垛位点云;
S4:对步骤S3得到的每个有效垛位点云都进行区域增长,得到若干个点云块;
S5:对步骤S4得到的每个点云块都进行检测识别,判断点云块是否属于垛位,以及点云块属于左垛位片还是右垛位片;如果点云块不属于垛位或者点云块不属于左垛位片和右垛位片,则舍弃该点云块;
S6:对于经过步骤S5的检测识别后留存下来的所有点云块,求取各个点云块的均值点;
S7:根据摆放方向对各个均值点进行排序,进而成对计算左垛位片和右垛位片之间的中点,得到每个垛位的中点坐标;
S8:根据垛位的中点坐标、放置在垛位上的钢卷的半径和垛位固有的几何参数,计算垛位的坐标。
进一步,所述步骤S1中,采集卡车车厢表面的三维激光点云数据的过程包括以下步骤:
S11:启动停车位上方的三维激光扫描装置,获取出库卡车车厢的深度数据;
S12:将步骤S11得到的深度数据还原成笛卡尔坐标系下的原始三维激光点云数据;
S13:对原始三维激光点云数据进行直通滤波,滤除停车位以外、车厢平面以下的无效点云数据,得到三维激光点云数据。
进一步,所述步骤S4具体包括以下步骤:
S41:根据垛位形状和点云密度共同设置法线阈值、曲率阈值、最小点簇点数和最大点簇点数;
S42:求取步骤S3得到的各个有效垛位点云的曲率,并根据曲率大小对步骤S3得到的有效垛位点云进行排序,将曲率最小的有效垛位点云加入到种子点集中;
S43:从曲率最小的平滑区域开始进行生长,搜索种子点的邻近点,计算曲率和法线向量的角度差;如果角度差小于给定角度差阈值且曲率小于给定曲率阈值,则将该点加入到种子点集,并将该点从步骤S3得到的有效垛位点云中删除;
S44:重复步骤S42-S43,直到剩余的有效垛位点云数量等于最小点簇点数,则停止工作。
进一步,所述步骤S5具体包括以下步骤:
S51:求出步骤S4得到的点云块所在的AABB包围盒的体积,根据垛位体积阈值范围对AABB包围盒体积进行判断:如果AABB包围盒的体积在垛位体积阈值范围之内,则AABB包围盒所对应的点云块视为待定垛位点云,进入步骤S51进行进一步判断;否则,舍弃AABB包围盒所对应的点云块;
S52:判断点云块的法线方向是否位于左垛位片的法线范围内或者右垛位片的法线范围内:如果点云块的法线方向位于左垛位片的法线范围内或者右垛位片的法线范围内,则判定点云块为有效垛位片;否则,舍弃该点云块。
进一步,所述步骤S8中,垛位的坐标为(X,Y,Z),其中,X为垛位的中点坐标里的横坐标,Y为垛位的中点坐标里的纵坐标,Z根据式(1)计算得到:
式(1)中,R为放置在垛位上的钢卷的半径,W为垛位底部宽度,θ为垛位片夹角。
有益效果:本发明公开了一种基于边缘检测和区域增长的垛位点云定位方法,通过边缘检测、边缘点云聚类和AABB垛位提取,实现了垛位点云的精准分割,通过对点云块进行检测识别,实现了垛位的有效识别,提高了垛位定位精度。
附图说明
图1为本发明具体实施方式中垛位点云定位方法的流程图;
图2为本发明具体实施方式中识别的垛位形状;
图3为本发明具体实施方式方法中各个阶段的点云的示意图;
图3(a)为直通滤波后车厢平面点云的正视图;
图3(b)为直通滤波后车厢平面点云的俯视图;
图3(c)为检测到的边缘点云;
图3(d)为欧式聚类后的有效垛位边缘点云团;
图3(e)为基于有效垛位边缘点云团分割出的有效垛位点云;
图3(f)为检测识别得到的点云块;
图4为包含虚拟钢卷的垛位的示意图。
具体实施方式
下面结合具体实施方式和附图对本发明的技术方案作进一步的介绍。
本具体实施方式公开了一种基于边缘检测和区域增长的垛位点云定位方法,如图1所示,包括以下步骤:
S1:采集卡车车厢表面的三维激光点云数据,对三维激光点云数据进行边缘检测,得到稀疏的边缘点云;
S2:基于边缘点云,根据垛位形状和扫描密度共同设置距离阈值和点云数阈值,对边缘点云进行欧式聚类分割,提取出若干个有效垛位边缘点云团;
S3:基于若干个有效垛位边缘点云团,通过AABB包围盒求取垛位边缘位置,再从三维激光点云数据中分割出该AABB包围盒内的有效垛位点云;
S4:对步骤S3得到的每个有效垛位点云都进行区域增长,得到若干个点云块;
S5:对步骤S4得到的每个点云块都进行检测识别,判断点云块是否属于垛位,以及点云块属于左垛位片还是右垛位片;如果点云块不属于垛位或者点云块不属于左垛位片和右垛位片,则舍弃该点云块;检测识别得到的点云块如图3(f)所示;
S6:对于经过步骤S5的检测识别后留存下来的所有点云块,求取各个点云块的均值点;
S7:根据摆放方向对各个均值点进行排序,进而成对计算左垛位片和右垛位片之间的中点,得到每个垛位的中点坐标;
S8:根据垛位的中点坐标、放置在垛位上的钢卷的半径和垛位固有的几何参数,计算垛位的坐标。
步骤S1中,采集卡车车厢表面的三维激光点云数据的过程包括以下步骤:
S11:启动停车位上方的三维激光扫描装置,获取出库卡车车厢的深度数据;
S12:将步骤S11得到的深度数据还原成笛卡尔坐标系下的原始三维激光点云数据;
S13:对原始三维激光点云数据进行直通滤波,滤除停车位以外、车厢平面以下的无效点云数据,得到三维激光点云数据。直通滤波后车厢平面点云的正视图和俯视图分别如图3(a)和图3(b)所示。由于扫描仪安装高度一定,卡车车厢高度一定,划定的停车位置固定,因此通过设置合适的X/Y/Z轴向直通阈值,可将车厢以外的无效点云滤掉,得到卡车车厢的有效数据。
边缘检测采用PCL特征库中的boundary实现,即通过KdTree搜索三维空间关键点,结合点云的法线估计,将查找到的法线突变点作为边缘点。找到所有边缘点后,通过分析边缘点云的分布(见图3(c))和点云疏密度,设置合适的欧式聚类邻近搜索半径和点云数量阈值,从而分割出有效的垛位点云块(见图3(d))。进而对每个边缘点云团进行AABB特征提取,利用各个点云团的AABB特征从原始点云中提取出有效的垛位块点云(见图3(e))。由于本例中垛位底座边缘分别与X轴和Y轴平行,因此对分割后的边缘点云可采用AABB包围盒提取有效垛位点云,当然也可以使用其他方法进行提取。
步骤S4具体包括以下步骤:
S41:根据垛位形状和点云密度共同设置法线阈值、曲率阈值、最小点簇点数和最大点簇点数;
S42:求取步骤S3得到的各个有效垛位点云的曲率,并根据曲率大小对步骤S3得到的有效垛位点云进行排序,将曲率最小的有效垛位点云加入到种子点集中;
S43:从曲率最小的平滑区域开始进行生长,搜索种子点的邻近点,计算曲率和法线向量的角度差;如果角度差小于给定角度差阈值且曲率小于给定曲率阈值,则将该点加入到种子点集,并将该点从步骤S3得到的有效垛位点云中删除;
S44:重复步骤S42-S43,直到剩余的有效垛位点云数量等于最小点簇点数,则停止工作。
步骤S5具体包括以下步骤:
S51:求出步骤S4得到的点云块所在的AABB包围盒的体积,根据垛位体积阈值范围对AABB包围盒体积进行判断:如果AABB包围盒的体积在垛位体积阈值范围之内,则AABB包围盒所对应的点云块视为待定垛位点云,进入步骤S51进行进一步判断;否则,舍弃AABB包围盒所对应的点云块;
S52:判断点云块的法线方向是否位于左垛位片的法线范围内或者右垛位片的法线范围内:如果点云块的法线方向位于左垛位片的法线范围内或者右垛位片的法线范围内,则判定点云块为有效垛位片;否则,舍弃该点云块。
由于垛位存在左右两片垛位,如图2所示,且左垛位片和右垛位片与车厢平面的夹角对称,考虑到垛位的实际参数,本具体实施方式设置的左垛位片法线与车厢平面夹角区间为(30°,60°),右垛位夹角(120°,150°)。经测试,此判据可准确地分离出有效垛位片,见图3(f),满足现场精度要求。
步骤S8中,垛位的坐标为(X,Y,Z),其中,X为垛位的中点坐标里的横坐标,Y为垛位的中点坐标里的纵坐标,Z根据式(1)计算得到:
式(1)中,R为放置在垛位上的钢卷的半径,W为垛位底部宽度,θ为垛位片夹角。
实施例1:
以本实例为例,有三个待识别的卡车垛位,经过点云处理,满足法线&体积判据的垛位点云块分别为c1,...,c6。然后对每一个点云块求取点云的平均值(xi,yi)(i=1,...,6)作为每个垛位片的中心坐标。求得的垛位片坐标如表1所示:
表1:垛位片中心坐标
垛位片 |
1 |
2 |
3 |
4 |
5 |
6 |
x/m |
0.486 |
0.489 |
0.298 |
0.296 |
0.117 |
0.118 |
y/m |
-1.508 |
-1.484 |
0.260 |
0.284 |
2.510 |
2.534 |
由于本实例中垛位按Y轴摆放,于是对y坐标进行排序(y小的为车头),再两两计算中点位置(Xj,Yj),j=1,2,3。另外,本实例中,所需识别的垛位基本参数如表2所示:
表2:垛位基本参数
底座内宽W/m |
垛位片夹角θ |
钢卷半径R/m |
0.24 |
86.36° |
0.6 |
所放置的钢卷半径都是0.6m,因此计算得到z轴相对于车厢的高度为即以车厢平面为Z轴原点,放置的钢卷Z轴坐标要高出卡车车厢面0.697m。计算结果如表3所示:
表3:垛位中点
垛位中点 |
1 |
2 |
3 |
X/m |
0.487 |
0.297 |
0.118 |
Y/m |
-1.496 |
0.272 |
2.522 |
Z/m |
0.697 |
0.697 |
0.697 |
含有虚拟钢卷的垛位示意图如图4所示。经多组实验对比,垛位实际坐标和识别坐标的识别误差如表4所示:
表4:基于所提出方法的定位误差
|
Avg.Error |
Std.Error |
X/m |
0.00134 |
0.00552 |
Y/m |
-0.00239 |
0.02623 |
Z/m |
-0.00343 |
0.00633 |
同时,本实验进行了对比试验,与传统的定位算法进行比较,通过处理相同数据样本,得到基于传统方法的定位误差如表5所示:
表5:基于传统方法的定位误差
|
Avg.Error |
Std.Error |
X/m |
0.02533 |
0.00751 |
Y/m |
0.02868 |
0.06682 |
Z/m |
0.01858 |
0.02348 |
经实验对比,本发明能有效分割垛位点云,有效提高垛位的定位精度,满足工业作业现场要求。