激光slam_激光SLAM | CPFG-SLAM:野外大场景鲁棒SLAM

激光slam_激光SLAM | CPFG-SLAM:野外大场景鲁棒SLAM_第1张图片

论文题目:CPFG-SLAM:a robust Simultaneous Localization and Mapping based on LIDAR in off-road environment

聊一篇论文,就是聊问题从哪里来?原因是什么?思路从哪里来?做了哪些改进?

这篇论文所要解决的问题是室外大场景SLAM问题,野外的特点是场景略微空旷,周围特征不规则,如果大家测试过其他SLAM算法应该就知道,LOAM在这种场景下会因为特征缺少而出现退化现象。那么就需要使用ICP这样的方法,或者它使用了面特征的改进版本,但是ICP由于需要搜索最近邻做优化,消耗了大量计算量,实时性不好,而NDT虽然效率比ICP高,但是没考虑特征。所以可不可以结合他们的优点,做一种新的算法呢?这就是本论文的出发点。

ICP提取面特征,在匹配是找最近邻,NDT是计算点的正太分布特性,进行匹配,那结合他们二者的思路就是提取特征,然后对特征进行概率分布计算,随后进行匹配。这就是本文的基本思路,公式其实就和NDT公式非常类似,不往这里贴了。

然后看作者在结合二者的同时又做了哪些改进。一共有两方面:

1.除了面特征,还提取了线特征

提取的方法也很简单,之前我们在介绍基于直方图的闭环策略时已经提到过,就是对点集计算方差矩阵,然后提取其特征值

激光slam_激光SLAM | CPFG-SLAM:野外大场景鲁棒SLAM_第2张图片

当有两个主要特征值时就是面,当有一个主要特征值时就是线

2.除了单帧以外,还从拼接的多帧提取特征

由于单帧点云是稀疏的,我们如果一直从单帧点云中提取特征,那可能永远只能得到比较少的特征,而如果这一帧虽然没有特征时,把点存着,等下一帧到来时,按照位姿拼在一起,再进行特征提取,是不是就好了一些呢,如果还不行,就接着拼接。这一过程,作者在论文中给了图示

激光slam_激光SLAM | CPFG-SLAM:野外大场景鲁棒SLAM_第3张图片

以上就是作者的“1个基本思路+2个改进点”。

下面看看效果吧,在野外进行测试,测试场景是这样的

激光slam_激光SLAM | CPFG-SLAM:野外大场景鲁棒SLAM_第4张图片

和其他各种算法的位置误差做了对比,如下,从数据上看效果还是挺好的

激光slam_激光SLAM | CPFG-SLAM:野外大场景鲁棒SLAM_第5张图片

然后给出各算法轨迹对比图

激光slam_激光SLAM | CPFG-SLAM:野外大场景鲁棒SLAM_第6张图片

可以看出效果和数据基本一致。

另外说明的是,像loam这种在kitti数据集上长期霸榜的算法,在各种论文里却总被吊打,原因是什么,有以下两点:

1)loam作者开源的算法是一个基础版,自己打榜的算法做了很多改进,但没开源

2)kitti数据集的环境对loam还算是比较友好的,在一些特殊环境,loam确实会因为特征确实出现退化现象,而一些不基于特征的方法则可行,所以很多人为了展现自己算法的优势,就挑一些这种环境进行对比。就想上面这张图,loam轨迹就跑飞了。

你可能感兴趣的:(激光slam)