Ubuntu 20.04 测试 ORB SLAM3

6 months ago
0 comment

一些参考信息:

安装依赖

安装编译器和 git

sudo apt install cmake gcc g++ git

安装依赖库

sudo apt install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libpng-dev libssl-dev

安装 Pangolin

cd ~
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install

安装 OpenCV

sudo apt install libopencv-dev

安装 Eigen3

sudo apt install libeigen3-dev

编译 ORB SLAM3

下载源码

cd ~
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

修改编译信息

首先需要查看已安装的 OpenCV、Eigen3 的版本信息:

pkg-config --modversion opencv4
pkg-config --modversion eigen3

这里我的 OpenCV 版本是 4.2.0,Eigen3 的版本是 3.3.7

打开 ORB_SLAM3/CMakeLists.txt,找到这两个部分,将 OpenCV 和 Eigen3 的版本号修改为自己本地的版本号:

然后运行:

sed -i 's/++11/++14/g' CMakeLists.txt

这一步是为了将 CMakeLists.txt 中的所有 C++11 都替换成 C++14,修正编译中的一些问题。

接着打开 build.sh,有四个 make -j,将核数加/改到 j 后面。例如,我希望 make 创建 4 个任务,我就将 make -j 改成 make -j4

最后打开 Examples/Monocular/mono_euroc.cc,找到大约第 83 行的 ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, false);,将 false 改为 true,这是为了等下我们运行这个例子时能够显示可视化窗口。

然后运行 ./build.sh 开始编译。过程中不应出现任何红色的 "error",但会出现很多 "warning"。

测试运行

下载数据集

这个数据集有点大,这里也提供一份拷贝:MH_01_easy.zip

# wget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.zip
wget https://blog.tofu.icu/media/5076cd8923429f1c51c72ae172e14aea.zip -O MH_01_easy.zip
unzip MH_01_easy.zip
mkdir datasets && mkdir datasets/MH01
mv mav0 datasets/MH01

开始运行

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./datasets/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono

如果碰到了这样的报错:

./Examples/Monocular/mono_euroc: error while loading shared libraries: libpango_windowing.so: cannot open shared object file: No such file or directory

则先执行 sudo ldconfig,再运行即可。

参考

  1. ORB-SLAM3
  2. Pangolin
  3. 从零开始的ORB-SLAM3安装教程