A-LOAM学习笔记2

 

A_loam框架的一些学习记录和细节

开源代码地址:https://github.com/HKUST-Aerial-Robotics/A-LOAM

4、laserMapping.cpp

这个文件就是aloam框架的后端了,为什么说aloam是一个很轻量的slam系统就是因为他没有后端的回环优化,后端只是一个scan-to-map的过程,然后不断将新的scan插入到map里面。aloam里面并没有一个全局地图的概念,只是保存着一个最大的局部地图,这个局部地图由栅格组成,每个栅格大小是50cm,里面存放着历史的角点和平面点。

对于每一个新进来的关键帧,后端所要进行的操作就是取出历史的特征点和他匹配。这里维护的小的submap是以当前帧为中心,从大的submap里面提取的点云。当当前坐标在大的submap边缘时,就需要更新大的submap,使得永远能够提取到足够的历史特征点。所以最初始的特征点会不断地随着距离的变大而被清空。因此aloam不太适合大面积的场景建图。

当提取了当前关键帧附近125个栅格内的点云后,还是特征点匹配,然后优化map到curLaser的位姿,进而得到map到camera_init的位姿变换。

总结,需要注意的是aloam里面的多个坐标系之间的关系,还有局部的点云是如何被提取的。

附上kitti数据集跑之后的效果,黄色的是雷达里程计,绿色的是优化后的全局位姿。由于没有回环,会有点云重叠。