这篇文章将对cartographer的系统做一个简要总结,前面系列文章已经对各个子模块做了较为详细的分析和介绍。这里再做一点补充说明:全局优化的结果不会反馈到局部优化的过程,所有子地图构建的时候其栅格的坐标系和轨迹的起始点标准坐标系对齐,点云帧的origin作为初始地图的中心。前面总体的分析内容主要基于二维建图过程展开,具体三维建图的逻辑框架基本和二维建图保持一致,这里暂不准备继续在三维建图方面做进一步详细的介绍。
如下图为cartographer系统的结构图,主要有传感器数据模块,局部SLAM和全局SLAM等关键模块,

在这里将对cartographer系统做一下简要的总结:
1、多传感器基于sensor_collator的缓存并实现同步和分发[2][3];2、点云数据的数据流转和变换,以及同步器range_collator实现多lidar传感器的融合及坐标变换支持(对定义的多个点云帧数据进行聚合并按照时间排序,多个点云传感器的origin也加以记录,以便进行range过滤)[4];3、基于extrapolator的点云点级别位姿估计,基于点云点时刻位姿和点云点局部坐标变换到trajectory统一坐标系下实现点云点去畸变[5][6];4、子地图的表示基于元数据limits和具体的栅格数据grid相结合,子地图的坐标系和轨迹坐标原点坐标系方向保持一致。地图创建的中心点为创建时点云帧的原点坐标,在更新的过程中,每一个点云帧的坐标都会对齐到轨迹坐标轴方向后进行更新,更新的时候基于当前点云点的原点作为射线起始点,在地图表示方面,二维概率栅格地图和tsdf表示方法具有不同的含义,但处理流程类似,三维地图构建扩展主要在地图表示和位姿估计时的自由度的扩展上,其主体流程也基本相同,框架也是复用[7]][8][9];5、基于局部扫描匹配算法实现点云帧位姿更精确估计并更新当前活动子地图[10];6、全局位姿优化,基于点云帧位姿和子地图位姿实现基于位姿图的全局优化,优化的结果不返回更新到子地图。可视化渲染或地图融合时,可以根据submap的全局位姿优化结果和submap对应的和轨迹坐标轴对齐的地图栅格数据做对应旋转变换实现不同子地图的对齐统一表示[11][12]。
以上为对cartographer的系统的部分关键内容做的一个小结,由于其良好的结构设计,cartographer的工程化的设计和实现在应用落地方面具有较为明显的优势,也可以在此现有架构基础之上做扩展开发考虑将当前的一些先进的SLAM算法集成进来。关于cartographer系统的系列介绍暂时就到这里,有疑问的地方欢迎联系沟通确认或勘误,谢谢。
References
- [1]、cartographer官方文档: Cartographer — Cartographer documentation
- [2]、SLAM系列之cartographer传感器数据模块介绍
- [3]、SLAM系列之cartographer系统中多种类型传感器数据的统一预处理
- [4]、SLAM系列之cartographer系统中激光传感器的点云数据流转变换过程分析
- [5]、SLAM系列之cartographer系统中ImuTracker实现分析
- [6]、SLAM系列之cartographer系统中PoseExtrapolator实现分析
- [7]、SLAM系列之cartographer系统2D建图模块类图关系结构和应用功能简要分析说明
- [8]、SLAM系列之cartographer系统中的基于Probability栅格的建图实现分析
- [9]、SLAM系列之cartographer系统中的基于TSDF栅格的建图实现分析
- [10]、SLAM系列之cartographer系统中的ScanMatch 2D算法分析
- [11]、SLAM系列之cartographer系统中PoseGraph2D全局位姿优化算法实现分析(一)
- [12]、SLAM系列之cartographer系统中PoseGraph2D全局位姿优化算法实现分析(二)
Leave a Reply