Loam ROS Ubuntu16.04使用ROSwiki的BAG的方法
国内的很多资料很不全,在这把遇到的问题记录下来以供交流和备份。
-
首先需要git Loam并编译安装,如果之前用apt-get安装过pcl会造成后期运行时multiScanRegistration报错,方法见后,catkin_make时可能会出现error: ‘downSizeFilterMap’ was not declared in this scope错误,这时候进入src/lib/LaserMapping.cpp 把142 - 154注释掉,参考https://github.com/laboshinl/loam_velodyne/pull/84/files
cd ~/ROS_WORKSPACE/src # ROS_WORKSPACE自己的ROS工作空间。
git clone https://github.com/laboshinl/loam_velodyne.git
cd ~/ ROS_WORKSPACE
catkin_make -DCMAKE_BUILD_TYPE=Release
source ~/ROS_WORKSPAC/devel/setup.bas
-
运行loam_SLAM package:
roslaunch loam_velodyne loam_velodyne.launch
打开另一个终端,运行本地的点云数据,即:
rosbag play ~/velodyne.bag //velo只是为文件名
-
记录正在运行的点云数据,
在运行上面的命令的同时,打开另一个终端,运行:
rosbag record -o out /laserlaser_cloud_surround #一边SLAM,一边记录运行累加完成的点云数据,生成一个.bag文件
-
解析生成的.bag文件,变成.pcd文件
rosrun pcl_ros bag_to_pcd input.bag /laser_cloud_surround pcd #将上一步生成的.bag文件转换成逐帧的.pcd文件,最后一帧就是我们要的.pcd文件。 input.bag的格式类似out_2018-10-08-20-53-40.bag
-
在Ubuntu 下用pcl_viewer查看
pcl_viewer pcd/XXXXXX.pcd #显示最后一帧.pcd文件
如果之前使用apt-get安装过pcl 1.7,会造成在播放bag后multiScanRegistration出错无法进行。这是因为apt安装的pcl问题,需要卸载旧的pcl再编译安装。卸载使用 sudo apt-get remove libpcl1.7 sudo apt-get remove libpcl-* zsh最后一个无法运行,可以使用/bin/bash切换到bash运行,因为zsh不支持通配符。
卸载之后https://blog.****.net/dantengc/article/details/78446600 按照这个的方法下载源码进行编译,在安装依赖时遇见vtk5的那个输入后会提示卸载一堆东西,这行可以直接跳过。
再安装 sudo apt-get install ros-kinetic-pcl-conversions ros-kinect-pcl-ros,在重复第一步的catkin_make就可以成功的运行了