正文
前言
本篇博客主要寫了視覺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} ) #添加庫文件目錄

