blob: 065cae4ffe5fc9bbee0a6bc777bacffbc1aed3fa [file] [log] [blame]
Maxwell Hendersonf582b142023-03-05 18:33:09 -08001import sys
2
milind-u18a901d2023-02-17 21:51:55 -08003import numpy as np
Maxwell Hendersonf5123fe2023-02-04 13:44:41 -08004
milind-u18a901d2023-02-17 21:51:55 -08005from y2023.control_loops.python.graph_tools import *
Maxwell Hendersonf5123fe2023-02-04 13:44:41 -08006
Austin Schuh99dda682023-03-11 00:18:37 -08007
8def ThetaSegment(name, start, end):
9 control = np.array([(start[0] + end[0]) / 2.0, (start[1] + end[1]) / 2.0])
10 return ThetaSplineSegment(
11 name=name,
12 start=start,
13 control1=control,
14 control2=control,
15 end=end,
16 )
17
18
Austin Schuh9a11ebd2023-02-26 14:16:31 -080019named_segments = []
20points = {}
Maxwell Hendersonf5123fe2023-02-04 13:44:41 -080021
Austin Schuh9a11ebd2023-02-26 14:16:31 -080022points['Neutral'] = np.array((np.pi, 0.0, 0.0))
23
24points['GroundPickupBackConeUp'] = to_theta_with_circular_index_and_roll(
Maxwell Hendersonce816122023-03-27 20:12:38 -070025 -1.07774334, 0.39, np.pi / 2.0, circular_index=1)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -080026
Austin Schuh9a11ebd2023-02-26 14:16:31 -080027named_segments.append(
28 ThetaSplineSegment(
29 name="NeutralToGroundPickupBackConeUp",
30 start=points['Neutral'],
31 control1=np.array([3.170156, -0.561227]),
32 control2=np.array([2.972776, -1.026820]),
33 end=points['GroundPickupBackConeUp'],
milind-ud11146f2023-03-25 18:36:47 -070034 control_alpha_rolls=[(.95, np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -080035 ))
36
Austin Schuhe062be02023-03-04 21:12:07 -080037points['GroundPickupBackConeDownBase'] = to_theta_with_circular_index_and_roll(
Maxwell Hendersonce816122023-03-27 20:12:38 -070038 -1.11487594, 0.24, np.pi / 2.0, circular_index=1)
milind-u68842e12023-02-26 12:45:40 -080039
Austin Schuh9a11ebd2023-02-26 14:16:31 -080040named_segments.append(
41 ThetaSplineSegment(
Austin Schuhe062be02023-03-04 21:12:07 -080042 name="NeutralToGroundPickupBackConeDownBase",
Austin Schuh9a11ebd2023-02-26 14:16:31 -080043 start=points['Neutral'],
44 control1=np.array([3.170156, -0.561227]),
45 control2=np.array([2.972776, -1.026820]),
Austin Schuhe062be02023-03-04 21:12:07 -080046 end=points['GroundPickupBackConeDownBase'],
milind-ud11146f2023-03-25 18:36:47 -070047 control_alpha_rolls=[(.95, np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -080048 ))
49
Austin Schuhe062be02023-03-04 21:12:07 -080050points[
51 'GroundPickupFrontConeDownBase'] = to_theta_with_circular_index_and_roll(
Maxwell Hendersonce816122023-03-27 20:12:38 -070052 0.30, 0.265, -np.pi / 2.0, circular_index=0)
Austin Schuhe062be02023-03-04 21:12:07 -080053
54named_segments.append(
55 ThetaSplineSegment(
56 name="NeutralToGroundPickupFrontConeDownBase",
57 start=points['Neutral'],
58 control1=np.array([3.495221564200401, 0.4737763579250964]),
59 control2=np.array([4.110392601248856, 1.0424853539638115]),
60 end=points['GroundPickupFrontConeDownBase'],
milind-ud11146f2023-03-25 18:36:47 -070061 control_alpha_rolls=[(.95, -np.pi / 2.0)],
Austin Schuhe062be02023-03-04 21:12:07 -080062 ))
63
64points['ScoreFrontLowConeDownBase'] = to_theta_with_circular_index_and_roll(
65 0.328533, 0.40, -np.pi / 2.0, circular_index=0)
66
67named_segments.append(
68 ThetaSplineSegment(
69 name="NeutralToScoreFrontLowConeDownBase",
70 start=points['Neutral'],
71 control1=np.array([3.153481004695907, 0.4827717171390571]),
72 control2=np.array([4.107487625131798, 0.9935705415901082]),
73 end=points['ScoreFrontLowConeDownBase'],
74 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
75 ))
76
77points['ScoreFrontMidConeDownBase'] = to_theta_with_circular_index_and_roll(
78 0.697179, 0.88, -np.pi / 2.0, circular_index=0)
79
80named_segments.append(
81 ThetaSplineSegment(
82 name="NeutralToScoreFrontMidConeDownBase",
83 start=points['Neutral'],
84 control1=np.array([3.2296966803523395, 0.4274365560093907]),
85 control2=np.array([3.111677631381042, 0.6783534686461494]),
86 end=points['ScoreFrontMidConeDownBase'],
87 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
88 ))
89
Austin Schuh99dda682023-03-11 00:18:37 -080090points['ScoreBackLowConeDownTip'] = to_theta_with_circular_index_and_roll(
91 -1.17422, 0.441203, np.pi / 2.0, circular_index=1)
92
93named_segments.append(
94 ThetaSplineSegment(
95 name="NeutralToScoreBackLowConeDownTip",
96 start=points['Neutral'],
97 control1=np.array([3.0959727041167358, -0.48933188185224896]),
98 control2=np.array([3.11854219540683, -1.0398000886366843]),
99 end=points['ScoreBackLowConeDownTip'],
100 control_alpha_rolls=[(0.20, 0.0), (.95, np.pi / 2.0)],
101 ))
102
103points['ScoreFrontLowConeDownTip'] = to_theta_with_circular_index_and_roll(
104 0.327783, 0.430704, np.pi / 2.0, circular_index=0)
105
106named_segments.append(
107 ThetaSplineSegment(
108 name="NeutralToScoreFrontLowConeDownTip",
109 start=points['Neutral'],
110 control1=np.array([3.6217558044411176, 0.6335548380532725]),
111 control2=np.array([4.2557660430407935, 1.0411926555706872]),
112 end=points['ScoreFrontLowConeDownTip'],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700113 control_alpha_rolls=[(0.30, 0.0), (.95, np.pi / 2.0)],
Austin Schuh99dda682023-03-11 00:18:37 -0800114 ))
115
116points['ScoreBackMidConeDownTip'] = to_theta_with_circular_index_and_roll(
117 -1.49, 0.818521, -np.pi / 2.0, circular_index=1)
118
119named_segments.append(
120 ThetaSplineSegment(
121 name="NeutralToScoreBackMidConeDownTip",
122 start=points['Neutral'],
123 control1=np.array([3.193704394908777, -0.46076706416611657]),
124 control2=np.array([3.6421839688861786, -0.8129214904599373]),
125 end=points['ScoreBackMidConeDownTip'],
126 control_alpha_rolls=[(0.20, 0.0), (.95, -np.pi / 2.0)],
127 ))
128
129points[
130 'ScoreBackMidConeDownTipPlaced'] = to_theta_with_circular_index_and_roll(
131 -1.43, 0.65, -np.pi / 2.0, circular_index=1)
132
133named_segments.append(
134 ThetaSplineSegment(
135 name="NeutralToScoreBackMidConeDownTipPlaced",
136 start=points['Neutral'],
137 control1=np.array([3.193704394908777, -0.46076706416611657]),
138 control2=np.array([3.6421839688861786, -0.8129214904599373]),
139 end=points['ScoreBackMidConeDownTipPlaced'],
140 control_alpha_rolls=[(0.20, 0.0), (.95, -np.pi / 2.0)],
141 ))
142
143named_segments.append(
144 ThetaSegment(
145 name="ScoreBackMidConeDownTipToScoreBackMidConeDownTipPlaced",
146 start=points['ScoreBackMidConeDownTip'],
147 end=points['ScoreBackMidConeDownTipPlaced'],
148 ))
149
150points['ScoreFrontMidConeDownTip'] = np.array(
151 (6.37001629521978, 2.04450540030891, np.pi / 2.0))
152#to_theta_with_circular_index_and_roll(
153#0.708449, 0.869738, np.pi / 2.0, circular_index=1)
154
155named_segments.append(
156 ThetaSplineSegment(
157 name="NeutralToScoreFrontMidConeDownTip",
158 start=points['Neutral'],
159 control1=np.array([4.579377666056791, 0.3789471836198275]),
160 control2=np.array([5.140992799899862, 1.5135884307866865]),
161 end=points['ScoreFrontMidConeDownTip'],
162 control_alpha_rolls=[(0.50, 0.0), (.95, np.pi / 2.0)],
163 ))
164
165points['ScoreFrontMidConeDownTipPlaced'] = np.array(
166 (6.42001629521978, 2.30450540030891, np.pi / 2.0))
167
168named_segments.append(
169 ThetaSplineSegment(
170 name="NeutralToScoreFrontMidConeDownTipPlaced",
171 start=points['Neutral'],
172 control1=np.array([4.579377666056791, 0.3789471836198275]),
173 control2=np.array([5.140992799899862, 1.5135884307866865]),
174 end=points['ScoreFrontMidConeDownTipPlaced'],
175 control_alpha_rolls=[(0.50, 0.0), (.95, np.pi / 2.0)],
176 ))
177
178named_segments.append(
179 ThetaSegment(
180 name="ScoreFrontMidConeDownTipToScoreFrontMidConeDownTipPlaced",
181 start=points['ScoreFrontMidConeDownTip'],
182 end=points['ScoreFrontMidConeDownTipPlaced'],
183 ))
184
185points['ScoreFrontHighConeDownTip'] = np.array(
186 (7.07190783461154, 1.55094570328448, np.pi / 2.0))
187#to_theta_with_circular_index_and_roll(
188#0.708449, 0.869738, np.pi / 2.0, circular_index=1)
189
190named_segments.append(
191 ThetaSplineSegment(
192 name="NeutralToScoreFrontHighConeDownTip",
193 start=points['Neutral'],
194 control1=np.array([4.579377666056791, 0.3789471836198275]),
195 control2=np.array([5.140992799899862, 1.5135884307866865]),
196 end=points['ScoreFrontHighConeDownTip'],
197 control_alpha_rolls=[(0.50, 0.0), (.95, np.pi / 2.0)],
198 ))
199
200points['ScoreFrontHighConeDownTipPlaced'] = np.array(
201 (6.93190783461154, 1.80094570328448, np.pi / 2.0))
202
203named_segments.append(
204 ThetaSplineSegment(
205 name="NeutralToScoreFrontHighConeDownTipPlaced",
206 start=points['Neutral'],
207 control1=np.array([5.997741842590495, 1.8354263885166913]),
208 control2=np.array([6.141018843972322, 1.0777341552037734]),
209 end=points['ScoreFrontHighConeDownTipPlaced'],
Maxwell Henderson22f97982023-03-12 19:06:37 -0700210 control_alpha_rolls=[(0.30, 0.0), (.95, np.pi / 2.0)],
Austin Schuh99dda682023-03-11 00:18:37 -0800211 ))
212
213named_segments.append(
214 ThetaSegment(
215 name="ScoreFrontHighConeDownTipToScoreFrontHighConeDownTipPlaced",
216 start=points['ScoreFrontHighConeDownTip'],
217 end=points['ScoreFrontHighConeDownTipPlaced'],
218 ))
219
Austin Schuhe062be02023-03-04 21:12:07 -0800220points['ScoreFrontHighConeDownBase'] = to_theta_with_circular_index_and_roll(
221 1.04686, 1.13243, -np.pi / 2.0, circular_index=0)
222
223named_segments.append(
224 ThetaSplineSegment(
225 name="NeutralToScoreFrontHighConeDownBase",
226 start=points['Neutral'],
227 control1=np.array([2.7653359284612185, 0.3091554519868296]),
228 control2=np.array([2.6035409027556344, 0.5009078441624968]),
229 end=points['ScoreFrontHighConeDownBase'],
230 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
231 ))
232
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800233points['GroundPickupBackCube'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800234 -1.102, 0.28, -np.pi / 2.0, circular_index=1)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800235
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800236named_segments.append(
237 ThetaSplineSegment(
238 name="NeutralToGroundPickupBackCube",
239 start=points['Neutral'],
240 control1=np.array([3.153228, -0.497009]),
241 control2=np.array([2.972776, -1.026820]),
242 end=points['GroundPickupBackCube'],
milind-ud11146f2023-03-25 18:36:47 -0700243 control_alpha_rolls=[(.9, -np.pi / 2.0)],
Austin Schuh19a55e02023-04-16 17:54:35 -0700244 alpha_unitizer=np.matrix(
245 f"{1.0 / 20.0} 0 0; 0 {1.0 / 15.0} 0; 0 0 {1.0 / 90.0}"),
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800246 ))
247
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800248points['GroundPickupFrontCube'] = to_theta_with_circular_index_and_roll(
249 0.325603, 0.255189, np.pi / 2.0, circular_index=0)
250
251named_segments.append(
252 ThetaSplineSegment(
253 name="NeutralToGroundPickupFrontCube",
254 start=points['Neutral'],
255 control1=np.array([3.338852196583635, 0.34968650009090885]),
256 control2=np.array([4.28246270189025, 1.492916470137478]),
257 end=points['GroundPickupFrontCube'],
milind-ud11146f2023-03-25 18:36:47 -0700258 control_alpha_rolls=[(.9, np.pi / 2.0)],
Austin Schuh19a55e02023-04-16 17:54:35 -0700259 alpha_unitizer=np.matrix(
260 f"{1.0 / 20.0} 0 0; 0 {1.0 / 15.0} 0; 0 0 {1.0 / 90.0}"),
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800261 ))
262
Austin Schuhe062be02023-03-04 21:12:07 -0800263points['ScoreBackMidConeUp'] = to_theta_with_circular_index_and_roll(
Maxwell Hendersonce816122023-03-27 20:12:38 -0700264 -1.45013, 1.00354, np.pi / 2.0, circular_index=1)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800265
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800266named_segments.append(
267 ThetaSplineSegment(
268 name="NeutralToBackMidConeUpScore",
269 start=points['Neutral'],
Austin Schuhe062be02023-03-04 21:12:07 -0800270 control1=np.array([3.6130298244820453, -0.2781204657180023]),
271 control2=np.array([3.804763224169111, -0.5179424890517237]),
272 end=points['ScoreBackMidConeUp'],
Austin Schuhf4c3da32023-03-25 20:04:55 -0700273 control_alpha_rolls=[(.95, np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800274 ))
275
Austin Schuhe062be02023-03-04 21:12:07 -0800276points['ScoreBackLowConeUp'] = to_theta_with_circular_index_and_roll(
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700277 -1.00472, 0.472615, np.pi / 2.0, circular_index=1)
Austin Schuhe062be02023-03-04 21:12:07 -0800278
279named_segments.append(
280 ThetaSplineSegment(
281 name="NeutralToBackLowConeUpScore",
282 start=points['Neutral'],
283 control1=np.array([3.260123029490386, -0.5296803702636037]),
284 control2=np.array([3.1249665389044283, -0.7810758529482493]),
285 end=points['ScoreBackLowConeUp'],
Austin Schuhf4c3da32023-03-25 20:04:55 -0700286 control_alpha_rolls=[(.95, np.pi / 2.0)],
Austin Schuhe062be02023-03-04 21:12:07 -0800287 ))
288
289named_segments.append(
290 ThetaSplineSegment(
291 name="GroundPickupBackConeUpToBackLowConeUpScore",
292 start=points['GroundPickupBackConeUp'],
293 control1=np.array([2.943017165830755, -1.3740647485244808]),
294 control2=np.array([2.941104610508278, -1.2434759967435083]),
295 end=points['ScoreBackLowConeUp'],
296 control_alpha_rolls=[],
297 ))
298
299named_segments.append(
300 ThetaSplineSegment(
301 name="ScoreBackLowConeUpToScoreBackMidConeUp",
302 start=points['ScoreBackLowConeUp'],
303 control1=np.array([3.2930271753937728, -0.9256552441650734]),
304 control2=np.array([3.6425461598470568, -0.8085366888146934]),
305 end=points['ScoreBackMidConeUp'],
306 control_alpha_rolls=[],
307 ))
308
309points['ScoreBackMidConeDownBase'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800310 -1.37792406, 0.87332449, np.pi / 2.0, circular_index=1)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800311
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800312named_segments.append(
313 ThetaSplineSegment(
Austin Schuhe062be02023-03-04 21:12:07 -0800314 name="NeutralToMidConeDownBaseScore",
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800315 start=points['Neutral'],
316 control1=np.array([3.394572, -0.239378]),
317 control2=np.array([3.654854, -0.626835]),
Austin Schuhe062be02023-03-04 21:12:07 -0800318 end=points['ScoreBackMidConeDownBase'],
319 control_alpha_rolls=[(0.40, 0.0), (.95, np.pi / 2.0)],
320 ))
321
322points['ScoreBackLowConeDownBase'] = to_theta_with_circular_index_and_roll(
323 -1.06372, 0.442764, np.pi / 2.0, circular_index=1)
324
325named_segments.append(
326 ThetaSplineSegment(
327 name="NeutralToLowConeDownBaseScore",
328 start=points['Neutral'],
329 control1=np.array([2.8613439132427896, -0.5868069120126034]),
330 control2=np.array([2.9041434685529923, -1.240030040719494]),
331 end=points['ScoreBackLowConeDownBase'],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800332 control_alpha_rolls=[(0.40, 0.0), (.95, np.pi / 2.0)],
333 ))
334
335points['HPPickupBackConeUp'] = to_theta_with_circular_index_and_roll(
Austin Schuhaa4ab7e2023-04-09 22:19:38 -0700336 -1.1200539, 1.325, np.pi / 2.0, circular_index=0)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800337
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800338named_segments.append(
339 ThetaSplineSegment(
340 name="NeutralToHPPickupBackConeUp",
Austin Schuh19a55e02023-04-16 17:54:35 -0700341 start=points["Neutral"],
342 control1=np.array([2.4081612851752787, -0.4499932641262525]),
343 control2=np.array([1.5966343156908454, -1.4332589701944083]),
344 end=points["HPPickupBackConeUp"],
345 control_alpha_rolls=[(0.9, np.pi * 0.5)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800346 ))
347
Austin Schuhe062be02023-03-04 21:12:07 -0800348points['HPPickupFrontConeUp'] = np.array(
Maxwell Hendersonce816122023-03-27 20:12:38 -0700349 (5.16514378449353, 1.25, -np.pi / 2.0))
Austin Schuhe062be02023-03-04 21:12:07 -0800350# to_theta_with_circular_index_and_roll(
351# 0.265749, 1.28332, -np.pi / 2.0, circular_index=1)
352
353named_segments.append(
354 ThetaSplineSegment(
355 name="NeutralToHPPickupFrontConeUp",
356 start=points['Neutral'],
milind-ud11146f2023-03-25 18:36:47 -0700357 control1=np.array([3.7428100581067785, 0.3957215032198551]),
358 control2=np.array([4.349242198354247, 0.8724403878333801]),
Austin Schuhe062be02023-03-04 21:12:07 -0800359 end=points['HPPickupFrontConeUp'],
milind-ud11146f2023-03-25 18:36:47 -0700360 control_alpha_rolls=[(.8, -np.pi / 2.0)],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700361 alpha_unitizer=np.matrix(
milind-ud11146f2023-03-25 18:36:47 -0700362 f"{1.0 / 15.0} 0 0; 0 {1.0 / 15.0} 0; 0 0 {1.0 / 70.0}"),
Austin Schuhe062be02023-03-04 21:12:07 -0800363 ))
364
365points['ScoreFrontHighConeUp'] = to_theta_with_circular_index_and_roll(
Maxwell Hendersonce816122023-03-27 20:12:38 -0700366 0.98810344, 1.31536719, -np.pi / 2.0, circular_index=0)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800367
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800368named_segments.append(
369 ThetaSplineSegment(
370 name="NeutralToFrontHighConeUpScore",
371 start=points['Neutral'],
372 control1=np.array([2.594244, 0.417442]),
373 control2=np.array([1.51325, 0.679748]),
Austin Schuhe062be02023-03-04 21:12:07 -0800374 end=points['ScoreFrontHighConeUp'],
milind-ud11146f2023-03-25 18:36:47 -0700375 control_alpha_rolls=[(.95, -np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800376 ))
377
Austin Schuhe062be02023-03-04 21:12:07 -0800378points['ScoreFrontMidConeUp'] = to_theta_with_circular_index_and_roll(
Maxwell Hendersonce816122023-03-27 20:12:38 -0700379 0.64, 0.99, -np.pi / 2.0, circular_index=0)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800380
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800381named_segments.append(
382 ThetaSplineSegment(
383 name="NeutralToFrontMidConeUpScore",
384 start=points['Neutral'],
385 control1=np.array([3.0, 0.317442]),
386 control2=np.array([2.9, 0.479748]),
Austin Schuhe062be02023-03-04 21:12:07 -0800387 end=points['ScoreFrontMidConeUp'],
milind-ud11146f2023-03-25 18:36:47 -0700388 control_alpha_rolls=[(.95, -np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800389 ))
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800390
Austin Schuh700bfff2023-04-05 19:45:55 -0700391points['Starting'] = np.array((np.pi, -0.15, 0.0))
Maxwell Henderson3d0beaf2023-03-23 11:32:44 -0700392
Austin Schuh90e655c2023-03-11 20:19:53 -0800393points['ScoreFrontMidConeUpAuto'] = to_theta_with_circular_index_and_roll(
394 0.58, 0.97, -np.pi / 2.0, circular_index=0)
395
396named_segments.append(
397 ThetaSplineSegment(
Maxwell Henderson3d0beaf2023-03-23 11:32:44 -0700398 name="StartingToScoreFrontMidConeUpAuto",
399 start=points['Starting'],
Austin Schuh90e655c2023-03-11 20:19:53 -0800400 control1=np.array([2.99620794024176, 0.23620211875551145]),
401 control2=np.array([2.728197531599509, 0.5677148040671784]),
402 end=points['ScoreFrontMidConeUpAuto'],
Austin Schuh700bfff2023-04-05 19:45:55 -0700403 control_alpha_rolls=[(.85, -np.pi / 2.0)],
Maxwell Henderson17365e52023-03-11 20:34:59 -0800404 vmax=10.0,
405 alpha_unitizer=np.matrix(
406 f"{1.0 / 20.0} 0 0; 0 {1.0 / 25.0} 0; 0 0 {1.0 / 100.0}"),
Austin Schuh90e655c2023-03-11 20:19:53 -0800407 ))
408
409named_segments.append(
410 ThetaSplineSegment(
411 name="ScoreFrontMidConeUpAutoToGroundPickupBackCube",
412 start=points['ScoreFrontMidConeUpAuto'],
413 control1=np.array([3.1869633311848187, 0.2812689595803919]),
414 control2=np.array([2.906100237354555, -0.7760928122326023]),
415 end=points['GroundPickupBackCube'],
416 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
417 ))
418
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800419points['ScoreFrontLowCube'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800420 0.325603, 0.39, np.pi / 2.0, circular_index=0)
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800421
422named_segments.append(
423 ThetaSplineSegment(
424 name="NeutralToScoreFrontLowCube",
425 start=points['Neutral'],
426 control1=np.array([3.338852196583635, 0.34968650009090885]),
427 control2=np.array([4.28246270189025, 1.492916470137478]),
428 end=points['ScoreFrontLowCube'],
milind-ud11146f2023-03-25 18:36:47 -0700429 control_alpha_rolls=[(.9, np.pi / 2.0)],
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800430 ))
431
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800432points['ScoreFrontMidCube'] = to_theta_with_circular_index_and_roll(
433 0.517846, 0.87, np.pi / 2.0, circular_index=0)
434
435named_segments.append(
436 ThetaSplineSegment(
437 name="NeutralToScoreFrontMidCube",
438 start=points["Neutral"],
439 control1=np.array([3.1310824883477952, 0.23591705727105095]),
440 control2=np.array([3.0320025094685965, 0.43674789928668933]),
441 end=points["ScoreFrontMidCube"],
milind-ud11146f2023-03-25 18:36:47 -0700442 control_alpha_rolls=[(0.95, np.pi * 0.5)],
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800443 ))
444
Austin Schuhe062be02023-03-04 21:12:07 -0800445named_segments.append(
446 ThetaSplineSegment(
447 name="ScoreFrontLowCubeToScoreFrontMidCube",
448 start=points["ScoreFrontLowCube"],
449 control1=np.array([3.8237323383577078, 1.2979562720646056]),
450 control2=np.array([3.63484177908944, 1.008850428344438]),
451 end=points["ScoreFrontMidCube"],
452 control_alpha_rolls=[],
453 ))
454
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800455points['ScoreFrontHighCube'] = to_theta_with_circular_index_and_roll(
456 0.901437, 1.16, np.pi / 2.0, circular_index=0)
457
458named_segments.append(
459 ThetaSplineSegment(
460 name="NeutralToScoreFrontHighCube",
461 start=points["Neutral"],
462 control1=np.array([2.537484161662287, 0.059700523547219]),
463 control2=np.array([2.449391812539668, 0.4141564369176016]),
464 end=points["ScoreFrontHighCube"],
milind-ud11146f2023-03-25 18:36:47 -0700465 control_alpha_rolls=[(0.95, np.pi * 0.5)],
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800466 ))
467
Austin Schuhe062be02023-03-04 21:12:07 -0800468named_segments.append(
469 ThetaSplineSegment(
470 name="ScoreFrontMidCubeToScoreFrontHighCube",
471 start=points["ScoreFrontMidCube"],
472 control1=np.array([2.9229652375897004, 0.7771801809056819]),
473 control2=np.array([2.634276444896239, 0.5696525540129302]),
474 end=points["ScoreFrontHighCube"],
475 control_alpha_rolls=[],
476 ))
477
478points['ScoreBackLowCube'] = to_theta_with_circular_index_and_roll(
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700479 -1.102, 0.3712121, -np.pi / 2.0, circular_index=1)
Austin Schuhe062be02023-03-04 21:12:07 -0800480
481named_segments.append(
482 ThetaSplineSegment(
483 name="NeutralToScoreLowBackCube",
484 start=points['Neutral'],
485 control1=np.array([3.153228, -0.497009]),
486 control2=np.array([2.972776, -1.026820]),
487 end=points['ScoreBackLowCube'],
488 control_alpha_rolls=[(0.7, 0.0), (.9, -np.pi / 2.0)],
489 ))
490
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800491points['ScoreBackMidCube'] = to_theta_with_circular_index_and_roll(
492 -1.27896, 0.84, -np.pi / 2.0, circular_index=1)
493
494named_segments.append(
495 ThetaSplineSegment(
496 name="NeutralToScoreBackMidCube",
497 start=points["Neutral"],
498 control1=np.array([3.3485646154655404, -0.4369603013926491]),
499 control2=np.array([3.2653593368256995, -0.789587049476034]),
500 end=points["ScoreBackMidCube"],
milind-ud11146f2023-03-25 18:36:47 -0700501 control_alpha_rolls=[(0.95, -np.pi * 0.5)],
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800502 ))
503
Austin Schuhe062be02023-03-04 21:12:07 -0800504named_segments.append(
505 ThetaSplineSegment(
506 name="ScoreBackLowCubeToScoreBackMidCube",
507 start=points["ScoreBackLowCube"],
508 control1=np.array([3.1075630474968694, -1.1675095818664531]),
509 control2=np.array([3.3377520447373232, -1.1054408842366303]),
510 end=points["ScoreBackMidCube"],
511 control_alpha_rolls=[],
512 ))
513
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800514# TODO(austin): This doesn't produce the next line...
515#points['ScoreBackHighCube'] = to_theta_with_circular_index_and_roll(
516# -1.60932, 1.16839, np.pi / 2.0, circular_index=0)
517points['ScoreBackHighCube'] = np.array(
518 (4.77284735761704, -1.19952193130714, -np.pi / 2.0))
519
520named_segments.append(
521 ThetaSplineSegment(
522 name="NeutralToScoreBackHighCube",
523 start=points["Neutral"],
524 control1=np.array([3.6804854484103684, -0.3494541095053125]),
525 control2=np.array([3.9889380578509517, -0.6637934755748516]),
526 end=points["ScoreBackHighCube"],
milind-ud11146f2023-03-25 18:36:47 -0700527 control_alpha_rolls=[(0.95, -np.pi * 0.5)],
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800528 ))
529
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800530named_segments.append(
531 ThetaSplineSegment(
Austin Schuhe062be02023-03-04 21:12:07 -0800532 name="ScoreBackMidCubeToScoreBackHighCube",
533 start=points["ScoreBackMidCube"],
534 control1=np.array([4.03651864313893, -0.919229198708873]),
535 control2=np.array([4.377346803653962, -1.0167608157302999]),
536 end=points["ScoreBackHighCube"],
537 control_alpha_rolls=[],
538 ))
539
540points['GroundPickupFrontConeUp'] = to_theta_with_circular_index_and_roll(
Maxwell Hendersonce816122023-03-27 20:12:38 -0700541 0.313099, 0.390, -np.pi / 2.0, circular_index=0)
Austin Schuhe062be02023-03-04 21:12:07 -0800542
543named_segments.append(
544 ThetaSplineSegment(
545 name="NeutralToGroundPickupFrontConeUp",
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800546 start=points['Neutral'],
Austin Schuhe062be02023-03-04 21:12:07 -0800547 control1=np.array([3.153481004695907, 0.4827717171390571]),
548 control2=np.array([4.107487625131798, 0.9935705415901082]),
549 end=points['GroundPickupFrontConeUp'],
milind-ud11146f2023-03-25 18:36:47 -0700550 control_alpha_rolls=[(.95, -np.pi / 2.0)],
Austin Schuhe062be02023-03-04 21:12:07 -0800551 ))
552
553points['ScoreFrontLowConeUp'] = to_theta_with_circular_index_and_roll(
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700554 0.33, 0.42, -np.pi / 2.0, circular_index=0)
Austin Schuhe062be02023-03-04 21:12:07 -0800555
556named_segments.append(
557 ThetaSplineSegment(
558 name="NeutralToScoreFrontLowConeUp",
559 start=points['Neutral'],
560 control1=np.array([3.153481004695907, 0.4827717171390571]),
561 control2=np.array([4.107487625131798, 0.9935705415901082]),
562 end=points['ScoreFrontLowConeUp'],
563 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
564 ))
565
566named_segments.append(
567 ThetaSplineSegment(
568 name="GroundPickupFrontConeUpToScoreFrontLowConeUp",
569 start=points['GroundPickupFrontConeUp'],
570 control1=np.array([4.14454438793702, 1.680256664914554]),
571 control2=np.array([4.159014136030164, 1.6617266432775355]),
572 end=points['ScoreFrontLowConeUp'],
573 control_alpha_rolls=[],
574 ))
575
576named_segments.append(
577 ThetaSplineSegment(
578 name="ScoreFrontLowConeUpToScoreFrontMidConeUp",
579 start=points['ScoreFrontLowConeUp'],
580 control1=np.array([4.144103145250675, 1.3519566301042056]),
581 control2=np.array([3.5357641970552223, 0.8105698293886593]),
582 end=points['ScoreFrontMidConeUp'],
583 control_alpha_rolls=[],
584 ))
585
586named_segments.append(
587 ThetaSplineSegment(
588 name="ScoreFrontMidConeUpToScoreFrontHighConeUp",
589 start=points['ScoreFrontMidConeUp'],
590 control1=np.array([2.417981958011055, 0.48234108399079134]),
591 control2=np.array([2.1651435746478045, 0.4937628492739232]),
592 end=points['ScoreFrontHighConeUp'],
593 control_alpha_rolls=[],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800594 ))
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800595
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800596named_segments.append(
597 ThetaSplineSegment(
598 name="GroundPickupBackConeUpToGroundPickupBackConeDownBase",
599 start=points["GroundPickupBackConeUp"],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700600 control1=np.array([2.9926247819374154, -1.4933529586884973]),
601 control2=np.array([3.0109584409452284, -1.545647945665206]),
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800602 end=points["GroundPickupBackConeDownBase"],
603 control_alpha_rolls=[],
604 ))
605
606named_segments.append(
607 ThetaSplineSegment(
608 name="GroundPickupBackCubeToGroundPickupBackConeUp",
609 start=points["GroundPickupBackCube"],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700610 control1=np.array([3.0505709159476315, -1.2367645274118955]),
611 control2=np.array([3.092073954938234, -1.2212460452853597]),
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800612 end=points["GroundPickupBackConeUp"],
613 control_alpha_rolls=[],
614 ))
615
616named_segments.append(
617 ThetaSplineSegment(
618 name="GroundPickupBackCubeToGroundPickupBackConeDownBase",
619 start=points["GroundPickupBackCube"],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700620 control1=np.array([3.1162986756987365, -1.277140627447758]),
621 control2=np.array([3.040845013474888, -1.3101069219600996]),
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800622 end=points["GroundPickupBackConeDownBase"],
623 control_alpha_rolls=[],
624 ))
625
626named_segments.append(
627 ThetaSplineSegment(
628 name="GroundPickupFrontConeUpToGroundPickupFrontConeDownBase",
629 start=points["GroundPickupFrontConeUp"],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700630 control1=np.array([4.165611255924869, 1.776661759504955]),
631 control2=np.array([4.158617821533932, 1.8192037605481532]),
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800632 end=points["GroundPickupFrontConeDownBase"],
633 control_alpha_rolls=[],
634 ))
635
636named_segments.append(
637 ThetaSplineSegment(
638 name="GroundPickupFrontCubeToGroundPickupFrontConeUp",
639 start=points["GroundPickupFrontCube"],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700640 control1=np.array([4.24343254606187, 1.5218945203478058]),
641 control2=np.array([4.264613405238473, 1.4226736369442823]),
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800642 end=points["GroundPickupFrontConeUp"],
643 control_alpha_rolls=[],
644 ))
645
646named_segments.append(
647 ThetaSplineSegment(
648 name="GroundPickupFrontCubeToGroundPickFrontCubeDownBase",
649 start=points["GroundPickupFrontCube"],
Maxwell Henderson5e7dc572023-03-23 11:39:59 -0700650 control1=np.array([4.291217306429481, 1.6211752281452299]),
651 control2=np.array([4.329997918670176, 1.6541325057673302]),
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800652 end=points["GroundPickupFrontConeDownBase"],
653 control_alpha_rolls=[],
654 ))
655
Maxwell Henderson3d0beaf2023-03-23 11:32:44 -0700656# Auto express spline...
657named_segments.append(
658 ThetaSplineSegment(
659 name="GroundPickupBackCubeToScoreFrontMidCube",
660 start=points['ScoreFrontMidCube'],
661 control1=np.array([3.2345111429709847, 0.45338639767112277]),
662 control2=np.array([3.098240119468829, -0.46161157069783254]),
663 end=points['GroundPickupBackCube'],
664 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
665 ))
666
667named_segments.append(
668 ThetaSplineSegment(
669 name="GroundPickupBackCubeToScoreFrontHighCube",
670 start=points['ScoreFrontHighCube'],
671 control1=np.array([2.7074513232200186, 0.20154350392334375]),
672 control2=np.array([3.01714846217257, -0.6310437434614364]),
673 end=points['GroundPickupBackCube'],
674 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
675 ))
676
Maxwell Henderson83cf6d62023-02-10 20:29:26 -0800677front_points = []
678back_points = []
679unnamed_segments = []
milind-u18a901d2023-02-17 21:51:55 -0800680segments = named_segments + unnamed_segments
Maxwell Hendersonf582b142023-03-05 18:33:09 -0800681
682# This checks that all points are unique
683
684seen_segments = []
685
686for segment in segments:
687 # check for equality of the start and end values
688
689 if (segment.start.tolist(), segment.end.tolist()) in seen_segments:
690 print("Repeated value")
691 segment.Print(points)
692 sys.exit(1)
693 else:
694 seen_segments.append((segment.start.tolist(), segment.end.tolist()))
695
696seen_points = []
697
698for point in points:
699 if point in seen_points:
700 print(f"Repeated value {point}")
701 sys.exit(1)
702 else:
703 seen_points.append(point)