Cartographer总结(1:整体框架)
Git上开源的cartographer分为cartographer工程和其ros封装即cartographer_ros两部分。cartographer_ros部分只是对cartographer的封装应用,相当于一个example,可以用来理解cartographer的接口如何使用。
cartographer使用了goolge自带的一些库,如 ceres, glog 等,还有一些非google开发的依赖库,如 Protobuf,Lua 等。最新版本的cartographer使用了更多google开发的库。这些goolge的库使用起来方不方便因人而异,我个人的使用感觉还是很不方便的,尤其是在安装过程中,版本的要求较多,跨平台能力一般。
*Protobuf: 是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。
*Lua: 用来配置cartographer的各项参数。
cartographer的官网可以找到整体流程图:

该流程图简单表示了算法内部的数据流程,实际使用的类要比流程图中多一些。
根据我的总结,cartographer的类分层顺序为:map_builder->global_trajectory_builder->local_trajectory_builder
这其中包含了2d和3d两种情况,分别实例化2d和3d的相关类。(todo: 列出相关类)
为什么要有trajectory的概念呢?这正是cartographer的伟大之处,它支持多次建图,和純定位(pure localiza
Cartographer框架解析与应用

本文介绍了Cartographer的工程结构,包括cartographer和cartographer_ros,以及它们在SLAM中的作用。Cartographer依赖于glog、ceres和Protobuf等库,支持2D和3D建图。文章详细阐述了Cartographer的类层次,强调了trajectory概念的重要性,并概述了全局和局部SLAM的角色。在ROS环境中,重点讲述了map_builder的创建、节点的启动、轨迹的加载和订阅过程。此外,还提到了时间处理的注意事项,Cartographer内部使用的是UTC时间,与ROS时间不完全相同,需要进行转换。
最低0.47元/天 解锁文章
1609

被折叠的 条评论
为什么被折叠?



