ORB-SLAM2+EuRoC双目相机数据集测试

前两天跑通了高博的视觉里程计代码,可以装ORBSLAM2测试一下了。久闻大名,听说是
国外研究者在近年做出的较优秀和成熟的一个视觉SLAM方案,是国内SLAM研究的一个重点案例(上个月还碰到做计算机视觉的研究生提到它)。

ORB-SLAM2支持单目、rgbd、双目接口。因为毕设研究的是双目视觉里程计,我使用了EuRoC数据集提供的双目相机的数据进行测试,系统为Ubuntu14.04。

1.安装cmake和OpenCV

此部分参考之前写的博客:

https://blog.csdn.net/Banmei_Brandy/article/details/89949843

里面总结了cmake3.1.4OpenCV3.1.0库的安装,写得应该挺详细了。

(可选)安装git:

sudo apt-get install git

git可以通过git clone命令方便地从github上下载所有库和代码。因为我git clone的速度太慢,所以后面没有使用,所有东西都是去github上下载编译的。

2.安装Pangolin

Pangolin是一款开源的OPENGL显示库,可以用来视频显示、而且开发容易,是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug。

先安装依赖项

Glew:sudo apt-get install libglew-dev

Boost:sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

Python-dev:sudo apt-get install libpython2.7-dev
(注意要和自带Python的版本对应)

build-essential:sudo apt-get install build-essential

装完后去github下载Pangolin的源码:

https://github.com/stevenlovegrove/Pangolin

该链接提供的是较新的版本,我编译时报了一大堆错,看了许多博客,暂时不明白什么原因。最后使用了一个较旧的版本,能够成功编译安装:

https://github.com/zzx2GH/Pangolin

下载好后,解压并编译安装:

cd Pangolin
sudo mkdir build
cd build
sudo cmake ..
sudo make 
sudo make install

3.安装Eigen3

Eigen是一个C++开源线性代数库。它提供了快速的有关矩阵的线性代数运算及求解方程等功能。

执行

sudo apt-get install libeigen3-dev

Eigen头文件存放在“/usr/include/eigen3”中。

也可以去下面链接下载更新的版本,然后用cmake-make-make install安装。

http://eigen.tuxfamily.org

4.安装ORB-SLAM2

Github下载:

https://github.com/raulmur/ORB_SLAM2

解压。进入文件夹。

执行

sudo vi build.sh

用编辑器打开这个文件,修改线程数,把末尾的 make -j 改成 make -j4,否则编译爆卡。vi编辑器的使用,之前博客写过。

保存好后,给它加个执行权限:

sudo chmod 777 build.sh

这里是因为ORB-SLAM2整个文件夹的修改权限都只限于root账户(“777”的权限是完全开放给所有用户)。此处也可以通过

sudo -i

暂时切换为root账户,方便执行之后的命令。

下面运行build自动安装:

./build.sh

安装完成后的目录如图:

ORB-SLAM2+EuRoC双目相机数据集测试_第1张图片

5.下载EuRoC MAV数据集

EuRoC MAV Dataset是苏黎世联邦理工学院用微型飞行器在室内采集的数据。这篇博客给出了详细介绍:

https://blog.csdn.net/colorsky100/article/details/85331711

双目测试数据的下载地址:

https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

找到Downloads下面的data链接,进入Vicon Room随便下载一个数据包,大小1G多。

下载好后,解压。有两个大文件夹,数据存放在“mav0”中,两个相机采集的数据分别存放在 mav0/cam0/data 和 mav0/cam1/data 里面。

6.测试

在ORB-SLAM2的目录下,执行

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml 数据集路径.../mav0/cam0/data 数据集路径.../mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/V10X.txt

读取词袋;读取配置参数;填写数据集的路径;最后时间序列V10X选哪一个都行,我用了V101.txt。

结果:

ORB-SLAM2+EuRoC双目相机数据集测试_第2张图片
部分特征点会丢失,但总体跟踪效果还是挺不错的。

7.遇到的问题

除了Pangolin的库编译问题,换了个旧版本以外,开跑ORB-SLAM2时报了这个错:

terminate called after throwing an instance of ‘std::runtime_error’
what(): Pangolin X11: Unable to retrieve framebuffer options

解决办法是到Pangolin\src\display\device路径下,把display_x11.cpp注释掉两行代码:

(大概一百多行的位置)

staticint visual_attribs[] = 
{ 
    GLX_X_RENDERABLE , True, 
    GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT, 
    GLX_RENDER_TYPE , GLX_RGBA_BIT, 
    GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR, 
    GLX_RED_SIZE , 8, 
    GLX_GREEN_SIZE, 8, 
    GLX_BLUE_SIZE, 8, 
    GLX_ALPHA_SIZE, 8, 
    GLX_DEPTH_SIZE, 24, 
    GLX_STENCIL_SIZE, 8, 
    GLX_DOUBLEBUFFER , glx_doublebuffer ? True : False, 
    //注释这一行 GLX_SAMPLE_BUFFERS , glx_sample_buffers, 
    //注释这一行 GLX_SAMPLES , glx_sample_buffers > 0 ? glx_samples : 0, 
    None 
}

然后通过cmake-make-make install重新编译安装一遍Pangolin。再跑就没问题了。

你可能感兴趣的:(视觉SLAM学习)