個人能力有限,若有錯誤請批評指正!
轉載請標明出處:http://www.cnblogs.com/wenhust/
一、目的
Cartographer是google的開源2D Laser-based SLAM方案,可以直接在ROS上運行並建圖(可參考之前的文章)。不過到目前為止,還沒有提供可以直接保存導出已完成的地圖文件的功能,但一些如路徑規划等后續工作有賴於地圖文件得以進行,因此在這里提供一個簡便方法可以將cartographer的地圖文件保存出來。
二、方法
在cartographer_ros的源碼中已經存在map_writer.h、map_writer.cc的文件,我的方法是直接在occupancy_grid.cc中,增加對map_writer的使用,使其直接將occupancy_grid作為地圖文件保存出來,其具體增加代碼如下:
- 增加頭文件包含
#include "cartographer_ros/map_writer.h"
- 將occupancy_grid作為地圖文件保存
在occupancy_grid數據完成后,即occupancy_grid.cc的最后for循環之后增加cartographer_ros::WriteOccupancyGridToPgmAndYaml(*occupancy_grid,"/tmp/test");
重新編譯文件成功后,運行程序,便可以在tmp目錄下看到test.pgm和test.yaml文件了,其中test.pgm是地圖文件、test.yaml是地圖信息文件。