本文將帶領讀者本身動手去寫一個RGB-D SLAM程序。html
由於我相信只有經過本身寫程序,才能真正懂得slam的原理。算法
小蘿蔔:爲何要寫一個SLAM程序,而不採用現有的代碼呢?編程
- 師兄:爲了更深的理解。ubuntu
另外一方面,本身寫程序,不表明要用C++實現矩陣的線性代數。基本的庫咱們仍是會用的。函數
咱們要用的庫:OpenCV, PCL, g2o. 工具
還等什麼?趕忙動手吧!post
1. 必備軟件的安裝: OpenCV學習
參考:www.cnblogs.com/zb-ml/p/8883055.html開發工具
2.PCL
PCL就是Point Cloud Library啦,處理點雲的必備工具。
小蘿蔔:師兄!爲何要處理點雲?
師兄:啊……忘了說了,這篇文檔是講RGB-D SLAM的呀,深度相機採出來的原本就是點雲數據啦。
小蘿蔔:這麼重要的事情爲何你不放到開頭去講啊!
師兄:我忘了……
無論如何,PCL官網(http://pointclouds.org)上已經給出了ubuntu的安裝方法。由於不少開發工具在ubuntu上裝起來最方便,也比較適合小蘿蔔這種新手,因此咱們才選用了ubuntu。
在Ubuntu 1404或更低版本,你須要經過私有源來安裝PCL庫
Step 1.
1 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl 2 sudo apt-get update 3 sudo apt-get install libpcl-all
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/home/louis/slam做爲代碼根目錄
bin 用來放編譯好的可執行二進制文件。
src 用來放源代碼。
lib 用來放編譯好的庫文件。
include 用來放頭文件。
咱們要把目錄結構告訴cmake。因此咱們在代碼根目錄下寫一個CMakeLists.txt。cmake在生成代碼時,會讀這個文件,並按照它來編譯你的代碼。剛纔咱們對opencv進行編譯時,也採用了這個步驟。好,如今在代碼根目錄下新建一個CMakeLists.txt:
touch CMakeLists.txt
寫入:
CMAKE_MINIMUM_REQUIRED( VERSION 2.8.12.2 ) #設定版本 PROJECT( slam ) #設定工程名,也就是代碼根目錄的名字 SET( CMAKE_CXX_COMPILER "g++") #設定編譯器 #設定可執行二進制文件的目錄 SET( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #設定存放編譯出來的庫文件的目錄 SET( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #而且把該目錄設爲鏈接目錄 LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib) #設定頭文件目錄 INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include) #增長子文件夾,也就是進入源代碼文件夾繼續構建 ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src)
注:二進制就是能夠直接運行的程序啦,庫文件,就是爲這些二進制提供函數。有main函數的代碼能夠編譯成二進制,其餘的則編譯成庫文件。連接時,把庫文件鏈到二進制上,就能夠運行啦。