SLAM数据集(tum/kitti)轨迹对齐与结果评估
SLAM数据集的轨迹对齐与结果评估
SLAM是一个系统工程,最终的结果是一个实时的地图,因此我们需要对轨迹进行对齐和比对。在深蓝SLAM课程中,提供了ICP对齐的思路,来估计实际与模型的结果偏差。一些常见的数据集,如KITTI,TUM等,也提供了对齐工具和思路。
(1) tum数据集
1. 单目
建立评估文件夹,将得到的KeyFrameTrajectory.txt与数据集里面的groundtruth.txt文件拷贝至评估文件夹下
下载evaluate_ate.py,evaluate_rpe.py
官网介绍这两个文件区别和联系:
After estimating the camera trajectory of the Kinect and saving it to a file, we need to evaluate the error in the estimated trajectory by comparing it with the ground-truth. There are different error metrics. Two prominent methods is the absolute trajectory error (ATE) and the relative pose error (RPE). The ATE is well-suited for measuring the performance of visual SLAM systems. In contrast, the RPE is well-suited for measuring the drift of a visual odometry system, for example the drift per second.
即,ate适用于检测整体的表现,rpe适用于展示不同计量单位下的漂移情况
官网上有这两个文件的详细调用方式,这里提供一种最常用的:
python2 evaluate_ate.py --save alignedTrajectory_ate.txt --plot ate.png groundtruth.txt KeyFrameTrajectory.txt python2 evaluate_rpe.py --fixed_delta --delta_unit s --save alignedTrajectory_rpe.txt --plot rpe.png groundtruth.txt KeyFrameTrajectory.txt
(delta_unit替换:“s”: seconds;“m”: meters;“rad”: radians;“deg”: degrees;“f”: frames)
没错,上述算法在python2环境中使用
rgbd_dataset_freiburg1_desk序列下的ate图、rpe图(单位:秒、米、帧)如下:
2. rgbd
基本类似,但是使用了CameraTrajectory.txt文件,这个是更加准确,输入:
python2 evaluate_ate.py --save alignedTrajectory_ate.txt --plot ate.png groundtruth.txt CameraTrajectory.txt
python2 evaluate_rpe.py --fixed_delta --delta_unit s --save alignedTrajectory_rpe.txt --plot rpe.png groundtruth.txt CameraTrajectory.txt
结果如下,可以看出准确率更高,更细密:
3. 其他:
此外,还有一个能够生成点云(generate_pointcloud.py);
还有一个将点云载入ROS包的python2脚本(add_pointclouds_to_bagfile.py),供ros开发者使用;
(2) KITTI数据集
KITTI数据集比较麻烦,官网上并没有给出一个比较便捷的评测工具(尤其是对于ORBSLAM2输出格式),官网提供的一个评测工具是pykitti,详细的过程参考:https://zhuanlan.zhihu.com/p/76155544
但是,这个需要下全数据集,尤其是80G的velodyne,本人实在没有这个能耐,所以不得已放弃了
正好看到泡泡机器人上推荐了evo,所以就开始借助evo这个评测工具进行评估。
(3) evo工具
安装:github:https://github.com/MichaelGrupp/evo
在目录界面下
pip install --editable . --upgrade --no-binary evo
跑模型,evo提供一个kitti的模型,使用:
cd test/data evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz
如图所示,看到显示了三种图,非常的棒:
注:以上步骤follow的evo的readme文档,如果有问题可以看一下这个
OK,我们从这个demo为入手,详细分析一下如何评估其他KITTI数据集序列
https://github.com/MichaelGrupp/evo/wiki/Formats
这是一个evo的wiki,上面指出kitti数据集真实轨迹是一个4x4的矩阵,这和我们在之前tum上提供的真实轨迹不同,与orbslam2产生的轨迹不同。
事实上,这两者的格式是统一的,都是timestamp x y z q_x q_y q_z q_w格式,evo中称其为tum格式,它表示8个数据;pose位姿更与evo在test过程中使用KITTI_00_gt.txt文件格式不同,后者被称为kitti格式,用12位数据表示;它们之间的转换见图(该图源自evo的wiki):
注:它们可以使用类似于evo_traj tum xxx.txt --save_as_kitti进行转换
1. 使用双目数据
使用双目时较为简单,只需要新建一个KITTI文件夹,将CameraTrajectory.txt(orbslam2得到的)、02.txt拷贝至该文件夹下,然后输入:
evo_traj kitti CameraTrajectory.txt --ref=02.txt -p --plot_mode=xz
如果获得ate和rpe,则在KITTI下新建results,输入:
evo_ape kitti 02.txt CameraTrajectory.txt -r full -va --plot --plot_mode xz --save_results results/ape.zip
evo_rpe kitti 02.txt CameraTrajectory.txt -r full -va --plot --plot_mode xz --save_results results/rpe.zip
结果(第一行ape,第二行rpe):
2. 使用单目数据
单目orbslam仅输出KeyFrameTrajectory.txt,观察这个文件发现它是一个tum格式的文件。由于kitti真实轨迹02.txt格式特殊(kitti),查阅上述的转化变发现它无法直接转换为tum,因此evo提供了一个小工具,这个工具在evo的contrib文件夹下被使用:
新建一个result文件夹,然后终端输入:
mkdir result
cd result
把KITTI数据集下的(pose)02.txt和times.txt文件拷贝到该目录,运行如下命令:
cd ..
python kitti_poses_and_timestamps_to_trajectory.py ./result/02.txt ./result/times.txt ./result/KITTI_02_gt.txt
在result文件夹下得到新的真实轨迹KITTI_02_gt.txt。
然后新建一个KITTI文件夹,将KeyFrameTrajectory.txt(orbslam2得到的)、time.txt、KITTI_02_gt.txt拷贝至该文件夹下,输入:
evo_traj tum KeyFrameTrajectory.txt --ref=KITTI_02_gt.txt -p --plot_mode=xz --correct_scale --align
这里采用了–correct_scale --align 后缀辅助,表示手动对齐。
ape和rpe:
evo_ape tum KITTI_02_gt.txt KeyFrameTrajectory.txt -r full -va --plot --plot_mode xz --correct_scale --align --save_results results/ape.zip
evo_rpe tum KITTI_02_gt.txt KeyFrameTrajectory.txt -r full -va --plot --plot_mode xz --correct_scale --align --save_results results/rpe.zip
evo其他的功能还包括evo_res,可以对evo_ape/evo_rpe中将结果保存为.zip文件对不同的结果进行比较。
可以看出,综合而言,evo工具其实比数据集自带的几个工具使用更加便捷,而且数据更加漂亮,也更加推荐。
SLAM数据集(tum/kitti)轨迹对齐与结果评估相关推荐
- SLAM数据集TUM,KITTI,EuRoC数据集的下载地址与真实轨迹文件的查找
目录 前言 一.TUM数据集 1.下载地址 2.真实轨迹文件的查找 3.轨迹格式 二.KITTI数据集 1.下载地址 2.真实轨迹文件的查找 三.EuRoC数据集 1.下载地址 2.真实轨迹文件的查找 ...
- 手把手教你用EVO工具评估SLAM数据集TUM、KITTI、EuRoC(附代码)
EVO工具评估TUM/KITTI/EuRoC 数据集 (1) 评估TUM数据集 以RGB-D数据集:rgbd_dataset_freiburg3_walking_xyz数据集为例 绘制轨迹并对齐: e ...
- M2DGR:多源多场景 地面机器人SLAM数据集(ICRA 2022 )
Paper:https://arxiv.org/pdf/2112.13659.pdf 出处:ICRA2022 & RAL2021 项目地址:https://github.com/SJTU-Vi ...
- Ubuntu20.04+ROSnoetic运行A-LOAM并保存TUM格式轨迹
1.准备工作 需要提前安装Ceres solver和PCL,如果你安装的是完整版ROS那么PCL已经自动安装好了,ceres安装参见我另一篇博客https://blog.csdn.net/weixin ...
- 轨迹误差评估指标[APE/RPE]和EVO[TUM/KITTI]
轨迹误差评估指标[APE/RPE]和EVO[TUM/KITTI] 1. ATE/APE 2. RPE 3. EVO 3.1 评估指标 3.2 使用 3.2.1 轨迹可视化 3.2.2 APE 3.2. ...
- 激光slam坐标系和视觉slam坐标系对齐,两个slam系统之间坐标对齐,轨迹对齐,时间戳对齐
1. 面临的问题 两个独立的SLAM系统中,常常面临一个问题,那就是一个系统上的某一个pose,对应到另一个系统中是在哪里? 紧耦合的SLAM系统,不存在这个问题,比如激光雷达和相机融合的SLAM系统 ...
- SLAM数据集(百度网盘)
SLAM数据集 1.TUM数据集 1.1 RGB-D 数据集 1.2 VIO 数据集 1.3 单目数据集 2.EUROC数据集 3.KITTI 数据集 3.1 灰度序列(data_odometry_g ...
- 带GPS的SLAM数据集汇总
1.带GPS的相关SLAM数据集 Kitti (部分带部分不带,看网站写的很详细,数据集很常用) http://www.cvlibs.net/datasets/kitti/eval_odometry. ...
- 华南理工提出多模态ReID新数据集,语义自对齐网络SSAN达到SOTA性能!代码数据集均已开源!...
关注公众号,发现CV技术之美 本篇分享论文『Semantically Self-Aligned Network for Text-to-Image Part-aware Person Re-ident ...
- ICP将两个轨迹对齐
1.首先录制包含GPS和你跑代码所需的话题的bag包 2.下载rviz_satellite,这个可以将将GPS在在卫星地图显示. ROS下如何将GPS数据在卫星地图显示(两种开源方法)_zllz090 ...
最新文章
- 2019年工信部重点实验室名单公布 涵盖卫星导航及人工智能等多个领域
- RHEL6下squid代理之正向代理
- python编程if语法-Python编程入门基础语法详解经典
- (18)[转载]:跳台阶问题
- 小程序分享到朋友圈功能_来啦!小程序支持分享朋友圈
- redis事务原理,使用,详解
- 欢乐纪中A组莫名其妙赛【2019.6.6】
- 2020胡润百富榜:马云蝉联首富,马化腾财富增长最多
- Badboy+Jmeter进行性能测试
- 《R语言数据分析》——导读
- wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码
- 如何优雅的调用第三方接口
- 【英语天天读】Albert Einstein’s Advices
- VEP视频文件怎么转换成MP4文件?
- html图片标签img的介绍以及基本用法详解
- 30几个HTML5经典动画应用回顾 让你大饱眼福
- 基于阿里云生态构建网聚宝业务监控系统
- RISC-V 指令格式
- ios 图标 圆角 大小
- CF850D Tournament Construction
热门文章
- 托福、雅思、托业有什么区别?
- 笔记:Python Data Science Toolbox (Part 1)
- Unity官网注册账号绑定手机国籍更改失败
- java poi 设置标题_java POI操作word2010简单实现多级标题结构
- 在线3D大脑建模网站分享
- mybatis处理批量数据插入怎么处理效率最高
- 当下流行架构中的一些技术思考
- 全新版大学英语综合教程第四册学习笔记(原文及全文翻译)——2A - Smart Cars(智能汽车)
- 数学----两个或者多个函数相乘求它们的导数
- This relative module was not found: Error: Can‘t resolve ‘../assets/bg.jpg‘