本文是 LIO-SAM论文与代码阅读笔记系列文章的一部分,所有博客如下:
LIO-SAM论文与代码阅读笔记(二)代码阅读:imuPreintergration.cpp和imageProjection.cpp
LIO-SAM论文与代码阅读笔记(三)代码阅读:featureExtraction.cpp和mapOptmization.cpp
注释代码链接:https://github.com/Cc19245/LIO-SAM-CC_Comments
本文参考博客:【论文阅读38】LIO-SAM
注意下面的说法,他说LOAM的scan-to-map是使用全局地图进行匹配,其实也是有道理的。虽然LOAM中维护的是一个局部的栅格地图,但是这个地图中其实是可以包含之前的点的,比如绕一个大圈回到原点,这个时候栅格地图中的点其实也包括最开始的时候的哪些点,因此虽然栅格地图是局部的,但是里面保存的地图点是全局的(当然每一步都会对栅格地图中的点进行体素滤波下采样来降低内存)。所以我感觉这也是LOAM精度高的一个原因?

再次解释了LOAM用的栅格体素地图属于本质上属于全局地图,每一帧扫描之后就把地图加到了这个栅格地图中,这样就分不清哪些点云是哪一帧扫描的了,自然后面即使有GPS或者回环对位姿进行了修正,但是也没办法对点云的位置进行修正了,因为不知道这些点云是哪一帧扫描的。
而LIO-SAM中用的就是单独存储每一帧的点云,这样后面修正位姿后也可以接着修正点云的世界坐标。

注意下面的说法,使用IMU去点云畸变也属于松耦合,然后把IMU估计结果和LiDAR估计结果进行EKF滤波也算松耦合的方法。
而紧耦合的方法又包括ErIEKF的方法和图优化的方法。


下面的讲解有点歧义,LiDAR中应该不存在关键帧的说法,每一帧都使用,所以可以认为每一帧都是关键帧,每一帧又都是普通帧。不确定是不是这样?但是LOAM中给后端发送当前帧的点云进行匹配的时候进行了降频啊?是不是这样就是关键帧?
解答:不是!这篇博客中最后写了,这确实是使用关键帧的方法,相当于借鉴了视觉SLAM的思想,就是为了提速。后面实验部分可以看到LIO-SAM可以倍速很多运行,感觉和使用这个方法以及使用iSAM2有关。
最后一句注意就是LIO-SAM中地图匹配的方法,使用scan-to-map的时候使用的map是过去n+1个帧的点云组成的,并不是LOAM中那种全局的栅格地图。

主要就是三点处理:

创新不够,实验来凑!

只用LIO和LO对比,这样在剧烈旋转的时候LOAM基于匀速运动的假设自然就不成立了,所以实验对LIO有优势。
可以看到下面蓝色部分LOAM很模糊,LIO的结果就比较清晰。

还是剧烈平移和旋转运动,还是不满足匀速运动假设,所以仍然是对LIO有利。

这里大部分是自己和自己比了,尤其在对比回环和GPS的作用,这个确实是LIO-SAM实打实的长处所在。


都是大场景,其实就是为了表现融合了GPS之后漂移变小。

看下面博客作者的总结和评论,可以总结出以下几点:

