• Ubuntu18.04版本下配置ORB-SLAM3和数据集测试方法



    环境说明

    使用:VMware Workstation Pro
    虚拟机系统版本是:Ubuntu 18.04.06
    虚拟机内存:8g(若为4g大小,很容易出现后文中ORB-SLAM3编译时会出现的内存问题)
    虚拟机存储:50g

    若是配置完发现存储空间不足,可以参考这篇博客进行清理:

    下载配置技巧:Ubuntu18.04安装vmware-tools解决无法复制粘贴和自由移动文件的问题
    按照文章描述的内容完成安装后,可以在主机可以翻墙的情况下先下载好文件,而后挪入到虚拟机当中,有一定程度的便利


    必要配置

    打开终端,分别输入

    sudo apt-get install git # 为了可以使用git指令
    
    • 1

    (这样才能在终端界面上使用如,git clone这样的指令)

    sudo apt-get remove vim-common # 卸载旧版本vi编辑器
    sudo apt-get install vim # 安装新版本的vi编辑器
    
    • 1
    • 2
    sudo apt-get install build-essential # 安装g++和gcc
    
    • 1

    (为了避免如链接所描述的问题)


    一、Pangolin

    源码和库文件下载

    1、链接地址下载:Pangolin
    2、git 指令下载:

    git clone https://github.com/stevenlovegrove/Pangolin.git
    
    • 1

    依赖安装和编译安装

    安装依赖:

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    编译安装:

    cd Pangolin # 进入Pangolin文件夹
    mkdir build # 创建Build文件夹
    cd build    # 进入build文件夹
    cmake ..    # 依照上级目录的CMakeLists.txt文件编译
    cmake --build .
    
    • 1
    • 2
    • 3
    • 4
    • 5

    二、Eigen3

    源码和库文件下载

    1、链接地址下载:Eigen3
    2、git 指令下载:

    git clone https://github.com/eigenteam/eigen-git-mirror # github 有个mirror,版本3.3.4 from 2017
    
    • 1

    编译安装

    cd eigen-git-mirror 
    mkdir build 
    cd build 
    cmake .. 
    sudo make install
    #安装后,头文件安装在/usr/local/include/eigen3/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、Opencv

    源码和库文件下载

    Opencv:下载Opencv3.4.3版本

    https://opencv.org/releases/page/5/
    
    • 1

    ippicv库:电脑配置了vpn并且可以进入外网,可以忽略这部分下载

    https://github.com/opencv/opencv_3rdparty/blob/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_lnx_intel64_general_20170822.tgz
    
    • 1

    编译安装

    准备工作
    1、修复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
    
    • 1
    • 2
    • 3

    2、修复终端报错提示ippicv_2017u3_lnx_intel64_general_20170822.tgz的加速库下载失败
    电脑配置了vpn并且在开始编译的时候可以进入外网的同学,可以忽略这步
    错误示例:
    在这里插入图片描述
    把OpenCV源文件中 /3rdparty/ippicv 文件夹下的 ippicv.cmake 中,

    第47行的

    "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 
    
    • 1

    改成你新下载的ippicv文件路径
    更改示例:
    在这里插入图片描述

    更新依赖库:

    sudo apt-get update
    
    • 1

    安装依赖:

    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
    
    • 1
    • 2
    • 3

    编译安装:(跳过准备工作中的加速库配置的同学记得打开vpn进入外网)

    cd opencv-3.4.3
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
    make -j4
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    配置环境:
    1)添加库路径

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

    2)更新系统库

    sudo ldconfig
    
    • 1

    3)配置bash

    sudo gedit /etc/bash.bashrc
    
    • 1

    在末尾添加如下两行代码

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

    4)保存,执行如下指令使得配置生效

    source /etc/bash.bashrc 
    
    • 1

    5)更新

    sudo updatedb  
    
    • 1

    如果该指令报错,那么可能是没有安装mlocate

    先执行安装命令

    apt-get install mlocate
    
    • 1

    然后再

    sudo updatedb
    
    • 1

    6)版本检测

    pkg-config --modversion opencv
    
    • 1

    注意:如果执行后,显示找不到包。那么注意下载的OpenCV版本是不是3.版本的,OpenCV版本4以上的,默认不生成.pc文件,会出现找不到包的问题

    输出如下,表示OpenCV完成了安装
    在这里插入图片描述

    四、DBoW2 和 g2o

    DBoW2主要用于回环检测,g2o(General Graph Optimization)主要用于图优化。
    
    ORB-SLAM3的源码包自带DBoW2 和 g2o,编译时会自动安装。不用管。
    
    • 1
    • 2
    • 3

    五、boost

    源码和库文件下载

    链接地址:下载1.77.0版本的boost_1_77_0.tar.gz

    https://www.boost.org/users/history/
    
    • 1

    编译安装

    对下载的文件进行解压后,进入文件夹boost_1_77_0,在此打开终端
    分别执行:

    sudo ./bootstrap.sh
    
    • 1
    sudo ./b2 install
    
    • 1

    需要一定时间,需要耐心等待

    六、libssl-dev

    直接打开终端,执行:

    sudo apt-get install libssl-dev
    
    • 1

    七、ORB-SLAM3

    源码和库文件下载

    1、链接地址下载:ORB-SLAM3
    2、git clone指令:

    git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
    
    • 1

    编译安装

    准备工作:
    修改CMakeLists.txt:打开ORB-SLAM3目录下的CMakeLists.txt,找到第33行

    find_package(OpenCV 4.4)
    
    • 1

    将OpenCV版本号改为:

    find_package(OpenCV 3.4)
    
    • 1

    修改build.sh:在将虚拟机内存改为8G的前提下,将ORB_SLAM3目录下的build.sh中的文件内容修改为:

    echo "Configuring and building Thirdparty/DBoW2 ..."
    
    cd Thirdparty/DBoW2
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make -j4
    cd ../../g2o
    
    echo "Configuring and building Thirdparty/g2o ..."
    
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make -j4
    cd ../../Sophus
    
    echo "Configuring and building Thirdparty/Sophus ..."
    
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make -j4
    前三块都在ORB-SLAM3目录下的Thirdparty文件夹中,
    若是中断了,可以在对应文件夹里跳过cd执行剩余内容
    
    cd ../../../
    #此处在ORB-SLAM3的目录下
    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
    #此块内容最容易出错,且耗时长,我大概编译了四十分钟
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    必要说明:
    将make改为make -j4会加快编译速度,但也会加大内存的占用,遇到问题:

    Makefile:83: recipe for target 'all' failed
    make: *** [all] Error 2
    
    • 1
    • 2

    所以最后一块内容的编译是,make
    使用make进行编译,内存占比在4g左右浮动,尽量需要虚拟机内存大于4g,这就是上文虚拟机内存选择8g的原因

    开始编译:

    cd ORB_SLAM3
    chmod +x build.sh
    ./build.sh
    
    • 1
    • 2
    • 3

    编译成功示例如下:
    在这里插入图片描述
    最后一块编译内容里容易出现的错误:

    在这里插入图片描述
    解决方法是打开对应的文件,如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());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    修改完后重新运行build.sh进行编译即可

    其他可参考的错误解决方案:
    安装orbslam3时报错:error: no match for ‘operator/’
    ORB-SLAM2编译错误_嵙杰的博客-CSDN博客

    数据集测试

    数据集链接地址:

    链接地址:选择ASL格式的V102

    https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
    
    • 1

    测试方法:

    解压下载的数据集后(若该文件夹不名为V102,请改为V102),

    V102文件夹里有一个mav0的文件夹,还有可能出现的_MACOSX 文件夹(该文件夹是缓存垃圾,可以直接删除)

    在ORB-SLAM3文件夹下创建文件夹dataset,将文件夹V102移入dataset

    形成的目录结构如下

    /ORB-SLAM3/dataset/V102/mav0
    
    • 1

    在ORB-SLAM3文件夹下打开终端,执行指令

    ./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
    
    • 1

    成功运行界面:


    参考链接

    ORB-SLAM3配置及安装教程(2023.3)
    ORB-SLAM3配置安装及运行—Ubuntu20.04(2021年)

    文章的很多内容有所缩减,只是为了配置安装,若是希望对细节有所了解,可以查看一下参考链接

  • 相关阅读:
    竞赛常考的知识点大总结(七)图论
    二分搜索树节点的查找(Java 实例代码)
    封装一个antd的Table操作项中的一个展开与收起通用功能
    Linux 中的 cron 命令及示例
    20【JDBC的事务处理】
    `数学` 微积分基本定理
    C++ 文件IO实现
    MySQL8--Windows下使用压缩包安装的方法
    数据结构(Java):树&二叉树
    【技术分享】RK356X Android 使用 libgpiod 测试gpio
  • 原文地址:https://blog.csdn.net/Aer_7z/article/details/132645338