視覺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})         #添加頭文件目錄

add_executable( imageBasics imageBasics.cpp)          #添加可執行文件
target_link_libraries( imageBasics ${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})         #添加頭文件目錄

add_executable( joinMap joinMap.cpp)          #添加可執行文件
target_link_libraries( joinMap ${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 )
find_package( Ceres REQUIRED )
include_directories( ${CERES_INCLUDE_DIRS})         #添加頭文件目錄

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM