經過無數折磨,終于把ORB-SLAM3配置好了,
先說一下遇到的錯誤
第一次
在虛擬機里裝的ubuntu16.04里編譯遇到的錯誤
./Examples/Monocular/mono_euroc: symbol lookup error: /home/jhw/ORB_SLAM3/lib/libORB_SLAM3.so: undefined symbol: _ZN5DBoW24FORB1LE,
鏈接錯誤是非常少見的,而且在ORB-SLAM3里邊也有人遇到這個錯誤,但是沒有方法解決,報的是DBoW的錯誤,我也嘗試了很久,最終也沒有解決,建議遇到這個錯誤直接重裝系統,本人比較幸運,遇到這個錯誤的第三天實驗室的師兄給我了一臺臺式機主機,感謝師兄,
第二次錯誤
在臺式機的雙系統里邊遇到的
ORB_SLAM3/src/System.cc:315:20: error: ‘usleep’ was not declared in this scope
usleep(5000);
找到對應的System.cc加入 #include<unistd.h>
在source檔案的開頭增加include
#include <unistd.h>
需要增加unistd.h的檔案有:
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc
第三次
在臺式機的雙系統里邊遇到的,錯誤不大,是漏裝了一個庫,但是由于eigen報warning(定義的變數未使用)太多,導致看不到真正的錯誤位置
CMakeFiles/Makefile2:289: recipe for target ‘CMakeFiles/ORB_SLAM3.dir/all’ failed
make[1]: *** [CMakeFiles/ORB_SLAM3.dir/all] Error 2
Makefile:83: recipe for target ‘all’ failed
make: *** [all] Error 2
這里建議編譯的時候在ORB-SLAM3的cmakelist加上-Wall或者-w屏蔽編譯的warning便于發現錯誤的真正位置
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=native")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native")
接下來就開始正文
安裝ORB-SLAM3
1. C++11 or C++0x Compiler
需要安裝支持C++11特性的編譯器
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install build-essential
sudo apt-get install cmake
2.Pangolin
安裝依賴
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
udo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
編譯
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
sudo make install(這個也是需要的,網上很多教程沒有這個命令)
3.opencv
ubuntu下的opencv安裝是一件十分復雜的事情,我參照以下教程安裝成功的,
參照以下教程安裝
https://www.jianshu.com/p/f646448da265
4.eigen
兩種方式安裝eigen
直接上個超鏈接,兩種方式安裝eigen3,網上很多博客說建議原始碼安裝,這樣安裝到的是/usr/local/include/eigen3/目錄下,但是我直接使用命令安裝最后也編譯成功了ORB-SLAM3,安裝在了/usr/include,可以先命令安裝,編譯的時候檢測不到再回頭來原始碼安裝,
5.boost安裝
網上的教程并沒有說boost安裝的事情,但是編譯的時候會遇到這個錯誤,我們可以直接提前安裝好
https://www.jianshu.com/p/4c621a34ba69
6.DBoW2 and g2o
這兩個庫ORB-SLAM3的作者在他的檔案夾里做了修改,不需要我們單獨下載,直接去第六步即可,在ORB-SLAM3的Thirdparty檔案夾下,編譯ORB-SLAM3的時候會自動編譯,
7.下載編譯ORB-SLAM3
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
cd ORB_SLAM3
chmod +x build.sh
./build.sh
這里編譯的時候可以vim build.sh檔案,修改一下make -j8,8是cpu核數,這樣編譯的更快,同時修改CMakelist檔案把warning去掉,因為有eigen庫,定義的變數未使用也會報錯,很煩,修改CMakelist和build.sh都是可選的,不想修改就可以直接./build.sh編譯就完成了,
8.運行ORB-SLAM3的測驗資料集
資料集鏈接
點進鏈接下載ASL格式的Machine Hall 01,然后解壓后修改名稱為MH01,放在需要放的位置,然后把MH01所在的檔案夾的路徑拷貝到euroc_examples.sh的第二行的引號內
pathDatasetEuroc=‘這里放路徑’
然后進入ORB-SLAM3運行./euroc_examples.sh就大功告成了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225933.html
標籤:其他
上一篇:外連Kali實作圖形界面
