EVO工具在EUROC数据集TUM数据集,评测ORB-SLAM3和VINS-MONO

题外话,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

EVO工具在EUROC数据集TUM数据集,评测ORB-SLAM3和VINS-MONO_第1张图片

你可能感兴趣的:(python,开发语言)