38 if(type == landmarkType.BLUE):
40 elif(type == landmarkType.YELLOW):
42 elif(type == landmarkType.ORANGE):
44 elif(type == landmarkType.BIG_ORANGE):
46 elif(type == landmarkType.TIMEKEEPING):
48 elif(type == landmarkType.INVISIBLE):
52def writeYaml(fileName, cones, leftLane, rightLane, timeKeeping, startPose, earthToTrack):
54 start_position = startPose[0]
55 start_orientation = startPose[1]
56 originGeodeticCoordinates = earthToTrack[0]
57 originENURotation = earthToTrack[1]
64 unknown.append({
"position": f
"[{c[0][0]}, {c[0][1]}, {c[0][2]}]",
"class":
landmarkTypeToString(c[1])})
66 left.append({
"position": f
"[{c[0][0]}, {c[0][1]}, {c[0][2]}]",
"class":
landmarkTypeToString(c[1])})
68 right.append({
"position": f
"[{c[0][0]}, {c[0][1]}, {c[0][2]}]",
"class":
landmarkTypeToString(c[1])})
70 time_keeping.append({
"position": f
"[{c[0][0]}, {c[0][1]}, {c[0][2]}]",
"class":
landmarkTypeToString(c[1])})
73 yaml_dict = OrderedDict({
74 "track": OrderedDict({
75 "version": str(version_number),
76 "lanesFirstWithLastConnected" :
True,
77 "start": OrderedDict({
78 "position": f
'[{start_position[0]}, {start_position[1]}, {start_position[2]}]',
79 "orientation": f
'[{start_orientation[0]}, {start_orientation[1]}, {start_orientation[2]}]'}),
80 "earthToTrack": OrderedDict({
81 "position": f
'[{originGeodeticCoordinates[0]}, {originGeodeticCoordinates[1]}, {originGeodeticCoordinates[2]}]',
82 "orientation": f
'[{originENURotation[0]}, {originENURotation[1]}, {originENURotation[2]}]'}),
85 "time_keeping": time_keeping,
89 with open(path,
'w+')
as f:
92 yaml.dump(yaml_dict, yaml_dumper)
100 data = yaml.load(path)
106 lanesFirstWithLastConnected =
False
107 startPose = [np.zeros(3), np.zeros(3)]
108 earthToTrack = [np.zeros(3), np.zeros(3)]
109 if(
'lanesFirstWithLastConnected')
in data[
'track']:
110 lanesFirstWithLastConnected = bool(data[
'track'][
'lanesFirstWithLastConnected'])
111 if(
'start')
in data[
'track']:
112 startPose = [np.array(data[
'track'][
'start'][
'position']), np.array(data[
'track'][
'start'][
'orientation'])]
113 if(
'earthToTrack')
in data[
'track']:
114 earthToTrack = [np.array(data[
'track'][
'earthToTrack'][
'position']), np.array(data[
'track'][
'earthToTrack'][
'orientation'])]
115 for c
in data[
'track'][
'left']:
116 leftCones.append([np.array(c[
'position']), c[
'class']])
117 for c
in data[
'track'][
'right']:
118 rightCones.append([np.array(c[
'position']), c[
'class']])
119 for c
in data[
'track'][
'time_keeping']:
122 for c
in data[
'track'][
'unknown']:
123 unkownCones.append([np.array(c[
'position']), c[
'class']])
124 return (unkownCones, leftCones, rightCones, timekeeping, lanesFirstWithLastConnected, startPose, earthToTrack)
writeYaml(fileName, cones, leftLane, rightLane, timeKeeping, startPose, earthToTrack)