《視覺SLAM十四講》之開源庫的安裝

筆記:《視覺SLAM十四講》之開源庫的安裝

 

正文

前言

  本篇博客主要寫了視覺SLAM常用庫的安裝方法,主要包括Eigen線性代數庫、Sophus李代數庫、OpenCV計算機視覺庫、PCL點雲庫、Ceres非線性優化庫和G2O圖優化庫等。安裝步驟是直接從高翔大牛書上搬抄過來了的,目的是爲了大家學習SLAM時能夠順利安裝好這些開源庫。Ubuntu系統爲14.04版本,親測安裝有效,童叟無欺!初步先寫這些庫的安裝過程,可能後面會寫學習庫的筆記等。工欲善其事,必先利其器,大家一起快樂的學習視覺SLAM吧,加油!初稿完成於2017年7月23日上午晴

1、Eigen線性代數庫的安裝

  Eigen庫是一個C++線性代數開源庫[1],它提供了有關線性代數、矩陣和矢量運算、數值分析及相關的算法。許多上層的軟件庫也使用Eigen進行矩陣運算,包括g2o、Sophus等。Eigen庫由Ubuntu軟件源中提供,通過apt命令可以很方便的安裝Eigen。

sudo apt-get install libeigen3-dev

  Eigen與其他庫不同,它是一個由頭文件搭建起來的庫,Eigen頭文件的默認安裝位置在“/usr/include/eigen3/”中。我們在使用時,只需引入Eigen頭文件,不需要鏈接它的庫文件,在CMakeLists.txt裏添加Eigen頭文件的目錄。

#添加頭文件
include_directories("/usr/include/eigen3")

  學習更多Eigen知識,請參考:http://eigen.tuxfamily.org/dox-devel/modules.html

 

2、Sophus李代數庫的安裝

 

   Eigen庫提供了幾何模塊,但是沒有提供李代數的支持。一個較好的李代數庫是由Strasdat維護的Sophus庫。Sophus庫支持三維運動的SO(3)SE(3),此外還支持二維運動的SO(2)SE(2)和相似變換Sim(3)等內容。它是直接在Eigen庫基礎上開發的,因此我們不需要安裝額外的依賴庫。讀者可以直接從github上獲取Sophus庫[2],Sophus庫有模板類庫和非模板類庫兩個版本,本書選擇的是非模板類庫。可以通過輸入以下命令獲得非模板類的Sophus庫:

git clone http://github.com/strasdat/Sophus.git

  Sophus庫本身是一個cmake工程,使用以下命令對它進行編譯(Sophus庫只需編譯,無需安裝)。

cd XXXX                 #進入Sophus庫文件目錄下
mkdir build             #新建build文件夾
cd build                #進入build文件夾
cmake ..                #build上一層目錄下執行CMake命令
make                    #編譯

  在CMakeLists.txt中添加Sophus庫的頭文件和庫文件,如下所示。find_package命令是cmake提供的尋找某個庫的頭文件和庫文件的命令。如果cmake能找到它,就會提供頭文件和庫文件所在目錄的變量。

複製代碼
#爲了使用Sophus,需要使用find_package命令
find_package( Sophus REQUIRED )
include_directories( ${Sophus_INCLUDE_DIRS})        #添加頭文件目錄

add_executable( useSophus useSophus.cpp)          #添加可執行文件
target_link_libraries( useSophus ${Sophus_LIBRARIES} )  #添加庫文件目錄
複製代碼

 

 

3、OpenCV計算機視覺庫的安裝

 

  OpenCV[3]提供了大量的開源視覺算法庫,是計算機視覺中使用極其廣泛的圖像處理算法庫。在Ubuntu下,可以選擇從源代碼安裝和只安裝庫文件兩種方式。從源代碼安裝是指從OpenCV官網中下載相應版本的OpenCV源碼,然後使用cmake命令中編譯安裝,好處是可以選擇的版本比較豐富,而且可以看到源代碼;只安裝庫文件,是指安裝由Ubuntu社區人員編譯好的庫文件,這樣就無需重新編譯一遍。本書使用的是OpenCV3系列,由OpenCV官網下載安裝包編譯安裝。

  在編譯之前,需要先安裝OpenCV庫的依賴項:

sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev 
libopenexr-dev libtbb-dev

  在configure中選擇默認設置即可,opencv3要下載一個ippicv的第三方包(ippicv_linux_20151201.tgz),直接下比較慢,可以自己下後,放到 3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e裏即可。 然後對Opencv安裝包編譯安裝,OpenCV庫和普通的cmake工程一樣,編譯安裝如下:

......
make            #編譯
sudo make install    #安裝

  OpenCV庫的頭文件和庫文件默認安裝在”/usr/local”目錄下,在CMakeLists.txt中添加OpenCV庫的頭文件和庫問價如下所示:

find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS})         #添加頭文件目錄 <br><br>add_executable( imageBasics <span style="color: #800080;"><span style="color: #000000;">imageBasics</span></span>.cpp)          #添加可執行文件<br>target_link_libraries( <span style="color: #800080;"><span style="color: #000000;">imageBasics</span></span> ${OpenCV_LIBS} )   #添加庫文件目錄

 注:在安裝opencv 3.2時,由於ROS系統自帶opencv2,因此需要修改安裝目錄,參考博客:ubuntu下opencv3.2.0和opencv2.4.8共存\

4、PCL點雲庫的安裝

  PCL庫是點雲庫(Point Cloud Library)[4]。PCL庫的安裝比較容易,輸入以下命令即可(也可以使用源代碼安裝):

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all

  安裝完成後,PCL庫的頭文件將安裝在”/usr/include/pcl-1.7/”中。庫文件位於”/usr/lib/”中。在CMakeLists中添加頭文件和庫文件如下:

find_package( PCL REQUIRED COMPOMENT common io )
include_directories( ${PCL_INCLUDE_DIRS})         #添加頭文件目錄 <br><br>add_executable( joinMap <span style="color: #800080;"><span style="color: #000000;"><span style="color: #800080;"><span style="color: #000000;">joinMap</span></span>.cpp)          #添加可執行文件<br>target_link_libraries( <span style="color: #800080;"><span style="color: #000000;"><span style="color: #800080;"><span style="color: #000000;">joinMap</span></span> ${PCL_LIBRARIES} )   #添加庫文件目錄

  生成的點雲文件以pcd的格式存儲,用PCL提供的可視化程序打開這個文件:

pcl_viewer map.pcd

 5、Ceres非線性優化庫的安裝

  Ceres庫是來自谷歌的非線性優化庫[5],Ceres庫面向通用的最小二乘問題的求解,作爲用戶,我們需要做的就是定義優化問題,然後設置一些選項,輸入Ceres求解即可。Ceres庫建議去github上下載[6],Ceres庫是一個cmake工程,安裝前需要安裝它的依賴項,主要是谷歌的一些日誌和測試工具。

sudo apt-get install liblpack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev 
libgoogle-glog-dev libgtest-dev

  安裝好依賴項之後,使用cmake編譯並安裝Ceres庫。Ceres庫的頭文件安裝在”/usr/local/include/ceres/”目錄下,庫文件安裝在”/usr/local/lib/”目錄下。在CMakeList.txt中添加頭文件和庫文件路徑的命令,如下。

複製代碼
# 添加cmake模塊以使用ceres庫
list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )<br></span><span style="color: #800080;"><span style="color: #000000;">find_package( Ceres REQUIRED )</span><br><span style="color: #000000;">include_directories( ${CERES_INCLUDE_DIRS})         #添加頭文件目錄

add_executable( curve_fitting main.cpp )          #添加可執行文件
target_link_libraries( curve_fitting ${CERES_LIBRARIES} )   #添加庫文件目錄
複製代碼

 

6、G2O圖優化庫的安裝

 

  g2o是一個基於圖優化的庫,圖優化是一種將非線性理論與圖論結合起來的理論,在圖優化中將頂點表示優化變量,邊表示誤差項,從而將非線性最小二乘問題轉化成構建一直對應的一個圖。g2o庫的安裝包可以從github上下載[7], 它也是一個CMake工程。安裝g2o前需要安裝它的依賴庫(部分與Ceres由重合):

sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.2 
libcholmod-dev
(注:最後一個依賴項需要table鍵來填充名稱)

  安裝完依賴項之後,按照CMake的方式對g2o進行編譯安裝。安裝完成後,g2o庫的頭文件將在”/usr/local/g2o/”目錄下,庫文件在”/usr/local/lib/”目錄下。在CMakeList.txt中添加頭文件和庫文件路徑的命令,如下。

複製代碼
# 添加g2o的依賴 
# 因爲g2o不是常用庫,要添加它的findg2o.cmake文件
LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules ) <br>SET( G2O_ROOT /usr/local/include/g2o ) <br>FIND_PACKAGE( G2O )<br><span style="color: #000000;"><br>include_directories( ${G2O_INCLUDE_DIRS} )         #添加頭文件目錄
add_executable( curve_fitting main.cpp )          #添加可執行文件
target_link_libraries( curve_fitting g2o_core g2o_stuff )   #添加庫文件目錄

複製代碼

 

7、Octomap八叉樹地圖庫的安裝

 

  octomap的網頁見:https://octomap.github.io

  它的github源碼在:https://github.com/OctoMap/octomap

  它還有ROS下的安裝方式:http://wiki.ros.org/octomap

複製代碼
Ubuntu Prerequisites

You can either install libQGLViewer as a system-wide package (libqglviewer-qt4-dev in Ubuntu), or use the version we provide in the "external" directory. If the CMake compilation can't find an installed qglviewer, it will automatically compile our supplied version and link against it. For building the GUI, you need to make sure that qmake for Qt4 is used (qmake -v). If yours is set to Qt3 in Ubuntu, you can change it to qmake-qt4 by running sudo update-alternatives --config qmake after installing the dependencies below.

All dependencies for the library and viewer on Ubuntu 12.04 can be met by running:

sudo apt-get install build-essential cmake doxygen libqt4-dev \
    libqt4-opengl-dev libqglviewer-dev-qt4

Note: For older version of Ubuntu, the last package name is libqglviewer-dev or libqglviewer-qt4-dev instead.
複製代碼

 注意:安裝ROS版本的octomap後再編譯無ROS版本的ocotomap會出錯,需要卸載ROS。

8、DBoW3詞袋模型庫

  直接編譯安裝

參考文獻

[1] Eigen官方主頁:http://eigen.tuxfamily.org/index.php?title=Main_Page

[2] Sophus in github:http://github.com/strasdat/Sophus

[3] OpenCV官網:http://opencv.org

[4] PCL官網:http://pointclouds.org

[5] Ceres官網:http://ceres-solver.org

[6] Ceres in github:https://github.com/ceres-solver/ceres-solver

[7] G2O in github:https://github.com/RainerKuemmerle/g2o

(轉載請註明作者和出處:http://www.cnblogs.com/ChrisCoder/未經允許請勿用於商業用途)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章