一、概述
evo是一款用于视觉里程计和SLAM问题的轨迹评估工具. 核心功能是能够绘制相机的轨迹, 或评估轨迹与真值之间的误差. 支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag), 同时支持这些数据格式之间的相互转换,本文轨迹展示以tum数据格式为例。
二、安装
evo安装方式比较简单,有两种方式:
1.便捷安装
.pip3 install evo --upgrade --no-binary evo
2.源码安装
git clone https://github.com/MichaelGrupp/evo.git
pip3 install --editable .--upgrade --no-binary evo
三、evo使用
1.evo设置
evo全局设置操作-evo_config
1.evo_config show
ps:截取部分显示
2.evo_config set
利用evo_config set可以设置evo中有关参数的值。下面列举一些常用的参数及含义。
1.plot_export_format表示图片的输出格式,常见的格式有pdf,png等。
命令:evo_config set plot_export_format pdf (将输出图像的存储格式设置为pdf格式。)
2.plot_figsize表示图片的尺寸,第一个数字代表横轴方向的尺寸,第二个数字代表纵轴方向的尺寸。
命令:evo_config set plot_figsize 6 6 (将输出图像横轴方向尺寸设置为6,纵轴方向尺寸设置为6。)
3.plot_fontscale表示输出图像中字体的粗细。
命令:evo_config set plot_fontscale 1.8 (将输出图像中的字体粗细设置为1.8。)
4.plot_linewidth代表作图时线的宽度。
命令:evo_config set plot_linewidth 1.8 (将输出图像的线宽设置为1.8。)
5.plot_reference_color表示输出图像中参考轨迹的颜色。
命令:evo_config set plot_reference_color black (将输出图像中参考轨迹的颜色设置为黑色。)
6.plot_reference_linestyle表示输出图像中参考轨迹的线型。
命令:evo_config set plot_reference_linestyle - (将输出图像中参考轨迹的线型设置为 -。)
7.plot_seaborn_style表示输出图像中背景网格颜色
命令:evo_config set plot_seaborn_style darkgrid (将输出图像中背景网格设置为"darkgrid"。)
8.plot_split表示是否分开显示各个生成的图像,因为有的时候一组数据会同时生成多幅图,可以选择在同一个窗口显示也可以选择在不同的窗口显示。
命令:evo_config set plot_split true (将输出图像分不同的窗口显示。)
9.plot_trajectory_linestyle表示输出图像中估计轨迹的线型。
命令:evo_config set plot_trajectory_linestyle - (将输出图像中估计轨迹的线型设置为-。)
10.table_export_format表示表格数据的输出格式,例如csv,excel,latex,json。
命令:evo_config set table_export_format csv (将输出表格数据的格式设置为 csv。)
11.evo_config reset 将参数还原到默认值。
2.evo_traj轨迹绘制
evo_traj指令可以将各个算法估计出的路径和真实路径画在同一幅图中。
例:
evo_traj tum GroundTruth.txt vins-fusion.txt --ref=have_fun_tum.txt -p --plot_mode=xz
tum表明处理的是tum数据集的相关结果,这里也可以替换为kitti和euroc;
GroundTruth.txt vins-fusion.txt 表示的是不同算法所估计出的轨迹,这里可以列举多个文件每个文件名之间用一个空格隔开;
–ref=GroundTruth.txt指明参考轨迹即真实轨迹;
-va包含两部分;1.-v或–verbose指明输出文件数据的相关信息;2.-a或–align指明对轨迹进行配准;
–plot表示画图;
–plot_mode xz表示图像投影在xoz平面上,其余可选参数为:xy,yx,yz,zx,zy,xyz;
画图结果如下:
3.evo_ape计算轨迹的绝对位姿误差
绝对位姿误差,用于比较估计轨迹和参考轨迹并计算整个轨迹的统计数据,常用于评估测试轨迹的全局一致性。这里还是以tum为例,kitti和euroc格式相同。
evo_ape tum GroundTruth.txt vins-fusion.txt -r full -va --plot --plot_mode xz --save_plot trajape --save_results ape_result/vins-fusion.zip
tum表明处理的是tum数据集的相关结果,这里也可以替换为kitti和euroc;
GroundTruth.txt代表真实轨迹的数据;
vins-fusion.txt代表估计轨迹的数据;
-r full表示同时考虑旋转和平移误差得到的ape,无单位(unit-less);
另外:
-r trans_part表示考虑平移部分得到的ape,单位为m;
-r rot_part表示考虑旋转部分得到的ape,衡量旋转精度,无单位(unit-less);
-r angle_deg表示考虑旋转角得到的ape,单位°(deg);
-r angle_rad表示考虑旋转角得到的ape,单位弧度(rad);
-va包含两部分;1.-v或–verbose指明输出文件数据的相关信息;2.-a或–align指明对轨迹进行配准;
–plot表示画图;
–plot_mode xz表示图像投影在xoz平面上,其余可选参数为:xy,yx,yz,zx,zy,xyz;
–save_plot trajape 表示保存生成的图片名,这里写自己保存的地址;
–save_results ./vins-fusion.zip表示保存计算结果,ape_result/vins-fusion.zip这里写自己保存的地址;
4.evo_rpe 计算相对位姿误差
相对位姿误差不进行绝对位姿的比较,相对位姿误差比较运动(姿态增量)。相对位姿误差可以给出局部精度,例如SLAM系统每米的平移或者旋转漂移量。这里还是以tum为例,kitti和euroc格式相同。
evo_rpe tum GroundTruth.txt vins-fusion.txt -r full -va --plot --plot_mode xz --save_plot trajrpe --save_results rpe_result/vins-fusion.zip
tum表明处理的是kitti数据集的相关结果,这里也可以替换为kitti和euroc;
ground_truth.txt代表真实轨迹的数据;
vins-fusion.tx代表估计轨迹的数据;
-r full表示同时考虑旋转和平移误差得到的ape,无单位(unit-less);
另外:
-r trans_part表示考虑平移部分得到的rpe,单位为m;
-r rot_part表示考虑旋转部分得到的rpe,衡量旋转精度,无单位(unit-less);
-r angle_deg表示考虑旋转角得到的rpe,单位°(deg);
-r angle_rad表示考虑旋转角得到的rpe,单位弧度(rad);
-va包含两部分;1.-v或–verbose指明输出文件数据的相关信息;2.-a或–align指明对轨迹进行配准;
–plot表示画图;
–plot_mode xz表示图像投影在xoz平面上,其余可选参数为:xy,yx,yz,zx,zy,xyz;
–save_plot trajrpe 表示保存生成的图片名,trajrpe 这里写自己保存的地址;
–save_results ./vins-fusion.zip表示保存计算结果,rpe_result/vins-fusion.zip这里写自己保存的地址;
5.evo_res进行结果比较
在使用evo_ape或evo_rpe将结果保存为.zip文件后,可以利用evo_res对不同的结果进行比较。
evo_res ape_result/.zip -p --save_table ape_result.csv
evo_res ape_result/.zip -p --save_plot ape_result.pdf
ape_result/*.zip是之前使用ape或rpe生成的压缩包的地址;
-p表示画图;
–save_table ape_result.csv表示将统计指标保存在csv文件中;
–save_plot ape_result.pdf表示将误差分析图保存在pdf文件中;
6.evo其它命令
evo pkg --version 查看evo版本
evo pkg --info 查看evo的简要介绍和描述
evo pkg --pyversion 查看evo使用的python版本
evo pkg --license 查看许可证
evo pkg --location 查看evo安装路径
evo pkg --logfile 查看日志文件路径
evo pkg --open_log 打开日志文件
evo pkg --clear_log 清除日志文件
参考
版权归原作者 云端舞步 所有, 如有侵权,请联系我们删除。