本文參考該博主:https://blog.csdn.net/qq_36396941/article/details/83513121
本人僅將自己遇到的一些問題以及做的一些修改再做一些補充
第一:將代碼中的話題改爲自己的話題名稱
typedef pcl::PointXYZI PointType;
extern const string pointCloudTopic = "/lslidar_point_cloud";
extern const string imuTopic = "/imu_data_raw";
第二,生成pcd文件並設置保存的位置
// Save pcd
extern const string fileDirectory = "/home/utryjc/date/";
第三:關於run.launch中的話題/camera和/camera_init的理解,以及將生成的點雲稀疏或者稠密化
https://blog.csdn.net/weixin_42048023/article/details/87736777
mapOptimization中下面這兩行代碼,將地圖點雲稀疏化或者稠密化的作用
downSizeFilterHistoryKeyFrames.setLeafSize(0.4, 0.4, 0.4); // for histor key frames of loop closure
downSizeFilterSurroundingKeyPoses.setLeafSize(1.0, 1.0, 1.0); // for surrounding key poses of scan-to-map optimization
第四:用ROS方法記錄點雲數據生成pcd文件
生成了很多個pcd文件,但每一個都不是整張地圖,解決辦法參考下面的連接:
https://blog.csdn.net/littlethunder/article/details/51955849
問題是我所錄的話題爲自己的點雲話題,而不是Legoloam的/laser_cloud_surround 這個話題,record /laser_cloud_surround 這個主題就行了,之後調用rosrun pcl_ros bag_to_pcd corrior.bag(點雲包名) /laser_cloud_surround(話題名稱) pcd(將要保存的目錄)