ORB-SLAM2环境搭建、出现问题及解决方法

一、前言

        这个东西是真的难顶,经过昨天一天不断的痛苦重装双系统、不断更换软件版本...最后终于跑起来了示例程序,现在将我遇到的问题及解决分享给大家。

        问题主要是三方面:一是版本适配问题(每个库都能安装好但是编译orb-slam2时出错)、第二是安装各种库时出错误、第三是不良博客的误导。

        这里我用的系统是 ubuntun 18.04 版本。

二、安装步骤:一定要按顺序!!!

2.0 安装前需要安装一些工具

 sudo apt-get install cmake

 sudo apt-get install git

 sudo apt-get install gcc g++  

2.1 安装高版本cmake

        由于系统自带的cmake版本过低,导致有些库不满足cmake的minmum_requried,因此在安装库之前我们要升级以下cmake版本。

2.1.1 网上提供的坑爹操作!!!千万不要这么做

        千万不要卸载删除ubuntu原有的cmake,否则之前经过原有cmake编译过的文件将也会被删除,比如 ros。
        千万不要使用下面这句命令删除原有的 cmake !!!!!!
        超级大坑,坑爹操作!!!:

sudo apt-get autoremove cmake

2.1.2 正确操作

1.cmake下载地址

Cmake下载网址: https://cmake.org/download/

2.cmake安装及配置

        我这里安装的是3.21.3版本的,在官网下载好.sh文件后,将它复制到主目录下

ORB-SLAM2环境搭建、出现问题及解决方法_第1张图片

        给它执行权限然后执行:

chmod +x cmake-3.21.3.linux-x86_64.sh
./cmake-3.21.3.linux-x86_64.sh

        将解压出来的包移到 /opt 目录下:

sudo mv cmake-3.21.3-Linux-x86_64 /opt/cmake-3.21.3  

        建立软链接:

sudo ln -sf /opt/cmake-3.21.3/bin/* /usr/bin/   

        测试cmake安装:

cmake --version

ORB-SLAM2环境搭建、出现问题及解决方法_第2张图片

         cmake安装成功之后,不要忘记将cmake的文件路径添加至 .bashrc里面:

# 进入~/.bashrc
sudo gedit ~/.bashrc
# 输入以下内容
export  PATH=$PATH:/opt/cmake-3.21.3/bin

        保存 .bashrc的更改和更新source一下:

source ~/.bashrc 

2.2 安装Eigen

1.用命令安装

选择想要参与的活动

2.更改安装位置

        将Eigen文件夹放在/usr/include 下面

 cd /usr/include/eigen3 
 sudo cp Eigen/ .. -R 

2.3 安装 Pangolin0.5版本(高版本会出现和orbslam2编译失败)

1.依赖安装

sudo  apt-get  install  libglew-dev
sudo  apt-get  install  libboost-dev libboost-thread-dev 
sudo  apt-get  install  libboost-filesystem-dev
sudo  apt-get  install  libpython2.7-dev
sudo  apt-get  install  build-essential

2.下载  Pangolin0.5版本

GitHub - stevenlovegrove/Pangolin: Pangolin is a lightweight portable rapid development library for managing OpenGL display / interaction and abstracting video input.下载zip压缩包解压(v0.5版本)

ORB-SLAM2环境搭建、出现问题及解决方法_第3张图片

3.安装

解压后进入文件夹

cd  Pangolin
mkdir  build
cd  build
cmake -DCPP11_NO_BOOSR=1 ..
make
sudo make install

2.4 安装opencv3.4.5+opencv_contrib

2.4.1 依赖下载

注意 opencv与opencv-contrib的版本应该一致

opencv 下载 opencv官网
opencv_contrib 下载 github

sudo apt-get update
sudo apt-get upgrade
//依赖包
sudo apt-get install build-essential  
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev  
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev  
sudo apt-get install qt5-default ccache libv4l-dev libavresample-dev  libgphoto2-dev libopenblas-base libopenblas-dev doxygen  openjdk-8-jdk pylint libvtk6-dev
sudo apt-get install pkg-config

其中可能遇见无法安装libjasper-dev的问题,类似下面的页面

XXX@XXX:~/Files/opencv-3.1.0$ sudo apt-get install libjasper-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libjasper-dev

解决方案:

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

其中libjasper1是libjasper-dev的依赖包,然后再次安装

sudo apt install libjasper1 libjasper-dev

2.4.2  安装opencv3.4.5+opencv_contrib

先解压下载的opencv和opencv_contrib包,建议直接将下载下来的包直接放至home地址下,这样,zip格式的解压代码如下:

sudo unzip opencv-3.4.5.zip
sudo unzip opencv_contrib-3.4.5.zip

然后将解压后的contrib文件移动至opencv-3.4.5文件下

sudo cp -r opencv_contrib-3.4.5 opencv-3.4.5

并在opencv-3.4.5文件夹中新建build文件夹用于后续编译和生成。

cd opencv-3.4.5                               #进入opencv文件夹
sudo mkdir build                              #建立build文件夹方便后续操作

进入bulid文件夹并进行第一次cmake

cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv-3.4.5/opencv_contrib-3.4.5/modules/ -D OPENCV_ENABLE_NONFREE=True ..

注意**-DOPENCV_ENABLE_NONFREE=True**别把-D与OPENCV_ENABLE_NONFREE=True分开,这句就是使用nonfree模块,包括sift等有专利权的模块。
注意后面的两点不可省略,代表其他参数默认。
注意 OPENCV_EXTRA_MODULES_PATH 代表你放置opencv_contrib的modules文件夹的真实地址,如果直接将opencv放在home下那地址与上述参数相同,只需要注意版本号即可。

2.4.3  安装opencv3.4.5+opencv_contrib的问题及解决

1.ippicv和face_landmark_model.dat下载失败的解决方案

1 先下载文件

链接
链接:ippcv 提取码:wjl1
链接:fippicv和face_landmark_model.dat提取码:wjl1

2 修改相应的文件

自己的地址/opencv-3.4.5/3rdparty/ippicv/ippicv.cmake

做以下修改。 将ippicv.cmake文件下的第47行替换为本地路径

"改为相应地址"           #本地路径,与你自己下载存放的地址相关
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"      #原下载地址
#记得改为本地ippcv的地址

这样, ippicv和face_landmark_model.dat下载失败的问题就得以解决。
生成完毕后会生成如下的类似界面

--   Install path:                  /usr/local
-- 
--   cvconfig.h is in:              /home/files/opencv-3.4.5/build
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/files/opencv-3.4.5/build

然后进行make

sudo make -j8   #j后面的数字代表用几个线程编译,此为8线程

2.fatal error: boostdesc_bgm.i: vgg_generated_80. vgg_generated_120.i没有那个文件或目录

这个问题是一堆文件的缺失,包括
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
所以只需要将这些文件下载然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
当然,这些文件的下载路径可以在cmake//日志中查看,直接复制其下载地址到网页可以看该到文件的源码,直接拷贝源码并生成同名文件然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
或者从百度网盘中下载,然后解压并将这些文件放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
链接
密码: a2c1

3.opencv的stitiching模块中对xfeatures2d的调用地址问题。

这些问题解决之后,还会遇见最后一个问题,就是

 opencv安装opencv_contrib出现无法打开包括文件: “opencv2/xfeatures2d/cuda.hpp”的解决方法:
这里比较简单的就是直接改掉头文件

解决办法: 在CMakeLists.txt增加以下内容: INCLUDE_DIRECTORIES("/works/opencv-3.4.0/opencv_contrib-3.4.0/modules/xfeatures2d/include") 
CMakeLists.txt文件所在路径为: <你的路径>/opencv-3.4.0/modules/stitching/ CMakeLists.txt 

解决完这些错误,可以继续

sudo make install

到达这一步opencv安装成功。

2.4.4 配置环境变量

打开文件

sudo gedit /etc/ld.so.conf.d/opencv.conf

在空白文档中添加

/usr/local/lib

ORB-SLAM2环境搭建、出现问题及解决方法_第4张图片

 

接下来配置库

sudo ldconfig

更改环境变量

sudo gedit /etc/bash.bashrc

在文件的最后添加

export PKG_CONFIG_PATH=/usr/local/opencv/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv/lib

ORB-SLAM2环境搭建、出现问题及解决方法_第5张图片

 测试:

ORB-SLAM2环境搭建、出现问题及解决方法_第6张图片

 安装成功!

2.5 安装DBoW2 and g2o

已经包含在第三方库无需安装!

2.6 安装及配置ORB_SLAM2 

2.6.1.下载ORB_SLAM2

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

 再将它放到home目录中。

2.6.2.编译ORB-SLAM2

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

如果执行不了这个脚本,要给予build.sh执行权限

sudo chmod 777 build.sh

2.6.3 错误及解决

1.error: ‘usleep’ was not declared in this scope

ORB-SLAM2环境搭建、出现问题及解决方法_第7张图片

解决方式为在ORB_SLAM2/include/System.h中添加一句

#include "unistd.h"

2.之后就可以执行成功了

ORB-SLAM2环境搭建、出现问题及解决方法_第8张图片

 

3.  测试安装

 下载数据集

有TUM、KITTI、EuRoC三种数据集,本实验使用TUM数据集
通过如下链接进行下载:http://vision.in.tum.de/data/datasets/rgbd-dataset/download
选择如下红框位置的下载的(过程可能会有点慢)

ORB-SLAM2环境搭建、出现问题及解决方法_第9张图片

放到orbslam的data目录下,data目录需要自己创建。

ORB-SLAM2环境搭建、出现问题及解决方法_第10张图片

 运行下列命令:

python associate.py data/rgbd_dataset_freiburg1_xyz/rgb.txt data/rgbd_dataset_freiburg1_xyz/depth.txt > data/rgbd_dataset_freiburg1_xyz/associations.txt

./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM1.yaml data/rgbd_dataset_freiburg1_xyz data/rgbd_dataset_freiburg1_xyz/associations.txt

ORB-SLAM2环境搭建、出现问题及解决方法_第11张图片

安装成功!

三、参考文献

cmake升级、更新(ubuntu18.04)_Boys_Wu的博客-CSDN博客_cmake升级

ubuntu 18.04 安装opencv3.4.5+opencv_contrib_可怜的考研人的博客-CSDN博客_opencv_contrib-3.4.5

你可能感兴趣的:(orb-slam2,c++,slam,cmake,ubuntu,orb-slam)