首页IT科技evo有什么用(用evo工具分析ORB-SLAM2运行TUM,KITTI,EuRoC数据集轨迹)

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

时间2025-05-05 19:50:25分类IT科技浏览5423
导读:前言 在ORB-SLAM2的学习过程中,不可避免的会用到这些数据集来运行程序,并且还会将运行轨迹与相机真实轨迹作对比,下面就介绍使用evo工具分析SLAM常用TUM,KITTI,EuRoC数据集。SLAM数据集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模式时                  ,需要用到depth和rgb两个文件夹里的图片           ,而且需要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.yaml,TUM2.yaml或TUM3.yaml                  ,分别用于freiburg1                 ,freiburg2和freiburg3序列      。将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.yaml     ,TUM2.yaml或TUM3.yaml            ,分别用于freiburg1                  ,freiburg2和freiburg3序列                  。将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_0和image_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.yaml                  ,KITTI03.yaml或KITTI04-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.yaml                 ,KITTI03.yaml或KITTI04-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文件夹里的左目图片;当使用双目模式时                  ,需要用到cam0和cam1两个文件夹里的图片                 。

下面以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_FOLDER和SEQUENCE。

./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:标准差            。

声明:本站所有文章            ,如无特殊说明或标注                  ,均为本站原创发布      。任何个人或组织     ,在未征得本站同意时      ,禁止复制                  、盗用                 、采集、发布本站内容到任何网站            、书籍等各类媒体平台                 。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
感知机模型是谁提出的?(感知机算法之Python代码实现)