APP下载

基于体素栅格滤波的点云地图处理方法

2021-07-20李皓范玉卿刘豪杰

电子制作 2021年13期
关键词:栅格激光雷达滤波

李皓,范玉卿,刘豪杰

(中国矿业大学(北京)机电与信息工程学院,北京,100083)

0 引言

激光SLAM以激光雷达作为主要传感器[1],由于激光雷达扫描得到的激光点云仅携带深度信息,因此应用激光SLAM算法生成的地图对环境信息的表达十分有限。为了方便帧间匹配,一些3D激光SLAM算法[2-3]会从激光点中提取带有明显几何特征的点,并将这些特征点应用到最后的建图算法中去。在建图算法中,常使用滤波算法减少地图中点云的数量以降低数据存储压力,这就导致最后生成的地图中的点云更加稀疏。随着多传感器融合SLAM算法[4-7]的发展,激光雷达扫描得到的激光点或激光SLAM算法构建的点云图被应用到视觉SLAM图像像素深度值的获取上。ChenMengxiao[8]等人提出使用2D激光雷达获取3D点云并与图像关键帧融合,利用基于相机的视觉SLAM回环进行后端优化,建立全局地图。ZhangJi[9]等人提出了DEMO,将激光里程计部分使用激光雷达获取的周围环境的点云图用于视觉里程计部分为部分图像像素特征点提供深度信息。Johannes Graeter[10]等人提出了LIMO,使用单帧激光点云数据提取图像特征点的深度。Jason Ku[11]等人提出使用激光雷达数据为部分图像像素提供深度值,并使用图像处理算法进行深度补全。在激光点云深度信息与图像信息融合构建地图时,如果建立稀疏地图,激光点云深度图的稀疏性对建图效果影响有限,算法整体上计算量不大,可以实时运行;在建立稠密地图时,时效性并非首选项[12-13],因此可以相应增加激光点云处理量,提高点云密度,从而提供更加稠密的点云地图。以LOAM算法[3]为例,利用该算法为图像像素提供深度信息,在对激光点云进行处理时,使用体素栅格滤波算法,通过设置合理的体素大小,在不考虑实时性建图的前提下,达到稠密化点云深度地图的目的,为图像提供更多的深度信息。

1 LOAM算法与体素栅格滤波

■1.1 LOAM算法的实时性计算优化

LOAM是一种实时的激光雷达里程计与建图算法。在地图漂移的问题上,LOAM优先考虑算法实时性,选择了在线方式解决。该算法将定位与建图过程分离,其中里程计算法计算频率高但精度低,目的是通过快速计算找到相邻帧特征点之间的对应关系,建图算法计算频率低但精度高,通过检测局部点云簇的几何分布,计算相关特征值与特征向量确定对应关系,得到高精度位姿与点云地图。定位与建图相分离、高低精度搭配的方式降低了计算复杂度,使算法可以实时运行,缓解地图漂移问题,得到理想的机器人位姿与点云地图。

为了减少计算复杂度,保证算法实时性,LOAM主要采取了两种方式:限制特征点的提取数量、使用体素网格方法进行下采样。在激光里程计算法中,提取完特征点后对less_flat点进行体素栅格滤波,减少需要处理的点云的数量。在建图算法中,使用体素栅格滤波对角点、平面点、地图进行了下采样,减小了点云密度,提高了算法运行速度。

激光雷达与相机融合建立致密的环境地图或进行三维重建时,算法实时性并非必需选项,离线的处理方式可以提供足够的时间对数据进行处理和优化,从而取得更好的定位与建图效果。因此合理配置体素栅格大小,在不考虑算法实时性的基础上,让激光SLAM部分提供更加致密的深度信息,是一个值得研究的方向。

■1.2 体素栅格滤波算法

体素是三维的一个个小立体空间,将点云数据划分出一个个3D体素,在每个体素内,用重心近似所有的点。这种方法可以减少点云的数量,减小计算复杂度,保持点云的形状特征,在提高配准、曲面重建、形状识别等方面有着重要作用[14]。

体素栅格滤波通过Voxel_Grid函数实现。当接收到点云坐标数据后,首先求得X、Y、Z坐标轴上最大值xmax、ymax、zmax和最小值xmin、ymin、zmin。然后根据各坐标轴上的最大值和最小值求出能够包围点云数据的最小体积的各边长lx、ly、lz。

给定体素栅格大小v,则X、Y、Z坐标轴可以等分为L、M、N份,则一共产生L·M·N个体素栅格。

对所有体素栅格进行编号,记为(i, j, k),将每个数据点划分到所属体素栅格内。

计算每个体素栅格的重心,记为cijk,以重心代替该体素内所有点云数据。当重心不存在时,以体素内在距离上最接近重心点的点云数据代替体素内所有数据。

其中,n为体素栅格内数据点个数,ip为数据点。

经以上步骤,点云数据完成体素栅格滤波过程。

2 实验与分析

在使用体素栅格滤波进行下采样时,体素的大小选择很重要,过大容易出现点云失真,无法准确还原环境的特征。在对LOAM算法的一些改进中,下采样时多采取较大的体素,虽然提高了算法实时性,却损失了一些有利用价值的深度信息。本实验分别选取不同边长的体素,以里程计算法中处理完成的角点、平面点以及最终点云深度地图为下采样对象。设定变量T=(c,f,m),其中c、f、m分别代表角点、平面点、点云地图的体素大小。体素选取值为20cm、10cm、5cm、2cm,分别观察LOAM算法在室外大场景、走廊以及室内小场景中执行下采样后的点云数量以及建图算法(Lasermpping)的CPU占用率峰值。里程计算法中less_flat点下采样体素大小不变,设定为2cm。

实验所用激光雷达为Velodyne公司生产的VLP-16,可以直接获取3D激光雷达点云数据,具体参数如表1所示。实验在PC端进行,程序基于Ubuntu16.04上的ROS系统。PC所用CPU为Inter(R) Core(TM) i7-756U @3.5GHz,4核8线程。实验所需数据为提前录制的数据包,在运行LOAM算法时用0.5倍速播放。

表1 Velodyne VLP-16参数

如图1~图3所示,在室内、走廊两种小场景以及室外大场景的实验中,随着体素不断减小,地图上的深度点不断增多,最大可增加54.87倍。结合表2至表4可以发现,在数据包0.5倍速播放的情况下,体素越小,建图算法CPU最大占用率越大,最大接近100%,由此可以得出,当数据包以正常速度播放时,CPU占用率将超过100%,此时LOAM算法将不再具有实时性。

表2 室外实验结果

图1 室内环境深度地图

图3 室外环境深度地图

在表4中,当体素边长由10cm变为5cm时,建图算法CPU最大占用率没有明显上升,点云数量却增加了54%,这是由于体素设置过小,点云总体数量过大,体素数量超过Voxel_Grid函数设定值,导致数据溢出。因此在大场景中使用体素栅格滤波时,需要根据实际情况设定体素大小,或将点云分块处理,避免数据溢出情况的发生。

表3 走廊实验结果

表4 室内实验结果

在图1和图2中,当体素大小设定为20cm时,可以观察到点云地图深度信息较为稀疏,无法真实反映出环境特征。当体素逐渐变小,环境特征逐渐清晰,此时并未发生下采样数据溢出,因此在小场景中,可以适当减小体素大小,获得更加丰富的环境深度信息。

图2 走廊环境深度地图

将以上实验结果应用在融合算法中,设定体素大小,使用体素栅格滤波算法对LOAM算法得到的点云地图进行处理,为图像像素提供深度信息,然后输出带有色彩信息的点云地图。如图4为实验所选取的小场景环境,其中图4(a)为室内环境,图4(b)为走廊环境。在两种环境中分别用边长为20cm、5cm的体素对LOAM建图效果进行处理,并将5cm体素处理后的结果用于融合算法建图。

图4 小场景实验环境

实验结果如图5、图6所示。其中(a)为20cm体素处理后的LOAM建图效果、(b)为5cm的体素处理后的LOAM建图效果,(c)为融合算法建图效果。

通过对比可以发现,图5虽然是室内环境,激光雷达无需扫描远距离物体,各扫描点之间的夹角相对较小,由于使用了较大体素,点云图对环境轮廓的表达不够清晰,从图5(a)无法判断出物体的轮廓。图像图5(b)由于使用了较小体素,从点云图中可以相对清晰地看出门框、书架轮廓,经融合算法赋予色彩信息后,能够比较清楚地识别门、墙壁、标定板等物体的形状、颜色。

图5 室内环境建图效果

走廊环境建图效果如图6所示。图6(a)仅能依稀辨别走廊的柱状轮廓,对走廊中存在的门窗等物体表达模糊;经小体素处理后,图6(b)中点云数量足以显示走廊中门窗的形态,对于走廊整体轮廓的表达更加清晰;将图6(b)中结果用融合算法处理,赋予门窗、地板颜色信息,走廊尽头的壁挂电视清晰可见,整体上对走廊环境信息的表达更加丰富。

图6 走廊环境建图效果

3 结语

选择不同的体素大小,会给激光点云地图带来不同的显示效果,较小的体素可以显著增加激光点云地图的密度,使地图对环境信息的表达更加细腻,在激光雷达与相机的数据融合算法中可以为更多图像像素提供深度信息。相比于大场景,使用体素栅格滤波算法在走廊、室内等小场景中对于点云密度的增加更明显,且不容易发生体素数量溢出的情况。较小的体素会增加处理器运算量,可能会出现无法实时建图的情况,因此需要在算法实时性与点云密度之间进行选择。

猜你喜欢

栅格激光雷达滤波
基于HP滤波与ARIMA-GARCH模型的柱塞泵泄漏量预测
基于改进自适应中值滤波的图像降噪方法*
激光雷达实时提取甘蔗垄间导航线
基于改进栅格图的道路和障碍物检测算法研究*
法雷奥第二代SCALA?激光雷达
融合激光雷达与超声波数据的障碍物检测方法
Ouster发布首款全固态数字激光雷达
5G NR频率配置方法
反恐防暴机器人运动控制系统设计
基于非下采样剪切波变换与引导滤波结合的遥感图像增强