ORB-SLAM2在window下的配置 (1)

概述


第一篇博客,献给SLAM.

本系列博客,记录的是我在window下配置ORB-SLAM2的全过程。ORB-SLAM2在Linux下的配置详情包括其源码在 [其github主页]上可以了解到。在window上配置稍显麻烦一点,因为那些现有的说明包括CMakeList.txt、依赖库,甚至是源码不能直接照搬,还需要动点脑筋修改才行。我在配置的时候碰到了不少蜜汁问题,也成功摸索出解决方案,现在将其记录于此以作备忘。

首先明确一下我们的目标平台和一些软件工具:

  • window 10, 64位程序
  • C++
  • vs 2017
  • CMake(window版本)

我就不详述怎么安装这些东西了。接下来我们将会用到的源码,根据ORB-SLAM2的要求,我们同样需要以下这些东西:

  • ORB-SLAM2源码
  • Pangolin
  • OpenCV
  • Eigen3
  • DBoW2
  • g2o

其中,opencv的版本2.4以上均可,具体版本看我后面的文章怎么写吧。DBoW2和g2o的源码在ORB-SLAM2的源码中已经有了,我们直接从那里拿出来就好(但也可以去相应的网站下载window版本的源码,特别是g2o,为啥这么说?后面就知道了…)所有提供的网站可能要才能去。

好了,准备差不多结束了,最后阐述一下我的配置思路。首先,我们将会从各个依赖库开始配置起,因为这些源码自带CMakeList.txt,我们用win下的CMake将它们一键配置成vs的工程,然后在vs中生成我们所需要的目标库文件(.dll, .lib),生成的这些东西,我本人是将他们放在专门放package的文件夹中,当然会分类放好,每一个库文件夹下,对应两个文件夹:lib和include. lib的内容就是由vs生成的,include的内容就直接从源码中拿。当然也可以把这些packages拷贝到一个主要工程中(比如ORB-SLAM),当成第三方库,在vs中配置这些库时,使用相对路径,可以实现不同电脑间移动工作。

在vs中,右键项目->新建属性表的方式可以配置这些库的目录,包括lib文件以及头文件的目录,在其他工程中可以轻松地将这些属性表包含进来,完成库的配置。但是,dll文件目录的配置无法通过属性表,只能是在右键项目->属性->调试->环境实现工程间的配置差异。因为这个原因,大多数配置库的教程都会有一步,就是所谓的设置系统环境变量,这也可以实现本机不同vs工程即使不配置dll环境,也可以运行库程序。

这是程序运行的过程决定的,程序运行需要加载dll时,首先它会在自身周围,也即当前目录下寻找,找不到时再去更大的环境中找。如果不设置vs环境,那么程序就会直接去系统环境中寻找dll,相反,如果设置了vs环境,系统环境就会被忽略,无论vs环境下能否找得到。

听起来设置vs环境十分繁琐,但是我仍然使用它,考虑的原因有:
1. 我不能假定别的机器上有跟我一样的库;
2. 随随便便追加系统环境,会让其变得杂乱不堪;
3. 有时候我们需要使用同一个库的不同版本,统一安置在系统环境下的做法就不太可取了。

大概就是这么一回事了。第一次写博客,废话还是太多了点。

你可能感兴趣的:(ORB-SLAM2)