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)轨迹对齐与结果评估相关推荐

  1. SLAM数据集TUM,KITTI,EuRoC数据集的下载地址与真实轨迹文件的查找

    目录 前言 一.TUM数据集 1.下载地址 2.真实轨迹文件的查找 3.轨迹格式 二.KITTI数据集 1.下载地址 2.真实轨迹文件的查找 三.EuRoC数据集 1.下载地址 2.真实轨迹文件的查找 ...

  2. 手把手教你用EVO工具评估SLAM数据集TUM、KITTI、EuRoC(附代码)

    EVO工具评估TUM/KITTI/EuRoC 数据集 (1) 评估TUM数据集 以RGB-D数据集:rgbd_dataset_freiburg3_walking_xyz数据集为例 绘制轨迹并对齐: e ...

  3. M2DGR:多源多场景 地面机器人SLAM数据集(ICRA 2022 )

    Paper:https://arxiv.org/pdf/2112.13659.pdf 出处:ICRA2022 & RAL2021 项目地址:https://github.com/SJTU-Vi ...

  4. Ubuntu20.04+ROSnoetic运行A-LOAM并保存TUM格式轨迹

    1.准备工作 需要提前安装Ceres solver和PCL,如果你安装的是完整版ROS那么PCL已经自动安装好了,ceres安装参见我另一篇博客https://blog.csdn.net/weixin ...

  5. 轨迹误差评估指标[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. ...

  6. 激光slam坐标系和视觉slam坐标系对齐,两个slam系统之间坐标对齐,轨迹对齐,时间戳对齐

    1. 面临的问题 两个独立的SLAM系统中,常常面临一个问题,那就是一个系统上的某一个pose,对应到另一个系统中是在哪里? 紧耦合的SLAM系统,不存在这个问题,比如激光雷达和相机融合的SLAM系统 ...

  7. SLAM数据集(百度网盘)

    SLAM数据集 1.TUM数据集 1.1 RGB-D 数据集 1.2 VIO 数据集 1.3 单目数据集 2.EUROC数据集 3.KITTI 数据集 3.1 灰度序列(data_odometry_g ...

  8. 带GPS的SLAM数据集汇总

    1.带GPS的相关SLAM数据集 Kitti (部分带部分不带,看网站写的很详细,数据集很常用) http://www.cvlibs.net/datasets/kitti/eval_odometry. ...

  9. 华南理工提出多模态ReID新数据集,语义自对齐网络SSAN达到SOTA性能!代码数据集均已开源!...

    关注公众号,发现CV技术之美 本篇分享论文『Semantically Self-Aligned Network for Text-to-Image Part-aware Person Re-ident ...

  10. ICP将两个轨迹对齐

    1.首先录制包含GPS和你跑代码所需的话题的bag包 2.下载rviz_satellite,这个可以将将GPS在在卫星地图显示. ROS下如何将GPS数据在卫星地图显示(两种开源方法)_zllz090 ...

最新文章

  1. 2019年工信部重点实验室名单公布 涵盖卫星导航及人工智能等多个领域
  2. RHEL6下squid代理之正向代理
  3. python编程if语法-Python编程入门基础语法详解经典
  4. (18)[转载]:跳台阶问题
  5. 小程序分享到朋友圈功能_来啦!小程序支持分享朋友圈
  6. redis事务原理,使用,详解
  7. 欢乐纪中A组莫名其妙赛【2019.6.6】
  8. 2020胡润百富榜:马云蝉联首富,马化腾财富增长最多
  9. Badboy+Jmeter进行性能测试
  10. 《R语言数据分析》——导读
  11. wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码
  12. 如何优雅的调用第三方接口
  13. 【英语天天读】Albert Einstein’s Advices
  14. VEP视频文件怎么转换成MP4文件?
  15. html图片标签img的介绍以及基本用法详解
  16. 30几个HTML5经典动画应用回顾 让你大饱眼福
  17. 基于阿里云生态构建网聚宝业务监控系统
  18. RISC-V 指令格式
  19. ios 图标 圆角 大小
  20. CF850D Tournament Construction

热门文章

  1. 托福、雅思、托业有什么区别?
  2. 笔记:Python Data Science Toolbox (Part 1)
  3. Unity官网注册账号绑定手机国籍更改失败
  4. java poi 设置标题_java POI操作word2010简单实现多级标题结构
  5. 在线3D大脑建模网站分享
  6. mybatis处理批量数据插入怎么处理效率最高
  7. 当下流行架构中的一些技术思考
  8. 全新版大学英语综合教程第四册学习笔记(原文及全文翻译)——2A - Smart Cars(智能汽车)
  9. 数学----两个或者多个函数相乘求它们的导数
  10. This relative module was not found: Error: Can‘t resolve ‘../assets/bg.jpg‘