ubuntu 16.04 x64 ROS kinetic 安裝ORB—SLAM
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這一步了!!!
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檔案