VDO-SLAM的编译和运行

最近在研究动态SLAM,发现一个少有的不基于语义信息的动态SLAM系统(修正,也是基于语义信息的,语义信息在数据库中),且功能相对完整,所以码一下。
论文地址:https://arxiv.org/pdf/2005.11052v2.pdf
代码地址:https://github.com/halajun/vdo_slam

1.编译

如果之前有编译成功ORB-SLAM的朋友,编译这个应该不会有太大问题。我踩了一个上午的坑(哭),终于编译成功了

1.依赖库
在作者的githut上要求:

gcc、g++:第9版本以上(这里有问题)

Eigen3:3.1.0 以上

OpenCV:3.0以上

g2o :这里用的是作者代码包里提供的g2o模型,而不是自己的。
这个库会在我们运行 build.sh 文件时候帮我们自动编译。
编译前需要修改主目录下的CmakeList.txt文件的76-78行,把76行注释掉,改为78行(ubuntu系统下)

# for mac os (default)
#${PROJECT_SOURCE_DIR}/dependencies/g2o/lib/libg2o.dylib
# for linux (ubuntu)
${PROJECT_SOURCE_DIR}/dependencies/g2o/lib/libg2o.so

然后就可以直接编译了

chmod +x build.sh
./build.sh

2.g2o出错

当然,怎么可能这么顺利。我遇到的情况是dependencies/g2o里面的编译会报出一大堆错误,起初的时候在别的博客里面看到Eigen3必须安装3.1.0的版本,而且g2o的报错也确实是一些矩阵语句的错误,于是我又捣鼓了半天,在ubuntu里面装了两个版本的Eigen(心疼我的电脑)。后来再次编译,发现还是这些错误。

这时候,我学聪明了,在编译报错的时候立即按下ctril+C,关闭编译,查看最开始的报错,发现错误其实出现在C++的标准上:

This file requires compiler and library support for the ISO C++ 2011 standar

才发现我的g++和gcc一直是第5版本…

locate gcc | grep -E "/usr/bin/gcc-[0-9]" # 检查gcc现有版本
locate g++ | grep -E "/usr/bin/g\+\+-[0-9]" # 检查g++现有版本

找到问题所在,但我并不想升级(担心以前的程序会全部作废),就直接在VDO_SLAM-master/dependencies/g2o/CMakeLists.txt里加入:

SET( CMAKE_CXX_FLAGS "-std=c++11 -O3")

然后再编译一次:

chmod +x build.sh
./build.sh

这回编译成功了。

2.运行

在作者的说明里给出了两个demo,我用的是 demo-kitti 的版本,下载完成后直接解压到和master文件的同一个目录下,运行:

./example/vdo_slam example/kitti-0000-0013.yaml ../demo-kitti

成功,终于可以吃饭了,明天论文代码看起~

在这里插入图片描述

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值