
上一篇我们聊了VINS-Mono,视觉惯性里程计的经典方案。从这篇开始,我们进入激光SLAM的世界。说到激光SLAM,绕不开的就是LOAM。LOAM是2014年CMU的Zhang Ji(张吉)在RSS上发表的,到现在引用量已经破万了,堪称激光SLAM领域引用量最高的论文之一。这个算法厉害在哪?在LOAM之前,激光SLAM的方案大多计算量很大,实时性不好。LOAM用了一个很巧妙的思路:把点云里的特征分成边缘点和平面点,然后分别做配准,把计算量降下来了,实时性特别好。这个思路直接影响了后面一大批工作,LeGO-LOAM、LIO-SAM、FLOAM都是在这个框架上改进的。面试中激光SLAM几乎必问LOAM,你得把它的核心思想讲清楚,尤其是特征提取和配准策略这两块。搞懂了LOAM,面试中激光SLAM的问题基本能答个七八成。LOAM的整体架构LOAM的设计思路和视觉SLAM很像,也是前后端分离的。这个架构设计很优雅,把计算量大的建图任务交给低频线程,高频线程只关注位姿估计,两者互不干扰。前端:激光里程计(Lidar Odometry)。对每一帧点云,提取边缘点和平面点,和上一帧做配准,得到高频的位姿估计。这一步不做回环检测,追求速度,10Hz运行。前端只用了平面点做配准,因为平面点更稳定。后端:低频建图(Lidar Mapping)。把前端传来的位姿和点云融合,做全局一致性建图。频率低,1Hz就够了。后端会把所有特征点都用上,不只是平面点,所以建图效果比前端好。这个设计有个好处:前端快,后端慢,互不拖累。前端就算偶尔漂移,后端可以通过更精确的配准来修正。两个线程之间通过消息队列通信,前端把位姿估计发给后端,后端把更新后的地图发给前端做下一帧的匹配。