目录
说明
学习知乎上任乾写的从零开始做激光slam系列,在这里总结一下收获
一. 开篇
- 作者给出了本系列的简单介绍,包括用的传感器,平台,写作思路等等。
二. 数据集
- 作者使用了KITTI数据集,在下载的过程中发现,直接*从国外网站下载速度非常快。
- 主要是利用激光雷达数据和RTK数据做融合。
RTK,GNSS,IMU等定位方式的精度要详细了解一下 - 将数据集转换成ROSBAG,然后利用rviz就能进行原始数据效果查看了。
三. 软件框架
- 将订阅和发布写成分开的类,同时,再按照传感器数据类型进行进一步分类
- 功能流程:
(1) 接收数据放到队列中
(2) 选出时间基本一致的数据组
(3) 发布数据
四. 前端里程计初试
-
功能流程:
(1)接收数据放到队列里
(2)选出时间基本一致的数据
(3)点云预处理
清洗NAN数据
点云稀疏化
(4)第一帧单独处理,直接更新局部和全局地图
(5)利用ndt匹配点云,获得单步的运动变换关系
(6)当运动距离达到一定程度,就更新局部地图和全局地图 -
局部和全局地图更新流程:
“地图”:是一个一个的点云数据帧序列
地图:是一个大的点云数据帧,包含了20个小关键帧帧的点
(1)更新局部地图关键帧队列,保证只有20个
(2)把所有的点加到一个地图点云帧里
(3)更新ndt的目标点云
(4)更新全局地图关键帧队列,每100个关键帧,进行一次全局地图点云帧更新
五. 前端里程计代码优化
- 这里功能流程基本没有什么变化
- 除了将订阅和发布分开,不同类型的数据分开之外,也将处理方法单独列出了一些类和函数,运用了继承的方式,便于以后扩展
- 地图关键帧存储在了硬盘上,可以节约内存空间