目录

  • 前言
  • 一、evo工具的安装
  • 二、运行TUM数据集
    • 1.TUM单目数据集
    • 2.TUM RGB-D数据集
  • 三、运行KITTI数据集
    • 1.KITTI单目数据集
    • 2.KITTI双目数据集
  • 四、运行EuRoC数据集
    • 1.EuRoC单目数据集
    • 2.EuRoC双目数据集
  • 五、使用evo工具分析
    • 1.常用指令
    • 2.用evo工具分析TUM
    • 3.用evo工具分析KITTI
    • 4.用evo工具分析EuRoC

前言

在ORB-SLAM2的学习过程中,不可避免的会用到这些数据集来运行程序,并且还会将运行轨迹与相机真实轨迹作对比,下面就介绍使用evo工具分析SLAM常用TUM,KITTI,EuRoC数据集。SLAM数据集TUM,KITTI,EuRoC数据集的下载地址与真实轨迹文件的查找总结的博客链接。


一、evo工具的安装

可以使用evo工具将.csv文件形式的轨迹文件转换为TUM形式的轨迹文件。

evo_traj euroc data.csv --save_as_tum

evo工具安装(参考链接),打开终端输入

pip install evo --upgrade --no-binary evo

二、运行TUM数据集

TUM数据集官网下载地址,TUM数据集里面有深度图像和RGB图像。当使用单目模式时,仅用到rgb文件夹里的图片;当使用RGB-D模式时,需要用到depthrgb两个文件夹里的图片,而且需要associate.py脚本文件关联 RGB 图像和深度图像(下面会说到)。

下面以rgbd_dataset_freiburg3_long_office_household数据集为例

1.TUM单目数据集

执行这个命令:./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER。将TUMX.yaml改为TUM1.yamlTUM2.yamlTUM3.yaml,分别用于freiburg1freiburg2freiburg3序列。将PATH_TO_SEQUENCE_FOLDER改为解压好的数据集文件夹路径。简单来说命令分为四个部分:1.TUM单目模式执行文件 2.训练好的词袋 3.参数文件 4.解压好的数据集路径
切换到 ORB_SLAM2/ 下,在终端里输入(对应路径改成自己的)

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM3.yaml /home/d/文档/数据集/TUM数据集/rgbd_dataset_freiburg3_long_office_household

2.TUM RGB-D数据集

在这步中我们需要使用RGB 图像和深度图像的关联文件,ORB-SLAM2的作者在examples/RGB-D/associations/路径下提供了某些序列的关联文件。
我们也可以使用 python 脚本associate.py(associate.py下载地址)关联 RGB 图像和深度图像。
associate.py脚本放到下载并且解压好的rgbd_dataset_freiburg3_long_office_household/路径下,执行以下命令

python associate.py rgb.txt depth.txt > associations.txt

接下来执行这个命令:./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE。将TUMX.yaml改为TUM1.yamlTUM2.yamlTUM3.yaml,分别用于freiburg1freiburg2freiburg3序列。将PATH_TO_SEQUENCE_FOLDER改为解压好的数据集文件夹路径。将ASSOCIATIONS_FILE改为相应关联文件的路径。简单来说命令分为五个部分:1.TUM RGB-D执行文件 2.训练好的词袋 3.参数文件 4.解压好的数据集路径 5.关联文件路径
切换到 ORB_SLAM2/ 下,在终端里输入(对应路径改成自己的)

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml /home/d/文档/数据集/TUM数据集/rgbd_dataset_freiburg3_long_office_household /home/d/文档/数据集/TUM数据集/rgbd_dataset_freiburg3_long_office_household/associations.txt

三、运行KITTI数据集

KITTI数据集官网下载地址,使用灰度图像的KITTI数据集,里面有左目图像(image_0)和右目图像(image_1)。当使用单目模式时,仅用到image_0文件夹里的左目图片;当使用双目模式时,需要用到image_0image_1两个文件夹里的图片。

下面以00数据集为例

1.KITTI单目数据集

执行这个命令:./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER。将KITTIX.yaml改为KITTI00-02.yamlKITTI03.yamlKITTI04-12.yaml,分别用于序列0到2序列3序列4到12。将PATH_TO_DATASET_FOLDER改为解压好的数据集文件夹路径。将SEQUENCE_NUMBER改为00、01、02,…, 11 简单来说命令分为四个部分:1.KITTI单目模式执行文件 2.训练好的词袋 3.参数文件 4.解压好的数据集路径
切换到 ORB_SLAM2/ 下,在终端里输入(对应路径改成自己的)

./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml /home/d/文档/数据集/Kitti数据集/00

2.KITTI双目数据集

执行这个命令:./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER。将KITTIX.yaml改为KITTI00-02.yamlKITTI03.yamlKITTI04-12.yaml,分别用于序列0到2序列3序列4到12。将PATH_TO_DATASET_FOLDER改为解压好的数据集文件夹路径。将SEQUENCE_NUMBER改为00、01、02,…, 11 简单来说命令分为四个部分:1.KITTI单目模式执行文件 2.训练好的词袋 3.参数文件 4.解压好的数据集路径
切换到 ORB_SLAM2/ 下,在终端里输入(对应路径改成自己的)

./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI00-02.yaml /home/d/文档/数据集/Kitti数据集/00

四、运行EuRoC数据集

EuRoC数据集官网下载地址,EuRoC数据集里面有左目图像(cam0)和右目图像(cam1)。当使用单目模式时,仅用到cam0文件夹里的左目图片;当使用双目模式时,需要用到cam0cam1两个文件夹里的图片。

下面以MH_01_easy数据集为例

1.EuRoC单目数据集

对 V1 和 V2 序列执行以下第一个命令,或对 MH 序列执行第二个命令。根据要运行的数据集更改PATH_TO_SEQUENCE_FOLDER和序列。

./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt

PATH_TO_SEQUENCE改为解压好的数据集文件夹路径。将SEQUENCE改为对应数据集的序列文件 **简单来说命令分为五个部分:1.EuRoC单目模式执行文件 2.训练好的词袋 3.参数文件 4.解压好的数据集左目图像路径 5.对应的序列文件 **
切换到 ORB_SLAM2/ 下,在终端里输入(对应路径改成自己的)

./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /home/d/文档/数据集/EuRoc数据集/MH_01_easy/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt

2.EuRoC双目数据集

对 V1 和 V2 序列执行以下第一个命令,或对 MH 序列执行第二个命令。根据要运行的数据集更改PATH_TO_SEQUENCE_FOLDERSEQUENCE

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data PATH_TO_SEQUENCE/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data PATH_TO_SEQUENCE/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt

PATH_TO_SEQUENCE改为解压好的数据集文件夹路径。将SEQUENCE改为对应数据集的序列文件 **简单来说命令分为六个部分:1.EuRoC单目模式执行文件 2.训练好的词袋 3.参数文件 4.解压好的数据集左目图像路径 5.解压好的数据集右目图像路径 6.对应的序列文件 **
切换到 ORB_SLAM2/ 下,在终端里输入(对应路径改成自己的)

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/d/文档/数据集/EuRoc数据集/MH_01_easy/mav0/cam0/data /home/d/文档/数据集/EuRoc数据集/MH_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt

五、使用evo工具分析

1.常用指令

TUM数据集的rgbd_dataset_freiburg3_long_office_household为例介绍

绘制单个轨迹

evo_traj tum groundtruth.txt -p

绘制多个轨迹

evo_traj tum CameraTrajectory_TUM.txt groundtruth.txt -p


上面的轨迹在旋转和平移上不对齐,可以通过--ref参数指定参考轨迹,并且添加参数-a来对其轨迹

evo_traj tum CameraTrajectory_TUM.txt --ref=groundtruth.txt -p -a


由于单目相机会存在尺度的不确定性,所以在仅使用-a不够

evo_traj tum KeyFrameTrajectory_TUM.txt --ref=groundtruth.txt -p -a


还需要添加一个参数-s进行尺度上面的对齐

evo_traj tum KeyFrameTrajectory_TUM.txt --ref=groundtruth.txt -p -a -s


或者直接使用参数-as同时使用旋转和平移以及尺度上面的对齐

evo_traj tum KeyFrameTrajectory_TUM.txt --ref=groundtruth.txt -p -as


通过观察,上面的轨迹在Z轴上面变化不大,可以添加参数--plot_mode=xy将轨迹压缩在xy平面上

evo_traj tum  CameraTrajectory_TUM.txt --ref=groundtruth.txt -p --plot_mode=xy -as


通过上面的过程,我们 常用的画轨迹指令

evo_traj tum XXX.txt --ref=XXX.txt -p -as
evo_traj tum  XXX.txt --ref=XXX.txt -p --plot_mode=xy -as

计算绝对位姿误差
大多数中论文的指标为测量绝对误差, 在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。

evo_ape tum groundtruth.txt CameraTrajectory_TUM.txt -p --plot_mode=xy -as

max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差、误差平方和;std:标准差。


evo_rpe指令是计算相对位姿误差,参数与上面的计算绝对位姿误差一致,因为不常用,就不介绍了

2.用evo工具分析TUM

画轨迹

evo_traj tum  CameraTrajectory_TUM.txt --ref=groundtruth.txt -p --plot_mode=xy -as

计算绝对位姿误差
在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。

evo_ape tum groundtruth.txt CameraTrajectory_TUM.txt -p --plot_mode=xy -as

max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差、误差平方和;std:标准差。

3.用evo工具分析KITTI

ORB-SLAM2以单目模式运行KITTI数据集保存的轨迹文件格式是TUM格式的,使用evo工具不能将KITTI格式的轨迹转换成TUM格式的轨迹,但是能将TUM格式的轨迹转换成KITTI格式的轨迹(参考链接)
使用下面的命令将TUM格式的轨迹转化成KITTI格式的

evo_traj tum KeyFrameTrajectory_TUM.txt --save_as_kitti

画轨迹

evo_traj kitti  CameraTrajectory_KITTI.txt --ref=00.txt -p --plot_mode=xz -as

计算绝对位姿误差
在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。

evo_ape kitti 00.txt CameraTrajectory_KITTI.txt -p --plot_mode=xz -as

max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差、误差平方和;std:标准差。


4.用evo工具分析EuRoC

ORB-SLAM2运行EuRoC数据集保存的轨迹文件格式是TUM格式的,使用evo工具能将EuRoC格式的轨迹转换成TUM格式的轨迹,(参考链接)
使用下面的命令将EuRoC格式的轨迹转化成TUM格式的

evo_traj euroc data.csv --save_as_tum

画轨迹

evo_traj tum  CameraTrajectory_TUM.txt --ref=data.tum -p -as

计算绝对位姿误差
在进行评估时,若经过了缩放,在命令行中应将真实轨迹(参考轨迹)放在估计轨迹(计算轨迹)前方,避免在缩放时参考轨迹错误而造成误差被错误缩放。

evo_ape tum data.tum CameraTrajectory_TUM.txt -p -as

max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差、误差平方和;std:标准差。


用evo工具分析ORB-SLAM2运行TUM,KITTI,EuRoC数据集轨迹相关推荐

  1. 手把手教你用EVO工具评估SLAM数据集TUM、KITTI、EuRoC(附代码)

    EVO工具评估TUM/KITTI/EuRoC 数据集 (1) 评估TUM数据集 以RGB-D数据集:rgbd_dataset_freiburg3_walking_xyz数据集为例 绘制轨迹并对齐: e ...

  2. 使用evo工具评估ORB_SLAM2在TUM数据集上的运行轨迹

    目录 一.安装evo工具 二.运行RGB-D基准数据集 1.下载TUM数据集 2.关联rgb图像和depth图像 3.运行rgb-d数据集 三.使用evo评估 1.常用指令 2.绝对轨迹误差 3.相对 ...

  3. Ubuntu下使用单目相机运行ORB SLAM2

    环境:Ubuntu16.04+ROS Kinetic+USB单目摄像头 虽然ORB SLAM2的官方说明中表示没有ROS也可以编译运行,但要实时的跑ORB SLAM2还是需要ROS平台的,所以之前没有 ...

  4. orbslam2可视化_[Ubuntu] ORB SLAM2 编译调试

    ORB SLAM2 是 2015年比较受到关注的一篇文章,它的主要思想是借助 ORB 描述子改进了 Sparse SLAM 的性能,使得其在稳定性和速度上都达到了比较好的程度.从创新性上来讲,它的主要 ...

  5. ORB_SLAM2 运行TUM RGBD数据集过程记录

    一. 编译代码 这里是用ubuntu20.04,opencv4安装orbslam2的一点记录.报错信息经过搜索找到了对应的解决办法,在这里做一个笔记 报错1:FATAL_ERROR "Ope ...

  6. vins-mono保存、重载地图、evo工具测试

    vins-mono保存.重载地图.evo工具测试 地图保存与加载 先跑起来 修改地图保存的路径 保存地图 重载地图 evo测评 evo工具 修改数据格式 使用evo绘制轨迹 与双目ORB_SLAM2进 ...

  7. 新手入门新电脑安装配置orb slam2 一步到位不踩坑(ubutun18.04)

    目录 一.安装基础工具 二.安装Pangolin,作为可视化和用户界面 三.安装OpenCV,用于处理图像和特征 (1)下载OpenCV 3.4.1 (2)安装依赖项 (3)编译安装 (4)配置环境, ...

  8. ORB-SLAM2运行EuRoC数据集EVO评估

    (菜鸟级入门详细教程) 首先你要有ORB-SLAM2的运行环境,如果没有的话看我之前的配置slam2环境,我的是基于Ubuntu18.04 下载数据集:下载地址:http://projects.asl ...

  9. 使用MAT(Memory Analyzer Tool)工具分析dump文件--转

    原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...

  10. python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析

    点击蓝色"不太灵光的程序员"关注我哟 加个"星标",每天上午 09:30,干货推送! 文中使用的组件库仅限于Python语言,由于最近收到一些同学的留言说,按照 ...

最新文章

  1. react-webpack-express
  2. java jdk 1.8 安装_下载、安装、配置 java jdk1.8
  3. HDU 2094 产生冠军
  4. 【SSM】Kisso实用教程之验证码简单使用(一)
  5. RequestToViewNameTranslator
  6. 逻辑备库之ORA-01403解决方法
  7. 异常检测机器学习_使用机器学习检测异常
  8. 老男孩python课后作业_老男孩python基础知识练习题(一)中
  9. HDFS文件系统存储机制
  10. python数码时钟代码_python实现简易数码时钟
  11. python爬虫之多线程、多进程+代码示例
  12. python如何与其他软件交互_如何与Python中的另一个程序交互?
  13. python 里面的内置函数之:locals() 和 globals()
  14. faster rcnn源码解析1
  15. 只需五步,中国电信物联网报障指引来了
  16. 蓝牙bluez进行HCI编程
  17. 测试电池耗电快的软件,电池快速耗电急救软件
  18. 世界名画陈列馆(最少机器人问题和不重复监视问题)
  19. google map 地理编码API的两种方式
  20. 开源中文切词工具介绍

热门文章

  1. 软件测试自学乐器儿童画,查找「国庆节儿童画大全」安卓应用 - 豌豆荚
  2. 无线上网认证之Portal认证
  3. d06调试详细说明_D06调试软件说明
  4. Windows 7无法启用网络发现的处理办法
  5. 问题解决逻辑:深度和广度谁应该优先?
  6. SQL项目实战练习:淘宝用户行为数据分析实战
  7. java flink(二十七) 实战之电商 订单超时取消报警计算 CEP与ProcessFunction 对比
  8. VsCode设置默认浏览器打开
  9. 硬盘异响(嗑啦嗑啦)的可能原因
  10. TortoiseGit - 详细提交流程