EVO工具的使用

一、EVO简介

EVO是用于处理、评估和比较里程计和SLAM算法的轨迹输出的工具
GitHub项目地址

二、轨迹

EVO进行轨迹对比时,对输出的轨迹格式有一定的限制和规定。在使用evo_traj等工具时需要事先给出轨迹的对应类型。

支持的轨迹格式

  1. ros——ROS数据包
    当数据包中含有topic:geometry_msgs/PoseStamped, geometry_msgs/TransformStamped, geometry_msgs/PoseWithCovarianceStampednav_msgs/Odometry,可以使用EVO工具进行轨迹对比。
    在v1.9版本之后,TF类topic也同样支持EVO评估。

  2. euroc——EuRoC MAV数据集
    本身EuRoC数据集不支持EVO工具的直接使用,需要转换成TUM类型数据集进行评估。
    EuRoC数据集中以csv结尾的文件存储了地面真值信息。
    使用EuRoC数据集时要注意坐标系,ground truth,IMU和Camera之间有着不同的轴约定。

  3. kitti——KITTI数据集
    KITTI数据集输出的轨迹数据中不包含时间戳信息。KITTI轨迹的文件中存储12个描述数据,是齐次位姿矩阵SE(3)的前三行

    //SE(3)
    a b c d
    e f g h
    i j k l
    0 0 0 1
    //kitti traj file
    a b c d e f g h i j k l
    
  4. tum——TUM RGB-D数据集
    每行有8个条目,包含时间戳(以为单位)、位置和方向(四元数),每个值由空格分隔,结尾没有空格

    timestamps x y z q_x q_y q_z q_w
    

轨迹之间的转换

不同类型的轨迹之间有的可以互相转换有的则不可以,下表给出了轨迹类型之间的转换关系

–save_as_bag–save_as_kitti–save_as_tum
bagyesyesyes
eurocyesyesyes
kittinoyesno
tumyesyesyes
//Example
// export a EuRoC groundtruth file to a TUM trajectory
evo_traj euroc data.csv --save_as_tum
//(will be saved as data.tum)

//export TUM trajectories to KITTI format
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_kitti
//(will be saved as *.kitti)

//export TUM trajectories to ROS bagfile
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag
//(will be saved as <timestamp>.bag with topics traj_1, traj_2 and traj_3)

三、常用命令

evo工具主要有6个常用命令

  • evo_ape:用于评估绝对位姿误差
  • evo_rpe:用于评估相对位姿误差
  • evo_traj:用于画轨迹、输出轨迹文件、转换轨迹数据格式
  • evo_res:比较来自evo_ape和evo_rpe生成的一个或多个结果文件的工具
  • evo_fig:(不常用)用于重新打开序列化图
  • evo_config:(不常用)evo工具全局设置和配置文件操作

3.1 evo_ape

用于评估两个轨迹的绝对轨迹误差,最简单的使用方法如下

evo_ape kitti 1.txt 2.txt

在这里两条轨迹的数据格式必须相同!!。上述命令运行之后会在终端输出统计信息(单位:米)

max:最大误差
mean:误差均值
median:误差中位数
min:最小误差
rmse:均方根误差
sse:方差
std:标准差

更为常用的命令为

evo_ape tum 1.txt 2.txt -a -p -s

在这里-a,-s是对两个轨迹进行尺度和位姿的对齐,他会直接对齐到第一个的轨迹。-p则是将轨迹画出来显示。

-a/–align的使用注意:
在kitti数据格式时,由于kitti数格式没有时间戳,evo工具没法通过时间戳将两个轨迹对齐。具体解决方法会在“四、其他工具”中解决。

如果需要多个不同的轨迹进行对比,可以通过==–save_results==命令保存

evo_ape tum 1.txt 2.txt --save_results result.zip

3.2 evo_rpe

用于评估两条轨迹的相对位姿误差,使用方式基本上和evo_ape相同。

3.3 evo_traj

最基本的命令,用于画出轨迹、输出轨迹文件、进行轨迹之间的转换。在使用前需要给出轨迹的数据标准。
最简单的应用

evo_traj tum 1.txt	

该命令会在屏幕上显示轨迹的基本信息,包括位姿个数、轨迹长度以及运行时间等。
当在上述的命令之后加上简单的参数-p,就会在屏幕上显示轨迹。

evo_traj tum 1.txt -p

相关参数的使用和evo_ape的用法相同,但在-a的使用上有一定的区别。在使用-a进行轨迹对齐时,需要给出ref也就是轨迹要以哪个为参考进行旋转和平移的转换。

evo_traj tum 1.txt 2.txt -a --ref=1.txt

至于轨迹的保存类型的更改在二、轨迹中的轨迹之间的转换中给出了详细的例子,在这里就不进行重复了。

3.4 evo_res

主要用于多个evo_ape或evo_rpe结果的比较。最常用的命令如下:

evo_res 1.zip 2.zip

将会输出比较多个轨迹的最大值、均值、中位数、最小值、均方根误差、方差和标准差的信息

四、其他工具

evo工具文件夹下准备了kitti转tum类型数据的方法:

python2 kitti_poses_and_timestamps_to_trajectory.py 00.txt times.txt kitti_00_tum.txt

需要准备对应kitti数据的时间戳信息。

  • 8
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值