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

安装完成后的目录如图:

在这里插入图片描述

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双目相机数据集测试
部分特征点会丢失,但总体跟踪效果还是挺不错的。

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。再跑就没问题了。

  • 8
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要运行ORB-SLAM2的Euroc数据集,您需要按照以下步骤操作: 1.下载Euroc数据集并解压缩。 2.下载ORB-SLAM2代码并编译。 3.将ORB-SLAM2的配置文件设置为使用Euroc数据集。 4.运行ORB-SLAM2并加载Euroc数据集。 5.观察ORB-SLAM2的输出结果并进行分析。 需要注意的是,ORB-SLAM2的Euroc数据集需要较高的计算资源和较长的运行时间。因此,您需要确保您的计算机具有足够的硬件资源,并且您有足够的时间来运行实验。 ### 回答2: ORB-SLAM2是一个开源的、基于视觉的SLAM系统,可以使用单个RGB-D或单目摄像头来创建实时3D地图,同时定位摄像头和跟踪系统的位置。可以应用于机器人、无人机、现代智能推进汽车等领域。而Euroc数据集则是一组经过校准处理的IMU (惯性测量单元)和摄像机数据,用于评估视觉SLAM的精度。 运行ORB-SLAM2和Euroc数据集的过程可以分为以下几个步骤: 1. 下载ORB-SLAM2和Euroc数据集ORB-SLAM2可以从GitHub repository中克隆得到。而Euroc数据集可以直接从它们的官方网站下载。需要注意的是,在ORB-SLAM2中,每个example的数据存放在它们各自的文件夹中,因此需要把Euroc数据集放在example所在的对应文件夹中。 2. 启动ORB-SLAM2。 ORB-SLAM2的执行文件位于ORB-SLAM2文件夹中,可以打开终端,cd到ORB-SLAM2文件夹,然后输入./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml ~/EuRoC_MAV_dataset/MH_01_easy/mav0/cam0 ~/EuRoC_MAV_dataset/MH_01_easy/mav0/imu0/data.csv ,其中第一个参数表示执行文件的路径,第二个参数是ORB-SLAM2的词汇表,第三个参数是配置文件的路径,接下来的两个参数分别是摄像头和IMU数据文件路径。 3. 运行Euroc数据集ORB-SLAM2进行初始化之前,需要打开另一个终端运行Euroc数据集。需要注意的是,必须先运行IMU,然后再运行相机。 运行IMU时,可以通过终端输入 rostopic echo /imu0/data_raw 启动ROS节点,查看imu0的数据流。运行相机时,需要先安装ROS和euroc数据集软件包。 4. 实时监控ORB-SLAM2运行状态 ORB-SLAM2提供了一个实时监控窗口,可以实时显示SLAM系统的状态和结果。可以通过终端输入 rqt_image_view 来打开这个实时监控窗口。 总之,ORB-SLAM2和Euroc数据集的结合使用可以帮助研究人员评估SLAM系统的效果和精度。尽管这个过程可能需要一些编程和配置方面的知识,但它为机器人、无人机等领域的发展提供了重要的参考和启示。 ### 回答3: ORB-SLAM2是一种基于光流法的视觉SLAM方法,它可以实现三维空间中自主移动物体的实时跟踪和建图。在ORB-SLAM2中,图像特征被提取为局部特征点和描述符,并通过光流法进行跟踪和匹配,根据这些匹配点进行位姿估计和三维重建。 运行euroc数据集ORB-SLAM2的一项重要任务。euroc数据集包含了多种不同场景下的图像序列,可以用来测试SLAM算法的鲁棒性和精度。运行euroc数据集需要以下步骤: 1. 下载euroc数据集以及ORB-SLAM2代码。euroc数据集可以从官方网站下载,ORB-SLAM2代码可以从GitHub上下载。 2. 安装必要的依赖项。ORB-SLAM2依赖于opencv、Eigen、g2o等库,需要先安装这些库。 3. 编译ORB-SLAM2代码。在终端中进入ORB-SLAM2代码目录,运行make命令即可。 4. 配置参数。在ORB-SLAM2的配置文件中,需要设置数据集路径、相机参数、ORB特征参数等内容,以适配euroc数据集。 5. 运行ORB-SLAM2。在终端中进入ORB-SLAM2代码目录,运行以下命令: ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml **数据集路径** 其中,需要将**数据集路径**替换为euroc数据集的路径。 6. 查看结果。ORB-SLAM2会在运行过程中生成位姿估计结果和三维地图,可以通过rviz等工具可视化。 在运行euroc数据集时,需要注意以下问题: 1. 需要设置正确的相机参数。euroc数据集中不同场景下使用的相机参数不同,需要根据实际情况设置相应的参数。 2. 需要选择正确的ORB特征参数。ORB特征的参数(如特征点数量、描述符维度等)会影响ORB-SLAM2的跟踪和匹配性能,在选择时需要根据实际情况调整。 3. 需要注意数据集中存在的异常情况。euroc数据集中可能存在遮挡、快速运动等异常情况,需要进行相应的处理才能得到准确的位姿估计和建图结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值