兩種比較方式:
-運(yùn)行時(shí)間的快慢
-誤差的大小
疑惑:result必須切換到秒云石,除以1e9,而真值還是用納秒唉工。
明天換幾個(gè)好的數(shù)據(jù)集,光照變化不明顯的汹忠,運(yùn)動(dòng)模糊的這些去除淋硝。
其中-r表示ape所基于的姿態(tài)關(guān)系,不添加-r/–pose_relation和可選項(xiàng),則默認(rèn)為trans_part宽菜。
-v表示verbose mode,詳細(xì)模式谣膳,
-a表示采用SE(3) Umeyama對(duì)齊,其余可選項(xiàng)如下表所示铅乡。
不加-s表示默認(rèn)尺度對(duì)齊參數(shù)為1.0继谚,即不進(jìn)行尺度對(duì)齊。
一定要加上-s
一隆判、運(yùn)行時(shí)間的比較:
運(yùn)行的時(shí)間在臺(tái)式機(jī)上運(yùn)行的時(shí)間特別慢犬庇,不調(diào)整UI的sparsity僧界,最后只能計(jì)算三到五幀侨嘀。正常情況應(yīng)該是20幀左右臭挽。
二、誤差分析:
TUM真實(shí)值格式: timestamp tx ty tz qx qy qz qw
EuRoc真實(shí)值格式: timestamp tx ty tz qw qx qy qz
true.csv文件不用修改咬腕,result.txt文件輸出為EuRoc格式
result.txt文件輸出的timestamps為0欢峰。這一塊需要修改。
EuRoc的時(shí)間戳超過int64涨共,需要time = time/1e9;
去除空格
DSO運(yùn)行得到的result.txt有空格(每行有8個(gè)元素纽帖,結(jié)尾沒有空格, 時(shí)間以秒為單位),運(yùn)行下面的命令:
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轉(zhuǎn)換為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
程序功能:處理時(shí)間戳和互換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個(gè)數(shù)據(jù)是:timestamp tx ty tz qw qx qy qz
row = row[0:8]
# 時(shí)間戳單位處理
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()