第1講 前沿

  本文將帶領讀者本身動手去寫一個RGB-D SLAM程序。html

  由於我相信只有經過本身寫程序,才能真正懂得slam的原理。算法

  小蘿蔔:爲何要寫一個SLAM程序,而不採用現有的代碼呢?編程

  - 師兄:爲了更深的理解。ubuntu

  1. 一個完整的程序含有大量的算法與GUI的代碼,你讀一遍須要多久?弄清楚原理要多久?
  2. 別人工具都作好了,代碼都寫完了,參數也調好了,你拿過來運行。那頂多給別人作一下評測。
  3. 你早晚要本身寫代碼。

  另外一方面,本身寫程序,不表明要用C++實現矩陣的線性代數。基本的庫咱們仍是會用的。函數

  咱們要用的庫:OpenCV, PCL, g2o. 工具

  還等什麼?趕忙動手吧!post

預備知識與編程環境

1. 必備軟件的安裝: OpenCV學習

    參考:www.cnblogs.com/zb-ml/p/8883055.html開發工具

    OpenCV學習筆記:Mat類詳解(二)ui

    OpenCV學習筆記:Mat類詳解(一)

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

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

HELLO SLAM!

  /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函數的代碼能夠編譯成二進制其餘的則編譯成庫文件連接時,把庫文件鏈到二進制上,就能夠運行啦。

相關文章
相關標籤/搜索