SLAM 轨迹评估工具EVO

2 篇文章 0 订阅

一 EVO环境安装

1.1 二进制安装

pip install evo --upgrade --no-binary evo

1.2 源码安装

推荐使用源代码安装方式。,首先安装依赖项: 
sudo pip install --upgrade pip
sudo pip install --user --upgrade
 
sudo apt-get install libfreetype6-dev gfortran
pip install matplotlib
pip install scipy

安装evo:  

git clone -b python2  https://github.com/MichaelGrupp/evo.git
cd evo
pip install --editable . --upgrade --no-binary evo

出现以下情况则表示安装成功了
在这里插入图片描述

二 使用方法

EVO提供了绝对误差和相对误差评估命令和图形分析工具(暂且这样称呼它):
   evo_ape - absolute pose error (绝对误差) 
   evo_rpe - relative pose error (相对误差)   
   Tools:
   evo_traj - tool for analyzing, plotting or exporting one or more trajectories(用于分析一个或者多个曲线)
   evo_res - tool for comparing one or multiple result files from evo_ape or evo_rpe
   evo_fig - (experimental) tool for re-opening serialized plots (saved with --serialize_plot)
   evo_config - tool for global settings and config file manipulation  
  这里需要注意一下 EUROC数据、TUM数据集、KITTI数据集使用的四元数顺序是不一样的,因此在使用命令的时候后续需要加参数予以区分,我们在自己保存算法输出的轨迹文件的时候应当注意这一点。 在evo的源码中 evo/test/data 目录下面有用于测试的数据集 

2.1 TUM数据集上使用

2.1.1 计算轨迹的绝对误差(evo_ape)

评估算法输出的曲线和真实值之间的绝对误差(absolute pose error)

mkdir results
evo_ape tum fr2_desk_groundtruth.txt  fr2_desk_ORB.txt -va --plot --plot_mode xz --save_results results/ORB_fr2_desk.zip

执行命令以后,在终端中打印出RMSE等误差值
在这里插入图片描述
若出现错误: [ERROR] evo module evo.main_ape crashed - no logfile written (disabled) 则是由于matplotlib 的问题,需要升级一下 matplotlib

pip install matplotlib --upgrade

2.1.2 绘制多条曲线(evo_traj)

在一张图中绘制两个算法的输出曲线(rgbdslam-v2 和 orb-slam),其中 --ref的参数为指定的真是轨迹值。

evo_traj tum freiburg1_xyz-ORB_kf_mono.txt freiburg1_xyz-rgbdslam.txt  --ref=freiburg1_xyz-groundtruth.txt -va --plot --plot_mode xy
在图片的界面中可以修改曲线的颜色等参数。  

在这里插入图片描述

2.1.3 分析多条曲线(evo_res)

假设现在我使用2.1.1中命令生成了在fr1_xyzfr2_desk两个序列上的Zip文件(这两个zip文件都在result目录下面)。此时我们使用 evo_res 命令分析算法在这两个序列上的性能

 evo_res results/*.zip -p --save_table results/table.csv

这表示分析 results 目录下面所有的zip文件。
在这里插入图片描述

2.2 KITTI数据集上使用

2.2.1 计算轨迹的绝对误差

这里会生成一个名为xxx.zi压缩文件,这个在绘制多条曲线会用到。

mkdir results
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/KITTI_00_ORB.zip

在这里插入图片描述

2.2.2 绘制多条曲线

将待绘制的曲线文件放置于同一个文件夹test中,

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

其中,KITTI_00_ORB.txt 表示第1个算法在序列上运行的文件,KITTI_00_SPTAM.txt* 表示第2个算法在序列上运行的文件,–ref=KITTI_00_gt.txt表示指定真实的groundtruth轨迹文件,-p --plot_mode=xz 则命令参数,在XOZ平面绘制轨迹。
在这里插入图片描述

2.2.3 分析多条曲线

evo_res results/*.zip -p --save_table results/table.csv

在这里插入图片描述

2.3 EUROC数据集上使用

2.3.1 计算轨迹的绝对误差

评估算法输出的曲线和真实值之间的绝对误差(absolute pose error)

evo_ape euroc V102_groundtruth.csv V102.txt -va --plot --plot_mode xy --save_results results/EUROC.zip

在这里插入图片描述其余两个命令与前面的操作一样,只需要将命令中的 eurockitti替换成tum即可。

三 SLAM输出的轨迹保存成TUM数据格式

TUM数据格式: timestamp tx ty tz qx qy qz qw
例如:1317354879.544785976 0.33350 -0.00480 -0.07558-0.49915 0.50408 -0.49682 0.49992

void SaveEuRocTraj(double timestamp, const Eigen::Matrix<float, 3,4> &pose_)
{
    ofstream foutC(traj_path_, ios::app);
    foutC.setf(ios::fixed, ios::floatfield);
    foutC.precision(9);
    foutC << timestamp << " ";
    foutC.precision(5);

    Eigen::Matrix<float, 3, 3> R = pose_.block<3,3>(0,0);
    Eigen::Vector3f t = pose_.col(3);

    Eigen::Quaternionf q(R);

    float x = t(0);
    float y = t(1);
    float z = t(2);
    float qx = q.x();
    float qy = q.y();
    float qz = q.z();
    float qw = q.w();

    foutC << x <<" " << y << " " << z << "" << qx << " " << qy << " " << qz << " " << qw << std::endl;
}

参考资料

官方教程:https://github.com/MichaelGrupp/evo https://blog.csdn.net/A_L_A_N/article/details/88708979 https://blog.csdn.net/qq_37568167/article/details/104961523
如果文章对你有所帮助,请大家帮忙点个赞。O(∩_∩)O 欢迎大家在评论区交流讨论

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SLAM精度评估中的EVO是指使用EVO工具评估SLAM系统的轨迹误差。EVO是一个开源的工具,用于评估SLAM系统的性能。它提供了一系列命令和功能,可以计算和可视化SLAM系统的轨迹误差。 在EVO中,有几个常用的命令可以用来评估SLAM系统的轨迹误差。其中,evo_traj命令用于评估轨迹误差,可以使用手写的ATE(绝对位姿误差)和RPE(相对位姿误差)来比较SLAM系统的性能。\[1\] 相对位姿误差主要用于比较运动(姿态增量),而不是进行绝对位姿的比较。相对位姿误差可以给出局部精度,例如SLAM系统每米的平移或旋转漂移量。可以使用evo_rpe命令来计算相对位姿误差,并通过设置参数来进行可视化和保存结果。\[2\] 另外,evo_ape命令可以用于计算ATE(绝对位姿误差),并提供了可视化和保存结果的功能。可以使用该命令来评估SLAM系统在KITTI数据集上的性能。\[3\] 总之,EVO是一个用于评估SLAM系统性能的工具,可以通过计算和可视化轨迹误差来评估SLAM系统的精度。可以使用evo_traj、evo_rpe和evo_ape等命令来进行评估和分析。 #### 引用[.reference_title] - *1* *2* [SLAM精度测评——EVO进阶](https://blog.csdn.net/Darlingqiang/article/details/123534388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ros中SLAMEVO、APE测评——SLAM精度测评(一)](https://blog.csdn.net/Yangy_Jiaojiao/article/details/124419966)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值