本文参考该博主:https://blog.csdn.net/qq_36396941/article/details/83513121
本人仅将自己遇到的一些问题以及做的一些修改再做一些补充
第一:将代码中的话题改为自己的话题名称
在include,h文件中修改以下选项
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/";
第三:启动地盘和Lego_loom节点
$roslaunch xiaoyuan_robot buildmap.launch
$roslaunch lego_loam run.launch
关于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
rosbag record /laser_cloud_surround /imu_data_raw
问题是我所录的话题为自己的点云话题,而不是Legoloam的/laser_cloud_surround 这个话题,record /laser_cloud_surround 这个主题就行了,之后调用
rosrun pcl_ros bag_to_pcd corrior.bag(点云包名) /laser_cloud_surround(话题名称) pcd(将要保存的目录)