两种比较方式:
-运行时间的快慢
-误差的大小
疑惑:result必须切换到秒,除以1e9,而真值还是用纳秒。
明天换几个好的数据集,光照变化不明显的,运动模糊的这些去除。
其中-r表示ape所基于的姿态关系,不添加-r/–pose_relation和可选项,则默认为trans_part。
-v表示verbose mode,详细模式,
-a表示采用SE(3) Umeyama对齐,其余可选项如下表所示。
不加-s表示默认尺度对齐参数为1.0,即不进行尺度对齐。
一定要加上-s
一、运行时间的比较:
运行的时间在台式机上运行的时间特别慢,不调整UI的sparsity,最后只能计算三到五帧。正常情况应该是20帧左右。
二、误差分析:
TUM真实值格式: timestamp tx ty tz qx qy qz qw
EuRoc真实值格式: timestamp tx ty tz qw qx qy qz
true.csv文件不用修改,result.txt文件输出为EuRoc格式
result.txt文件输出的timestamps为0。这一块需要修改。
EuRoc的时间戳超过int64,需要time = time/1e9;
去除空格
DSO运行得到的result.txt有空格(每行有8个元素,结尾没有空格, 时间以秒为单位),运行下面的命令:
cat result.txt | tr -s [:space:] > result_new.txt
在zshrc中添加 setopt no_nomatch
轨迹误差:
evo_ape euroc true.csv result_imu.txt -as -p
evo_ape euroc true.csv result_new.txt -v -a -p --plot_mode=xz --save_results ./result/dso.ZIP
显示轨迹:
evo_traj euroc V102_groundtruth.csv --plot
把euroc转换为tum格式:
evo_traj euroc V102_groundtruth.csv --save_as_tum
evo_rpe tum true.txt estimate.txt --pose_relation angle_deg --delta 1 --delta_unit m
用法: python euroc2tum.py
程序功能:处理时间戳和互换qw和qx的位置
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import csv
# 输入csv文件名称和输出txt文件名称
csv_file = raw_input('Enter the name of your input csv file: ')
txt_file = raw_input('Enter the name of your output txt file: ')
with open(txt_file, "w") as my_output_file:
with open(csv_file, "r") as my_input_file:
#逐行读取csv存入txt中
for row in csv.reader(my_input_file):
# 前8个数据是:timestamp tx ty tz qw qx qy qz
row = row[0:8]
# 时间戳单位处理
temp1 = row[0][0:10] + '.' + row[0][10:16]
row[0] = temp1
# 互换 qw 和 qx
temp2 = row[4]
row[4] = row[7]
row[7] = temp2
my_output_file.write(" ".join(row)+'\n')
my_output_file.close()