Cartographer 是一个跨多个平台和传感器配置提供 2D 和 3D 实时同步定位和地图绘制 (SLAM) 的系统。
1. 文件关系
2. 代码框架
common: 定义了基本数据结构和一些工具的使用接口。例如,四舍五入取整的函数、时间转化相关的一些函数、数值计算的函数、互斥锁工具等。详见Common部分源码分析
sensor: 定义了传感器数据的相关数据结构。详见sensor源码分析
transform: 定义了位姿的数据结构及其相关的转化。如2d\3d的刚体变换等。详见:transform部分源码分析
mapping: 定义了上层应用的调用借口以及局部submap构建和基于闭环检测的位姿优化等的接口。这个文件也是算法的核心。其中mapping_2d和mapping_3d是对mapping接口的不同实现。详见mapping部分源码分析
io: 定义了一些与IO相关的工具,用于存读取数据、记录日志等。详见io部分源码分析
cloud: 该部分的功能我暂时还不清楚,打开看猜测是与云服务相关的功能。ground_truth、metrics这两个文件夹也还不清楚作用,目前该部分可以暂时不管,等我们后面碰到了再说。
参考文献
Cartographer源码阅读1——整体框架介绍 - 知乎
【Cartographer 专题讲解二】Cartographer_ros 代码讲解入门_哔哩哔哩_bilibili
Cartographer — Cartographer documentation