1.资料

视觉里程计的轨迹评估的工具:evo

一种SLAM精度评定工具——EVO使用方法详解

EVO使用方法详解:写的很好!

视觉SLAM/视觉里程计论文绘图工具/评测工具之evo

安装和使用evo工具遇到的坑

evo_github_wiki

evo_github

2.命令总结

2.0.不常用命令

  • 修改时间戳对齐的最大容忍时间
--t_max_diff 0.01   

2.1.两个指标命令,四个工具命令

指标命令

  • evo_ape - absolute pose error 绝对位姿误差
  • evo_rpe - relative pose error 相对位姿误差

工具命令

  • 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

2.2.命令示例

2.2.1.绘制一条轨迹

  • 1evo_traj命令绘制轨迹;
  • 2个参数euroc表示绘制的轨迹是EuRoc数据集的格式;
  • 3个参数是绘制的轨迹文件。但是如果只到这里的话,这个指令只是显示轨迹的基本信息
  • 若要绘制轨迹变成图像,则增加第4个参数 -p--plot
  • 5个参数--plot_mode是对绘图的显示模式的设置,这里设置视角为xyz视角。
evo_traj euroc GT_MH_01_data.csv -p --plot_mode xyz

在这里插入图片描述

2.2.2.绘制两条轨迹,一条为真实参考轨迹

  • 1evo_traj命令绘制轨迹;
  • 2个参数tum表示绘制的轨迹是TUM数据集的格式;
  • 3个参数是绘制的轨迹文件;
  • 4个参数用--ref=选项作为前缀表示真实参考轨迹;
  • 5个参数中的-a选项表示对齐两条轨迹,第5个参数中的-v选项表示输出轨迹对齐的详细信息(即对齐的平移、旋转);
  • 6个参数用-p选项表示绘制图像,用--plot_mode选项表示对绘图显示模式的设置。
evo_traj tum vins_result_loop.tum --ref=GT_MH_01_data.tum -va -p --plot_mode xyz

在这里插入图片描述

2.2.3. 绘制轨迹误差结果图

  • 1evo_ape命令计算绝对位姿误差;
  • 2个参数tum表示绘制的轨迹是TUM数据集的格式;
  • 3个参数是真实参考轨迹;
  • 4个参数是绘制的轨迹文件;
  • 5个参数中的-a选项表示对齐两条轨迹,第5个参数中的-v选项表示输出轨迹对齐的详细信息(即对齐的平移、旋转);
  • 6个参数用-p选项表示绘制图像,用--plot_mode选项表示对绘图显示模式的设置。
evo_ape tum GT_MH_01_data.tum vins_result_loop.tum -va -p --plot_mode xyz

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

2.2.4.转换euroc轨迹格式为tum格式

evo_traj euroc GT_V1_02_medium.csv --save_as_tum

3.使用evo评价VINS-Mono精度

参考:完美实现使用evo评估VINS-Mono

VINS-Mono中使用的是EuRoc数据集,这里选择把它的输出转成TUM格式的轨迹文件。

  • 首先修改vins源码. 打开 visulization.cpp, 找到 写文件部分代码,并修改为:
// write result with tum format, for evo tools
ofstream foutC(VINS_RESULT_PATH, ios::app);
foutC.setf(ios::fixed, ios::floatfield);
foutC.precision(10);
foutC << header.stamp.toSec()<< " ";  //; 注意,最后是空格
foutC.precision(5);
foutC << estimator.Ps[WINDOW_SIZE].x() << " "
      << estimator.Ps[WINDOW_SIZE].y() << " "
      << estimator.Ps[WINDOW_SIZE].z() << " "
      // 注意四元数实部和虚部顺序交换了
      << tmp_Q.x() << " "
      << tmp_Q.y() << " "
      << tmp_Q.z() << " "
      << tmp_Q.w() << endl;   //; 注意,这一行最后一个数据没有空格
foutC.close();

此时跑完一次数据集之后,会在对应的config.yaml文件配置的路径中输出轨迹文件,其结尾仍然是.csv,但是已经是TUM的格式了。
在这里插入图片描述

  • 使用evo评价轨迹精度
    命令中的data.csv是下载EuROC数据集得到的轨迹真值,在state_groundtruth_estimate0/data.csv路径下。
    命令中最后--save_results选项就是把精度分析的结果图片保存起来,保存到后面的a.zip文件夹中。
evo_ape euroc data.csv vins_result_no_loop.csv -va -p --plot_mode xyz --save_results a.zip
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐