blob: f96cbfc1302bc6c8f3aaee5cd1e247c36deeed71 [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'],
210 control_alpha_rolls=[(0.50, 0.0), (.95, np.pi / 2.0)],
211 ))
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'],
243 control_alpha_rolls=[(0.7, 0.0), (.9, -np.pi / 2.0)],
244 ))
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'],
341 control_alpha_rolls=[(0.7, 0.0), (.9, np.pi / 2.0)],
342 ))
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'],
356 control_alpha_rolls=[(0.7, 0.0), (.9, -np.pi / 2.0)],
357 ))
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'],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800369 control_alpha_rolls=[(0.40, 0.0), (.95, -np.pi / 2.0)],
370 ))
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
Austin Schuh90e655c2023-03-11 20:19:53 -0800385points['ScoreFrontMidConeUpAuto'] = to_theta_with_circular_index_and_roll(
386 0.58, 0.97, -np.pi / 2.0, circular_index=0)
387
388named_segments.append(
389 ThetaSplineSegment(
390 name="NeutralToScoreFrontMidConeUpAuto",
391 start=points['Neutral'],
392 control1=np.array([2.99620794024176, 0.23620211875551145]),
393 control2=np.array([2.728197531599509, 0.5677148040671784]),
394 end=points['ScoreFrontMidConeUpAuto'],
395 control_alpha_rolls=[(0.20, 0.0), (.90, -np.pi / 2.0)],
Maxwell Henderson17365e52023-03-11 20:34:59 -0800396 vmax=10.0,
397 alpha_unitizer=np.matrix(
398 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 -0800399 ))
400
401named_segments.append(
402 ThetaSplineSegment(
403 name="ScoreFrontMidConeUpAutoToGroundPickupBackCube",
404 start=points['ScoreFrontMidConeUpAuto'],
405 control1=np.array([3.1869633311848187, 0.2812689595803919]),
406 control2=np.array([2.906100237354555, -0.7760928122326023]),
407 end=points['GroundPickupBackCube'],
408 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
409 ))
410
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800411points['ScoreFrontLowCube'] = to_theta_with_circular_index_and_roll(
Austin Schuh99dda682023-03-11 00:18:37 -0800412 0.325603, 0.39, np.pi / 2.0, circular_index=0)
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800413
414named_segments.append(
415 ThetaSplineSegment(
416 name="NeutralToScoreFrontLowCube",
417 start=points['Neutral'],
418 control1=np.array([3.338852196583635, 0.34968650009090885]),
419 control2=np.array([4.28246270189025, 1.492916470137478]),
420 end=points['ScoreFrontLowCube'],
421 control_alpha_rolls=[(0.4, 0.0), (.9, np.pi / 2.0)],
422 ))
423
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800424points['ScoreFrontMidCube'] = to_theta_with_circular_index_and_roll(
425 0.517846, 0.87, np.pi / 2.0, circular_index=0)
426
427named_segments.append(
428 ThetaSplineSegment(
429 name="NeutralToScoreFrontMidCube",
430 start=points["Neutral"],
431 control1=np.array([3.1310824883477952, 0.23591705727105095]),
432 control2=np.array([3.0320025094685965, 0.43674789928668933]),
433 end=points["ScoreFrontMidCube"],
434 control_alpha_rolls=[(0.4, np.pi * 0.0), (0.95, np.pi * 0.5)],
435 ))
436
Austin Schuhe062be02023-03-04 21:12:07 -0800437named_segments.append(
438 ThetaSplineSegment(
439 name="ScoreFrontLowCubeToScoreFrontMidCube",
440 start=points["ScoreFrontLowCube"],
441 control1=np.array([3.8237323383577078, 1.2979562720646056]),
442 control2=np.array([3.63484177908944, 1.008850428344438]),
443 end=points["ScoreFrontMidCube"],
444 control_alpha_rolls=[],
445 ))
446
Austin Schuh90e655c2023-03-11 20:19:53 -0800447# Auto express spline...
448named_segments.append(
449 ThetaSplineSegment(
450 name="GroundPickupBackCubeToScoreFrontMidCube",
451 start=points['ScoreFrontMidCube'],
452 control1=np.array([3.2345111429709847, 0.45338639767112277]),
453 control2=np.array([3.098240119468829, -0.46161157069783254]),
454 end=points['GroundPickupBackCube'],
455 control_alpha_rolls=[(0.40, 0.0), (0.60, 0.0)],
456 ))
457
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800458points['ScoreFrontHighCube'] = to_theta_with_circular_index_and_roll(
459 0.901437, 1.16, np.pi / 2.0, circular_index=0)
460
461named_segments.append(
462 ThetaSplineSegment(
463 name="NeutralToScoreFrontHighCube",
464 start=points["Neutral"],
465 control1=np.array([2.537484161662287, 0.059700523547219]),
466 control2=np.array([2.449391812539668, 0.4141564369176016]),
467 end=points["ScoreFrontHighCube"],
468 control_alpha_rolls=[(0.4, np.pi * 0.0), (0.95, np.pi * 0.5)],
469 ))
470
Austin Schuhe062be02023-03-04 21:12:07 -0800471named_segments.append(
472 ThetaSplineSegment(
473 name="ScoreFrontMidCubeToScoreFrontHighCube",
474 start=points["ScoreFrontMidCube"],
475 control1=np.array([2.9229652375897004, 0.7771801809056819]),
476 control2=np.array([2.634276444896239, 0.5696525540129302]),
477 end=points["ScoreFrontHighCube"],
478 control_alpha_rolls=[],
479 ))
480
481points['ScoreBackLowCube'] = to_theta_with_circular_index_and_roll(
Austin Schuh47a481a2023-03-05 15:32:05 -0800482 -1.102, 0.3212121, -np.pi / 2.0, circular_index=1)
Austin Schuhe062be02023-03-04 21:12:07 -0800483
484named_segments.append(
485 ThetaSplineSegment(
486 name="NeutralToScoreLowBackCube",
487 start=points['Neutral'],
488 control1=np.array([3.153228, -0.497009]),
489 control2=np.array([2.972776, -1.026820]),
490 end=points['ScoreBackLowCube'],
491 control_alpha_rolls=[(0.7, 0.0), (.9, -np.pi / 2.0)],
492 ))
493
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800494points['ScoreBackMidCube'] = to_theta_with_circular_index_and_roll(
495 -1.27896, 0.84, -np.pi / 2.0, circular_index=1)
496
497named_segments.append(
498 ThetaSplineSegment(
499 name="NeutralToScoreBackMidCube",
500 start=points["Neutral"],
501 control1=np.array([3.3485646154655404, -0.4369603013926491]),
502 control2=np.array([3.2653593368256995, -0.789587049476034]),
503 end=points["ScoreBackMidCube"],
504 control_alpha_rolls=[(0.3, -np.pi * 0.0), (0.95, -np.pi * 0.5)],
505 ))
506
Austin Schuhe062be02023-03-04 21:12:07 -0800507named_segments.append(
508 ThetaSplineSegment(
509 name="ScoreBackLowCubeToScoreBackMidCube",
510 start=points["ScoreBackLowCube"],
511 control1=np.array([3.1075630474968694, -1.1675095818664531]),
512 control2=np.array([3.3377520447373232, -1.1054408842366303]),
513 end=points["ScoreBackMidCube"],
514 control_alpha_rolls=[],
515 ))
516
Austin Schuh9b3e41c2023-02-26 22:29:53 -0800517# TODO(austin): This doesn't produce the next line...
518#points['ScoreBackHighCube'] = to_theta_with_circular_index_and_roll(
519# -1.60932, 1.16839, np.pi / 2.0, circular_index=0)
520points['ScoreBackHighCube'] = np.array(
521 (4.77284735761704, -1.19952193130714, -np.pi / 2.0))
522
523named_segments.append(
524 ThetaSplineSegment(
525 name="NeutralToScoreBackHighCube",
526 start=points["Neutral"],
527 control1=np.array([3.6804854484103684, -0.3494541095053125]),
528 control2=np.array([3.9889380578509517, -0.6637934755748516]),
529 end=points["ScoreBackHighCube"],
530 control_alpha_rolls=[(0.3, -np.pi * 0.0), (0.95, -np.pi * 0.5)],
531 ))
532
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800533named_segments.append(
534 ThetaSplineSegment(
Austin Schuhe062be02023-03-04 21:12:07 -0800535 name="ScoreBackMidCubeToScoreBackHighCube",
536 start=points["ScoreBackMidCube"],
537 control1=np.array([4.03651864313893, -0.919229198708873]),
538 control2=np.array([4.377346803653962, -1.0167608157302999]),
539 end=points["ScoreBackHighCube"],
540 control_alpha_rolls=[],
541 ))
542
543points['GroundPickupFrontConeUp'] = to_theta_with_circular_index_and_roll(
544 0.313099, 0.380, -np.pi / 2.0, circular_index=0)
545
546named_segments.append(
547 ThetaSplineSegment(
548 name="NeutralToGroundPickupFrontConeUp",
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800549 start=points['Neutral'],
Austin Schuhe062be02023-03-04 21:12:07 -0800550 control1=np.array([3.153481004695907, 0.4827717171390571]),
551 control2=np.array([4.107487625131798, 0.9935705415901082]),
552 end=points['GroundPickupFrontConeUp'],
553 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
554 ))
555
556points['ScoreFrontLowConeUp'] = to_theta_with_circular_index_and_roll(
557 0.349687, 0.468804, -np.pi / 2.0, circular_index=0)
558
559named_segments.append(
560 ThetaSplineSegment(
561 name="NeutralToScoreFrontLowConeUp",
562 start=points['Neutral'],
563 control1=np.array([3.153481004695907, 0.4827717171390571]),
564 control2=np.array([4.107487625131798, 0.9935705415901082]),
565 end=points['ScoreFrontLowConeUp'],
566 control_alpha_rolls=[(0.30, 0.0), (.95, -np.pi / 2.0)],
567 ))
568
569named_segments.append(
570 ThetaSplineSegment(
571 name="GroundPickupFrontConeUpToScoreFrontLowConeUp",
572 start=points['GroundPickupFrontConeUp'],
573 control1=np.array([4.14454438793702, 1.680256664914554]),
574 control2=np.array([4.159014136030164, 1.6617266432775355]),
575 end=points['ScoreFrontLowConeUp'],
576 control_alpha_rolls=[],
577 ))
578
579named_segments.append(
580 ThetaSplineSegment(
581 name="ScoreFrontLowConeUpToScoreFrontMidConeUp",
582 start=points['ScoreFrontLowConeUp'],
583 control1=np.array([4.144103145250675, 1.3519566301042056]),
584 control2=np.array([3.5357641970552223, 0.8105698293886593]),
585 end=points['ScoreFrontMidConeUp'],
586 control_alpha_rolls=[],
587 ))
588
589named_segments.append(
590 ThetaSplineSegment(
591 name="ScoreFrontMidConeUpToScoreFrontHighConeUp",
592 start=points['ScoreFrontMidConeUp'],
593 control1=np.array([2.417981958011055, 0.48234108399079134]),
594 control2=np.array([2.1651435746478045, 0.4937628492739232]),
595 end=points['ScoreFrontHighConeUp'],
596 control_alpha_rolls=[],
Austin Schuh9a11ebd2023-02-26 14:16:31 -0800597 ))
Maxwell Henderson1ac7aac2023-02-23 17:35:32 -0800598
Maxwell Henderson83cf6d62023-02-10 20:29:26 -0800599front_points = []
600back_points = []
601unnamed_segments = []
milind-u18a901d2023-02-17 21:51:55 -0800602segments = named_segments + unnamed_segments
Maxwell Hendersonf582b142023-03-05 18:33:09 -0800603
604# This checks that all points are unique
605
606seen_segments = []
607
608for segment in segments:
609 # check for equality of the start and end values
610
611 if (segment.start.tolist(), segment.end.tolist()) in seen_segments:
612 print("Repeated value")
613 segment.Print(points)
614 sys.exit(1)
615 else:
616 seen_segments.append((segment.start.tolist(), segment.end.tolist()))
617
618seen_points = []
619
620for point in points:
621 if point in seen_points:
622 print(f"Repeated value {point}")
623 sys.exit(1)
624 else:
625 seen_points.append(point)