ORBSLAM3 Win10 VS2017 配置简明指南

目录

    • 前言
    • 环境
    • 第三方库的构建与安装
    • 第三方库的使用
    • 源代码
    • 附录:需要额外添加的预编译器定义
    • 附录:部分库文件清单
    • 最后

前言

  投入许多时间,今天终于将ORBSLAM3在Win10上配置成功。过程中并没有做很详细的记录,主要是因为大部分问题网上的资料已经足够,没必要将造轮子的理论再誊抄一遍。尽管没有详细的过程,但是我认为配置的整体思路还是很有借鉴意义的,现在记录下来,一者是作为自己日后的参考,二来则可以给他人带来方便。闲言少叙,书归正传,指南如下:

环境

  Win10
  VS2017
  ORB-SLAM3_V0.3
  Release x64 /MT

第三方库的构建与安装

  第三方库的源代码来自:

https://github.com/chanho-code/ORB-SLAM3forWindows

  这位仁兄的第三方库,经过他自己的修改,构建编译起来几乎一路绿灯,真是良心之作。这里要注意的是,他所提供的所有第三方库,不仅构建出 x64 Release MT 配置下的静态链接库,还要再构建出相应的动态链接库。

  我选择在工程目录中新建 3rd 文件夹存放所有的第三方库,各个库再按照名称新建文件夹进行存放。每个库文件夹内再新建两个文件夹,include 文件夹存放头文件,lib 文件夹存放相应的静态与动态链接库,大抵是下图这个样子:
ORBSLAM3 Win10 VS2017 配置简明指南_第1张图片
  所有用到的第三方库如下:
ORBSLAM3 Win10 VS2017 配置简明指南_第2张图片
  要注意作者只提供了以下几个库:

  • DBoW2 按照教程编译安装即可。
  • Eigen3 作者提供的 Eigen3 库,在编译 g2o 时会报出存在弃用函数的错误,我直接将作者提供的 Eigen 更换为 ORB-SLAM2 上的 Eigen 版本,问题完美解决。读者也可以参照如此思路,更换Eigen版本。
  • g2o 按照教程构建编译即可。
  • Pangolin 我没有用作者的库,而是直接沿用了 ORB-SLAM2 的库。这里一定要注意,引用的 Pangolin 的库文件一定要完整,只有一个 Pangolin.lib 的话貌似是跑不了的,会有各种无法解析的外部符号。我刚开始按照作者的教程构建编译,最后就只有一个 Pangolin.lib,我认为这可能和作者在Cmake 中禁用的 LIBJPEG LIBPNG 等依赖库有关。因此构建编译的时候最好还是把那些依赖项都搞上,不要给Disable掉。

  其他的库文件都需要自己上官网下载:

  • Boost 1.74 从官网下载,采用 x64 模式只编译其中的 serialization 等几个模块就成,具体的编译命令如下:

b2.exe --toolset=msvc-14.1 architecture=x86 address-model=64 link=static --build-type=complete --with-archive --with-algorithm --with-serialization

  • glew 2.1.0 上官网下载,记忆中貌似是 g2o 的依赖库。
  • OpenCV 3.2.0 上官网下载,注意直接下载 Windows 版本,这样就可以直接使用,不必再构建编译。

第三方库的使用

  第三方库的文件夹的架构已经如上所示,下面讲一下在 VS 2017 上的配置方法:

  其实主要就是创建属性表,所有用的属性表如下

ORBSLAM3 Win10 VS2017 配置简明指南_第3张图片

  注意在挨个库配置的时候,最好弄个 Test 工程,每配置一个库,编译运行一下相关的简单的样例程序,看看有没有找不到头文件或者外部符号无法解析这样的问题,便于及时检验效果、排查错误。

  属性表主要修改以下几项:

  • VC++目录 - 包含目录 include 文件夹的目录,最好采用相对路径
  • VC++目录 - 库目录 lib 文件夹的目录,同上
  • 链接器-输入-附加依赖项 lib 文件夹下的静态链接库
  • C/C++ - 预处理器 - 预处理器定义 有些库可能需要添加标明 Windows 运行环境、或者忽略某些错误的预编译指令,这个我在下面的附录中专门记录了一下,读者可参考,但具体还是要以编译时的情况为准。如有出入,还烦请读者自行添加。
  • ORBSLAM3项目属性 - 调试 - 环境 在这里添加动态链接库的路径,如果运行之后还是显示缺失动态链接库的话(例如OpenCV),则将相应的动态链接库直接复制到运行目录下。比如,我这里的内容就是:

path=…/3rd/OpenCV3_2/lib;
path=…/3rd/DBoW2/lib;
path=…/3rd/g2o/lib;

源代码

  源代码也来自上述那位仁兄,只不过需要将代码里面的 #include 的路径修改一下即可。

  此外,g2o 库中也存在几处代码错误的报错,只需要直接上网搜索并修正即可,不是什么大问题。

  注意,全程的代码编译均采用 Release x64 /MT 进行。

附录:需要额外添加的预编译器定义

  ORBSLAM3项目属性中:

_CRT_SECURE_NO_WARNINGS
_WINDOWS
COMPILEDWITHC11

  g2o 属性表中:

_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

附录:部分库文件清单

  Pangolin(有几次都是 Pangolin 的链接问题,因此记录参考如下,但是不保证运行必需)

  • pangolin.lib
  • glew.lib
  • jpeg.lib
  • libglew_shared.lib
  • libpng16.lib
  • libpng16_static.lib
  • zlib.lib
  • zlibstatic.lib
  • glew.dll
  • libpng16.dll
  • zlib.dll

最后

  具体配置过程中的很多细节,我也已经有些模糊,因此,上述指南的内容,我也无法保证百分百正确——当然大部分肯定是没问题的。只是如果遇见什么新的问题,就烦请读者灵活解决。

  最后再鸣谢一下网上各种指北指南的前辈,本指南也同时大量包含他们的时间。

  Over.

你可能感兴趣的:(SLAM,kotlin,windows,slam)