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

(2)配置并编译

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

(3) 检查是否安装成功

cd examples/HelloPangolin
cmake .
make
./HelloPangolin

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/

注意!!!

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

sudo apt-get install libeigen3-dev

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

4.安装Python & libssl-dev

sudo apt install libpython2.7-dev

sudo apt-get install libssl-dev

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

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);
      |                 ^~~~~~

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

要解决这个问题,你可以采取以下步骤:

(1)包含正确的头文件:

在使用 usleep 函数之前,确保包含正确的头文件。在ORB-SLAM2的 System.ccViewer.cc 文件中添加以下行:

#include <unistd.h>

目前大部分解决方式都用这个方式,需要修改的文件包括

只需要在对应的System.cc或其他报错的文件路径中(如下)添加#include <unistd.h>, 参见链接: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 

报错:

/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<typename _Alloc::value_type, value_type>::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

解决办法:

把incloud中LoopClosing.h中的
     typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
改成下面
    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

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

运行安装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

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

  1. step4:打开可视化界面

打开mono_euroc.cc的第83行,将"false"改为"true"

参考链接:ORBSLAM3运行mono_euroc无图像窗口

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

将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 

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

安装PCL

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

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

sudo apt-get install libpcl-dev pcl-tools

安装octomap,使用指令:

sudo apt-get install liboctomap-dev octovis

测试是否安装成功: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

(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

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

cd evo
pip install --editable . --upgrade --no-binary evo --user

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

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

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

安装时执行指令pip install --editable . --upgrade --no-binary evo --user -i https://pypi.tuna.tsinghua.edu.cn/simple, 遇到matplot版本不对

查看自己的matplotlib版本为3.1.2,升级matplotlib版本。

为解决该问题,使用pip3进行安装升级。

使用该指令升级到指定版本, 我的升级到3.7.0:

pip3 install --upgrade matplotlib==3.7.0

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

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

相关推荐
深圳市青牛科技实业有限公司41 分钟前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
hjjdebug1 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal
其乐无涯1 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
Spring_java_gg1 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
✿ ༺ ོIT技术༻1 小时前
Linux:认识文件系统
linux·运维·服务器
会掉头发2 小时前
Linux进程通信之共享内存
linux·运维·共享内存·进程通信
我言秋日胜春朝★2 小时前
【Linux】冯诺依曼体系、再谈操作系统
linux·运维·服务器