本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客
有这些依赖项:
https://github.com/raulmur/ORB_SLAM2
主要参考下面的博文
ORB-SLAM2 初体验 —— 配置安装 - MingruiYu - 博客园 (cnblogs.com)
注意在安装依赖项Pangolin时,如果是从GitHub直接git的最新版本的Pangolin,那么编译安装的时候就会出现问题
1、sudo apt install libeigen3的版本可能不够,可以自己下载编译安装eigen库
2、eigen库的位置需要注意,一般是“/usr/include/eigen3”,而这个新版本的Pangolin好像是在“/usr/local/include”中找,所以最好是两个位置都存一份
3、新版的Pangolin包中“varstate.h”头文件包含了
#include <any>
而这个需要C++17,ThinkPad双系统装的是Ubuntu16.04,而**Ubuntu16.04 支持的是C++14版本(gcc 5.4.0),并不支持C++17,**这就需要升级gcc,可以参考下面的博客
https://blog.csdn.net/davidhopper/article/details/79681695#:~:text=幸运地是,Linux系统标准编译器GCC能完美地支持C%2B%2B 17标准,但需升级到7.0以上版本;不幸地是,Ubuntu 16.04版本自带的GCC版本为5.4.0,可支持C%2B%2B 14标准,但基本不支持C%2B%2B 17标准。 怎么办? 那就从零开始,从GCC官方网站下载、安装最新标准的编译器吧。,一、下载GCC 7.3.0版本源代码 进入GCC官方网站: https%3A%2F%2Fgcc.gnu.org%2F ,发现目前最新版本是7.3.0(2018年3月24日 )。 本来想省点事,直接下载二进制版本进行安装,但打开相关页面后,发现居然没有Ubuntu系统的二进制版本,这不是赤裸裸地歧视吗?
但是看着过程还是很繁琐,师兄路过提醒,装低版本的Pangolin不可以嘛,我想也是,ORB-SLAM2是17年开源的,用的应该就是旧版的Pangolin
于是编译安装高翔博士视觉SLAM十四讲3rd_party中的Pangolin,非常顺畅
安装好依赖后再编译安装ORB-SLAM2就非常顺畅了
安装完成后测试,打开终端,输入:
cd ORB_SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ../rgbd_dataset_freiburg1_desk
运行过程截图如下:
运行输出如下:
ORB-SLAM2 Copyright (C) 2014-2016 Raul Mur-Artal, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.Input sensor was set to: MonocularLoading ORB Vocabulary. This could take a while...
Vocabulary loaded!Camera Parameters:
- fx: 517.306
- fy: 516.469
- cx: 318.643
- cy: 255.314
- k1: 0.262383
- k2: -0.953104
- k3: 1.16331
- p1: -0.005358
- p2: 0.002628
- fps: 30
- color order: RGB (ignored if grayscale)ORB Extractor Parameters:
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7-------
Start processing sequence ...
Images in the sequence: 613New Map created with 110 points
-------median tracking time: 0.0502065
mean tracking time: 0.0544293Saving keyframe trajectory to KeyFrameTrajectory.txt ...trajectory saved!
最终相机的运动轨迹以txt格式存储起来
出现了这个问题:
QObject::~QObject: Timers cannot be stopped from another thread
GitHub上有人提出了Issues
https://github.com/raulmur/ORB_SLAM2/issues/135
看大家暂时没有很好的解决办法,但不影响轨迹的绘制与存储,所以暂时先不仔细考虑了