LeGO-LOAM:Lightweight and Ground-Optimaized Lidar Odmetry and Mapping on Variable Terrain
启示:1、可以采取其他的分割方法与loam比较,针对曲率问题和平面问题,咱也可以针对园林场景来写;
- 对于地面点云去除直接借鉴本篇
- 后面的针对性实验做的也非常好
本文提出的框架采用从Velodyne的16线激光雷达VLP-16以及HDL-64E 3D激光雷达中采集的数据集进行验证。VLP-16激光雷达的感知范围达到100m,准确度为 +3cm,垂直视场角为 30°([正负15°] ),水平视场角为 360° 。16线激光雷达VLP-16的垂直分辨率为 2°。根据激光雷达的转速,水平角分辨率范围为 0.1°到 0.4° 。本文中,我们选择的扫描速率为10HZ,其提供水平角分辨率为 0.2°。HDL-64E(本文的工作是通过KITTI数据集进行实验探索的)也有 360° 的水平视场角,但是有48条激光扫描线束,它的垂直视场角是 26.9°。
系统总览
提出框架的总览如图1所示。系统接收三维激光雷达的输入,并且输出6*度的姿态估计。整个系统被分成了5个模块。第一个是segmentation分割模块,取单独一帧激光扫描点云并将其投影到一张深度图上用来进行分割。分割后的点云然后被送到feature extraction特征提取模块。然后,lidar odometry激光里程计模块采用前面模块提取的特征去找到与连续的激光雷达扫描帧相关的矩阵变换关系。之后提取的特征在lidar mapping激光建图模块进行处理,将它们配准到全局点云地图中。最后,transform integration矩阵变换集成模块将激光里程计和激光建图模块分别得到的姿态估计进行融合,并输出最终的姿态估计。
然后,基于图像的分割方法应用于深度图像上,将激光点聚类成许多个簇。同一个聚类簇中的激光点被指派一个唯一的标签。注意,地面点是一种特殊类型的聚类簇。对点云进行分割可以提升处理的效率以及特征提取的精确度。假设一个机器人在一个噪声环境中运行,小型物体,比如树叶等,可能会形成细小而不可靠的特征,因为两帧连续的激光扫描点云不太可能连续看到同一片叶子。为了在分割后点云上执行快速而可靠的特征提取,我们剔除掉少于30个激光点的聚类簇。点云分割前后的可视化如图2所示。原始点云包括许多点,从周围植被中得到产生不可靠特征的许多激光点
在此过程之后,只有那些表示大物体的激光点,比如树干,以及地面点会被保留用于之后的处理。同时,只有这些激光点会被保存到深度图中。我们还得到每个激光点的三种属性:(1)激光点的标记为地面点还是分割后的点;(2)激光点在深度图中的行列索引号;(3)每个激光点到激光雷达传感器的欧式距离-深度值。这些属性将会在下面几个模块中用到。
D. 激光里程计 Lidar Odometry
lidar odometry激光里程计模块估计两个连续扫描帧之间的传感器运动。通过执行点到边缘以及点到平面的scan-matching扫描-匹配找到两帧连续扫描点云之间的矩阵变换。换句话说,我们需要从前一帧 t-1 时刻的边缘特征集和平面特征集中找到当前帧t时刻 Fe 和Fp 中对应激光点的特征。为了简洁起见,找到相邻帧激光点的对应关系的详细过程可以在文献【20】找到。
然而,我们注意到一些变化可以提升特征匹配的精度和效率:
(1)标签匹配Label Matching
因为Fe和 Fp集合中的每个特征在点云分割后都用其标签进行编码,我们只需要从边缘特征集 t-1 Fe 和平面特征集 Fp 中找到有相同标签的对应特征。对于t的Fp 集合中的平面特征,只有在t-1的 Fp 中标记为地面点的才能用于寻找对应的平面块。对于 t 的Fe 集合中的边缘特征,它的对应边缘线是从分割后的聚类簇中的t-1Fe集合中找到。用这个方法找到对应关系可以帮助提升匹配精度。换句话说,同一个对象的对应匹配关系在连续两帧激光点云扫描中更可能被发现。这个过程也缩小了具有对应关系的候选对象。(平面和平面匹配 边缘和边缘匹配)
(2)两步L-M优化 Two-step L-M Optimization
文献【20】中,来自当前帧点云扫描与对应的前一帧扫描的边缘特征和平面特征之间距离的一系列非线性表达被编译成一个单一综合的距离向量。列文伯格-马夸尔特L-M算法是应用于找到两个连续激光扫描点云帧之间的最小距离变换。
我们在这里介绍一种两步法LM优化方法(two-step LM optimization)。最优的变换矩阵T是在两个步骤中找到:1)通过匹配 [公式] 中的平面特征与上一帧 [公式] 中的对应特征点,估计出最优的 [公式] ;2)然后,剩下的变换 [公式] 采用 [公式] 中的边缘特征以及对应的 [公式] 中特征进行估计,并使用[公式]作为约束。应该注意的是,尽管[公式]也能从第一个优化步骤中得到,然而是不精确的,不能用到第二步中。最后,通过融合[公式]和[公式]就能找到两个连续帧激光扫描点云之间的6*度的变换矩阵。通过使用提出的两步优化算法,我们发现可以达到类似的精度,而计算时间减少了大约35%。(通过平面得出三*度信息,在通过边缘在得到三*度信息并使用平面的计算结果作为约束,分两步并行计算,提高计算效率)
E. 激光建图 Lidar Mapping
Lidar mapping激光建图模块将 [公式] 中的特征匹配到周围的点云地图 [公式] 中,为了之后优化姿态变换,但是以较低的频率运行。然后,L-M算法在这里再次用来得到最终的矩阵变换关系。我们请读者参考文献【20】中关于匹配和优化步骤的详细描述。
LeGO-LOAM中的最大区别是最终的点云地图是如何存储的。我们没有保存单一点云地图,而是保存每一个独立的特征集合 [公式] 。令 [公式] 保存了所有历史特征集合的集合。 [公式] 中的每个特征集还与扫描时传感器的姿态相关联。点云地图 [公式] 能用两种方式从集合 [公式] 中得到。
第一种方式,通过选择在传感器视野范围内的特征集得到点云地图 [公式] 。为了简洁起见,我们选择传感器当前位置100米内的特征集合。然后,选择的特征集合矩阵变换并融合到一张单一的周围点云地图 [公式] 中。地图选择技术与文献【20】中用到的方法类似。
我们也能将因子图SLAM集成到LeGO-LOAM中。每个特征集的传感器姿态可以建模为因子图中的一个节点。特征集合 [公式] 可以视作这个节点的传感器观测。因为激光建图模块的姿态估计漂移是很低的,所以我们能假设在很短的时间内不存在漂移。通过这种方式,全局点云地图 [公式] 通过选择最近一组特征集来形成,比如 [公式] ,其中 [公式] 定义了地图 [公式]的大小。然后,采用L-M优化后得到的矩阵变换关系来添加地图 [公式] 中新节点和被选择节点之间的空间约束。我们可以通过执行闭环检测来消除这个模块的漂移。这种情况下,如果使用ICP算法发现当前帧特征集和前一帧特征集之间相匹配,则会增加一个新的约束。然后通过将因子图发送给文献【24】(贝叶斯树)中的优化系统中来更新估计的传感器位姿。注意,只有在第四节(D)中的实验才会使用这个技术去创建周围的点云地图