zl程序教程

您现在的位置是:首页 >  其他

当前栏目

ORB_SLAM3在ubuntu18.04下的环境搭建及测试

测试 环境 搭建 ubuntu18.04 ORB
2023-09-27 14:20:14 时间

sudo 

目录

一,安装对应的第三方依赖库

1.1,编译opencv

1.2、Pangolin安装

1.3、Eigen 3安装

1.4、boost安装

1.5 DBoW2 and g2o and Sophus

1.6,下载ORB_SLAM3

1.7、Python

1. 8、ros环境的搭建

二、ORB_SLAM3的工程编译

 三、使用数据集跑例程

3.1 数据集下载

3.2 数据集测试例程

3.2.1 V101数据集测试

3.2.2 单目测试


一,安装对应的第三方依赖库

1.1,编译opencv

切记在安装ros前就将opencv安装好,否则会出问题

刚开始安装的opencv的版本是3.4版本的

但是到编译到后面的时候,编译发生错误,原来需要版本是大于4.4 版本的 

 可以修改编译文件,将opencv的版本更改为虚拟机上安装的opencvd的版本

ORB-SLAM3的作者使用的是以下的版本 

1.2、Pangolin安装

 首先下载该软件依赖的一

  1. sudo apt-get install libglew-dev  
  2. sudo apt-get install cmake  
  3. sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

Pangolin安装包的下载地址为:

GitHub - stevenlovegrove/Pangolin: Pangolin is a lightweight portable rapid development library for managing OpenGL display / interaction and abstracting video input.https://github.com/stevenlovegrove/Pangolin

执行后的文件夹中的内容为:

  1. cd Pangolin  
  2. mkdir build  
  3. cd build  
  4. cmake .. 
  5. make  
  6. sudo make install


最后一定加上一句话:

sudo ldconfig

测试是否安装成功

1.3、Eigen 3安装

直接使用命令安装的方法: 

 

安装完成后,需要将eigen3中的文件夹Eigen放在include中,整个linux系统才能使用

linux 下面如何进行安装 Eigen .

调整,默认安装路径是:/usr/include/eigen3

cd  /usr/include/eigen3

需要执行复制命令,将Eigen文件夹放在/usr/include 下面

sudo cp Eigen/ .. –R

1.4、boost安装

sudo apt-get update
sudo apt-get install libboost-all-dev

1.5 DBoW2 and g2o and Sophus

DBoW2 and g2o (这两个不需要单独安装,ORB-SLAM3的作者将这两个放在总工程的第三方依赖目录中。编译的时候会自动编译)

DBow2算法主要用于重定位或者称作闭环检测,英文叫loop closure或者place recognition。 

DBOW2算法的全称为Bags of binary words for fast place recognition in image sequence,使用的特征检测算法为Fast,描述子使用的是brief描述子

1.6,下载ORB_SLAM3

下载完后,一定要检测下面这个文件夹是否是具有三个文件夹,分别是用来配置三个环境的。

使用命令下载为:

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

1.7、Python

 

1. 8、ros环境的搭建

      ROS环境,和作者环境保持一致,搭建melodic环境。

二、ORB_SLAM3的工程编译

官网上的编译方法

 按照上面的环境的搭建,在编译过程中主要遇到了两个问题

1)问题1
编译过程中出现internal computer error,即内存不足的问题。

解决方法有两个方法

1.将虚拟机的内存扩容

2)问题2

OpenCV版本的问题,解决方法在opencv环境安装部分已经阐述

如下图所示,编译的接管显示为这样,表示编译环节已经完成

 三、使用数据集跑例程

3.1 数据集下载

 EuRoC数据集由两个针孔摄像头(pinhole)和一个惯性传感器(IMU)记录得到的数据EuRoC 数据集http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

进入主页,进行链接的复制,然后新开浏览器粘贴链接进行下载 

3.2 数据集测试例程

3.2.1 V101数据集测试

1,创建一个新的文件夹Dtasets,将下载好的数据的压缩包解压,

  

 2)将解压后的文件夹mav0移动到文件夹Dtasets目录下

3)在ORB_SLAM3文件夹下,打开终端,输入命令

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ./Datasets ./Examples/Stereo/EuRoC_TimeStamps/V101.txt

程序运行后的结果,如图所示:

3.2.2 单目测试

      euroc_examples.sh脚本中提供了各种大同小异测试指令,读者可以很容易根据本文给出的指令做出相应修改。以下给出的是单目的测试指令。

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml /你喜欢的位置/MH_01_easy ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono

     单目的测试脚本有个坑,能够成功运行,但不显示图像。其原因是/Examples/Monocular/mono_euroc.cc 中不知道为什么禁用了UI,将如下代码中false改为true即可。

注意:修改结束后需要回到主目录ORB-SLAM3中 ,打开终端,重新进行编译,编译后运行上面的命令,就可以显示出来图像。

测试结果如下图所示:

四、在主板nano上编译ORBSLAM3

编译的方法和上面的流程是一样的,只是NANOd的内存会小一些,编译速度没有在PC上面快。遇到了下面两个问题,解决方法为:

问题1: 

分区的解决方法

C++ 错误解决 —— internal compiler error - Cyril_Wu - 博客园

 

2.缺库的解决方法

Ubuntu系统:sudo apt-get install libssl-dev

五、移植到其他未编译环境的方法

第一步安装依赖包:

sudo apt-get install libglew-dev  

第二步梁所有ORB-SLAM3编译后依赖的动态库放置在lib文件中,并添加到环境变量文件bashrc中

添加如下的语句: 

 

 执行

source ~/.bashrc

第三步将缩减后的编译好的包进行拷贝

 对应的ORB-SLAM3的lib中的动态库有,下图中的exampples中,是可执行文件,在部署的时候也可以进行删除不必要的使用的内容:

 第四步:运行,还是拿钱买你的第一个例子为准:

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ./Datasets ./Examples/Stereo/EuRoC_TimeStamps/V101.txt