(02)cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位
时间: 2023-06-05 11:47:15 浏览: 254
cartographer栅格地图保存
5星 · 资源好评率100%
(02)Cartographer源码无死角解析中提到了Cartographer的核心算法和数据结构,以及代码架构和工程实现细节。在掌握了这些内容之后,我们就可以使用Cartographer来实现SLAM(同时定位与地图构建)功能了。
(03)新数据运行与地图保存、加载地图启动仅定位,是指在使用Cartographer进行实时定位和地图构建时,如果我们获取到了新的传感器数据,就可以通过传入这些新数据来进行实时定位和地图更新。同时,当我们需要保存地图或者加载已有地图来进行定位时,Cartographer也提供了相应的API和工具。
具体来说,对于新数据的运行和实时定位,我们可以通过cartographer_ros包中的rosnode来实现。这个rosnode订阅传感器数据,然后使用Cartographer的算法和数据结构来进行实时定位和地图构建。当定位结束后,我们可以通过发布ROS消息的方式将建好的地图发送给其他ROS节点使用。
而对于地图的保存和加载,Cartographer提供了两个工具:cartographer_rosbag和cartographer_pbstream。前者可以将Cartographer处理过的数据保存成rosbag文件,以便于后续回放和分析;后者则可以将Cartographer的状态和数据保存成pbstream文件,以便于后续的加载和定位。当我们需要加载已有地图时,只需要使用cartographer_ros包中的另一个rosnode来加载pbstream文件,并订阅传感器数据即可。
需要注意的是,在地图保存和加载时,我们只能进行启动仅定位,也就是只进行实时定位和不进行地图更新。这是因为保存和加载的地图可能已经过时,而且相对于我们实时获取的传感器数据,地图的信息是静态的,无法提供新的信息。因此,Cartographer只提供了仅定位的功能。当我们需要重新建立地图时,需要重新运行实时定位的节点并进行地图更新。
阅读全文