ORB-SLAM2 的安装和编译

ORB-SLAM2是一个非常经典的视觉SLAM 开源方案,可以作为你学习SLAM的范本。

本文主要介绍如何在LINUX操作系统上,及ubantu上使用视频运行ORB-SLAM2。也列出了本人在安装过程中出现的出现的问题以及解决问题的相应方案。

下面是安装及编译的流程,请大家严格遵守安装顺序,不然会出现依赖错误。

  1. 从github.com下载ORB-SLAM2的代码。地址是:
    添加链接描述
    可以在github上直接download ZIP压缩文件。也可在安装git之后,用以下命令在终端上下载
git clone https://github.com/raulmur/ORB_SLAM2

最后我们会下载得到这个文件在这里插入图片描述
2. 在打开上述github链接后,下翻至底会看到 2.Prerequisites这表示运行ORB-SLAM2需要准备这些环境在这里插入图片描述我们暂且不用着急,一条一条按步骤安装
他说我们测试这个库在ubantu版本12.04,14.04和16.04上,但是本人是在ubantu20.04上测试的,完全没有问题。我们还需要安装C++11或C++0x编译器。在编译ORB-SLAM2过程中我们需要cmake,所以没有安装的同学可以使用这条命令下载

sudo apt install cmake 

接下来我们需要安装Pangolin,我推荐大家从此链接中下载添加链接描述
在下载了ZIP压缩包后解压缩放在ubantu的/home下(此处只要是英文路径都可以),但别急着安装Pangolin我们还需要安装一些必要的库
OpenGL

sudo apt install libgl1-mesa-dev

Glew:

sudo apt-get install libglew-dev

Boost:

sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

Python2/Python3:

sudo apt-get install libpython2.7-dev

接下来就可以安装Pangolin了

cd Pangolin
mkdir build 
cd build
cmake ..
cmake --build .

好了到此为止,Pangolin已经安装完毕了
再就是OpenCV的安装,关于Opencv的安装我推荐大家去看这个博主的博文写的非常的详细
添加链接描述
在opencv安装完成后我们需要安装 Eigen3,我推荐大家安装版本 3.2.10这个版本目前是最稳定的bug较少。
大家可以在这个网站上添加链接描述下载。
点击如图所示的ZIP文件下载后解压放到ubantu中,进入eigen文件加中执行以下步骤

mkdir build
cd build
cmake ..
sudo make install

安装后,头文件安装在/usr/local/include/eigen3中。这一步十分重要我们需要去检查安装到的路径。不然后在后续的ORB-SLAM2编译过程中会找不到文件。后续我们会在问题后告诉大家如何解决
最后一步的 DBoW2 和 g2o ,他们已经存在于ORB-SLAM2文件夹中的 Thirdparty文件夹中
安装依赖项

sudo apt-get install cmake libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev //g2o的依赖项
sudo apt-get install libboost-dev //DBoW2的依赖项

所以接下来我们就可以编译ORB-SLAM2了。 哇呜!

cd ORB_SLAM2-master
chmod +x build.sh
./build.sh

如果你最后能得到这个界面说明安装成功了
在这里插入图片描述
但一般来说会出现好几个问题,下面是我在安装过程中出现的问题。
在这里插入图片描述
error “Allocator::value_type must be same type as value_type”
解决方法
修改文件 /include/LoopClosing.h 找到代码

Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

修改为

Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

或是出现usleep(x000的错误
解决方法
查询每个usleep错误所对应的头文件是什么,在进入相应的头文件中添加

#include <unistd.h>

若是出现找不到eigen文件的情况
在这里插入图片描述

我们首先需要check,eigen3安装在什么路径下了
如果是在这个路径下在这里插入图片描述
我们需要执行以下命令来让编译时能找到文件夹

sudo cp -r /usr/local/include/Eigen /usr/include
sudo cp -r /usr/local/include/eigen3 /usr/include

在ORB-SLAM2编译过程中偶尔会遇到一些warning但是不会影响我们的编译成功。
以上就是我遇到的问题。这个笔记也许也会帮助到大家解决其他我没有遇到的问题
添加链接描述

最后祝愿大家都能成功运行ORB-SLAM2开始自己的学习和研究

拜拜~

Logo

更多推荐