2020-08-09 12:09:49 +02:00
|
|
|
#!/usr/bin/env python3
|
2019-08-23 10:01:40 +02:00
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
import json
|
|
|
|
|
|
|
|
|
|
|
|
datasets = ['Seq.', '00', '02', '03','04', '05', '06','07', '08', '09', '10']
|
|
|
|
lengths = [100, 200, 300, 400, 500, 600, 700, 800]
|
|
|
|
|
|
|
|
# Other results.
|
|
|
|
|
|
|
|
|
|
|
|
vo = {
|
|
|
|
'trans_error': {},
|
|
|
|
'rot_error': {}
|
|
|
|
}
|
|
|
|
|
|
|
|
for l in lengths:
|
|
|
|
vo['trans_error'][l] = ['Trans. error [%] ' + str(l) + 'm.']
|
|
|
|
vo['rot_error'][l] = ['Rot. error [deg/m] ' + str(l) + 'm.']
|
|
|
|
|
|
|
|
|
|
|
|
out_dir = sys.argv[1]
|
|
|
|
|
|
|
|
mean_values = {
|
|
|
|
'mean_trans_error' : 0.0,
|
|
|
|
'mean_rot_error' : 0.0,
|
|
|
|
'total_num_meas' : 0.0
|
|
|
|
}
|
|
|
|
|
|
|
|
def load_data(x, prefix, key, mean_values):
|
|
|
|
fname = out_dir + '/' + prefix + '_' + key + '.txt'
|
|
|
|
if os.path.isfile(fname):
|
|
|
|
with open(fname, 'r') as f:
|
|
|
|
j = json.load(f)
|
|
|
|
res = j['results']
|
|
|
|
for v in lengths:
|
|
|
|
num_meas = res[str(v)]['num_meas']
|
|
|
|
trans_error = res[str(v)]['trans_error']
|
|
|
|
rot_error = res[str(v)]['rot_error']
|
|
|
|
x['trans_error'][int(v)].append(round(trans_error, 5))
|
|
|
|
x['rot_error'][int(v)].append(round(rot_error, 5))
|
|
|
|
if num_meas > 0:
|
|
|
|
mean_values['mean_trans_error'] += trans_error*num_meas
|
|
|
|
mean_values['mean_rot_error'] += rot_error*num_meas
|
|
|
|
mean_values['total_num_meas'] += num_meas
|
|
|
|
else:
|
|
|
|
for v in lengths:
|
|
|
|
x['trans_error'][int(v)].append(float('inf'))
|
|
|
|
x['rot_error'][int(v)].append(float('inf'))
|
|
|
|
|
|
|
|
for key in datasets[1:]:
|
|
|
|
load_data(vo, 'rpe', key, mean_values)
|
|
|
|
|
|
|
|
|
|
|
|
row_format ="{:>24}" + "{:>10}" * (len(datasets)-1)
|
|
|
|
|
|
|
|
datasets_short = [x[:5] for x in datasets]
|
|
|
|
|
2020-08-09 12:09:49 +02:00
|
|
|
print('\nVisual Odometry (Stereo)')
|
|
|
|
print(row_format.format(*datasets_short))
|
2019-08-23 10:01:40 +02:00
|
|
|
|
|
|
|
for l in lengths:
|
2020-08-09 12:09:49 +02:00
|
|
|
print(row_format.format(*(vo['trans_error'][l])))
|
2019-08-23 10:01:40 +02:00
|
|
|
|
2020-08-09 12:09:49 +02:00
|
|
|
print()
|
2019-08-23 10:01:40 +02:00
|
|
|
|
|
|
|
for l in lengths:
|
2020-08-09 12:09:49 +02:00
|
|
|
print(row_format.format(*(vo['rot_error'][l])))
|
2019-08-23 10:01:40 +02:00
|
|
|
|
|
|
|
|
|
|
|
print('Mean translation error [%] ', mean_values['mean_trans_error']/mean_values['total_num_meas'])
|
|
|
|
print('Mean rotation error [deg/m] ', mean_values['mean_rot_error']/mean_values['total_num_meas'])
|