ORB_SLAM2基礎知識
ORB_SLAM2框架簡介
- Tracking-跟蹤
- Local Mapping-地圖
- Loop Closing-迴環
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