1. 程式人生 > >ubuntu 16.04 x64 ROS kinetic 安裝ORB—SLAM

ubuntu 16.04 x64 ROS kinetic 安裝ORB—SLAM

1、g2o (included)
     We use g2o to perform several optimizations. We include a modified copy of the library including only the components we need and also some changes that are listed inThirdparty/g2o/Changes.txt. In order to compile g2o you will need to have installed CHOLMOD, BLAS, LAPACK and Eigen3.

    sudo apt-get install libsuitesparse-dev
    sudo apt-get install libblas-dev
    sudo apt-get install liblapack-dev

    注意:在安裝eigen3這個庫的時候請用下面這個版本:
    https://launchpad.net/ubuntu/trusty/amd64/libeigen3-dev/3.2.0-8  
    找到libeigen3-dev_3.2.0-8_all.deb這個deb下載下來,然後在下載的目錄下:
        sudo dpkg -i libeigen3-dev_3.2.0-8_all.deb
    在編譯ORB-slam這個包的時候會報錯,這裡是第一個坑

2、確定你安裝了一下庫和依賴 (boost, eigen3, cholmod, blas, lapack).
  2.0下載ORB的包 git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM
  2.1新增系統路徑:
    cd ~
    gedit .bashrc
    在.bashrc檔案的最後一行加入:
    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/robot3/ORB_SLAM-master(2.0中你的ORB的包檔案路徑)新增完畢,關閉.bashrc

    source .bashrc

注意:如果你直接將ORB—slam這個包放到ros打工作空間下,就不用2.1這一步了!!!

  2.2 Build g2o. Go into Thirdparty/g2o/ and execute:

    cd ORB_SLAM-master/Thirdparty/g2o/
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make

   2.3 Build DBoW2. Go into Thirdparty/DBoW2/ and execute:
    cd ORB_SLAM-master/Thirdparty/DBoW2/
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make (如果未安裝OpenCV,首先編譯OpenCV)


    2.4 Build ORB_SLAM. In the ORB_SLAM root execute:
    
這裡需要開啟manifest.xml,然後註釋掉對opencv2的依賴,註釋完如下:
<package>
  <description brief="ORB_SLAM">

     ORB_SLAM

  </description>
  <author>Raul Mur-Artal</author>
  <license>GPLv3</license>
  <depend package="roscpp"/>
  <depend package="tf"/>
  <depend package="sensor_msgs"/>
  <!--depend package="OpenCV"-->
  <depend package="image_transport"/>
  <depend package="cv_bridge"/>


</package>
(這是第二個坑)

然後開啟src/ORBextractor.cc這個檔案,在開頭新增#include <opencv2/opencv.hpp>,因為我的系統找不到下面兩個opencv的標頭檔案(這是第三個坑),下面正常編譯就可以了:
                 
    cd ORB_SLAM-master/
    mkdir build
    cd build
    cmake .. -DROS_BUILD_TYPE=Release
    make

結果:
[  0%] Built target rospack_genmsg_libexe
[  0%] Built target rosbuild_precompile
Scanning dependencies of target ORB_SLAM-master
[  5%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/main.cc.o
[ 10%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Tracking.cc.o
[ 15%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/LocalMapping.cc.o
[ 21%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/LoopClosing.cc.o
[ 26%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/FramePublisher.cc.o
[ 31%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Converter.cc.o
[ 36%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/KeyFrame.cc.o
[ 42%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Optimizer.cc.o
[ 47%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/PnPsolver.cc.o
[ 52%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Frame.cc.o
[ 57%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/KeyFrameDatabase.cc.o
[ 63%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Sim3Solver.cc.o
[ 68%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Initializer.cc.o
[ 73%] Linking CXX executable ../bin/ORB_SLAM-master
[100%] Built target ORB_SLAM-master
說明OK了~~~

3.2 測試資料集準備

       上面的連結為測試資料集的下載連結,可以下下著,比較大了,會很慢。。

       下載完解壓 得到Example.bag檔案