0


ORB-SLAM2算法3之EuRoc开源数据集运行ORB-SLAM2生成轨迹并用evo工具评估轨迹

文章目录

0 引言

ORB-SLAM2算法1 已成功编译安装

ORB-SLAM2

到本地,本篇目的是用

EuRoc

开源数据来运行

ORB-SLAM2

,并生成轨迹,最后用

evo

评估工具来评估

ORB-SLAM2

生成的轨迹和真值轨迹。

1 EuRoc数据集

1.1 下载数据

👉首先点击EuRoc开源数据官网
如下图,可自行选择一组数据下载,以下用第一组的

Machine Hall 01

为数据用例。
请添加图片描述
其中

ASL_Dataset_Format

中的

state_groundtruth_estimate0

中是

evo

需要用到的真值。

.
├── ASL_Dataset_Format
│   └── MH_01_easy
│       └── mav0
│           ├── body.yaml
│           ├── cam0
│           │   ├── data
│           │   ├── data.csv
│           │   └── sensor.yaml
│           ├── cam1
│           │   ├── data
│           │   ├── data.csv
│           │   └── sensor.yaml
│           ├── imu0
│           │   ├── data.csv
│           │   └── sensor.yaml
│           ├── leica0
│           │   ├── data.csv
│           │   └── sensor.yaml
│           └── state_groundtruth_estimate0
│               ├── data.csv
│               └── sensor.yaml
└── ROS bag
    ├── MH_01_easy.bag

1.2 真值轨迹格式转换

由于

evo

载入轨迹有自己的数据格式要求(如下),刚刚下载的

EuRoc

真值数据

state_groundtruth_estimate0/data.csv

不满足

evo

tum

数据格式要求。

# tum 数据格式 参考 https://cvg.cit.tum.de/data/datasets/rgbd-dataset/tools(time, t x , t y , t z , q x , q y , q z , q w )时间、位置、姿态四元数

但好在

evo

提供了转换工具,在

state_groundtruth_estimate0

文件夹下新开终端,执行

evo_traj euroc data.csv --save_as_tum

即可得到符合

tum

格式的真值数据

data.tum

,可以用

evo

来绘制该真值轨迹。

# 保存成.tum
evo_traj euroc data.csv --save_as_tum

执行后,

evo_traj euroc data.csv --save_as_tum

文件夹下生成一个

data.tum
.
├── data.csv
├── data.tum # 转换的data.tum
└── sensor.yaml

2 单目ORB-SLAM2

2.1 运行ORB-SLAM2

ORB-SLAM2

执行的命令分成

5

部分:

  • EuRoc单目模式的可执行文件
  • 官方训练好的词袋
  • 参数文件
  • 单目图像数据集的路径
  • 对应的序列文件

除了数据,

ORB-SLAM2

已经准备了其他

4

项,其中参数文件在

ORB_SLAM2/Examples/Monocular/EuRoC.yaml

,序列文件在

Examples/Monocular/EuRoC_TimeStamps/MH01.txt

熟悉了执行命令之后,执行以下命令,用

EuRoc-Machine Hall 01

数据集来运行

ORB-SLAM2

,其中

PATH

MH_01_easy

文件夹的存放目录:

# 在ORB-SLAM2工程目录下新开终端
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH/MH_01_easy/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt

运行后,会自动生成两个可视化页面,

ORB-SLAM2 Current Frame

ORB-SLAM2 Map Viewer

请添加图片描述
请添加图片描述

运行完毕后,还在该终端目录下保存了轨迹文件

KeyFrameTrajectory.txt

2.2 evo评估轨迹

2.2.1 载入和对比轨迹

把刚刚生成的轨迹文件

KeyFrameTrajectory.txt

复制

MH_01_easy/mav0/state_groundtruth_estimate0

文件夹下,

1.2

小节已转换的

data.tum

是轨迹真值,然后执行以下命令来载入两个轨迹,并进行可视化对比:

evo_traj tum KeyFrameTrajectory.txt --ref=data.tum -p--plot_mode=xyz --align--correct_scale

运行后:

name:    KeyFrameTrajectory
infos:    219 poses, 73.595m path length, 174.850s duration
--------------------------------------------------------------------------------
name:    data
infos:    36382 poses, 80.626m path length, 181.905s duration

可视化界面:
请添加图片描述

trajectories 结果图:(3D 可旋转查看)
请添加图片描述

xyz_view示意图:
请添加图片描述

rpy_view示意图:
请添加图片描述

2.2.2 计算绝对轨迹误差

evo

工具还支持计算绝对位姿误差,用以下命令:

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

运行后:

APE w.r.t. translation part (m)(with Sim(3) Umeyama alignment)

       max    0.120919
      mean    0.040675
    median    0.037146
       min    0.005794
      rmse    0.045519
       sse    0.453756
       std    0.020432

可视化界面:
请添加图片描述

raw示意图:
请添加图片描述

map示意图:(3D 可旋转查看)
请添加图片描述

至此,成功用

evo

评估工具来评估

单目ORB-SLAM2

生成的

EuRoc

开源数据轨迹和真值轨迹。

3 双目ORB-SLAM2

3.1 运行ORB-SLAM2

ORB-SLAM2

执行的命令分成

6

部分:

  • EuRoc双目模式的可执行文件
  • 官方训练好的词袋
  • 参数文件
  • 左目图像数据集的路径
  • 右目图像数据集的路径
  • 对应的序列文件

除了左右目数据,

ORB-SLAM2

已经准备了其他

4

项,其中参数文件在

ORB_SLAM2/Examples/Monocular/EuRoC.yaml

,序列文件在

Examples/Monocular/EuRoC_TimeStamps/MH01.txt

熟悉了执行命令之后,执行以下命令,用

EuRoc-Machine Hall 01

数据集中的左目

cam0

右目

cam1

来运行

ORB-SLAM2

,其中

PATH

MH_01_easy

文件夹的存放目录:

# 在ORB-SLAM2工程目录下新开终端
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH/MH_01_easy/mav0/cam0/data PATH/MH_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt

运行后,会自动生成两个可视化页面,

ORB-SLAM2 Current Frame

ORB-SLAM2 Map Viewer

请添加图片描述
请添加图片描述

运行完毕后,还在该终端目录下保存了轨迹文件

CameraTrajectory.txt

3.2 evo评估轨迹

3.2.1 载入和对比轨迹

把刚刚生成的轨迹文件

CameraTrajectory.txt

复制

MH_01_easy/mav0/state_groundtruth_estimate0

文件夹下,

1.2

小节已转换的

data.tum

是轨迹真值,然后执行以下命令来载入两个轨迹,并进行可视化对比:

evo_traj tum CameraTrajectory.txt --ref=data.tum -p--plot_mode=xyz --align--correct_scale

运行后:

--------------------------------------------------------------------------------
name:    CameraTrajectory
infos:    3638 poses, 81.287m path length, 181.850s duration
--------------------------------------------------------------------------------
name:    data
infos:    3638 poses, 80.626m path length, 181.905s duration

可视化界面:
请添加图片描述

trajectories 结果图:(3D 可旋转查看)
请添加图片描述

xyz_view示意图:
请添加图片描述

rpy_view示意图:
请添加图片描述

3.2.2 计算绝对轨迹误差

evo

工具还支持计算绝对位姿误差,用以下命令:

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

运行后:

APE w.r.t. translation part (m)(with Sim(3) Umeyama alignment)

       max    0.081526
      mean    0.027178
    median    0.022538
       min    0.001520
      rmse    0.033796
       sse    4.155190
       std    0.020088

可视化界面:
请添加图片描述

raw示意图:
请添加图片描述

map示意图:(3D 可旋转查看)
请添加图片描述

至此,成功用

evo

评估工具来评估

双目ORB-SLAM2

生成的

EuRoc

开源数据轨迹和真值轨迹。

ORB-SLAM2算法系列:

  • ORB-SLAM2算法1之Ubuntu20.04+ROS-noetic安装ORB-SLAM2
  • ORB-SLAM2算法2之TUM开源数据运行ORB-SLAM2生成轨迹并用evo工具评估轨迹

Reference:

须知少时凌云志,曾许人间第一流。

⭐️👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍🌔


本文转载自: https://blog.csdn.net/MRZHUGH/article/details/131693279
版权归原作者 ZPILOTE 所有, 如有侵权,请联系我们删除。

“ORB-SLAM2算法3之EuRoc开源数据集运行ORB-SLAM2生成轨迹并用evo工具评估轨迹”的评论:

还没有评论