题外话,Ubuntu20.04使用该链接安装EVO
一、使用EVO评测ORB-SLAM3的结果
1.1 EUROC公开数据集
evo_ape euroc MH01-GT.csv f_dataset-MH01_monoi2.txt -va --plot --plot_mode xyz --save_results a.zip
命令中的变量含义:
euroc:euroc格式,仅表示后一个的文件是euroc格式的、
MH01-GT.csv:EUROC公开数据集公开的GroundTruth文件,不需要任何更改。
f_dataset-MH01_monoi2.txt:ORB-SLAM3生成的轨迹文件,因为TUM的格式:时间戳(秒)tx ty tz qx qy qz qw 。因为时间戳需要是以秒为单位,所以需要将ORB生成的文件的时间戳(纳秒)改成秒。可以使用以下Python脚本。
注意:使用EVO工具计算的误差结果和ORB-SLAM3提供的evaluate_ate_scale.py的结果是一样的。因为它们使用的都是EUROC提供的GroundTruth。如果使用ORB作者给的Groundtruth结果则不一样,因为ORB作者提供的GrounTruth是相机时间戳的,而EUROC给的是IMU时间戳的。
# 功能: 将位姿txt文件中的第一列时间戳由纳秒单位转成秒单位
import numpy as np
import os, sys
file_path = "./f_dataset-MH03_monoi.txt"
new_path = "./f_dataset-MH03_monoi2.txt"
def main():
file = open(file_path, "r")
lines = file.readlines()
new_line = ""
for line in lines:
val = float(line.split(' ')[0])
val = val / 1e9
val_str = str(val)
new_line = line
new_line = new_line.replace(new_line.split(' ')[0], val_str)
with open(new_path, 'a') as f:
f.writelines(new_line)
if __name__ == "__main__":
main()
1.2 TUM数据集
二、EVO评测VINS-MONO的结果
参考该网址修改VINS-MONO代码,如果只评价ATE则不用转格式,运行下面命令。
evo_ape euroc groundtruth.csv xr_result.csv -va --plot --plot_mode xyz --save_results a.zip
如果想绘制轨迹,则使用如下命令进行格式转换,生成了groundtruth.tum
#[格式转换]:将ground_truth euro格式转换为tum格式groundtruth.tum
evo_traj euroc groundtruth.csv --save_as_tum
然后绘制轨迹
evo_traj tum xr_result.txt --ref=groundtruth.tum -p --plot_mode=xyz --align --correct_scale