1. 程式人生 > >視覺SLAM實踐(1)——環境搭建

視覺SLAM實踐(1)——環境搭建

為準備IMAV Indoor賽任務,近日決定開始學習視覺slam,為飛機提供室內定位資訊。

本文為高翔新書《視覺SLAM十四講》讀書筆記,用作梳理思路。

(1)終端環境下建立庫,並使用庫函式

目錄:slam/test/helloSLAM.cpp
     slam/test/libHelloSLAM.cpp
     slam/test/CMakeLists.txt
其中,libHelloSLAM為庫,helloSLAM為使用庫函式的原始碼

//slam/test/helloSLAM.cpp
#include <iostream>
#include "libHelloSLAM.h" 
using namespace std; 
int main( int argc, char** argv )
{
    printHello();
    return 0;
}
//libHelloSLAM.c
#include <iostream>
using namespace std;

void printHello()
{
    cout<<"Hello SLAM"<<endl;
}

//libHelloSLAM.h
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
void printHello();
#endif

最重要的就是使用cmake來製作工程,將庫與呼叫庫函式的原始碼建立連線。在cmake中的註釋不是//,而是#

當僅有幾個原始檔需要編譯時,用g++就很方便。但一般的工程專案中,有大量檔案需要編譯,且其中的依賴關係較為複雜,用cmake來管理更為高效。

#slam/test/helloSLAM.cpp
# 宣告要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )
# 宣告一個 cmake 工程
project( HelloSLAM )
# 設定編譯模式
set( CMAKE_BUILD_TYPE "Debug" )
# 新增一個可執行程式
# 語法:add_executable( 程式名 原始碼檔案 )
add_executable( helloSLAM helloSLAM.cpp )
# 新增一個庫
add_library( hello libHelloSLAM.cpp )
# 共享庫
add_library( hello_shared SHARED libHelloSLAM.cpp )
# 將庫檔案連結到可執行程式上
target_link_libraries( helloSLAM hello_shared )

在編譯後cmake會生成不少中間檔案,所以我們在編譯前統一建立一個資料夾,在該資料夾中進行編譯,將中間檔案和原始碼分開。

mkdir build
cd build
cmake..
make

(2)IDE環境下建立庫,並使用庫函式

高翔書中使用的是Kdevelop,這個軟體比較蛋疼的是使用Eigen庫時不提時成員運算,還各種顯示錯誤。。。

好處就是可以debug

如果需要debug,需要先在cmake檔案中加入

set( CMAKE_BUILD_TYPE "Debug" )

1.載入工程:Project->Open/Import Project...

選擇寫好的CMakeLists檔案即可。

2.如果不需要debug,之間build就行

 需要debug的話,要先配置一下執行:Run->Configure Launches...

進入Launch Configurations介面後,點選add New->Compiled Binary(二進位制檔案)

設定好後,新增斷點,debug即可,F10單步執行,F11單步跟進,F12單步跳出

OpenCV安裝

https://opencv.org/releases.html

由於OpenCV最新的版本3.4.1還沒有編譯好的庫檔案,所以要從上面網站中下原始碼進行安裝

首先安裝OpenCV依賴項

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

然後進入OpenCV原始檔中的build資料夾,像普通Cmake工程檔案一樣編譯

cd build
cmake ..
make//編譯
sudo make install//安裝OpenCV

編譯時間大概十多分鐘,預設儲存目錄在/usr/local/lib下