ORB-SLAM的GitHub主頁:https://github.com/raulmur/ORB_SLAM
雖然整體上已經說得很清楚了,但是有些細節不夠詳細,運行的時候不注意很容易出錯,因此對整個編譯與運行過程進行詳細的介紹:
一、安裝環境:Ubuntu14.04+ROS indigo
二、准備工作:
1.源代碼下載:
可以在GitHub主頁下載到本地;或者執行命令:git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM
2.測試數據集下載並解壓:
http://webdiis.unizar.es/~raulmur/orbslam/downloads/Example.bag.tar.gz
三、依賴庫安裝:
1.Boost
使用Boost庫來管理多線程,執行命令:
sudo apt-get install libboost-all-dev
2.ROS
使用ROS主要來獲取輸入圖像序列(來自相機或數據集rosbag)以及可視化(rviz,image_view),ROS的安裝與配置詳見 http://wiki.ros.org/
3.OpenCV
使用OpenCV來處理圖像和特征,需要注意的是這里需要使用OpenCV2.4版本(OpenCV3.0以上版本差別較大,編譯無法成功)。具體編譯與安裝過程見下面的多版本OpenCV管理。
編譯之前需要安裝依賴項:
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
4.g2o
~/ORB-SLAM/Thirdparty里自帶g2o庫,用來進行優化操作,需要安裝以下依賴項:
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libeigen3-dev
再進行編譯,進入~/ORB-SLAM/Thirdparty/g2o目錄下,執行命令:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
5.DBoW2
~/ORB-SLAM/Thirdparty里自帶DBoW2庫,用來進行位置識別和特征匹配,無需安裝其他依賴項,直接編譯即可:
進入~/ORB-SLAM/Thirdparty/DBoW2目錄下,執行命令:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
四、ORB-SLAM編譯:
1.將ORB-SLAM的絕對路徑添加到ROS的工作空間中,執行以下命令: export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH_TO_PARENT_OF_ORB_SLAM
將PATH_TO_PARENT_OF_ORB_SLAM替換成ORB-SLAM所在的絕對路徑。
注意:若ORB-SLAM直接放在ROS工作空間的路徑下,則無需上述步驟。查看當前ROS的工作空間的路徑命令為:echo $ROS_PACKAGE_PATH
2.進入ORB_SLAM當前目錄,執行命令:
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make
注意:如果使用的是ROS indigo版本,則需要將ORB_SLAM文件夾的manifest.xml文件中的opencv2依賴一行命令刪除。
五、ORB-SLAM運行:
1.打開終端,執行啟動ROS服務:roscore
2.打開終端,運行ORB_SLAM:rosrun ORB_SLAM ORB_SLAM Data/ORBvoc.txt Data/Settings.yaml (運行前先將~/ORB_SLAM/Data目錄下的ORBvoc.txt.tar.gz文件解壓)
3.打開終端,執行一些可視化命令:
rosrun image_view image_view image:=/ORB_SLAM/Frame _autosize:=true(啟動圖片查看程序,到時可以看到特征點跟蹤情況)
rosrun rviz rviz -d Data/rviz.rviz(啟動地圖視圖窗口,顯示軌跡及特征點地圖)
或者直接在ORB_SLAM目錄下執行(等價於上述兩命令):roslaunch ExampleGroovyOrNewer.launch
或者直接執行(等價於上述兩命令且對目錄無要求):roslaunch ORB_SLAM ExampleGroovyOrNewer.launch
4.打開終端,進入Example.bag(測試數據集rosbag)的父目錄,執行命令:rosbag play --pause Example.bag(執行圖片發布程序,執行后,按s單步運行,按space停止)
六、補充說明:
1.多版本OpenCV管理:OpenCV2.4.9+OpenCV3.1.0
查看當前工作環境的OpenCV版本:pkg-config --modversion opencv
下面介紹默認安裝了OpenCV3.1.0的情況下,再去安裝OpenCV2.4.9
默認安裝的OpenCV位置在 /usr/local/include 目錄下,再安裝OpenCV2.4.9時自定義安裝在 /usr/local/open2.4.9 目錄下。
1.官網下載並解壓OpenCV2.4.9 http://opencv.org/
2.進入OpenCV目錄(屬於CMake工程),執行以下命令編譯與安裝:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D WITH_V4L=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.9 ..
make
sudo make install
3.修改配置文件,使系統默認OpenCV版本從3.1.0切換至2.4.9(修改.bashrc文件來設置PKG_ CONFIG_PATH與LD_LIBRARY_PATH)
sudo gedit ~/.bashrc
export PKG_CONFIG_PATH=/usr/local/opencv2.4.9/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv2.4.9/lib
source ~/.bashrc (或者直接使用gedit的保存)
4.最后在工程中用的OpenCV2.4.9時,需要在CMakeList.txt文件指定opencv的目錄,執行命令:
set (OpenCV_DIR /usr/local/opencv2.4.9/share/OpenCV)
注意:該命令的位置需要在project(name)之前。
5.若想切換回OpenCV3.1.0,則需要把第3步中的配置命令換成相應的OpenCV目錄:
sudo gedit ~/.bashrc
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib
source ~/.bashrc (或者直接使用gedit的保存)
2.關於ROS的一些便捷操作:
在每次打開終端時都需要先運行這條命令后才能運行ROS相關的命令:source /opt/ros/indigo/setup.bash
在每次打開終端時都需要添加工作空間到ROS路徑:source ~/indigo_workspace/setup.bash (indigo_workspace為自己創建的ROS工作空間)
或者為了方便,可在.bashrc文件最后添加上述兩條命令。
(.bashrc是主文件夾下的隱藏文件,打開命令:sudo gedit ~/.bashrc)