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

这篇具有很好参考价值的文章主要介绍了用evo工具分析ORB-SLAM2运行TUM,KITTI,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 图像和深度图像(下面会说到)。
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
下面以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两个文件夹里的图片。
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

下面以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两个文件夹里的图片。
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

下面以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 kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

绘制多个轨迹

evo_traj tum CameraTrajectory_TUM.txt groundtruth.txt -p

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
上面的轨迹在旋转和平移上不对齐,可以通过--ref参数指定参考轨迹,并且添加参数-a来对其轨迹

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

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
由于单目相机会存在尺度的不确定性,所以在仅使用-a不够

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

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
还需要添加一个参数-s进行尺度上面的对齐

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

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
或者直接使用参数-as同时使用旋转和平移以及尺度上面的对齐

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

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
通过观察,上面的轨迹在Z轴上面变化不大,可以添加参数--plot_mode=xy将轨迹压缩在xy平面上

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

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
通过上面的过程,我们 常用的画轨迹指令

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 kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
evo_rpe指令是计算相对位姿误差,参数与上面的计算绝对位姿误差一致,因为不常用,就不介绍了

2.用evo工具分析TUM

画轨迹

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

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

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

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

max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差、误差平方和;std:标准差。
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

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 kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

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

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

max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差、误差平方和;std:标准差。
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

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 kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法

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

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

max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差、误差平方和;std:标准差。
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法
evo kitti,SLAM,ubuntu,自动驾驶,个人开发,人工智能,算法文章来源地址https://www.toymoban.com/news/detail-841941.html

到了这里,关于用evo工具分析ORB-SLAM2运行TUM,KITTI,EuRoC数据集轨迹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ORB-SLAM2环境配置及运行

    本文是基于Ubuntu 20.04及OpenCV 4.6.0成功运行ORB-SLAM2,并在开源数据集上进行了测试。由于OpenCV和其他依赖库的版本较新,编译过程会出现一些问题,需要修改部分代码和CMakeLists.txt文件,这里做一个记录,也希望能帮到有需要的小伙伴。 开始尝试安装Eigen3.4.0和Pangolin-0.8版本,后

    2024年02月03日
    浏览(35)
  • 轨迹误差评估指标[APE/RPE]和EVO[TUM/KITTI]

    Reference: 高翔,张涛 《视觉SLAM十四讲》 视觉SLAM基础:算法精度评价指标(ATE、RPE) 在实际工程中,我们经常需要评估一个算法的估计轨迹与真实轨迹的差异来评价算法的精度。真实轨迹往往通过某些更高精度的系统获得,而估计轨迹则是由待评价的算法计算得到的。考虑一

    2023年04月08日
    浏览(29)
  • 实操指南:ORB-SLAM3的编译运行

    前面我们提到,ORB-SLAM3作为常用的机器人建图与定位技术,是当前最优秀的基于特征点的视觉SLAM系统之一。 它支持单目、双目、单目惯导、双目惯导、RGB-D等多种相机模式,兼具精度和鲁棒性,是机器人SLAM算法工程师的一项「必备技能」。 为了更好地帮助大家学习和理解

    2024年02月13日
    浏览(37)
  • 纯小白实践ORB-SLAM2保姆级运行指南

    此篇为博采众家博客之长,沥血整理之集大成者 本人大一学生,参加了SLAM相关的年度项目,第一步便是需要实践ORB-SLAM,在电脑上运行程序并完成可视化与实时化。预实验是跑现成的数据集,正式实验是使用实时摄像头。如图~ 在此过程中,我也是 翻遍全网找各种教程 找各

    2024年02月06日
    浏览(41)
  • 基于安卓手机的ORB-SLAM3的调试运行

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 基于安卓手机的ORB-SLAM3的调试运行 安卓手机集成了惯性与视觉信息,作为一个轻量化的平台能够作为ORB-SLAM3的载体进行运行,作为一个slam的初学者,本文仅作为一个学习过程中遇到的各种问题以及相应

    2024年02月05日
    浏览(35)
  • Ubuntu20.04在ROS下运行ORB-SLAM3

    目录 1.前言: 2.总体配置: 3.数据集 4.配置ORB-SLAM3 (1)添加环境变量 (2)修改文件 5.编译运行 (1)检查环境 (2)编译 6.运行 7.部分报错 (1)功能包未找到 (2)AR路径下文件的错误 (3)Pangolin库错误 (4)缺少库         小白配置ORB-SLAM3的过程真的辛酸。。各种各样

    2024年03月15日
    浏览(45)
  • 自学SLAM(2)---保姆教程教你如何使用自己的视频运行ORB-SLAM2

    如果你是新手入门,仅仅只会Linux的基本操作,并看了高翔老师视觉SLAM视屏的第一讲,那么你需要准备一整天的时间,可能还不一定能运行出来!运行ORB-SLAM2将会安装很多很多东西。那么,我们准备开始!! 我是默认你已经装了虚拟机和Ubuntu系统的!! 首先先展示一下成果

    2024年02月08日
    浏览(39)
  • ORB-SLAM2算法6之D435i双目IR相机运行ROS版ORB-SLAM2并发布位姿pose的rostopic

    ORB-SLAM2算法1已成功编译安装 ROS 版本 ORB-SLAM2 到本地,以及ORB-SLAM2算法5

    2024年02月09日
    浏览(30)
  • ORB-SLAM2学习笔记6之D435i双目IR相机运行ROS版ORB-SLAM2并发布位姿pose的rostopic

    ORB-SLAM2算法1已成功编译安装 ROS 版本 ORB-SLAM2 到本地,以及ORB-SLAM2算法5

    2024年02月14日
    浏览(33)
  • Ubuntu18.04下使用安卓手机Camera和IMU信息运行ORB-SLAM2

    1、下载Android_Camera-IMU,将其中的Camera-Imu.apk文件发送至手机端进行安装。 下载命令: git clone https://github.com/hitcm/Android_Camera-IMU.git  发送至手机的文件在手机端安装以后的软件  在手机端安装好以后的软件如下:  2、安装功能依赖包:sudo apt-get install ros-melodic-imu-tools  # 修改

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包