evo轨迹评估工具使用
1.资料视觉里程计的轨迹评估的工具:evo安装和使用evo工具遇到的坑evo_github_wikievo_github2.命令总结2.1.两个指标命令,四个工具命令指标命令:evo_ape- absolute pose error绝对位姿误差evo_rpe- relative pose error相对位姿误差工具命令:evo_traj - tool for analyzing, plotting
·
文章目录
1.资料
EVO使用方法详解:写的很好!
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.绘制一条轨迹
- 第1个
evo_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.绘制两条轨迹,一条为真实参考轨迹
- 第1个
evo_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. 绘制轨迹误差结果图
- 第1个
evo_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精度
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
更多推荐
已为社区贡献5条内容
所有评论(0)