小白教程之開始學習ORB_SLAM2之前的準備工作

ORB_SLAM2基礎知識

視覺SLAM十四講從理論到實踐

ORB_SLAM2框架簡介

  1. Tracking-跟蹤
  2. Local Mapping-地圖
  3. Loop Closing-迴環
    在這裏插入圖片描述

ORB_SLAM2與傳感器之間是相互獨立,提取特徵之後,圖像不需要被保存而是直接丟棄。

在這裏插入圖片描述

ORB_SLAM2源碼介紹

ORB_SLAM2 官方源碼

ORB_SLAM2將編譯出libORB_SLAM2.so安裝在lib目錄中
並且生成可執行的數據集測試樣例
mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc,stereo_euroc
有19個庫文件、6個可執行文件:
分別是 rgbd_tum, stereo_kitti, stereo_euroc, mono_tum,mono_kitti,mono_euroc
/src 中包含的是ORB_SLAM2的SLAM定位建圖子程序函數源庫文件
/include 中包含的是ORB_SLAM2的SLAM定位建圖子程序函數源庫文件對應的頭文件
/Examples 中的是各個數據集的測試調用程序以及相機標定文件

鏈接到的內部庫

src/System.cc
src/LoopClosing.cc
src/FrameDrawer.cc
src/KeyFrame.cc
src/Optimizer.cc
src/KeyFrameDatabase.cc
src/Viewer.cc

鏈接到的外部庫

${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so

ORB_SLAM2源碼編譯

首先更改 camke 編譯文件 CMakeLists.txt

git clone https://github.com/raulmur/ORB_SLAM2
cd /ORB_SLAM2
gedit CMakeLists.txt   
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3 -march=native")
刪除 -march=native 編譯環境的優化選項
  
cd /ORB_SLAM2
gedit /Thirdparty/g2o/CMakeLists.txt  
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native") 
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -march=native")                    
刪除“-march=native”  編譯環境的優化選項

cd /ORB_SLAM2
gedit /Thirdparty/DBoW2/CMakeLists.txt   
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall  -O3 -march=native")            
刪除“-march=native” 編譯環境的優化選項

編譯過程中可能報錯

'_ZN5boost6system15system_categoryEv'

解決辦法,找到下面共享庫的目錄

locate  boost_system

/usr/lib/x86_64-linux-gnu/libboost_system.a
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0

locate boost_filesystem
/usr/lib/x86_64-linux-gnu/libboost_filesystem.a
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0

更改 camke 編譯文件 CMakeLists.txt

cd /ORB_SLAM2
gedit CMakeLists.txt   

set(LIBS 
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/lib/x86_64-linux-gnu/libboost_system.so)

set(LIBS 
${OpenCV_LIBS} 
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/lib/x86_64-linux-gnu/libboost_system.so)

刪除下面路徑下的 build 目錄

Thirdparty/DBoW2/build
Thirdparty/g2o/build
ORB_SLAM2/build
Examples/ROS/ORB_SLAM2/build

添加環境變量

gedit ~/.bashrc
export ORB_SLAM2_ROOT_DIR=/home/q/projects/ORB_SLAM2
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/q/projects/ORB_SLAM2/Examples/ROS/ORB_SLAM2
source ~/.bashrc
sudo updatedb

開始編譯

chmod 777 ./build.sh
將 make -j 改成 make -j4 否則編譯過程中有可能死機
編譯非ROS版本
./build.sh
編譯ROS版本
./build_ros.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章