如何显示ORB_SLAM2生成的关键帧轨迹以及如何使用evo工具评估EuRoCDataset真实际位姿轨迹和ORB_SLAM2算法的估计位姿轨迹?

轨迹可视化

视觉SLAM十四讲系列之轨迹可视化
把ORB_SLAM2生成轨迹拷贝过去执行就可以了。

安装pip

pip 是官方推荐的标准库管理工具是 Python 的标配。
pip 更新库

pip install --upgrade 库名
pip install -U <包名>

安装库

pip install 库名
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple 

安装 pip3

wget http://bootstrap.pypa.io/get-pip.py
sudo python3.5 get-pip.py
查看pip3安装的位置
whereis pip3
pip3: /usr/local/bin/pip3.5 /usr/local/bin/pip3
就可以安装了,但是前提是已经安装了python3.5的版本
查看python 版本命令:
python -V
python3 -V

安装 jupyter

Jupyter Notebook 快速入门(上)
Jupyter Notebook 快速入门(下)

Ubuntu 16.04 安装 jupyter

sudo pip3 install jupyter
ERROR: jsonschema 3.0.1 has requirement six>=1.11.0, but you'll have six 1.10.0 which is incompatible.
sudo pip install six==1.11.0
sudo pip3 install jupyter
查看安装位置
whereis jupyter
启动 jupyter,想差看那个路径下的文件就在那个路径的终端下输入如下命令
jupyter notebook

查看python和numpy的版本及版本更新和安装位置

1、查看python版本
python -V
python -version  
2、查看python安装位置
python -c "import sys; print sys.executable"
python -c "import os; print os.sys.executable"
python -c "import os; path = os.sys.executable;folder=path[0 : path.rfind(os.sep)]; print folder"
3、查看Numpy版本
python -c "import numpy; print numpy.version.version"
python -c "import numpy; print numpy.__version__"
4、查看Numpy安装路径
python -c "import numpy; print numpy.__file__"

安装evo

下载 evo源代码

https://github.com/MichaelGrupp/evo

安装evo依赖

pip install --upgrade pip
sudo apt install python-pip
sudo apt-get install python-scipy

pip install numpy --upgrade --user
sudo apt-get install python-numpy
sudo apt-get install python-scipy
sudo apt-get install python-matplotlib
sudo apt-get install python-pandas
sudo apt-get install python-sklearn

源代码目录下编译evo:

pip install --editable . --upgrade --no-binary evo

实践详细步骤

测试数据集

cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz

这是KITTI数据集ORB、SPTAM算法生成的轨迹和KITTI数据集真实轨迹的对比
在这里插入图片描述这是KITTI数据集ORB、SPTAM算法生成的轨迹的xyz视角和KITTI数据集真实轨迹的xyz视角对比
可以看到机器人在y轴上的运动变化
在这里插入图片描述这是KITTI数据集ORB、SPTAM算法生成的轨迹的rpy视角和KITTI数据集真实轨迹的rpy视角对比
在这里插入图片描述
将 EuRoC 数据集中 .csv 文件形式的 groundtruth 位姿轨迹转换为 TUM 形式的轨迹文件

evo_traj euroc data.csv --save_as_tum

在这里插入图片描述
TUM 形式的轨迹文件格式:每行8个数,用空格分隔,包含时间戳(单位:秒)、位置和旋转(四元素表示)

timestamp x y z q_x q_y q_z q_w

在这里插入图片描述

多轨迹显示(轨迹未对齐)
(a)上面将 EuRoC 数据集中 MH_04_difficult 序列的 groundtruth(.csv文件) 转换为 TUM 形式的轨迹文件,文件名为 data.tum

在这里插入图片描述
(b)通过双目 ORB_SLAM2 跑 MH_04_difficult 数据集得到 TUM 形式的轨迹文件,文件名为 FrameTrajectory_TUM_Format.txt

cd /ORB_SLAM2
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/q/projects/ORB_SLAM2/EuRoC_Dataset/mav0/cam0/data /home/q/projects/ORB_SLAM2/EuRoC_Dataset/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH04.txt

在这里插入图片描述
将两个 TUM 形式的轨迹文件放入同一个文件夹 (test_evo) 中

cd /test_evo
evo_traj tum CameraTrajectory.txt --ref=data.tum -p

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

计算绝对位姿误差实践详细步骤

计算绝对位姿误差(轨迹对齐)

evo_ape tum data.tum CameraTrajectory.txt -va --plot

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

不同格式的轨迹文件及相互转换:https://github.com/MichaelGrupp/evo/wiki/Formats
问题汇总:https://github.com/MichaelGrupp/evo/issues?q=is%3Aissue+is%3Aclosed

使用方法
evo_traj用于分析,绘制或导出一个或多个轨迹的工具
evo_ape轨迹误差
evo_res用于比较evo_apeevo_rpe中的一个或多个结果文件的工具
evo_fig用于重新打开序列化图的(实验性)工具(使用–serialize_plot保存)
evo_config用于全局设置和配置文件操作的工具
tool工具执行参数参考:
evo_traj --help

轨迹误差计算原理

可以先看一下这篇文章
视觉SLAM十四讲系列之真实轨迹和估计轨迹均方根误差

绝对轨迹误差直接计算相机位姿的真实值与SLAM系统的估计值之间的差,
程序首先根据位姿的时间戳将真实值和估计值进行对齐,
然后计算每对位姿之间的差值, 并最终以图表的形式输出,
该标准非常适合于评估视觉 SLAM 系统的性能。

相对位姿误差用于计算相同两个时间戳上的位姿变化量的差, 同样,
在用时间戳对齐之后, 真实位姿和估计位姿均每隔一段相同时间计算位姿的变化量,
然后对该变化量做差, 以获得相对位姿误差, 该标准适合于估计系统的漂移。

两种突出的方法是绝对轨迹误差(ATE)和相对姿态误差(RPE)。
ATE适合评估视觉SLAM系统的性能。
相比之下,RPE适合评估视觉里程计的漂移量,例如每秒的漂移量。

evaluate_ate.py

绝对轨迹误差脚本直接测量真实轨迹和估计轨迹的点之间的差异。

作为预处理步骤,我们使用时间戳将估计的姿势与地面真实姿势相关联。
基于此关联,我们使用奇异值分解来对齐真实轨迹和估计轨迹。

最后,我们计算每对姿势之间的差异,并输出这些差异的均值/中值/标准差。
此外,脚本还可以将两个轨迹绘制到png或pdf文件,这样一来可以更加直观的看到差异。

在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/107068143