在安装编译cartographer-1.0.0的时候,我们可以看到代码主要包括cartorgarpher_ros、cartographer、ceres-sover三个部分。其中,ceres-solver用于非线性优化,求解最小二乘问题;cartographer_ros为ROS平台的封装,获取传感器数据,显示和保存处理结果;cartographer为算法的底层实现,处理传感器数据,构建地图。作为ROS平台的封装,cartographer_ros没做实质性的工作,但是其充当了cartographer程序的守门人的角色,包含通往cartographer的钥匙,故本次先针对cartographer_ros作一个简单快速的分析。
cartographer_ros文件结构
首先看下cartographer_ros的文件结构,如下图所示:
然后我们具体分析下各目录的内容:
cartographer_ros_msgs:部分msg、srv文件;
cartographer_rviz:与rviz显示相关的文件;
cartographer_ros/cartographer_ros:基于ROS实现的主要程序,包含各节点的实现文件,入口节点cartographer_node的实现文件node_mian.cc就在这里;
cartographer_ros/configuration_files:参数配置文件,包括机器人参数、建图参数、定位参数、文件保存参数等;
cartographer_ros/launch:节点启动文件,包括机器人、建图、定位、文件保存等节点;
cartographer_ros节点关系
通过实际运行,分析一下ros节点的情况: