blob: 557d6099e3fe4294241ad05c263dbf17932c8a0f [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(
Austin Schuhe062be02023-03-04 21:12:07 -080025 -1.07774334, 0.40, 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'],
34 control_alpha_rolls=[(0.30, 0.0), (.95, np.pi / 2.0)],
35 ))
36
Austin Schuhe062be02023-03-04 21:12:07 -080037points['GroundPickupBackConeDownBase'] = to_theta_with_circular_index_and_roll(
38 -1.11487594, 0.25, 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'],
Austin Schuh9a11ebd2023-02-26 14:16:31 -080047 control_alpha_rolls=[(0.30, 0.0), (.95, np.pi / 2.0)],
48 ))
49
Austin Schuhe062be02023-03-04 21:12:07 -080050points[
51 'GroundPickupFrontConeDownBase'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -080052 0.30, 0.24, -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'],
61 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
62 ))
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'],
113 control_alpha_rolls=[(0.20, 0.0), (.95, np.pi / 2.0)],
114 ))
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'],
Maxwell Henderson22f97982023-03-12 19:06:37 -0700243 control_alpha_rolls=[(0.4, 0.0), (.9, -np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800244 ))
245
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800246points['GroundPickupFrontCube'] = to_theta_with_circular_index_and_roll(
247 0.325603, 0.255189, np.pi / 2.0, circular_index=0)
248
249named_segments.append(
250 ThetaSplineSegment(
251 name="NeutralToGroundPickupFrontCube",
252 start=points['Neutral'],
253 control1=np.array([3.338852196583635, 0.34968650009090885]),
254 control2=np.array([4.28246270189025, 1.492916470137478]),
255 end=points['GroundPickupFrontCube'],
256 control_alpha_rolls=[(0.4, 0.0), (.9, np.pi / 2.0)],
257 ))
258
Austin Schuhe062be02023-03-04 21:12:07 -0800259points['ScoreBackMidConeUp'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800260 -1.45013, 1.04354, np.pi / 2.0, circular_index=1)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800261
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800262named_segments.append(
263 ThetaSplineSegment(
264 name="NeutralToBackMidConeUpScore",
265 start=points['Neutral'],
Austin Schuhe062be02023-03-04 21:12:07 -0800266 control1=np.array([3.6130298244820453, -0.2781204657180023]),
267 control2=np.array([3.804763224169111, -0.5179424890517237]),
268 end=points['ScoreBackMidConeUp'],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800269 control_alpha_rolls=[(0.40, 0.0), (.95, np.pi / 2.0)],
270 ))
271
Austin Schuhe062be02023-03-04 21:12:07 -0800272points['ScoreBackLowConeUp'] = to_theta_with_circular_index_and_roll(
273 -1.00472, 0.672615, np.pi / 2.0, circular_index=1)
274
275named_segments.append(
276 ThetaSplineSegment(
277 name="NeutralToBackLowConeUpScore",
278 start=points['Neutral'],
279 control1=np.array([3.260123029490386, -0.5296803702636037]),
280 control2=np.array([3.1249665389044283, -0.7810758529482493]),
281 end=points['ScoreBackLowConeUp'],
282 control_alpha_rolls=[(0.40, 0.0), (.95, np.pi / 2.0)],
283 ))
284
285named_segments.append(
286 ThetaSplineSegment(
287 name="GroundPickupBackConeUpToBackLowConeUpScore",
288 start=points['GroundPickupBackConeUp'],
289 control1=np.array([2.943017165830755, -1.3740647485244808]),
290 control2=np.array([2.941104610508278, -1.2434759967435083]),
291 end=points['ScoreBackLowConeUp'],
292 control_alpha_rolls=[],
293 ))
294
295named_segments.append(
296 ThetaSplineSegment(
297 name="ScoreBackLowConeUpToScoreBackMidConeUp",
298 start=points['ScoreBackLowConeUp'],
299 control1=np.array([3.2930271753937728, -0.9256552441650734]),
300 control2=np.array([3.6425461598470568, -0.8085366888146934]),
301 end=points['ScoreBackMidConeUp'],
302 control_alpha_rolls=[],
303 ))
304
305points['ScoreBackMidConeDownBase'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800306 -1.37792406, 0.87332449, np.pi / 2.0, circular_index=1)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800307
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800308named_segments.append(
309 ThetaSplineSegment(
Austin Schuhe062be02023-03-04 21:12:07 -0800310 name="NeutralToMidConeDownBaseScore",
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800311 start=points['Neutral'],
312 control1=np.array([3.394572, -0.239378]),
313 control2=np.array([3.654854, -0.626835]),
Austin Schuhe062be02023-03-04 21:12:07 -0800314 end=points['ScoreBackMidConeDownBase'],
315 control_alpha_rolls=[(0.40, 0.0), (.95, np.pi / 2.0)],
316 ))
317
318points['ScoreBackLowConeDownBase'] = to_theta_with_circular_index_and_roll(
319 -1.06372, 0.442764, np.pi / 2.0, circular_index=1)
320
321named_segments.append(
322 ThetaSplineSegment(
323 name="NeutralToLowConeDownBaseScore",
324 start=points['Neutral'],
325 control1=np.array([2.8613439132427896, -0.5868069120126034]),
326 control2=np.array([2.9041434685529923, -1.240030040719494]),
327 end=points['ScoreBackLowConeDownBase'],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800328 control_alpha_rolls=[(0.40, 0.0), (.95, np.pi / 2.0)],
329 ))
330
331points['HPPickupBackConeUp'] = to_theta_with_circular_index_and_roll(
Austin Schuh166ab652023-03-11 15:15:51 -0800332 -1.1200539, 1.335, np.pi / 2.0, circular_index=0)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800333
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800334named_segments.append(
335 ThetaSplineSegment(
336 name="NeutralToHPPickupBackConeUp",
337 start=points['Neutral'],
338 control1=np.array([2.0, -0.239378]),
339 control2=np.array([1.6, -0.626835]),
340 end=points['HPPickupBackConeUp'],
Maxwell Hendersond32f4302023-03-12 17:57:50 -0700341 control_alpha_rolls=[(0.3, 0.0), (.9, np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800342 ))
343
Austin Schuhe062be02023-03-04 21:12:07 -0800344points['HPPickupFrontConeUp'] = np.array(
Austin Schuh166ab652023-03-11 15:15:51 -0800345 (5.16514378449353, 1.23, -np.pi / 2.0))
Austin Schuhe062be02023-03-04 21:12:07 -0800346# to_theta_with_circular_index_and_roll(
347# 0.265749, 1.28332, -np.pi / 2.0, circular_index=1)
348
349named_segments.append(
350 ThetaSplineSegment(
351 name="NeutralToHPPickupFrontConeUp",
352 start=points['Neutral'],
353 control1=np.array([4.068204933788692, -0.05440997896697275]),
354 control2=np.array([4.861911360838861, -0.03790410600482508]),
355 end=points['HPPickupFrontConeUp'],
Maxwell Hendersond32f4302023-03-12 17:57:50 -0700356 control_alpha_rolls=[(0.3, 0.0), (.9, -np.pi / 2.0)],
Austin Schuhe062be02023-03-04 21:12:07 -0800357 ))
358
359points['ScoreFrontHighConeUp'] = to_theta_with_circular_index_and_roll(
milind-u68842e12023-02-26 12:45:40 -0800360 0.98810344, 1.37536719, -np.pi / 2.0, circular_index=0)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800361
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800362named_segments.append(
363 ThetaSplineSegment(
364 name="NeutralToFrontHighConeUpScore",
365 start=points['Neutral'],
366 control1=np.array([2.594244, 0.417442]),
367 control2=np.array([1.51325, 0.679748]),
Austin Schuhe062be02023-03-04 21:12:07 -0800368 end=points['ScoreFrontHighConeUp'],
Maxwell Henderson22f97982023-03-12 19:06:37 -0700369 control_alpha_rolls=[(0.20, 0.0), (.95, -np.pi / 2.0)],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800370 ))
371
Austin Schuhe062be02023-03-04 21:12:07 -0800372points['ScoreFrontMidConeUp'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800373 0.64, 1.03, -np.pi / 2.0, circular_index=0)
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800374
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800375named_segments.append(
376 ThetaSplineSegment(
377 name="NeutralToFrontMidConeUpScore",
378 start=points['Neutral'],
379 control1=np.array([3.0, 0.317442]),
380 control2=np.array([2.9, 0.479748]),
Austin Schuhe062be02023-03-04 21:12:07 -0800381 end=points['ScoreFrontMidConeUp'],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800382 control_alpha_rolls=[(0.40, 0.0), (.95, -np.pi / 2.0)],
383 ))
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800384
Maxwell Henderson3d0beaf2023-03-23 11:32:44 -0700385points['Starting'] = np.array((np.pi, -0.125053863467887, 0.0))
386
Austin Schuh90e655c2023-03-11 20:19:53 -0800387points['ScoreFrontMidConeUpAuto'] = to_theta_with_circular_index_and_roll(
388 0.58, 0.97, -np.pi / 2.0, circular_index=0)
389
390named_segments.append(
391 ThetaSplineSegment(
Maxwell Henderson3d0beaf2023-03-23 11:32:44 -0700392 name="StartingToScoreFrontMidConeUpAuto",
393 start=points['Starting'],
Austin Schuh90e655c2023-03-11 20:19:53 -0800394 control1=np.array([2.99620794024176, 0.23620211875551145]),
395 control2=np.array([2.728197531599509, 0.5677148040671784]),
396 end=points['ScoreFrontMidConeUpAuto'],
Maxwell Henderson3d0beaf2023-03-23 11:32:44 -0700397 control_alpha_rolls=[(0.20, 0.0), (.85, -np.pi / 2.0)],
Maxwell Henderson17365e52023-03-11 20:34:59 -0800398 vmax=10.0,
399 alpha_unitizer=np.matrix(
400 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 -0800401 ))
402
403named_segments.append(
404 ThetaSplineSegment(
405 name="ScoreFrontMidConeUpAutoToGroundPickupBackCube",
406 start=points['ScoreFrontMidConeUpAuto'],
407 control1=np.array([3.1869633311848187, 0.2812689595803919]),
408 control2=np.array([2.906100237354555, -0.7760928122326023]),
409 end=points['GroundPickupBackCube'],
410 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
411 ))
412
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800413points['ScoreFrontLowCube'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800414 0.325603, 0.39, np.pi / 2.0, circular_index=0)
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800415
416named_segments.append(
417 ThetaSplineSegment(
418 name="NeutralToScoreFrontLowCube",
419 start=points['Neutral'],
420 control1=np.array([3.338852196583635, 0.34968650009090885]),
421 control2=np.array([4.28246270189025, 1.492916470137478]),
422 end=points['ScoreFrontLowCube'],
423 control_alpha_rolls=[(0.4, 0.0), (.9, np.pi / 2.0)],
424 ))
425
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800426points['ScoreFrontMidCube'] = to_theta_with_circular_index_and_roll(
427 0.517846, 0.87, np.pi / 2.0, circular_index=0)
428
429named_segments.append(
430 ThetaSplineSegment(
431 name="NeutralToScoreFrontMidCube",
432 start=points["Neutral"],
433 control1=np.array([3.1310824883477952, 0.23591705727105095]),
434 control2=np.array([3.0320025094685965, 0.43674789928668933]),
435 end=points["ScoreFrontMidCube"],
436 control_alpha_rolls=[(0.4, np.pi * 0.0), (0.95, np.pi * 0.5)],
437 ))
438
Austin Schuhe062be02023-03-04 21:12:07 -0800439named_segments.append(
440 ThetaSplineSegment(
441 name="ScoreFrontLowCubeToScoreFrontMidCube",
442 start=points["ScoreFrontLowCube"],
443 control1=np.array([3.8237323383577078, 1.2979562720646056]),
444 control2=np.array([3.63484177908944, 1.008850428344438]),
445 end=points["ScoreFrontMidCube"],
446 control_alpha_rolls=[],
447 ))
448
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800449points['ScoreFrontHighCube'] = to_theta_with_circular_index_and_roll(
450 0.901437, 1.16, np.pi / 2.0, circular_index=0)
451
452named_segments.append(
453 ThetaSplineSegment(
454 name="NeutralToScoreFrontHighCube",
455 start=points["Neutral"],
456 control1=np.array([2.537484161662287, 0.059700523547219]),
457 control2=np.array([2.449391812539668, 0.4141564369176016]),
458 end=points["ScoreFrontHighCube"],
459 control_alpha_rolls=[(0.4, np.pi * 0.0), (0.95, np.pi * 0.5)],
460 ))
461
Austin Schuhe062be02023-03-04 21:12:07 -0800462named_segments.append(
463 ThetaSplineSegment(
464 name="ScoreFrontMidCubeToScoreFrontHighCube",
465 start=points["ScoreFrontMidCube"],
466 control1=np.array([2.9229652375897004, 0.7771801809056819]),
467 control2=np.array([2.634276444896239, 0.5696525540129302]),
468 end=points["ScoreFrontHighCube"],
469 control_alpha_rolls=[],
470 ))
471
472points['ScoreBackLowCube'] = to_theta_with_circular_index_and_roll(
Austin Schuh47a481a2023-03-05 15:32:05 -0800473 -1.102, 0.3212121, -np.pi / 2.0, circular_index=1)
Austin Schuhe062be02023-03-04 21:12:07 -0800474
475named_segments.append(
476 ThetaSplineSegment(
477 name="NeutralToScoreLowBackCube",
478 start=points['Neutral'],
479 control1=np.array([3.153228, -0.497009]),
480 control2=np.array([2.972776, -1.026820]),
481 end=points['ScoreBackLowCube'],
482 control_alpha_rolls=[(0.7, 0.0), (.9, -np.pi / 2.0)],
483 ))
484
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800485points['ScoreBackMidCube'] = to_theta_with_circular_index_and_roll(
486 -1.27896, 0.84, -np.pi / 2.0, circular_index=1)
487
488named_segments.append(
489 ThetaSplineSegment(
490 name="NeutralToScoreBackMidCube",
491 start=points["Neutral"],
492 control1=np.array([3.3485646154655404, -0.4369603013926491]),
493 control2=np.array([3.2653593368256995, -0.789587049476034]),
494 end=points["ScoreBackMidCube"],
495 control_alpha_rolls=[(0.3, -np.pi * 0.0), (0.95, -np.pi * 0.5)],
496 ))
497
Austin Schuhe062be02023-03-04 21:12:07 -0800498named_segments.append(
499 ThetaSplineSegment(
500 name="ScoreBackLowCubeToScoreBackMidCube",
501 start=points["ScoreBackLowCube"],
502 control1=np.array([3.1075630474968694, -1.1675095818664531]),
503 control2=np.array([3.3377520447373232, -1.1054408842366303]),
504 end=points["ScoreBackMidCube"],
505 control_alpha_rolls=[],
506 ))
507
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800508# TODO(austin): This doesn't produce the next line...
509#points['ScoreBackHighCube'] = to_theta_with_circular_index_and_roll(
510# -1.60932, 1.16839, np.pi / 2.0, circular_index=0)
511points['ScoreBackHighCube'] = np.array(
512 (4.77284735761704, -1.19952193130714, -np.pi / 2.0))
513
514named_segments.append(
515 ThetaSplineSegment(
516 name="NeutralToScoreBackHighCube",
517 start=points["Neutral"],
518 control1=np.array([3.6804854484103684, -0.3494541095053125]),
519 control2=np.array([3.9889380578509517, -0.6637934755748516]),
520 end=points["ScoreBackHighCube"],
521 control_alpha_rolls=[(0.3, -np.pi * 0.0), (0.95, -np.pi * 0.5)],
522 ))
523
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800524named_segments.append(
525 ThetaSplineSegment(
Austin Schuhe062be02023-03-04 21:12:07 -0800526 name="ScoreBackMidCubeToScoreBackHighCube",
527 start=points["ScoreBackMidCube"],
528 control1=np.array([4.03651864313893, -0.919229198708873]),
529 control2=np.array([4.377346803653962, -1.0167608157302999]),
530 end=points["ScoreBackHighCube"],
531 control_alpha_rolls=[],
532 ))
533
534points['GroundPickupFrontConeUp'] = to_theta_with_circular_index_and_roll(
535 0.313099, 0.380, -np.pi / 2.0, circular_index=0)
536
537named_segments.append(
538 ThetaSplineSegment(
539 name="NeutralToGroundPickupFrontConeUp",
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800540 start=points['Neutral'],
Austin Schuhe062be02023-03-04 21:12:07 -0800541 control1=np.array([3.153481004695907, 0.4827717171390571]),
542 control2=np.array([4.107487625131798, 0.9935705415901082]),
543 end=points['GroundPickupFrontConeUp'],
544 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
545 ))
546
547points['ScoreFrontLowConeUp'] = to_theta_with_circular_index_and_roll(
548 0.349687, 0.468804, -np.pi / 2.0, circular_index=0)
549
550named_segments.append(
551 ThetaSplineSegment(
552 name="NeutralToScoreFrontLowConeUp",
553 start=points['Neutral'],
554 control1=np.array([3.153481004695907, 0.4827717171390571]),
555 control2=np.array([4.107487625131798, 0.9935705415901082]),
556 end=points['ScoreFrontLowConeUp'],
557 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
558 ))
559
560named_segments.append(
561 ThetaSplineSegment(
562 name="GroundPickupFrontConeUpToScoreFrontLowConeUp",
563 start=points['GroundPickupFrontConeUp'],
564 control1=np.array([4.14454438793702, 1.680256664914554]),
565 control2=np.array([4.159014136030164, 1.6617266432775355]),
566 end=points['ScoreFrontLowConeUp'],
567 control_alpha_rolls=[],
568 ))
569
570named_segments.append(
571 ThetaSplineSegment(
572 name="ScoreFrontLowConeUpToScoreFrontMidConeUp",
573 start=points['ScoreFrontLowConeUp'],
574 control1=np.array([4.144103145250675, 1.3519566301042056]),
575 control2=np.array([3.5357641970552223, 0.8105698293886593]),
576 end=points['ScoreFrontMidConeUp'],
577 control_alpha_rolls=[],
578 ))
579
580named_segments.append(
581 ThetaSplineSegment(
582 name="ScoreFrontMidConeUpToScoreFrontHighConeUp",
583 start=points['ScoreFrontMidConeUp'],
584 control1=np.array([2.417981958011055, 0.48234108399079134]),
585 control2=np.array([2.1651435746478045, 0.4937628492739232]),
586 end=points['ScoreFrontHighConeUp'],
587 control_alpha_rolls=[],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800588 ))
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800589
Maxwell Henderson696f5db2023-03-10 16:37:22 -0800590named_segments.append(
591 ThetaSplineSegment(
592 name="GroundPickupBackConeUpToGroundPickupBackConeDownBase",
593 start=points["GroundPickupBackConeUp"],
594 control1=np.array([2.984750907058771, -1.4175755629898785]),
595 control2=np.array([2.9834020302847164, -1.4959006770007095]),
596 end=points["GroundPickupBackConeDownBase"],
597 control_alpha_rolls=[],
598 ))
599
600named_segments.append(
601 ThetaSplineSegment(
602 name="GroundPickupBackCubeToGroundPickupBackConeUp",
603 start=points["GroundPickupBackCube"],
604 control1=np.array([2.9814712671305497, -1.4752615794585657]),
605 control2=np.array([2.9814712671305497, -1.4752615794585657]),
606 end=points["GroundPickupBackConeUp"],
607 control_alpha_rolls=[],
608 ))
609
610named_segments.append(
611 ThetaSplineSegment(
612 name="GroundPickupBackCubeToGroundPickupBackConeDownBase",
613 start=points["GroundPickupBackCube"],
614 control1=np.array([2.9915062872070943, -1.5453319249912183]),
615 control2=np.array([3.0113316601735853, -1.5625220857410058]),
616 end=points["GroundPickupBackConeDownBase"],
617 control_alpha_rolls=[],
618 ))
619
620named_segments.append(
621 ThetaSplineSegment(
622 name="GroundPickupFrontConeUpToGroundPickupFrontConeDownBase",
623 start=points["GroundPickupFrontConeUp"],
624 control1=np.array([4.178303420953318, 1.7954892324947347]),
625 control2=np.array([4.198694185882847, 1.8611851211658763]),
626 end=points["GroundPickupFrontConeDownBase"],
627 control_alpha_rolls=[],
628 ))
629
630named_segments.append(
631 ThetaSplineSegment(
632 name="GroundPickupFrontCubeToGroundPickupFrontConeUp",
633 start=points["GroundPickupFrontCube"],
634 control1=np.array([4.152678427672294, 1.755703782155648]),
635 control2=np.array([4.115445030197163, 1.77599054062196]),
636 end=points["GroundPickupFrontConeUp"],
637 control_alpha_rolls=[],
638 ))
639
640named_segments.append(
641 ThetaSplineSegment(
642 name="GroundPickupFrontCubeToGroundPickFrontCubeDownBase",
643 start=points["GroundPickupFrontCube"],
644 control1=np.array([4.126486425254001, 1.838621758570565]),
645 control2=np.array([4.1585708953556, 1.8633805468551703]),
646 end=points["GroundPickupFrontConeDownBase"],
647 control_alpha_rolls=[],
648 ))
649
Maxwell Henderson3d0beaf2023-03-23 11:32:44 -0700650# Auto express spline...
651named_segments.append(
652 ThetaSplineSegment(
653 name="GroundPickupBackCubeToScoreFrontMidCube",
654 start=points['ScoreFrontMidCube'],
655 control1=np.array([3.2345111429709847, 0.45338639767112277]),
656 control2=np.array([3.098240119468829, -0.46161157069783254]),
657 end=points['GroundPickupBackCube'],
658 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
659 ))
660
661named_segments.append(
662 ThetaSplineSegment(
663 name="GroundPickupBackCubeToScoreFrontHighCube",
664 start=points['ScoreFrontHighCube'],
665 control1=np.array([2.7074513232200186, 0.20154350392334375]),
666 control2=np.array([3.01714846217257, -0.6310437434614364]),
667 end=points['GroundPickupBackCube'],
668 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
669 ))
670
Maxwell Henderson83cf6d62023-02-10 20:29:26 -0800671front_points = []
672back_points = []
673unnamed_segments = []
milind-u18a901d2023-02-17 21:51:55 -0800674segments = named_segments + unnamed_segments
Maxwell Hendersonf582b142023-03-05 18:33:09 -0800675
676# This checks that all points are unique
677
678seen_segments = []
679
680for segment in segments:
681 # check for equality of the start and end values
682
683 if (segment.start.tolist(), segment.end.tolist()) in seen_segments:
684 print("Repeated value")
685 segment.Print(points)
686 sys.exit(1)
687 else:
688 seen_segments.append((segment.start.tolist(), segment.end.tolist()))
689
690seen_points = []
691
692for point in points:
693 if point in seen_points:
694 print(f"Repeated value {point}")
695 sys.exit(1)
696 else:
697 seen_points.append(point)