Win 11pro
VMware 17Pro
Ubuntu 18.04
Eigen3
Pangolin
Opencv3.4.3
ORB-SLAM3原始碼: https://github.com/UZ-SLAMLab/ORB_SLAM3
如果是新系統,沒有安裝git,則需要先裝git
sudo apt-get install git
如果是新系統的話,預裝的vi編輯器不完整,用不了
執行如下命令安裝vi編輯器
sudo apt-get remove vim-common
sudo apt-get install vim
DBoW2 and g2o
DBoW2主要用於迴環檢測,g2o(General Graph Optimization)主要用於圖優化。
ORB-SLAM3的原始碼包自帶DBoW2 and g2o,編譯時會自動安裝,不用管。
暫取名為 SLAM
在 SLAM 資料夾下開啟終端
輸入以下指令
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
在 SLAM 資料夾下開啟終端
輸入以下指令
git clone https://github.com/stevenlovegrove/Pangolin.git
在 SLAM 資料夾下開啟終端
輸入以下指令
git clone https://github.com/eigenteam/eigen-git-mirror
在 SLAM 資料夾下開啟終端
輸入以下指令
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install
#安裝後,標頭檔案安裝在/usr/local/include/eigen3/
安裝 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 資料夾下開啟終端
輸入以下指令
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
下載之後放在最開始建立的 SLAM 資料夾,右鍵提取檔案進行解壓
更新一下,準備安裝OpenCV依賴庫
在終端輸入以下指令
sudo apt-get update
在終端輸入以下指令
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev libjasper-dev
# 原部落格安裝的是libtiff4-dev,執行過程報錯,改成libtiff5-dev
在 SLAM 資料夾下開啟終端
輸入以下指令
cd opencv-3.4.3
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
注意:執行上面指令後,終端會自動下載一個必需的ippicv加速庫。
如果終端卡住並顯示正在下載,只需要等一會兒不用進行任何操作。
否則,終端會顯示報錯
再次執行cmake指令,完成編譯
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake完成之後使用make編譯
make -j4
安裝
sudo make install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
sudo gedit /etc/bash.bashrc
在末尾新增如下兩行程式碼
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
儲存,執行如下指令使得設定生效
source /etc/bash.bashrc
更新
sudo updatedb
pkg-config --modversion opencv
輸出如下,表示OpenCV完成了安裝
boost官網地址:https://www.boost.org/
下載 1.77.0 版本
將檔案下載至SLAM資料夾下,並解壓
解壓之後進入解壓出來的資料夾
執行以下指令
sudo ./bootstrap.sh
執行完畢之後,會發現又多了些檔案
再執行下面這個指令碼
sudo ./b2 install
需要一段時間,耐心等待即可
在 SLAM 資料夾下開啟終端
輸入以下指令
sudo apt-get install libssl-dev
在 SLAM 資料夾下開啟終端
輸入以下指令
cd ORB_SLAM3-master
chmod +x build.sh
開啟ORB_SLAM3-master對應的CMakeLists.txt
找到 find_package(OpenCV 4.4)這行程式碼,將OpenCV版本號改為find_package(OpenCV 3.4)
逐行依次執行以下指令
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
出現以下圖片,則代表安裝成功
EuRoc資料集下載地址:
https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
要下載ASL格式的,下載V102和V203兩個
這個壓縮包下好之後,解壓開啟之後,裡面是一個mav0的資料夾(有些開啟會還有一個_MACOSX 檔案加,可以直接刪掉,只留mav0資料夾)
具體原因是這個其實是在MAC作業系統壓縮時產生的快取垃圾,在Windows系統、Linux系統就會顯示出來
然後在ORB_SLAM3-master資料夾下建立一個資料夾dataset,
在dataset資料夾下將解壓的資料集資料夾放進來
eg. /ORB_SLAM3-master/dataset/V102/mav0
在ORB_SLAM3-master的原始碼中,有一個Examples資料夾
去下面這個連結拷貝 指令碼euroc_examples.sh 到 Examples資料夾
https://github.com/electech6/ORB_SLAM3_detailed_comments
開啟**euroc_examples.sh** 這個指令碼,裡面有ORB-SLAM3各種執行模式針對各個資料集的執行指令,選擇下載資料集對應模式下的指令,提取出來(以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,表示資料集所在的路徑
在ORB_SLAM3-master資料夾下開啟終端執行以下這條指令
./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
出現以下畫面則代表 ORB-SLAM3 成功執行,即環境安裝完成
error: unable to locate libjasper-dev 無法定位這個包libjasper-dev
解決方法是:執行以下指令
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
執行完這個,再輸入以下這個指令
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
解決方法是下載離線的ippicv庫
下載連結為:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822
下載好之後,把這個ippicv資料夾單獨拷貝出來,放到自己的資料夾中
然後把OpenCV原始檔中 /3rdparty/ippicv 資料夾下的 ippicv.cmake 中第47行"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 改成新下載的ippicv檔案路徑。
這樣,就改成了離線編譯的ippicv檔案
如果執行sudo updatedb 指令報錯,那麼可能是沒有安裝mlocate
解決方法
先執行安裝命令:apt-get install mlocate
再執行:sudo updatedb
執行最後一條指令 make -j5 時,出現報錯如下:
解決方法
開啟對應的檔案,如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());
}
}
效果如圖
最後一條指令若使用 make -j4 或 make -j5,即使在對應的檔案中加入了上述程式碼如果仍然會報錯。
可改成僅使用 make 進行編譯,但同時,改成make之後編譯速度大大降低,需要等很久