ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决

一、安装Pangolin库

  1. 安装依赖

    sudo apt-get install libpython2.7-dev
    
  2. 下载 Pangolin库

    git clone https://github.com/stevenlovegrove/Pangolin.git
    
  3. 源码编译
    进入Pangolin文件夹,使用如下命令进行编译:

    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    

    执行cmake ..指令时,可能会出现提示Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE),解决办法:执行以下指令,然后重新编译。

    sudo apt-get install doxygen
    

二、安装opencv和eigen3及依赖

sudo apt-get install libqglviewer-headers libcxsparse3 libcholmod3 libopencv-dev libeigen3-dev libqt4-dev qt4-qmake libsuitesparse-dev

三、安装ORB_SLAM2

  1. 在工作空间的src文件夹下使用如下命令下载源码:

    git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
    
  2. 进入到ORB_SLAM2文件夹中,使用如下命令进行编译安装:

    mkdir build
    cd build
    cmake -DCPP11_NO_BOOST=1 ..
    make
    sudo make install
    

    编译过程中可能出现错误ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000),解决办法如下:
    在下面的每一个文件中,加上头文件语句#include,然后重新编译。
    ORB_SLAM2/src/LocalMapping.cc
    ORB_SLAM2/src/LoopClosing.cc
    ORB_SLAM2/src/System.cc
    ORB_SLAM2/src/Tracking.cc
    ORB_SLAM2/src/Viewer.cc
    ORB_SLAM2/Examples/Monocular/mono_euroc.cc
    ORB_SLAM2/Examples/Monocular/mono_kitti.cc
    ORB_SLAM2/Examples/Monocular/mono_tum.cc
    ORB_SLAM2/Examples/RGB-D/rgbd_tum.cc
    ORB_SLAM2/Examples/Stereo/stereo_euroc.cc
    ORB_SLAM2/Examples/Stereo/stereo_kitti.cc

  3. 对其中的ROS功能包进行编译
    在ORB_SLAM2目录下打开终端,设置路径,指令如下,其中ORB_SLAM_PATH是ORB_SLAM2功能包的所在路径

    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:ORB_SLAM_PATH/ORB_SLAM2/Examples/ROS
    

    我输入的指令是:

    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
    

    执行如下指令进行编译:

    chmod +x build_ros.sh
    ./build_ros.sh
    

    在编译过程中可能出现错误
    CMakeFiles/Stereo.dir/build.make:227:recipe for target '../Stereo' failed
    CMakeFiles/RGBD.dir/build.make:197: recipe for target ‘…/RGBD’ failed
    CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/RGBD.dir/all' failed,
    CMakeFiles/Makefile2:104:recipe for target 'CMakeFiles/Stereo.dir/all' failed,ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决_第1张图片
    解决办法:修改~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/文件夹下的CMakeLists.txt文件,在set(LIBS的最后加上-lboost_system,如下图所示:ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决_第2张图片
    也可能出现错误ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.cc:233:9: error: ‘usleep’ was not declared in this scope usleep(mT*1000),ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决_第3张图片解决办法:在文件ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.cc开始处加上#include,然后重新编译。ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决_第4张图片

  4. 最后设置环境变量

    source ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/devel/setup.bash
    

    到此,ORB_SLAM2就已经安装完成了

四、使用usb摄像头实现单目SLAM

ORB_SLAM2订阅的图像话题是/camera/image_raw,而usb_cam节点发布的图像话题为usb_cam/image_raw,话题名称不一致。可以修改~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/下的ros_mono.cc文件,将订阅的图像话题改为/usb_cam/image_raw,设备号改为2;也可以创建一个新的摄像头启动文件,加入了从/usb_cam/image_raw/camera/image_raw的重映射,并将设备号改为/dev/video2,如下图所示:

ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决_第5张图片
修改完话题名称后,就可以运行程序了。首先启动重映射后的usb摄像头节点,然后输入以下指令启动ORB_SLAM2建图程序:

rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml

启动成功后,效果如下:
ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决_第6张图片
也可以实现AR功能。首先启动重映射后的usb摄像头节点,然后输入以下指令启动AR功能:

rosrun ORB_SLAM2 MonoAR Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml

启动成功后,效果如下:

文章不妥之处还望指正

你可能感兴趣的:(ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决)