-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetadata.py
99 lines (79 loc) · 3.59 KB
/
metadata.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/env python
import os
import numpy as np
import csv
import time
import calendar
import yaml
import file_info
import robot_position
def load_metadata(filename):
root_dir = os.path.dirname(filename)
gaze_index = file_info.get_index(os.path.basename(filename))
timestamps = np.load(os.path.join(root_dir, '..', 'gaze', gaze_index, 'world_timestamps.npy'))
print 'Gaze index:', gaze_index
info = {}
with open(os.path.join(root_dir, '..', 'gaze', gaze_index, 'info.csv')) as f:
reader = csv.DictReader(f)
for row in reader:
info[row['key']] = row['value']
timestamps = timestamps - timestamps[0] + calendar.timegm(time.strptime(info['Start Date'] + info['Start Time'], '%d.%m.%Y%H:%M:%S'))+4*60*60 # 4 hour time zone offset
# offset_file = os.path.join(root_dir, '..', 'gaze', gaze_index, 'offset.txt')
# if os.path.exists(offset_file):
# timestamps = timestamps + np.loadtxt(offset_file)
robot_pos = robot_position.RobotPosition(os.path.join(root_dir, '..', 'robot', 'trajdata_%s_export.csv' % gaze_index))
print 'Time: %.1f-%.1f' % (timestamps[0], timestamps[-1])
print 'Pos: %.1f-%.1f' % (robot_pos.timestamps[0], robot_pos.timestamps[-1])
print info
return timestamps, robot_pos
def save_offset(filename, offset):
root_dir = os.path.dirname(filename)
gaze_index = file_info.get_index(os.path.basename(filename))
offset_file = os.path.join(root_dir, '..', 'gaze', gaze_index, 'offset.txt')
np.savetxt(offset_file, np.array([offset]))
def load_offset(filename):
root_dir = os.path.dirname(filename)
gaze_index = file_info.get_index(os.path.basename(filename))
offset_file = os.path.join(root_dir, '..', 'gaze', gaze_index, 'offset.txt')
if os.path.exists(offset_file):
return np.loadtxt(offset_file)
else:
return 0.
def load_stabilization(filename):
root_dir = os.path.dirname(filename)
trial_name, _ = os.path.splitext(os.path.basename(filename))
stab_file = os.path.join(root_dir, '..', 'stabilize', '%s_stab.csv' % trial_name)
ref_frame = [];
tfs = [];
if os.path.exists(stab_file):
with open(stab_file, 'r') as stab:
stab_reader = csv.DictReader(stab)
for row in stab_reader:
ref_frame.append(int(row['ref_frame']))
tx = float(row['tx'])
ty = float(row['ty'])
th = float(row['theta'])
s = float(row['s'])
ct = np.cos(th)
st = np.sin(th)
tfs.append( np.array([ [ s*ct, -s*st, tx],
[ s*st, s*ct, ty] ]) )
return ref_frame, tfs
def load_stable_extrinsics(filename):
filestem, _ = os.path.splitext(os.path.basename(filename))
calfile = os.path.join(os.path.dirname(filename), '..', 'extrinsic_calibration', filestem, 'all_stable_extrinsics.yaml')
with open(calfile, 'r') as f:
ext = yaml.load(f)
# print ext
return ext
# reader = csv.DictReader(f)
# for row in reader:
# ext[int(reader['ref_frame'])] = {
# 'rvec': np.array(reader[''])
# }
def load_extrinsics_data(filename, ref_id):
filestem, _ = os.path.splitext(os.path.basename(filename))
cal_dir = os.path.join(os.path.dirname(filename), '..', 'extrinsic_calibration', filestem)
p2_file = os.path.join(cal_dir, 'cal_points_%05d_2d.npy' % ref_id)
grid_file = os.path.join(cal_dir, 'cal_points_%05d_grid.npy' % ref_id)
return np.load(p2_file), np.load(grid_file)