Loam ROS Ubuntu16.04使用ROSwiki的BAG的方法

国内的很多资料很不全,在这把遇到的问题记录下来以供交流和备份。

  1. 首先需要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

  2. 运行loam_SLAM package:

    roslaunch loam_velodyne loam_velodyne.launch

    打开另一个终端,运行本地的点云数据,即:

    rosbag play ~/velodyne.bag //velo只是为文件名

  3. 记录正在运行的点云数据,

    在运行上面的命令的同时,打开另一个终端,运行:

    rosbag record -o out /laserlaser_cloud_surround     #一边SLAM,一边记录运行累加完成的点云数据,生成一个.bag文件

  4. 解析生成的.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

  5. 在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就可以成功的运行了

 Loam ROS Ubuntu16.04使用ROSwiki的BAG的方法

Loam ROS Ubuntu16.04使用ROSwiki的BAG的方法