目录

搭建ORB-SLAM3在Ubuntu下的编译和运行环境

ORB-SLAM3论文

ORB-SLAM3 An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

搭建ORB-SLAM3在Ubuntu下的编译和运行环境

1. 安装编译PANGOLIN

Pangolin主要用于可视化和用户界面。

i. 下载源码:https://github.com/stevenlovegrove/Pangolin

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/1

ii. 按照git链接里的官方安装方式进行安装:

1
2
3
cd ~/your_fav_code_directory
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin

(我是直接下了源压缩包解压,没有使用git clone)

1
2
# recommended
./scripts/install_prerequisites.sh
1
2
3
mkdir build && cd build
cmake ..
cmake --build .
1
2
3
4
5
# GIVEME THE PYTHON STUFF!!!! (Check the output to verify selected python version)
cmake --build . -t pypangolin_pip_install

# Run me some tests! (Requires Catch2 which must be manually installed on Ubuntu.)
ctest

这一步存在问题,似乎没影响?(待解决)

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/2

cmake编译完成后,可以用官方提供的实例代码运行测试看看,路径/examples/HelloPangolin

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/3

./HelloPangolin运行程序,结果如下:

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/4

2. 安装编译OpenCV

OpenCV用于ORB特征点提取

i. 官网下载OpenCV,选择sources版本

本次搭建下载的是opencv3.4.16

下载链接:Releases - OpenCV

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/5

最新的ORB_SLAM3的编译需要的是 opencv4.4,要不然会报编译错误,

需要在ORB_SLAM3源码里面修改 CMakeLists.txt 中 opencv 的关联版本。

ii. 解压

unzip opencv-3.4.16.zip

进入opencv目录:

cd opencv-3.4.16

iii. 安装依赖库:

1
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff4.dev libswscale-dev libjasper-dev

如果出现 libjasper-dev 无法安装(大部分情况下会出现),就单独对它进行安装:

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/6

1
2
3
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

不出意外的话,就会出意外了,在

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

这一步有可能会报错如下(没报错的话就直接下一步了):

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/7

原因是更换三方源没有对应的Key,

解决办法:直接执行如下命令,比如这里没有 3B4FE6ACC0B21F32,就需要执行

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

iv. 创建编译目录(release)并进入

mkdir release && cd release

v. cmake配置编译

1
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

vi. make编译

sudo make

vii. 安装

sudo make install

viii. 环境配置添加库路径

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

ix. 更新系统库

sudo ldconfig

x. 配置bash

sudo vim /etc/bash.bashrc

在文件最末尾添加:

1
2
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

执行命令使配置生效:source /etc/bash.bashrc

更新:sudo updatedb

有可能出现updatedb命令识别不到的问题

执行:sudo apt install mlocate

再执行updatedb

xi. 使用opencv自带smaple测试是否安装成功

  1. cd 到 opencv-3.4.16/samples/cpp/example_cmake 目录下
  2. 依次执行:
1
2
3
cmake .
sudo make
./opencv_example

出现 “Hello OpenCV”,表示安装成功

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/8

3. 安装boost库

i. 下载压缩包

Index of main/release/1.79.0/source

ii. 依次执行如下命令,完成编译和安装

解压:tar -xzvf boost_1_79_0.tar.gz

cd进入解压出来的文件夹,执行命令:sudo ./bootstrap.sh

iii. 再执行下面的命令,这样头文件就被默认安装在/usr/local/include头文件下,库文件就被默认安装在/usr/local/lib下

执行:

1
2
sudo ./b2 install
sudo ldconfig

4. 安装Eigen 3

sudo apt install libeigen3-dev

5. 安装openssl-devel

sudo apt install libssl-dev

6. 安装Realsense

  1. 下载realsense

    git clone https://github.com/IntelRealSense/librealsense

  2. 安装依赖项

    1
    2
    3
    4
    5
    
    cd librealsense
    sudo apt-get install libudev-dev pkg-config libgtk-3-dev
    sudo apt-get install libusb-1.0-0-dev pkg-config
    sudo apt-get install libglfw3-dev
    sudo apt-get install libssl-dev
    
  3. make(可能需要root用户)

    1
    2
    3
    4
    5
    6
    7
    
    sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
    sudo udevadm control --reload-rules && udevadm trigger 
    mkdir build
    cd build
    cmake ../ -DBUILD_EXAMPLES=true
    make
    sudo make install
    
  4. 测试

    realsense-viewer /images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/9

7. 编译SLAM3源码

i. 下载源码

https://github.com/UZ-SLAMLab/ORB_SLAM3

ii. 解压后进目录

1
2
sudo tar -xvzf ORB_SLAM3-1.0-release.tar.gz
cd ORB_SLAM3-1.0-release

iii. 修改CMakeList.txt中opencv版本号

由于之前安装的opencv是3.4.16版,

ORB_SLAM3源码编译要的是4.4,版本不对,编译时会报如下错误:

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/10

执行:sudo vim CMakeLists.txt

找到opencv的地方,将他修改成安装的版本号

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/11

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/12

iv. 解决源码编译过程中踩到的坑!(编译时候只能说一步一坑了)

  1. Eigen版本问题

    解决办法:

    修改 CMakeLists.txt 中Eigen版本号

    执行:sudo vim CMakeLists.txt

    FIND_PACKAGE(Eigen3 3.1.0 REQUIRED) 改为 FIND_PACKAGE(Eigen3 REQUIRED)

  2. 编译时有可能会报很多-std=C++相关语法错误,具体原因可能是C++支持版本等问题

    解决办法:

    sudo vim CMakeLists.txt

    直接注掉下面这两行:

    /images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/13

  3. 运行时,有可能碰到如下错误,编译到一半,虚拟机直接崩了

    /images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/14

    解决办法: 虚拟机设置 –> 显示器 –> 加速3D图像(3),取消勾选

    /images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/15

  4. 内存溢出

    解决办法:

    合理修改 build.shmake -j 参数

    (因为 make -j 的话会自动检测你的核心数,选用合适的数量,比如换成 make -j4 或者 make -j1 来执行)

  5. C++标准版本错误

    解决方法:

    指定C++标准版本为14

    orb-slam3/CMakeLists.txt 中添加 set(CMAKE_CXX_STANDARD 14) 或者 add_compile_options(-std=c++14)

v. 编译源码

依次执行如下命令:

1
2
chmod +x build.sh
./build.sh  

成功编译如图:

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/16

8. 数据集测试

i. 下载数据集

kmavvisualinertialdatasets – ASL Datasets

本次环境搭建,下载的是V101数据集:Vicon Room 1 01(下载ASL格式)

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/17

ii. 运行数据集

  1. ORC_SLAM3目录下新建DataSets文件夹
  2. 将下载的数据集拷贝到DataSets下,解压
  3. 执行如下命令:
1
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ./Datasets ./Examples/Stereo/EuRoC_TimeStamps/V101.txt

运行结果如下:

/images/2022-10-18-搭建ORB-SLAM3在Ubuntu下的编译和运行环境/18

右侧是数据集场景、特征点、轨迹等抓取过程的逐帧播放

左侧是算法运行的效果,其中可以选择显示/隐藏Point、KeyFrame、Gragh等。

iii. 其他数据集测试

Machine Hall 01:

1
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./DataSets/MH_01/ ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

ROS环境上使用Astra Pro相机实时运行ORB-SLAM3

参考 ROS环境上使用Astra Pro相机实时运行ORB-SLAM3