博客地址:https://www.cnblogs.com/zylyehuo/
參考資料
ORB-SLAM3配置及安裝教程
ORB-SLAM3配置安裝及運(yùn)行
環(huán)境配置
Win 11pro
VMware 17Pro
Ubuntu 18.04
Eigen3
Pangolin
Opencv3.4.3
ORB-SLAM3源碼: https://github.com/UZ-SLAMLab/ORB_SLAM3
效果圖
注意事項(xiàng)
建議留有 15-20G 左右的內(nèi)存
如果是新系統(tǒng),沒(méi)有安裝git,則需要先裝git
sudo apt-get install git
如果是新系統(tǒng)的話,預(yù)裝的vi編輯器不完整,用不了
執(zhí)行如下命令安裝vi編輯器
sudo apt-get remove vim-common
sudo apt-get install vim
DBoW2 and g2o
DBoW2主要用于回環(huán)檢測(cè),g2o(General Graph Optimization)主要用于圖優(yōu)化。
ORB-SLAM3的源碼包自帶DBoW2 and g2o,編譯時(shí)會(huì)自動(dòng)安裝,不用管。
PART 1:準(zhǔn)備工作(下載安裝要用的文件)
step1: 新建一個(gè)文件夾,用于存放下載的文件
暫取名為 SLAM
step2: 下載 ORB-SLAM3源碼
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
step3: 下載 Pangolin
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
git clone https://github.com/stevenlovegrove/Pangolin.git
step4: 下載 Eigen3
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
git clone https://github.com/eigenteam/eigen-git-mirror
PART 2:安裝步驟
step1: 安裝 Eigen3
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install
#安裝后,頭文件安裝在/usr/local/include/eigen3/
step2: 安裝 Pangolin
安裝 Pangolin 需要的依賴工具
在終端依次輸入以下指令
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install cmake
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
安裝 Pangolin
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
step3: 安裝 Opencv3.4.3
官網(wǎng)下載地址:https://opencv.org/releases/page/5/
下載之后放在最開(kāi)始創(chuàng)建的 SLAM 文件夾,右鍵提取文件進(jìn)行解壓
更新一下,準(zhǔn)備安裝OpenCV依賴庫(kù)
在終端輸入以下指令
sudo apt-get update
安裝OpenCV所有依賴庫(kù)
在終端輸入以下指令
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev libjasper-dev
# 原博客安裝的是libtiff4-dev,運(yùn)行過(guò)程報(bào)錯(cuò),改成libtiff5-dev
編譯OpenCV
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
cd opencv-3.4.3
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
注意:執(zhí)行上面指令后,終端會(huì)自動(dòng)下載一個(gè)必需的ippicv加速庫(kù)。
如果終端卡住并顯示正在下載,只需要等一會(huì)兒不用進(jìn)行任何操作。
否則,終端會(huì)顯示報(bào)錯(cuò)
cmake完成之后使用make編譯
make -j4
安裝
sudo make install
配置環(huán)境
1、添加庫(kù)路徑
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
2、更新系統(tǒng)庫(kù)
sudo ldconfig
3、配置bash
sudo gedit /etc/bash.bashrc
在末尾添加如下兩行代碼
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,執(zhí)行如下指令使得配置生效
source /etc/bash.bashrc
更新
sudo updatedb
4、版本檢測(cè)
pkg-config --modversion opencv
輸出如下,表示OpenCV完成了安裝
step4: 安裝 boost 庫(kù)
boost官網(wǎng)地址:https://www.boost.org/
下載 1.77.0 版本
將文件下載至SLAM文件夾下,并解壓
解壓之后進(jìn)入解壓出來(lái)的文件夾
執(zhí)行以下指令
sudo ./bootstrap.sh
執(zhí)行完畢之后,會(huì)發(fā)現(xiàn)又多了些文件
再執(zhí)行下面這個(gè)腳本
sudo ./b2 install
需要一段時(shí)間,耐心等待即可
step5: 安裝 libssl-dev
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
sudo apt-get install libssl-dev
step6: ORB-SLAM3 的編譯和安裝
ORB-SLAM3 源碼編譯
在 SLAM 文件夾下打開(kāi)終端
輸入以下指令
cd ORB_SLAM3-master
chmod +x build.sh
打開(kāi)ORB_SLAM3-master對(duì)應(yīng)的CMakeLists.txt
找到 find_package(OpenCV 4.4)這行代碼,將OpenCV版本號(hào)改為find_package(OpenCV 3.4)
逐行依次執(zhí)行以下指令
安裝 ORB-SLAM3
echo "Configuring and building Thirdparty/DBoW2 ..."
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
cd ../../g2o
echo "Configuring and building Thirdparty/g2o ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
cd ../../Sophus
echo "Configuring and building Thirdparty/Sophus ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
cd ../../../
echo "Uncompress vocabulary ..."
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..
echo "Configuring and building ORB_SLAM3 ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j5
出現(xiàn)以下圖片,則代表安裝成功
PART 3:測(cè)試環(huán)境是否搭建成功(數(shù)據(jù)集測(cè)試)
EuRoc數(shù)據(jù)集下載地址:
https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
要下載ASL格式的,下載V102和V103兩個(gè)
這個(gè)壓縮包下好之后,解壓打開(kāi)之后,里面是一個(gè)mav0的文件夾(有些打開(kāi)會(huì)還有一個(gè)_MACOSX 文件加,可以直接刪掉,只留mav0文件夾)
具體原因是這個(gè)其實(shí)是在MAC操作系統(tǒng)壓縮時(shí)產(chǎn)生的緩存垃圾,在Windows系統(tǒng)、Linux系統(tǒng)就會(huì)顯示出來(lái)
然后在ORB_SLAM3-master文件夾下創(chuàng)建一個(gè)文件夾dataset,
在dataset文件夾下將解壓的數(shù)據(jù)集文件夾放進(jìn)來(lái)
eg. /ORB_SLAM3-master/dataset/V102/mav0
在ORB_SLAM3-master的源碼中,有一個(gè)Examples文件夾
去下面這個(gè)鏈接拷貝 腳本euroc_examples.sh 到 Examples文件夾
https://github.com/electech6/ORB_SLAM3_detailed_comments
打開(kāi)**euroc_examples.sh** 這個(gè)腳本,里面有ORB-SLAM3各種運(yùn)行模式針對(duì)各個(gè)數(shù)據(jù)集的運(yùn)行指令,選擇下載數(shù)據(jù)集對(duì)應(yīng)模式下的指令,提取出來(lái)(以V102、單目+IMU為例):
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml “$pathDatasetEuroc”/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt dataset-V102_monoi
加粗的地方需要改
**“$pathDatasetEuroc”**改為 ./dataset,表示數(shù)據(jù)集所在的路徑
在ORB_SLAM3-master文件夾下打開(kāi)終端執(zhí)行以下這條指令
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ./dataset/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt dataset-V102_monoi
出現(xiàn)以下畫(huà)面則代表 ORB-SLAM3 成功運(yùn)行,即環(huán)境安裝完成
PART 4:部分問(wèn)題解決方案
1、 在安裝OpenCV所有依賴庫(kù)的時(shí)候出現(xiàn)報(bào)錯(cuò)信息
error: unable to locate libjasper-dev 無(wú)法定位這個(gè)包libjasper-dev
解決方法是:執(zhí)行以下指令
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
運(yùn)行完這個(gè),再輸入以下這個(gè)指令
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
2、編譯OpenCV時(shí)報(bào)錯(cuò)
解決方法是下載離線的ippicv庫(kù)
下載鏈接為:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822
下載好之后,把這個(gè)ippicv文件夾單獨(dú)拷貝出來(lái),放到自己的文件夾中
然后把OpenCV源文件中 /3rdparty/ippicv 文件夾下的 ippicv.cmake 中第47行"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 改成新下載的ippicv文件路徑。
這樣,就改成了離線編譯的ippicv文件
再次執(zhí)行cmake指令,完成編譯
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake完成之后使用make編譯
make -j4
安裝
sudo make install
3、在配置bash時(shí)候報(bào)錯(cuò)
如果執(zhí)行sudo updatedb 指令報(bào)錯(cuò),那么可能是沒(méi)有安裝mlocate
解決方法
先執(zhí)行安裝命令:apt-get install mlocate
再執(zhí)行:sudo updatedb
4、安裝 ORB-SLAM3 時(shí)候報(bào)錯(cuò)
運(yùn)行最后一條指令 make -j5 時(shí),出現(xiàn)報(bào)錯(cuò)如下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-438767.html
解決方法
打開(kāi)對(duì)應(yīng)的文件,如Tracking.cc,LoopClosing.cc等
在所有 #include 后面添加以下代碼
namespace cv
{
template<typename _Tp, int m, int n> static inline
Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n> &a, float alpha)
{
return Matx<_Tp, m, n>(a, 1.f / alpha, Matx_ScaleOp());
}
}
效果如圖文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-438767.html
最后一條指令若使用 make -j4 或 make -j5,即使在對(duì)應(yīng)的文件中加入了上述代碼如果仍然會(huì)報(bào)錯(cuò)。
可改成僅使用 make 進(jìn)行編譯,但同時(shí),改成make之后編譯速度大大降低,需要等很久
到了這里,關(guān)于基于ORB-SLAM3庫(kù)搭建SLAM系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!