1 ORB-SLAM3算法環(huán)境搭建
1.1??C++11 or C++0x Compiler?安裝
新建一個(gè)終端(新建終端的快捷鍵是Ctrl+Alt+T)
輸入以下代碼
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install build-essential
sudo apt-get install cmake
1.2??Pangolin?安裝
Pangolin的官方教程地址:https://github.com/stevenlovegrove/Pangolin
安裝Pangolin
1.2.1下載Pangolin,推薦安裝tag v0.6版本
# Clone Pangolin along with it's submodules
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
1.2.2安裝依賴(lài)
./scripts/install_prerequisites.sh --dry-run recommended
1.2.3編譯
./scripts/install_prerequisites.sh -m brew all
可能出現(xiàn)的問(wèn)題
如果安裝Pangolin沒(méi)有提示cmake版本不足,則無(wú)需此步驟
cmake一般都是直接安裝的,如sudo apt-get install cmake,所以這里我們需要自己下載新版的cmake并覆蓋安裝。
進(jìn)入Cmake官網(wǎng):Cmake官網(wǎng)下載地址
選擇合適的版本,比如本人選擇的是cmake-3.20.6.tar.gz

(1)先把舊版cmake卸載
sudo apt-get autoremove cmake
(2)下載之后進(jìn)行解壓,編譯(這里提示缺少openssl庫(kù),先進(jìn)行安裝)。
新建一個(gè)終端,輸入如下:
sudo apt-get install openssl
tar zxvf cmake-3.20.6.tar.gz
cd cmake-3.20.6
./bootstrap
make -j4
sudo make install
(3)再編譯安裝Pangolin則可以通過(guò)。

1.3??OpenCV3.4.3安裝
去官網(wǎng)下載opencv,版本選擇opencv3.4.3,其他版本同理。
1.3.1官網(wǎng)地址:鏈接: opencv官網(wǎng).
下載選擇Source就可以,沒(méi)有必要選github下載,太慢了。
1.3.2解壓zip包
unzip opencv-3.4.3.zip
cd opencv-3.4.3
(1) .3.3安裝opencv依賴(lài)項(xiàng)
這一步真的會(huì)缺少非常多庫(kù),最好都提前安裝好
sudo apt-get install cmake
sudo apt-get install build-essential
sudo apt-get install 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
(2) Cmake
mkdir build
cd build
cmake ..
cmake 過(guò)程會(huì)出現(xiàn)非常多的錯(cuò)誤
問(wèn)題1:
Unable to locate package libjasper-dev
解決方法:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
成功的解決了問(wèn)題,其中l(wèi)ibjasper1是libjasper-dev的依賴(lài)包
問(wèn)題2:
No package ‘libavresample’ found
解決方法:
sudo apt-get install libavresample-dev
問(wèn)題3:
IPPICV: Download failed: “Couldn’t connect to server”
即ippicv的 ippicv_2017u3_lnx_intel64_general_20180518.tgz 下載不下來(lái)
原因:由于有qiang,無(wú)法進(jìn)入外網(wǎng)下載
解決方法:
打開(kāi)opencv 3.4.3/build/CMakeDownloadLog.txt
找到ippicv_2017u3_lnx_intel64_general_20180518.tgz 所對(duì)應(yīng)的下載鏈接,將這個(gè)鏈接保存下來(lái)。
選擇一種你們懂得的方式,將這個(gè)文件下載下來(lái)。(沒(méi)有這種方式的話,只能找別人的百度云了)
接著打開(kāi) /opencv-3.4.3/3rdparty/ippicv/ippicv.cmake 這個(gè)文件,將47行的
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
改為
"file:home/xxx/xxx/"
這里的地址為下載下來(lái)的ippicv_2017u3_lnx_intel64_general_20180518.tgz的文件夾地址
特別需要注意的是file: 后面不要加/
特別需要注意的是file: 后面不要加/
特別需要注意的是file: 后面不要加/
問(wèn)題4:
Could not find OpenBLAS include. Turning OpenBLAS_FOUND off
– Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
– Could NOT find Atlas (missing: Atlas_CBLAS_INCLUDE_DIR Atlas_CLAPACK_INCLUDE_DIR Atlas_CBLAS_LIBRARY Atlas_BLAS_LIBRARY Atlas_LAPACK_LIBRARY)
– A library with BLAS API not found. Please specify library location.
– LAPACK requires BLAS
– A library with LAPACK API not found. Please specify library location.
– Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
– Could NOT find Matlab (missing: MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN)
– VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
解決方法:
sudo apt-get install libopenblas-dev
問(wèn)題5:
No package ‘gstreamer-base-1.0’ found
解決方法:
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
(3)再次cmake和make,即執(zhí)行以下命令
cmake ..
sudo make // 時(shí)間比較漫長(zhǎng)
sudo make install
(4) 將OpenCV的庫(kù)添加到路徑
首先將OpenCV的庫(kù)添加到路徑,可以讓系統(tǒng)找到
sudo gedit /etc/ld.so.conf.d/opencv.conf
在文件末尾添加
/usr/local/lib
執(zhí)行如下命令使得剛才的配置路徑生效:
sudo ldconfig
(5) 配置bash
打開(kāi)bashrc
sudo gedit /etc/bash.bashrc
在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存后,重新運(yùn)行配置
source /etc/bash.bashrc
更新
sudo updatedb
到此,所有opencv3.4.3配置結(jié)束。
(6 )小程序運(yùn)行
找到 opencv-3.4.3/samples/cpp/example_cmake 目錄下,官方已經(jīng)給出了一個(gè)cmake的example,拿來(lái)測(cè)試。按順序執(zhí)行:
cmake .
make
./opencv_example
可看到打開(kāi)了攝像頭,在左上角有一個(gè)hello opencv ,即表示配置成功。
1.4、Eigen安裝
建議源碼安裝Eigen。
這里給出Eigen的官網(wǎng):Eigen官網(wǎng)
Eigen版本我選擇的是:Eigen 3.3.9 released版。

下載下來(lái),我下載的是zip格式,解壓,編譯。
在終端內(nèi),執(zhí)行以下安裝操作:
unzip eigen-3.3.9.zip
cd eigen-3.3.9
mkdir build
cd build
cmake ..
make
sudo make install
1.5、boost安裝
如果不安裝boost會(huì)報(bào)很多的關(guān)于c++的錯(cuò)誤,并且無(wú)法定位。
進(jìn)入boost官網(wǎng)網(wǎng)址:http://www.boost.org/users/download/
下載boost安裝包,我選擇的是boost_1_77_0.tar.gz版本

接著還是一樣,解壓編譯安裝,即執(zhí)行以下命令:
tar -xvf boost_1_77_0.tar.gz
cd ./boost_1_77_0
./bootstrap.sh
sudo ./b2 install
1.6、DBoW2 and g2o
這兩個(gè)庫(kù)在ORB-SLAM3的Thirdparty文件夾下,編譯ORB-SLAM3的時(shí)候會(huì)自動(dòng)編譯,不需要我們手動(dòng)編譯。
2. 正式編譯ORB_SLAM3
克隆到本地
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
修改build.sh文件
將所有的make -j改為make -j4(原因是make -j會(huì)調(diào)用所有的核心,導(dǎo)致電腦直接卡死,也可能是我電腦太弱了)
cd ~/ORB_SLAM3
gedit build.sh
改為如下:

接著編譯運(yùn)行
chmod +x build.sh
./build.sh
問(wèn)題1
編譯過(guò)程中出現(xiàn)已殺死internal computer error,即內(nèi)存不足的問(wèn)題。
我參考了如下方式解決:Linux增加swap分區(qū)的方法https://www.cnblogs.com/kaishirenshi/p/8986467.html
問(wèn)題2
sigslot/signal.app報(bào)錯(cuò),錯(cuò)誤內(nèi)容類(lèi)似error: ‘XXX’ is not a member of ‘std’
仔細(xì)研究std后發(fā)現(xiàn),可能是編譯過(guò)程中調(diào)用了某一些庫(kù),庫(kù)里面使用的是c++14的標(biāo)準(zhǔn)語(yǔ)法,但ORB_SLAM3中只有c++11的語(yǔ)法許可,沒(méi)有14的,這就造成了沖突。
打開(kāi)ORB_SLAM3/CMakeLists.txt
gedit ./CMakeLists.txt
添加c++14的使用許可
add_compile_options(-std=c++14)

測(cè)試
進(jìn)入ORB_SLAM3
cd ~/ORB_SLAM3
編譯成功后,我們來(lái)跑一個(gè)示例。
首先,進(jìn)入 EuRoC 數(shù)據(jù)集
選擇Downloads的ASL Dataset Format格式,這里我下載了Machine Hall 01數(shù)據(jù)。

圖片數(shù)據(jù)集下載好解壓后是一個(gè)mav0這種形式的文件夾,在ORB-SLAM3文件夾下新建一個(gè)dataset文件夾,在dataset文件夾新建一個(gè)名稱(chēng)為MH01的文件夾,把mav0整個(gè)文件夾拷貝到MH01文件夾中。
在ORB-SLAM3路徑下新打開(kāi)一個(gè)終端:
# 命令格式 可執(zhí)行文件 詞袋路徑 yaml路徑 數(shù)據(jù)集圖片路徑 時(shí)間戳路徑 需要保存的軌跡文件名稱(chēng)
輸入命令:
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-418996.html
如果沒(méi)有圖像,在ORB-SLAM3/Examples/Monocular/mono_euroc.cc中的第83行False改成true,保存并退出。重新輸入命令
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
可視化界面:

如果最后出現(xiàn)Gtk-Message: 15:46:39.932: Failed to load module “canberra-gtk-module“報(bào)錯(cuò),則輸入命令:
sudo apt install libcanberra-gtk-module -y
重新輸入命令
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
就沒(méi)有報(bào)錯(cuò)了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-418996.html
到了這里,關(guān)于ubuntu18.04配置ORB-SLAM3并跑EuRoC數(shù)據(jù)集(單目)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!