基于激光雷达的锥桶检测算法
2021-10-16代加喜张友兵毕栋龚家元周奎
代加喜,张友兵,毕栋,龚家元,周奎
(湖北汽车工业学院 汽车工程师学院,湖北 十堰442002)
在中国大学生无人驾驶方程式大赛(FSAC)中为了完成指定赛道中的无人驾驶功能,需要获取周围锥桶障碍物的位置,激光雷达通过扫描周围3D环境得到周围空间点云。郑少武和黄遥[1,2]等人利用RANSAC算法剔除地面点云,黄瑶在FSAC比赛场景中测试出RANSAC最佳迭代次数,使用欧式距离聚类算法将点云分为多个点云簇进行锥桶聚类。若在点云较多的地面剔除阶段使用RANSAC算法很难达到实时性要求,且欧式距离聚类后会存在非锥桶障碍物,降低识别准确率。文中利用激光雷达设计并实现一种室外锥桶检测算法,为了保证室外场景下数据处理的实时性和锥桶识别的准确率,对RANSAC算法和聚类后处理算法进行改进。
1 点云预处理
滤波在激光雷达的应用中是根据特定场合设定点云的有效范围过滤掉无用的点云数据,保留有效点云。设置点云的有效范围可以提升后期地面分割与锥桶障碍物聚类的效率[3-4]。
在FSAC中赛车需要完成8字绕环(图1)、直线加速、高速循迹等动态项目。因为VLP-16线激光雷达垂直方向线束较少,在扫描远距离处的锥桶障碍物时点云数量极少,不利于锥桶的检测。在比赛项目中激光雷达扫描周围得到的初始点云首先需要进行滤波处理,过滤掉点云稀疏的区域。
图1 8字绕环赛道示意图
选择点云库(point cloud library,PCL)中的直通滤波方法对激光雷达扫描得到的点云数据(图2)中的各坐标轴进行不同范围的滤波。如在点云数据中对X负半轴方向以及对X正半轴方向进行直通滤波,可以得到X轴滤波后的点云数据F,同样的方法对Y轴和Z轴进行直通滤波(图3)。
图2 8字绕环点云数据
图3 直通滤波后点云数据
式中:F为过滤后的点云数据集合;I为输入点云数据集合。激光雷达安装在赛车头部时,X轴的正半轴指向汽车前进方向,Y轴的正半轴指向汽车左侧,Z轴的正半轴指向汽车正上方。根据比赛经验及赛道特征,当激光雷达安装在离地面0.2 m的位置时,各赛项直通滤波范围如表1所示。
表1 各赛项直通滤波范围 m
2 地面分割
2.1 RANSAC地面分割
激光雷达扫描得到的点云数据经过直通滤波后还含有较多地面点,这些地面点集对于后期聚类是无用的。为了后续能够高效地对锥桶障碍物进行检测、聚类,需要将地面点与非地面点进行分割,获得剔除掉地面点云后的数据。
RANSAC算法在点云地面分割中的应用原理是假设点云可分为正确数据(符合模型的点云数据)和异常数据(不符合模型的点云数据)。通过部分点云形成模型并将点云区分为正确数据和异常数据。具体是将点云分为局外点集合To和局内点集合Ti。初始化时所有点都在To中,Ti为空集,从To中随机抽取3个样本点形成平面模型I,评估To中除开3个样本点的其余所有点与平面模型I之间的距离后再决定是否将这些点加入临时局内点集合Tt中,对比Tt与Ti内点的个数,点数多的集合作为新的局内点集合Ti。通过指定迭代次数计算出最佳模型的参数。该算法有着较好的鲁棒性,但是要拟合出良好的模型参数与迭代次数和随机抽取的样本点有关,随机抽取样本点会增加不必要的计算时间[5-6]。
2.2 优化RANSAC算法
由于比赛场地周围没有墙壁、房屋和植被,赛车行驶路段的地面平坦,激光雷达扫描到的点云只包含锥桶、地面,因此可以在RANSAC算法的基础上设计一种优化RANSAC算法,提升系统计算效率和模型准确度。优化算法原理是快速找出真实地面的拟合平面,过滤掉不可能的局外点,从而找到一些离拟合平面I的距离在阈值范围内的点,即地面点,以点数最多的点集作为地面剔除点集。避免计算那些不可能为地面点的拟合平面I。同时,在赛场中真实地面的法向量应与激光雷达安装位置的Z轴几乎平等。
对过滤后的真实地面附近的点云进行采样:
式中:Pn为3个三维点;Po为接近真实地面附近的3个三维点;Pm为模型局外点;L为激光雷达距离地面的高度;pt为地面分割阈值;F为滤波后的点云数据;Xn,Yn,Zn为1个点的三维坐标。
为了尽可能快地找到最优地面拟合平面I,通过式(1)~(2)筛选出3个离地面较近的三维点,根据式(2)中3个点求得拟合平面I的法向量:
式 中:ni为 拟 合 平 面I的 法 向 量;(X1,Y1,Z1),(X2,Y2,Z2),(X3,Y3,Z3)为式(2)中Pn集合里的3个点坐标;D为平面偏移量。
迭代计算出拟合平面法向量ni与Z轴单位向量nz之间的夹角小于阈值ωt的平面法向量
式中:cosni,nz为向量ni和nz的余弦夹角;nz为Z轴单位向量;ωt为余弦夹角阈值。得到正确拟合平面后计算局外点Pm到平面的距离Pd:
式中:Pd为点( )Xm,Ym,Zm到所拟合的平面的距离;Ps为模型局内地面点集;Dt为局外点到拟合平面I的距离阈值。通过模型得到3点拟合平面I后,将符合阈值范围内的局外点加入地面点集Ps中。由于拟合平面I的点是接近真实地面的点,从而可降低遍历点云数据的次数,提高计算效率。
激光雷达安装在赛车头部,并且离地面的距离固定,将所有局内点视为地面点剔除,得到地面剔除后点云数据(图4)。
图4 地面剔除后点云数据
3 聚类
3.1 欧式距离聚类算法
FSAC赛场地中的障碍物只有锥桶,直通滤波减少点云后利用优化RANSAC算法进行地面剔除,锥桶的点云分布密集,使用欧式距离聚类算法进行处理[7-8]。欧式距离聚类算法步骤如下:1)选择空间中某点P10;2)利用KDTree搜索离P10距离在阈值T范围以内的m个点,判断这m个点到点P10的距离,将小于T的点视为内点放入C1中;3)在C1中遍历所有未被访问的点,重复步骤2);4)当C1中所有的点都被访问后,则C1聚类结束;5)选择空间中点P10、P20、…、Pn0重复迭代步骤1)~4),直到整个空间中所有的点都被访问后,结束所有聚类。
3.2 聚类后处理
FSAC赛道上的锥桶尺寸一定;小锥桶的长宽均为20cm,高为30cm;大锥桶的长宽均为35cm,高为70cm。根据锥桶尺寸对聚类结果进行后处理,只保留有效的锥桶聚类。
获得每个聚类点云中3个坐标轴的最大值与最小值,相当于使用1个外围边界框将锥桶障碍物围起来,计算每个聚类点云对应轴最大值与最小值之间的距离,记为Xd、Yd和Zd,判断距离是否符合锥桶的大小来决定是否保留此聚类。
由于激光雷达扫描到的锥桶并不一定是正面,再加上一些点云扫描时的噪声,所以X、Y轴距离阈值设置为Xt和Yt。式中:γ为大锥桶的长宽;Cn为第n个聚类中的点集合;C为最终保留下来的聚类集合;Zδ-与Zδ+分别为锥桶高度下限与锥桶高度上限。若在聚类中计算出的Xd、Yd分别都小于距离阈值Xt、Yt,并且Zd在[Zδ-,Zδ+]范围内时,则认为是锥桶障碍物,保留此聚类,聚类结果如图5所示。
图5 聚类后点云数据
4 试验
试验在8字绕环上录制了481个PCD点云数据,直线加速上录制了322个PCD点云数据。随机取193个用于测试,模拟8字绕环赛道如图6所示。
图6 模拟8字绕环赛道
为了对比RANSAC优化前后算法的准确性,使用8字绕环的181个PCD文件进行地面分割算法mIoU(mean Intersection-over-Union)指标测试,测试中不考虑有上下坡的情况。测试方法为将激光点云数据利用CloudCompare软件手动分割开地面点与非地面点(图7~8),给地面点打上标签,再利用文中的优化算法将所有计算出的地面点与真实地面点进行IoU指标计算,最后计算所有点云的平均IoU即mIoU。将地面分割优化前后算法迭代次数均设置为50次。图9中显示了优化前后RANSAC算法的IoU准确率,通过对181个PCD文件计算出的IoU(式(12))取平均得到优化前RANSAC算法mIoU为88.27%,优化后RANSAC算法mIoU为91.31%。IoU的指标计算公式为
图7 源点云数据
图8 真实地面点云
图9 地面分割算法优化前后IoU准确率对比
式中:S为IoU指标计算结果;A为真实地面点云;B为优化RANSAC计算出的地面点云。
为了测试整个数据处理流程是否满足实时性要求,对点云预处理、优化后地面分割以及聚类分别进行用时统计,具体时间如表2所示。通过表2可看出,地面分割算法对比与其他算法平均计算时间最长(88.379 ms),在8字绕环模拟项目中总用时的最大值为181.251 ms,对于使用激光雷达检测锥桶障碍物来说满足实时性要求,最终可将每个锥桶质心坐标用于赛道的点云配准和路径规划,从而计算出当前车辆在赛道中的位置和可行驶路径。
表2 数据处理用时统计 ms
5 结论
文中设计了一种基于激光雷达的锥桶检测算法,并对RANSAC地面剔除算法进行了优化,从试验结果来看,锥桶检测系统能达到实时性要求,可以为赛车避障的后续处理腾出更多时间。
若激光雷达所在载体行驶在抖动较大的路段中,其扫描到的点云在地面剔除阶段效果不够理想。在欧式聚类结果后处理阶段,若增添更多的锥桶约束条件,那么能够使得锥桶检测的结果更为精确,不过同时也会增加计算时间。