ORB_SLAM3 — 配置安裝

安裝環境 Ubuntu20.04

ORB_SLAM3依賴項安裝

opencv3

ORB_SLAM3可用opencv3或opencv4編譯,作者這裡安裝測試了opencv3

Step1: 安裝opencv的依賴包

sudo apt-get install build-essential
sudo apt-get install cmake 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
  • 如果提示找不到libjasper-dev軟體包
sudo apt-add-repository "deb //security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

Step2: 下載opencv和opencv_contrib

cd ~/<my_working_directory> # <my_working_directory>替換為你的工作目錄
git clone //github.com/opencv/opencv.git
git clone //github.com/opencv/opencv_contrib.git
cd opencv
git checkout 3.4.16
cd ..
cd opencv_contrib
git checkout 3.4.16
cd ..

Step3: 編譯和安裝opencv以及opencv_contrib模組

Step3.1 創建build目錄
cd opencv
mkdir build
cd build
Step3.2 執行cmake命令
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D WITH_TBB=ON \
      -D WITH_V4L=ON \
      -D WITH_QT=ON \
      -D WITH_OPENGL=ON \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -D BUILD_EXAMPLES=ON ..
Step3.3 編譯並安裝
# 執行如下命令後獲取cpu核心數以加快編譯
nproc
# 將nproc得到的數字放在make -j後面,作者的電腦有16的CPU核心
make -j16
sudo make install
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
  • opencv安裝參考

Pangolin

  • pangolin版本更新到了0.6。此版本編譯ORB_SLAM2,ORB_SLAM3,DSO,LDSO等SLAM框架時均會出現問題
  • 解決方法:採用較早版本的pangolin

非常不建議使用最新版本的pangolin進行編譯安裝,會遇到error: 『slots_reference』 was not declared in this scope或者cannot findind Eigen3.cmake
issue: //github.com/raulmur/ORB_SLAM2/issues/1015

Step1: 安裝Pangolin的依賴包

sudo port install glew
sudo apt-get install cmake
sudo apt-get install libpython2.7-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
sudo apt-get install libdc1394-22-dev libraw1394-dev
sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev
  • libpng12-dev安裝可能會報錯,但不影響後續步驟。
# Ubuntu16.04之後不支援libpng12-dev 修改為
sudo apt install libpng-dev
  • 這裡提供一個較早版本的Pangolin

鏈接://pan.baidu.com/s/17A51BZIq_iJlCvLHUTCH7g
提取碼:oitb

這裡提供了百度網盤的版本
鏈接://pan.baidu.com/s/17A51BZIq_iJlCvLHUTCH7g
提取碼:oitb
–來自百度網盤超級會員V5的分享

Step2: 編譯並安裝Pangolin

cd Pangolin
# 百度網盤的版本有build文件,要先刪除再創建
rm -rf build 
mkdir build
cd build
cmake ..
# 16替換為你自己電腦的CPU核心數
make -j16 
sudo make install
  • pangolin安裝參考

ORB_SLAM3安裝

Step1: 安裝ORB_SLAM3的依賴包

sudo apt install libpython2.7-dev

Step2: 下載、編譯並安裝ORB_SLAM3

git clone //github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
cd ORB_SLAM3
chmod +x build.sh
# 可以修改 CMakeList.txt 中的`make -j`為`make -j16`來加快編譯速度。16替換為你的電腦的CPU核心數
./build.sh 

編譯ORB_SLAM3常見問題

  • ORBSLAM3 fatal error: openssl/md5.h: No such file or directory
  • 解決方法:執行如下命令
sudo apt install libssl-dev
  • make[2]: *** [CMakeFiles/ORB_SLAM3.dir/build.make:89: CMakeFiles/ORB_SLAM3.dir/src/LocalMapping.cc.o] Error 1
  • 解決方法:在orb_SLAM3/include/CameraModels/KannalaBrandt8.h中添加
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()); 
    } 
}
  • ORB_SLAM3安裝參考