• ubuntu 20.04+ORB_SLAM3 安装配库教程


    本文整体参考链接有:

    1. ORB-SLAM3配置安装及运行—Ubuntu20.04(2021年)
    2. Ubuntu20.04 —— 新系统从头安装ORB-SLAM3过程(2022年)
    3. Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+各种相关库的安装
    4. ORB-SLAM3配置及安装教程(2023.3)
    5. Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装

    安装ros(如果只是运行ORB-SLAM3,可以跳过安装)

    0. ros 安装教程

    经过测试,这个教程最好[Ubuntu20.04.4安装ROS Noetic详细教程(https://zhuanlan.zhihu.com/p/515361781),推荐参考这个安装ros。 由于后续要安装Anaconda, 因此务必注意先安装ros, 再安装Anaconda, 否则会导致ros的依赖库是Anaconda下的库路径,导致冲突。

    1. 安装opencv

    具体参考教程参见博客ubuntu20安装opencv4和opencv_contrib 多版本共存

    2. 安装Pangolin

    此处需要注意,安装Pangolin 稳定的0.6 版本。
    Pangolin_v0.6
    直接去github默认下载是下载的最新版本,需要注意最好不要下载最新版本。

    1)安装依赖项

    sudo apt-get install libglew-dev
    sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
    sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
    sudo apt-get install libpng-dev
    
    • 1
    • 2
    • 3
    • 4

    (2)配置并编译

    cd Pangolin
    mkdir build && cd build
    cmake  ..
    make -j8  # 我的是8线程,此处数据需要自己查设置,不同电脑不同
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (3) 检查是否安装成功

    cd examples/HelloPangolin
    cmake .
    make
    ./HelloPangolin
    
    • 1
    • 2
    • 3
    • 4

    安装成功

    3. 安装Eigen3

    推荐版本安装3.3.4, 不过也有推荐版本3.3.7,要求最低版本是大于等于3.3.3,看个人需要吧。cd 指令需要进到自己的下载解压后的eigen文件夹处,注意替换该指令。
    cmake ..指令默认安装位置为/urs/local/,以下为后续fmt安装界面,库路径为/usr/local/lib, include路径为/usr/local/include/, 可作为参考:ORB-SLAM中的依赖库默认安装在/usr下,有特殊指明安装位置的除外,例如opencv安装位置就指明了安装位置,具体可以参考cmake 指令中参数的设置意义。装位置参考

    #github 有个mirror,版本3.3.4 from 2017
    git clone https://github.com/eigenteam/eigen-git-mirror
     
    #安装
    cd eigen-git-mirror
    mkdir build
    cd build
    cmake ..
    sudo make install
     
    #安装后,头文件安装在/usr/local/include/eigen3/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意!!!
    不要采用下面这个指令安装eigen3,

    sudo apt-get install libeigen3-dev
    
    • 1

    如果采用这个指令安装,默认是安装到了/usr/include/eigen3,ORB-SLAM3检测不到,导致编译会报错。利用源码安装,安装好的路径是 /usr/local/include/eigen3/>

    4.安装Python & libssl-dev

    sudo apt install libpython2.7-dev
    
    • 1
    sudo apt-get install libssl-dev
    
    • 1

    5.安装boost库

    Boost 是一个功能强大、构造精巧、跨平台、开源并且完全免费的 C++ 程序库。
    进入boost官网:https://www.boost.org/
    或者和我下载一样的下载的是1.75.0
    此处安装参考链接:

    1. Ubuntu20.04 —— 新系统从头安装ORB-SLAM3过程(2022年)
    2. Ubuntu20.04安装boost库

    6.安装ceres库(不必须)

    因为后续要运行PL-SLAM,才安装这个库。安装版本ceres-1.14.0版本。
    参考链接:Ubuntu20.04安装Ceres和g2o库

    7.安装Sophus库(不必须)

    参考链接:高翔视觉SLAM十四讲Sophus安装指南(经历)
    由于最新的Sophus是模板类的,需要fmt库支持,根据踩坑经验,建议安装8.1.1版本的,否则将导致Sophus安装失败.
    Sophus安装1.22.4。

    8. 安装g20库(不必须)

    参考链接:Ubuntu20.04安装Ceres和g2o库,安装版本是20201223版本。

    9. 安装DBoW2库(不必须)

    参考链接:Ubuntu环境下安装DBoW2

    运行安装ORB-SLAM2

    参考链接:Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装

    (1)解压源文件,在该文件夹下打开终端:

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

    chmod +x 赋予shell文件运行权限,注意系统若硬件不行(线程少),将build.sh里的make -j(默认启用最大线程)修改为make,防止卡死,电脑性能好可增加数字(线程):如make -j4/j8/jx
    运行过程中报错:

    /home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/System.cc: In member function ‘void ORB_SLAM2::System::Shutdown()’:
    /home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/System.cc:309:13: error: ‘usleep’ was not declared in this scope
      309 |             usleep(5000);
          |             ^~~~~~
    /home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/System.cc:315:9: error: ‘usleep’ was not declared in this scope
      315 |         usleep(5000);
          |         ^~~~~~
    /home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/Viewer.cc: In member function ‘void ORB_SLAM2::Viewer::Run()’:
    /home/xiujie/Documents/ros-project/ORB_SLAM2-master/src/Viewer.cc:160:17: error: ‘usleep’ was not declared in this scope
      160 |                 usleep(3000);
          |                 ^~~~~~
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这些错误表明在编译ORB-SLAM2时,出现了一些问题。具体而言,编译器无法识别 usleep 函数。在C++11中,usleep 已经被标记为过时,并且在头文件 中也不再被包含。

    要解决这个问题,你可以采取以下步骤:
    (1)包含正确的头文件:
    在使用 usleep 函数之前,确保包含正确的头文件。在ORB-SLAM2的 System.cc 和 Viewer.cc 文件中添加以下行:

    #include 
    
    • 1

    目前大部分解决方式都用这个方式,需要修改的文件包括
    只需要在对应的System.cc或其他报错的文件路径中(如下)添加#include , 参见链接:ORB_SLAM2安装与编译报错的解决办法

        ORB_SLAM2/src/LocalMapping.cc
        ORB_SLAM2/src/LoopClosing.cc
        ORB_SLAM2/src/System.cc
        ORB_SLAM2/src/Tracking.cc
        ORB_SLAM2/src/Viewer.cc
        ORB_SLAM2/Examples/Monocular/mono_euroc.cc
        ORB_SLAM2/Examples/Monocular/mono_kitti.cc
        ORB_SLAM2/Examples/Monocular/mono_tum.cc
        ORB_SLAM2/Examples/RGB-D/rgbd_tum.cc
        ORB_SLAM2/Examples/Stereo/stereo_euroc.cc
        ORB_SLAM2/Examples/Stereo/stereo_kitti.cc 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    报错:

    /usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
      122 |       static_assert(is_same::value,
          |                                                                       ^~~~~
    make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:118:CMakeFiles/ORB_SLAM2.dir/src/LoopClosing.cc.o] 错误 1
    make[2]: *** 正在等待未完成的任务....
    make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:244:CMakeFiles/ORB_SLAM2.dir/src/Optimizer.cc.o] 错误 1
    make[1]: *** [CMakeFiles/Makefile2:95:CMakeFiles/ORB_SLAM2.dir/all] 错误 2
    make: *** [Makefile:91:all] 错误 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    解决办法:

    把incloud中LoopClosing.h中的
         typedef map,
            Eigen::aligned_allocator > > KeyFrameAndPose;
    改成下面
        typedef map,
            Eigen::aligned_allocator > > KeyFrameAndPose;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    解决这两个问题,一般就可以编译成功了。

    运行安装ORB-SLAM3

    参考链接:
    ubuntu 20.04+ORB_SLAM3 安装并行全记录(无坑版)(二)

    ./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
    //修改数据集路径
    ./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml /home/xiujie/Documents/ros-project/dataset/MH_01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
    
    • 1
    • 2
    • 3

    注:此时大家会发现,运行ORB_SLAM3的时候,没有画面!,不要慌,是因为可视化界面没有打开
    4. step4:打开可视化界面

    打开mono_euroc.cc的第83行,将“false”改为“true”
    参考链接:ORBSLAM3运行mono_euroc无图像窗口

    ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, **false**);
    
    • 1

    将false改为true。

    双目运行指令为(注意修改自己的数据集路径正确):

    ./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml /home/xiujie/Documents/ros-project/dataset/MH_01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt 
    
    • 1

    更多数据集运行请参考:实操指南:ORB-SLAM3的编译运行

    安装PCL

    此处参考链接:Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+各种相关库的安装

    安装使用PCL,直接使用指令:

    sudo apt-get install libpcl-dev pcl-tools
    
    • 1

    安装octomap,使用指令:

    sudo apt-get install liboctomap-dev octovis
    
    • 1

    测试是否安装成功:PCL是否安装成功测试(手把手超详细版)

    此处用Clion 测试,遇到中文无法输入和显示的问题,clion 版本号是CLion 2023.2.2。解决办法参见:2023.1.3最新版CLion怎么解决中文输出乱码问题(已解决)

    安装evo

    参考链接:Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装

    (1)安装pip:

    # 安装pip2
    sudo apt install python-pip
    #or 安装pip3, 一般安装pip3
    sudo apt install python3-pip
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (2)直接安装(我个人选择源码安装,未采用这种方法):

    pip install evo --upgrade --no-binary evo --user
    #或加速:
    pip install evo --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    • 1
    • 2
    • 3

    (3)源码安装:国内evo源码

    cd evo
    pip install --editable . --upgrade --no-binary evo --user
    
    • 1
    • 2

    这样会很慢,可以通过国内镜像加速,在pip 语句后面增加指定源路径,如下:

    pip install --editable . --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    • 1

    首次运行若遇到:evo_traj:command not found,重启电脑。

    安装时执行指令pip install --editable . --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple, 遇到matplot版本不对
    matplotlib版本不对
    查看自己的matplotlib版本为3.1.2,升级matplotlib版本。
    为解决该问题,使用pip3进行安装升级。
    使用该指令升级到指定版本, 我的升级到3.7.0:

    pip3 install --upgrade matplotlib==3.7.0
    
    • 1

    再次运行指令即可解决问题。

    首次运行若遇到:evo_traj:command not found,重启电脑。

  • 相关阅读:
    java的泛型
    【Scala专栏】字符串与集合
    Windows系统/Linux系统修改远程连接端口号
    目标检测YOLO实战应用案例100讲-雾天场景下低能见度图像 目标检测(中)
    【C++】详解std::mutex
    小米云原生文件存储平台化实践:支撑 AI 训练、大模型、容器平台多项业务
    full mesh
    C++欧几里得算法求最大公约数和最小公倍数
    requires ipykernel package
    c语言源码生成dll文件并供java调用详细教程
  • 原文地址:https://blog.csdn.net/weixin_43592742/article/details/134415646