cmake怎么编译 eigen c++_Ubuntu14.04下编译运行ORB-SLAM2(示例:双目KITTI)

ae0dae5daa1ccebec519a2a21cf6bada.png

代码终于读的还算差不多了,现在要跑通ORB-SLAM2。之前想在Windows下跑通结果失败了...果然像高博说的搞SLAM的话还是老老实实用ubuntu吧,不过在Windows下建立好工程后倒是帮助我用VS2013方便地阅读了代码,也算很有收获。Ubuntu下跑通大概花了我一个晚上,作为阶段性胜利的纪念特记录于此。

参考了很多大佬们的文章,将主要的博文等链接罗列如下:

ORB_SLAM2编译与测试(一) - woft王 - 博客园

https://blog.csdn.net/youngpan1101/article/details/58027049

ORB-SLAM2:

raulmur/ORB_SLAM2​github.com
ed51844b2b5cd2763e51eed811299e80.png

可能有些朋友网络不好,除了KITTI这种过大的文件,我会尽量提供百度云的链接。

KITTI数据集下载链接,用迅雷下载比较好(20个g左右):

https://s3.eu-central-1.amazonaws.com/avg-kitti/data_odometry_gray.zip


1.安装各种依赖

  • Eigen

我第一次先安装Pangolin结果出错了,后来发现原因是没有在安装Pangolin之前先安装Eigen。保险起见建议先安装Eigen。

sudo apt-get install libeigen3-dev
  • Pangolin

先安装依赖

#安装Glew  
sudo apt-get install cmake         

然后下载源码编译安装

cd Pangolin
mkdir build

我参考高博《视觉slam十四讲》提供的代码文件,先从github上下载Pangolin代码压缩包,解压后在其文件夹下打开终端,编译安装。(下载地址:stevenlovegrove/Pangolin)

Pangolin下载链接:https://pan.baidu.com/s/15kdtdkM4evxteorH54X8vw

提取码:0z75

解压代码的压缩包后:

cd 
  • OpenCV

接下来安装的是让我没想到的最头疼的OpenCV。因为ORB-SLAM2作者说他们是用OpenCV 2.4.11 和 OpenCV 3.2测试的,然后我比较倾向于选择新的版本,因此我配置了OpenCV3.2版本。据说3.0之后把一些开发中的代码分到了contrib之中,所以要下载两个源码的压缩包:opencv-3.2.0.zip/opencv_contrib-3.2.0.zip。

以上两文件下载

链接:https://pan.baidu.com/s/1kvokG_FzAxXsITVHCqpZjQ

提取码:llql

链接:https://pan.baidu.com/s/1FY92p4RG1f_ElplU7TD8XQ

提取码:gzrs

依赖的安装(不放心的话可以多搜一些文章把各种所谓的依赖都安装一下)

sudo apt-get install build-essential 
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

解压前面说的opencv-3.2.0.zip / opencv_contrib-3.2.0.zip两个文件。我把它们放在了Ubuntu主文件夹之下,即两个路径分别为:~/opencv-3.2.0 和 ~/opencv_contrib-3.2.0。然后进入 ~/opencv-3.2.0:

cd opencv-3.2.0 
sudo mkdir build 

注意最后cmake的一行,<path to opencv_contrib-3.2.0/modules/> 在我的路径下就是 ~/opencv_contrib-3.2.0/modules

到这时,稍等一会儿,不出意外的话会在终端中看到它在试图下载东西,过一会看似结束了,仔细一看会发现其实有错误,cmake没有成功。这时需要我们下载好两个文件放到对应文件夹下,若果文件夹中已有我们准备的文件那么就替换它。

文件1:ippicv_linux_20151201.tgz

路径1:opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/

文件2:protobuf-cpp-3.1.0.tar.gz

路径2:opencv_contrib-3.2.0/modules/dnn/.download/bd5e3eed635a8d32e2b99658633815ef/v3.1.0/

以上两文件下载(由于百度云的错误和谐导致我不得不压缩起来)

链接: https://pan.baidu.com/s/1VorzKC685uwZKsjml3Tu3w

提取码: 2k1k

替换好之后,我们重新执行上面的最后一条指令进行cmake。最后编译安装:

#同时启用四个processing unit编译,不保险的话可以用 nproc 查看数量,不够四个就直接sudo make
sudo make -j4 
sudo make install

编译安装完成后可以查看一下opencv版本:

pkg-config --modversion opencv
  • DBoW2 和 g2o

这两个库ORB-SLAM2中作者是用的是他们修改过的,已经放在了其源码的3rdparty文件夹下,之后利用 build.sh 编译时会自动安装好,所以不需要我们自己配置。


2.ORB-SLAM2编译运行

根据大佬们的提醒,应该下载好源码后进入文件夹,把其中 build.sh 的最后一行 make -j 改为 make,否则容易死机。我没有尝试会不会死机,感觉还是保险一点比较好..

cd ORB_SLAM2
chmod +x build.sh
 ./build.sh

ORB-SLAM2代码下载链接:https://pan.baidu.com/s/18AyhtdGpXGyqSklVSDWfvw

提取码:zg7y

或者可以像我一样在作者的项目主页上直接下载代码压缩包,解压后在终端中进入文件夹,然后:

cd ORB_SLAM2
chmod +x build.sh
 ./build.sh

编译成功后生成的可执行程序mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc and stereo_euroc,位于Examples目录下。之后的运行大家应该去参考ORB-SLAM2的主页,上面说的很清楚。以下我以自己测试的立体视觉(双目)+KITTI数据集为例说明使用方法。

通过作者在项目主页上提供的链接可以下载好KITTI数据集并解压,得到一个 dataset 文件夹。我把它直接放在桌面上,因此路径为:~/Desktop/dataset

首先我们应当在ORB-SLAM2项目的主文件夹下,以我的路径为例:

~/Desktop/ORB_SLAM2-master

然后假如我要跑 KITTI 的 00 文件夹下的数据集,就输入:

./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI00-02.yaml ~/Desktop/dataset/sequences/00

这条指令第一个参数:./Examples/Stereo/stereo_kitti。表示运行的程序是立体视觉+KITTI数据集的情景。

第二个参数:Vocabulary/ORBvoc.txt。这是词袋的相关文件所在路径。

第三个参数:Examples/Stereo/KITTI00-02.yaml。这是配置文件所在路径,KITTI数据集下,00~02对应KITTI00-02.yaml,03对应KITTI03.yaml,04~12对应KITTI04-12.yaml。

最后一个参数:~/Desktop/dataset/sequences/00。这是我电脑上KITTI的00序列数据集所在路径,注意要和第三个参数相对应。

经过我的测试,KITTI的00~12一共13个子数据集都可以跑。其他的传感器+数据集大家可以参考作者的项目主页说明进行测试。

最后放上我的运行截图~

c2a4ed9aa4a4ab094413de719ab3052b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值