blob: 6166ca8ec4e727d81ea10b4a941079d6d29e134f [file] [log] [blame]
Austin Schuh6bcc2302019-03-23 22:28:06 -07001#include "y2019/actors/auto_splines.h"
2
Alex Perrycb7da4b2019-08-28 19:35:56 -07003#include "frc971/control_loops/control_loops_generated.h"
Austin Schuh6bcc2302019-03-23 22:28:06 -07004
5namespace y2019 {
6namespace actors {
7
Alex Perrycb7da4b2019-08-28 19:35:56 -07008void MaybeFlipSpline(
9 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
10 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset,
11 bool is_left) {
12
13 flatbuffers::Vector<float> *spline_y =
14 GetMutableTemporaryPointer(*builder->fbb(), spline_y_offset);
15
Austin Schuhb5b79a52019-05-08 20:32:07 -070016 if (!is_left) {
Alex Perrycb7da4b2019-08-28 19:35:56 -070017 for (size_t i = 0; i < spline_y->size(); i++) {
18 spline_y->Mutate(i, -spline_y->Get(i));
Austin Schuhb5b79a52019-05-08 20:32:07 -070019 }
20 }
21}
22
23// Path off of level 2 to the far side of the rocket with a panel
Alex Perrycb7da4b2019-08-28 19:35:56 -070024flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::HABToFarRocket(
25 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
26 bool is_left) {
27 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
28 flatbuffers::Offset<frc971::Constraint> lateral_constraint_offset;
29 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
30 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
James Kuszmaulbc837872019-04-07 12:01:47 -070031
Alex Perrycb7da4b2019-08-28 19:35:56 -070032 {
33 frc971::Constraint::Builder longitudinal_constraint_builder =
34 builder->MakeBuilder<frc971::Constraint>();
35 longitudinal_constraint_builder.add_constraint_type(
36 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
37 longitudinal_constraint_builder.add_value(2.0);
38 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
39 }
James Kuszmaulbc837872019-04-07 12:01:47 -070040
Alex Perrycb7da4b2019-08-28 19:35:56 -070041 {
42 frc971::Constraint::Builder lateral_constraint_builder =
43 builder->MakeBuilder<frc971::Constraint>();
44 lateral_constraint_builder.add_constraint_type(
45 frc971::ConstraintType_LATERAL_ACCELERATION);
46 lateral_constraint_builder.add_value(2.0);
47 lateral_constraint_offset = lateral_constraint_builder.Finish();
48 }
James Kuszmaulbc837872019-04-07 12:01:47 -070049
Alex Perrycb7da4b2019-08-28 19:35:56 -070050 {
51 frc971::Constraint::Builder voltage_constraint_builder =
52 builder->MakeBuilder<frc971::Constraint>();
53 voltage_constraint_builder.add_constraint_type(
54 frc971::ConstraintType_VOLTAGE);
55 voltage_constraint_builder.add_value(11.0);
56 voltage_constraint_offset = voltage_constraint_builder.Finish();
57 }
James Kuszmaulbc837872019-04-07 12:01:47 -070058
Alex Perrycb7da4b2019-08-28 19:35:56 -070059 {
60 frc971::Constraint::Builder velocity_constraint_builder =
61 builder->MakeBuilder<frc971::Constraint>();
62 velocity_constraint_builder.add_constraint_type(
63 frc971::ConstraintType_VELOCITY);
64 velocity_constraint_builder.add_value(4.0);
65 velocity_constraint_builder.add_start_distance(0.0);
66 velocity_constraint_builder.add_end_distance(10.0);
67 velocity_constraint_offset = velocity_constraint_builder.Finish();
68 }
James Kuszmaulbc837872019-04-07 12:01:47 -070069
Alex Perrycb7da4b2019-08-28 19:35:56 -070070 flatbuffers::Offset<
71 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
72 constraints_offset =
73 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
74 {longitudinal_constraint_offset, lateral_constraint_offset,
75 voltage_constraint_offset, velocity_constraint_offset});
Austin Schuhb5b79a52019-05-08 20:32:07 -070076
Alex Perrycb7da4b2019-08-28 19:35:56 -070077 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
78 builder->fbb()->CreateVector<float>({1.14763818102, 1.66, 3.10, 4.05,
79 4.45, 5.11, 5.77, 6.71, 7.27, 7.19,
80 6.57});
81 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
82 builder->fbb()->CreateVector<float>({1.30261224364, 1.30217320136, 1.39,
83 1.47, 1.56346705393, 1.69, 1.81,
84 1.97, 2.18, 2.84, 3.33});
85 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -070086
Alex Perrycb7da4b2019-08-28 19:35:56 -070087 frc971::MultiSpline::Builder multispline_builder =
88 builder->MakeBuilder<frc971::MultiSpline>();
89
90 multispline_builder.add_spline_count(2);
91 multispline_builder.add_constraints(constraints_offset);
92 multispline_builder.add_spline_x(spline_x_offset);
93 multispline_builder.add_spline_y(spline_y_offset);
94
95 return multispline_builder.Finish();
James Kuszmaulbc837872019-04-07 12:01:47 -070096}
97
Austin Schuhb5b79a52019-05-08 20:32:07 -070098// Path from the far side of the rocket to the loading station to pickup
Alex Perrycb7da4b2019-08-28 19:35:56 -070099flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::FarRocketToHP(
100 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
101 bool is_left) {
102 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
103 flatbuffers::Offset<frc971::Constraint> lateral_constraint_offset;
104 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
105 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
Austin Schuhb5b79a52019-05-08 20:32:07 -0700106
Alex Perrycb7da4b2019-08-28 19:35:56 -0700107 {
108 frc971::Constraint::Builder longitudinal_constraint_builder =
109 builder->MakeBuilder<frc971::Constraint>();
110 longitudinal_constraint_builder.add_constraint_type(
111 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
112 longitudinal_constraint_builder.add_value(3.0);
113 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
114 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700115
Alex Perrycb7da4b2019-08-28 19:35:56 -0700116 {
117 frc971::Constraint::Builder lateral_constraint_builder =
118 builder->MakeBuilder<frc971::Constraint>();
119 lateral_constraint_builder.add_constraint_type(
120 frc971::ConstraintType_LATERAL_ACCELERATION);
121 lateral_constraint_builder.add_value(2.0);
122 lateral_constraint_offset = lateral_constraint_builder.Finish();
123 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700124
Alex Perrycb7da4b2019-08-28 19:35:56 -0700125 {
126 frc971::Constraint::Builder voltage_constraint_builder =
127 builder->MakeBuilder<frc971::Constraint>();
128 voltage_constraint_builder.add_constraint_type(
129 frc971::ConstraintType_VOLTAGE);
130 voltage_constraint_builder.add_value(11.0);
131 voltage_constraint_offset = voltage_constraint_builder.Finish();
132 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700133
Alex Perrycb7da4b2019-08-28 19:35:56 -0700134 {
135 frc971::Constraint::Builder velocity_constraint_builder =
136 builder->MakeBuilder<frc971::Constraint>();
137 velocity_constraint_builder.add_constraint_type(
138 frc971::ConstraintType_VELOCITY);
139 velocity_constraint_builder.add_value(4.5);
140 velocity_constraint_builder.add_start_distance(0.0);
141 velocity_constraint_builder.add_end_distance(10.0);
142 velocity_constraint_offset = velocity_constraint_builder.Finish();
143 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700144
Alex Perrycb7da4b2019-08-28 19:35:56 -0700145 flatbuffers::Offset<
146 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
147 constraints_offset =
148 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
149 {longitudinal_constraint_offset, lateral_constraint_offset,
150 voltage_constraint_offset, velocity_constraint_offset});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700151
Alex Perrycb7da4b2019-08-28 19:35:56 -0700152 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
153 builder->fbb()->CreateVector<float>(
154 {6.6, 7.511, 6.332, 4.590, 1.561, 0.179});
155 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
156 builder->fbb()->CreateVector<float>(
157 {3.391, 2.826, 1.384, 3.395 - 0.20, 3.429 - 0.20, 3.434 - 0.20});
158 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700159
Alex Perrycb7da4b2019-08-28 19:35:56 -0700160 frc971::MultiSpline::Builder multispline_builder =
161 builder->MakeBuilder<frc971::MultiSpline>();
162
163 multispline_builder.add_spline_count(1);
164 multispline_builder.add_constraints(constraints_offset);
165 multispline_builder.add_spline_x(spline_x_offset);
166 multispline_builder.add_spline_y(spline_y_offset);
167
168 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700169}
170
171// Path from the human player station to the far side of the rocket with a panel
Alex Perrycb7da4b2019-08-28 19:35:56 -0700172flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::HPToFarRocket(
173 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
174 bool is_left) {
175 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
176 flatbuffers::Offset<frc971::Constraint> lateral_constraint_offset;
177 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
178 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
Austin Schuhb5b79a52019-05-08 20:32:07 -0700179
Alex Perrycb7da4b2019-08-28 19:35:56 -0700180 {
181 frc971::Constraint::Builder longitudinal_constraint_builder =
182 builder->MakeBuilder<frc971::Constraint>();
183 longitudinal_constraint_builder.add_constraint_type(
184 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
185 longitudinal_constraint_builder.add_value(3.0);
186 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
187 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700188
Alex Perrycb7da4b2019-08-28 19:35:56 -0700189 {
190 frc971::Constraint::Builder lateral_constraint_builder =
191 builder->MakeBuilder<frc971::Constraint>();
192 lateral_constraint_builder.add_constraint_type(
193 frc971::ConstraintType_LATERAL_ACCELERATION);
194 lateral_constraint_builder.add_value(3.0);
195 lateral_constraint_offset = lateral_constraint_builder.Finish();
196 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700197
Alex Perrycb7da4b2019-08-28 19:35:56 -0700198 {
199 frc971::Constraint::Builder voltage_constraint_builder =
200 builder->MakeBuilder<frc971::Constraint>();
201 voltage_constraint_builder.add_constraint_type(
202 frc971::ConstraintType_VOLTAGE);
203 voltage_constraint_builder.add_value(11.0);
204 voltage_constraint_offset = voltage_constraint_builder.Finish();
205 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700206
Alex Perrycb7da4b2019-08-28 19:35:56 -0700207 {
208 frc971::Constraint::Builder velocity_constraint_builder =
209 builder->MakeBuilder<frc971::Constraint>();
210 velocity_constraint_builder.add_constraint_type(
211 frc971::ConstraintType_VELOCITY);
212 velocity_constraint_builder.add_value(4.0);
213 velocity_constraint_builder.add_start_distance(7.0);
214 velocity_constraint_builder.add_end_distance(15.0);
215 velocity_constraint_offset = velocity_constraint_builder.Finish();
216 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700217
Alex Perrycb7da4b2019-08-28 19:35:56 -0700218 flatbuffers::Offset<
219 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
220 constraints_offset =
221 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
222 {longitudinal_constraint_offset, lateral_constraint_offset,
223 voltage_constraint_offset, velocity_constraint_offset});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700224
Alex Perrycb7da4b2019-08-28 19:35:56 -0700225 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
226 builder->fbb()->CreateVector<float>({0.895115737979, 2.9155615909,
227 5.02361983866, 6.40346237218,
228 7.1260656844, 7.83907559509});
229 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
230 builder->fbb()->CreateVector<float>({3.43030859063, 3.44230565037,
231 2.8824369646, 2.81000389973,
232 3.08853311072, 2.6933085577});
233 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700234
Alex Perrycb7da4b2019-08-28 19:35:56 -0700235 frc971::MultiSpline::Builder multispline_builder =
236 builder->MakeBuilder<frc971::MultiSpline>();
237
238 multispline_builder.add_spline_count(1);
239 multispline_builder.add_constraints(constraints_offset);
240 multispline_builder.add_spline_x(spline_x_offset);
241 multispline_builder.add_spline_y(spline_y_offset);
242
243 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700244}
245
246// Path from the far side of the rocket to close to the loading station
Alex Perrycb7da4b2019-08-28 19:35:56 -0700247flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::FarRocketToNearHP(
248 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
249 bool is_left) {
Austin Schuhb5b79a52019-05-08 20:32:07 -0700250 // TODO(theo): Add some real constraints.
Alex Perrycb7da4b2019-08-28 19:35:56 -0700251 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
252 builder->fbb()->CreateVector<float>({6.51652191988, 6.83156293562,
253 5.74513904409, 2.2337653586,
254 1.94766705864, 0.727526876557});
255 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
256 builder->fbb()->CreateVector<float>({3.2465107468, 2.88277456846,
257 1.93458779243, 3.44064777429,
258 3.44377880106, 3.43326367284});
259 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700260
Alex Perrycb7da4b2019-08-28 19:35:56 -0700261 frc971::MultiSpline::Builder multispline_builder =
262 builder->MakeBuilder<frc971::MultiSpline>();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700263
Alex Perrycb7da4b2019-08-28 19:35:56 -0700264 multispline_builder.add_spline_count(1);
265 multispline_builder.add_spline_x(spline_x_offset);
266 multispline_builder.add_spline_y(spline_y_offset);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700267
Alex Perrycb7da4b2019-08-28 19:35:56 -0700268 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700269}
270
271// Path from level 2 to 2nd cargo ship bay with a hatch panel
Alex Perrycb7da4b2019-08-28 19:35:56 -0700272flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::HABToSecondCargoShipBay(
273 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
274 bool is_left) {
275 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
276 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
277 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
Austin Schuhb5b79a52019-05-08 20:32:07 -0700278
Alex Perrycb7da4b2019-08-28 19:35:56 -0700279 {
280 frc971::Constraint::Builder longitudinal_constraint_builder =
281 builder->MakeBuilder<frc971::Constraint>();
282 longitudinal_constraint_builder.add_constraint_type(
283 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
284 longitudinal_constraint_builder.add_value(2.0);
285 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
286 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700287
Alex Perrycb7da4b2019-08-28 19:35:56 -0700288 {
289 frc971::Constraint::Builder voltage_constraint_builder =
290 builder->MakeBuilder<frc971::Constraint>();
291 voltage_constraint_builder.add_constraint_type(
292 frc971::ConstraintType_VOLTAGE);
293 voltage_constraint_builder.add_value(10.0);
294 voltage_constraint_offset = voltage_constraint_builder.Finish();
295 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700296
Alex Perrycb7da4b2019-08-28 19:35:56 -0700297 {
298 frc971::Constraint::Builder velocity_constraint_builder =
299 builder->MakeBuilder<frc971::Constraint>();
300 velocity_constraint_builder.add_constraint_type(
301 frc971::ConstraintType_VELOCITY);
302 velocity_constraint_builder.add_value(1.6);
303 velocity_constraint_builder.add_start_distance(4.0);
304 velocity_constraint_builder.add_end_distance(10.0);
305 velocity_constraint_offset = velocity_constraint_builder.Finish();
306 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700307
Alex Perrycb7da4b2019-08-28 19:35:56 -0700308 flatbuffers::Offset<
309 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
310 constraints_offset =
311 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
312 {longitudinal_constraint_offset, voltage_constraint_offset,
313 velocity_constraint_offset});
314
Austin Schuhb5b79a52019-05-08 20:32:07 -0700315 constexpr double kLess = 0.06;
Alex Perrycb7da4b2019-08-28 19:35:56 -0700316 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
317 builder->fbb()->CreateVector<float>(
318 {1.0, 2.53944573074, 5.75526086906, 6.52583747973 - kLess,
319 7.12318661548 - kLess, 7.22595029399 - kLess});
320 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
321 builder->fbb()->CreateVector<float>({1.5, 1.48, 2.05178220103,
322 2.56666687655, 1.79340280288,
323 1.16170693058});
324 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700325
Alex Perrycb7da4b2019-08-28 19:35:56 -0700326 frc971::MultiSpline::Builder multispline_builder =
327 builder->MakeBuilder<frc971::MultiSpline>();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700328
Alex Perrycb7da4b2019-08-28 19:35:56 -0700329 multispline_builder.add_spline_count(1);
330 multispline_builder.add_constraints(constraints_offset);
331 multispline_builder.add_spline_x(spline_x_offset);
332 multispline_builder.add_spline_y(spline_y_offset);
333
334 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700335}
336
337// Path from 2nd cargo ship bay to loading station
Alex Perrycb7da4b2019-08-28 19:35:56 -0700338flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::SecondCargoShipBayToHP(
339 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
340 bool is_left) {
341 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
342 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
Austin Schuhb5b79a52019-05-08 20:32:07 -0700343
Alex Perrycb7da4b2019-08-28 19:35:56 -0700344 {
345 frc971::Constraint::Builder voltage_constraint_builder =
346 builder->MakeBuilder<frc971::Constraint>();
347 voltage_constraint_builder.add_constraint_type(
348 frc971::ConstraintType_VOLTAGE);
349 voltage_constraint_builder.add_value(11.0);
350 voltage_constraint_offset = voltage_constraint_builder.Finish();
351 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700352
Alex Perrycb7da4b2019-08-28 19:35:56 -0700353 {
354 frc971::Constraint::Builder velocity_constraint_builder =
355 builder->MakeBuilder<frc971::Constraint>();
356 velocity_constraint_builder.add_constraint_type(
357 frc971::ConstraintType_VELOCITY);
358 velocity_constraint_builder.add_value(4.0);
359 velocity_constraint_builder.add_start_distance(0.0);
360 velocity_constraint_builder.add_end_distance(10.0);
361 velocity_constraint_offset = velocity_constraint_builder.Finish();
362 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700363
Alex Perrycb7da4b2019-08-28 19:35:56 -0700364 flatbuffers::Offset<
365 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
366 constraints_offset =
367 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
368 {voltage_constraint_offset, velocity_constraint_offset});
369
370 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
371 builder->fbb()->CreateVector<float>({7.22595029399, 7.1892447864,
372 6.5373977907, 5.55997590982,
373 1.22953437637, 0.32521840905});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700374 constexpr double kYShift = 0.1;
Alex Perrycb7da4b2019-08-28 19:35:56 -0700375 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
376 builder->fbb()->CreateVector<float>(
377 {1.2, 1.44543230529, 2.00646674662, 3.43762336271 - kYShift,
378 3.44125430793 - kYShift, 3.4360348159 - kYShift});
379 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700380
Alex Perrycb7da4b2019-08-28 19:35:56 -0700381 frc971::MultiSpline::Builder multispline_builder =
382 builder->MakeBuilder<frc971::MultiSpline>();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700383
Alex Perrycb7da4b2019-08-28 19:35:56 -0700384 multispline_builder.add_spline_count(1);
385 multispline_builder.add_constraints(constraints_offset);
386 multispline_builder.add_spline_x(spline_x_offset);
387 multispline_builder.add_spline_y(spline_y_offset);
388
389 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700390}
391
392// Path from loading station to 3rd cargo ship bay with a hatch panel
Alex Perrycb7da4b2019-08-28 19:35:56 -0700393flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::HPToThirdCargoShipBay(
394 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
395 bool is_left) {
396 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
397 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
398 flatbuffers::Offset<frc971::Constraint> velocity_constraint2_offset;
Austin Schuhb5b79a52019-05-08 20:32:07 -0700399
Alex Perrycb7da4b2019-08-28 19:35:56 -0700400 {
401 frc971::Constraint::Builder voltage_constraint_builder =
402 builder->MakeBuilder<frc971::Constraint>();
403 voltage_constraint_builder.add_constraint_type(
404 frc971::ConstraintType_VOLTAGE);
405 voltage_constraint_builder.add_value(10.0);
406 voltage_constraint_offset = voltage_constraint_builder.Finish();
407 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700408
Alex Perrycb7da4b2019-08-28 19:35:56 -0700409 {
410 frc971::Constraint::Builder velocity_constraint_builder =
411 builder->MakeBuilder<frc971::Constraint>();
412 velocity_constraint_builder.add_constraint_type(
413 frc971::ConstraintType_VELOCITY);
414 velocity_constraint_builder.add_value(3.5);
415 velocity_constraint_builder.add_start_distance(0.0);
416 velocity_constraint_builder.add_end_distance(10.0);
417 velocity_constraint_offset = velocity_constraint_builder.Finish();
418 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700419
Alex Perrycb7da4b2019-08-28 19:35:56 -0700420 {
421 frc971::Constraint::Builder velocity_constraint2_builder =
422 builder->MakeBuilder<frc971::Constraint>();
423 velocity_constraint2_builder.add_constraint_type(
424 frc971::ConstraintType_VELOCITY);
425 velocity_constraint2_builder.add_value(2.0);
426 velocity_constraint2_builder.add_start_distance(6.0);
427 velocity_constraint2_builder.add_end_distance(10.0);
428 velocity_constraint2_offset = velocity_constraint2_builder.Finish();
429 }
430
431 flatbuffers::Offset<
432 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
433 constraints_offset =
434 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
435 {voltage_constraint_offset, velocity_constraint_offset,
436 velocity_constraint2_offset});
437
Austin Schuhb5b79a52019-05-08 20:32:07 -0700438 constexpr double kEndMove = 0.25;
Alex Perrycb7da4b2019-08-28 19:35:56 -0700439 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
440 builder->fbb()->CreateVector<float>({0.75, 1.112, 5.576, 7.497 - kEndMove,
441 7.675 - kEndMove, 7.768 - kEndMove});
442 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
443 builder->fbb()->CreateVector<float>(
444 {3.431, 3.434, 2.712, 2.874, 1.786, 1.168});
445 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700446
Alex Perrycb7da4b2019-08-28 19:35:56 -0700447 frc971::MultiSpline::Builder multispline_builder =
448 builder->MakeBuilder<frc971::MultiSpline>();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700449
Alex Perrycb7da4b2019-08-28 19:35:56 -0700450 multispline_builder.add_spline_count(1);
451 multispline_builder.add_constraints(constraints_offset);
452 multispline_builder.add_spline_x(spline_x_offset);
453 multispline_builder.add_spline_y(spline_y_offset);
454
455 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700456}
457
458// Path from 3rd cargo ship bay to near the loading station
Alex Perrycb7da4b2019-08-28 19:35:56 -0700459flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::ThirdCargoShipBayToNearHP(
460 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
Austin Schuhb5b79a52019-05-08 20:32:07 -0700461 bool is_left) {
Alex Perrycb7da4b2019-08-28 19:35:56 -0700462 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
Austin Schuhb5b79a52019-05-08 20:32:07 -0700463
Alex Perrycb7da4b2019-08-28 19:35:56 -0700464 {
465 frc971::Constraint::Builder velocity_constraint_builder =
466 builder->MakeBuilder<frc971::Constraint>();
467 velocity_constraint_builder.add_constraint_type(
468 frc971::ConstraintType_VELOCITY);
469 velocity_constraint_builder.add_value(0.5);
470 velocity_constraint_builder.add_start_distance(0.0);
471 velocity_constraint_builder.add_end_distance(10.0);
472 velocity_constraint_offset = velocity_constraint_builder.Finish();
473 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700474
Alex Perrycb7da4b2019-08-28 19:35:56 -0700475 flatbuffers::Offset<
476 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
477 constraints_offset =
478 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
479 {velocity_constraint_offset});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700480
Alex Perrycb7da4b2019-08-28 19:35:56 -0700481 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
482 builder->fbb()->CreateVector<float>({7.75823205276, 7.58356294646,
483 5.95536035287, 2.12377989323,
484 1.29347361128, 0.598613577531});
485 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
486 builder->fbb()->CreateVector<float>({1.16791407107, 1.94564064915,
487 2.54565614767, 3.43728005786,
488 3.43775494434, 3.43119598027});
489 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700490
Alex Perrycb7da4b2019-08-28 19:35:56 -0700491 frc971::MultiSpline::Builder multispline_builder =
492 builder->MakeBuilder<frc971::MultiSpline>();
493
494 multispline_builder.add_spline_count(1);
495 multispline_builder.add_constraints(constraints_offset);
496 multispline_builder.add_spline_x(spline_x_offset);
497 multispline_builder.add_spline_y(spline_y_offset);
498
499 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700500}
501
Alex Perrycb7da4b2019-08-28 19:35:56 -0700502flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::HabToFarRocketTest(
503 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
504 bool is_left) {
505 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
506 flatbuffers::Offset<frc971::Constraint> lateral_constraint_offset;
507 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
508 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
Austin Schuhb5b79a52019-05-08 20:32:07 -0700509
Alex Perrycb7da4b2019-08-28 19:35:56 -0700510 {
511 frc971::Constraint::Builder longitudinal_constraint_builder =
512 builder->MakeBuilder<frc971::Constraint>();
513 longitudinal_constraint_builder.add_constraint_type(
514 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
515 longitudinal_constraint_builder.add_value(2.0);
516 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
517 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700518
Alex Perrycb7da4b2019-08-28 19:35:56 -0700519 {
520 frc971::Constraint::Builder lateral_constraint_builder =
521 builder->MakeBuilder<frc971::Constraint>();
522 lateral_constraint_builder.add_constraint_type(
523 frc971::ConstraintType_LATERAL_ACCELERATION);
524 lateral_constraint_builder.add_value(2.0);
525 lateral_constraint_offset = lateral_constraint_builder.Finish();
526 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700527
Alex Perrycb7da4b2019-08-28 19:35:56 -0700528 {
529 frc971::Constraint::Builder voltage_constraint_builder =
530 builder->MakeBuilder<frc971::Constraint>();
531 voltage_constraint_builder.add_constraint_type(
532 frc971::ConstraintType_VOLTAGE);
533 voltage_constraint_builder.add_value(11.0);
534 voltage_constraint_offset = voltage_constraint_builder.Finish();
535 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700536
Alex Perrycb7da4b2019-08-28 19:35:56 -0700537 {
538 frc971::Constraint::Builder velocity_constraint_builder =
539 builder->MakeBuilder<frc971::Constraint>();
540 velocity_constraint_builder.add_constraint_type(
541 frc971::ConstraintType_VELOCITY);
542 velocity_constraint_builder.add_value(1.7);
543 velocity_constraint_builder.add_start_distance(0.0);
544 velocity_constraint_builder.add_end_distance(0.8);
545 velocity_constraint_offset = velocity_constraint_builder.Finish();
546 }
Austin Schuhb5b79a52019-05-08 20:32:07 -0700547
Alex Perrycb7da4b2019-08-28 19:35:56 -0700548 flatbuffers::Offset<
549 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
550 constraints_offset =
551 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
552 {longitudinal_constraint_offset, lateral_constraint_offset,
553 voltage_constraint_offset, velocity_constraint_offset});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700554
Alex Perrycb7da4b2019-08-28 19:35:56 -0700555 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
556 builder->fbb()->CreateVector<float>({1.14763818102, 2.53944573074,
557 3.74586892131, 5.22352745444,
558 6.70255737219, 7.35784750785});
559 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
560 builder->fbb()->CreateVector<float>({1.30261224364, 1.28295363394,
561 1.27450357714, 2.89953366429,
562 3.10734391012, 2.90125929705});
563 MaybeFlipSpline(builder, spline_y_offset, is_left);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700564
Alex Perrycb7da4b2019-08-28 19:35:56 -0700565 frc971::MultiSpline::Builder multispline_builder =
566 builder->MakeBuilder<frc971::MultiSpline>();
567
568 multispline_builder.add_spline_count(1);
569 multispline_builder.add_constraints(constraints_offset);
570 multispline_builder.add_spline_x(spline_x_offset);
571 multispline_builder.add_spline_y(spline_y_offset);
572
573 return multispline_builder.Finish();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700574}
575
Alex Perrycb7da4b2019-08-28 19:35:56 -0700576flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::FarRocketToHPTest(
577 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
578 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
579 flatbuffers::Offset<frc971::Constraint> lateral_constraint_offset;
580 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
581 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
James Kuszmaulbc837872019-04-07 12:01:47 -0700582
Alex Perrycb7da4b2019-08-28 19:35:56 -0700583 {
584 frc971::Constraint::Builder longitudinal_constraint_builder =
585 builder->MakeBuilder<frc971::Constraint>();
586 longitudinal_constraint_builder.add_constraint_type(
587 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
588 longitudinal_constraint_builder.add_value(1.5);
589 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
590 }
James Kuszmaulbc837872019-04-07 12:01:47 -0700591
Alex Perrycb7da4b2019-08-28 19:35:56 -0700592 {
593 frc971::Constraint::Builder lateral_constraint_builder =
594 builder->MakeBuilder<frc971::Constraint>();
595 lateral_constraint_builder.add_constraint_type(
596 frc971::ConstraintType_LATERAL_ACCELERATION);
597 lateral_constraint_builder.add_value(1.0);
598 lateral_constraint_offset = lateral_constraint_builder.Finish();
599 }
James Kuszmaulbc837872019-04-07 12:01:47 -0700600
Alex Perrycb7da4b2019-08-28 19:35:56 -0700601 {
602 frc971::Constraint::Builder voltage_constraint_builder =
603 builder->MakeBuilder<frc971::Constraint>();
604 voltage_constraint_builder.add_constraint_type(
605 frc971::ConstraintType_VOLTAGE);
606 voltage_constraint_builder.add_value(11.0);
607 voltage_constraint_offset = voltage_constraint_builder.Finish();
608 }
James Kuszmaulbc837872019-04-07 12:01:47 -0700609
Alex Perrycb7da4b2019-08-28 19:35:56 -0700610 {
611 frc971::Constraint::Builder velocity_constraint_builder =
612 builder->MakeBuilder<frc971::Constraint>();
613 velocity_constraint_builder.add_constraint_type(
614 frc971::ConstraintType_VELOCITY);
615 velocity_constraint_builder.add_value(0.5);
616 velocity_constraint_builder.add_start_distance(9.5);
617 velocity_constraint_builder.add_end_distance(10.0);
618 velocity_constraint_offset = velocity_constraint_builder.Finish();
619 }
James Kuszmaulbc837872019-04-07 12:01:47 -0700620
Alex Perrycb7da4b2019-08-28 19:35:56 -0700621 flatbuffers::Offset<
622 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
623 constraints_offset =
624 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
625 {longitudinal_constraint_offset, lateral_constraint_offset,
626 voltage_constraint_offset, velocity_constraint_offset});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700627
Alex Perrycb7da4b2019-08-28 19:35:56 -0700628 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
629 builder->fbb()->CreateVector<float>({6.53, 7.8, 7.8, 4.0, 2.0, 0.4});
630 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
631 builder->fbb()->CreateVector<float>({3.47, 3.0, 1.5, 3.0, 3.4, 3.4});
632
633 frc971::MultiSpline::Builder multispline_builder =
634 builder->MakeBuilder<frc971::MultiSpline>();
635
636 multispline_builder.add_spline_count(1);
637 multispline_builder.add_constraints(constraints_offset);
638 multispline_builder.add_spline_x(spline_x_offset);
639 multispline_builder.add_spline_y(spline_y_offset);
640
641 return multispline_builder.Finish();
James Kuszmaulbc837872019-04-07 12:01:47 -0700642}
643
Alex Perrycb7da4b2019-08-28 19:35:56 -0700644flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::HPToNearRocketTest(
645 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
646 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
647 flatbuffers::Offset<frc971::Constraint> lateral_constraint_offset;
648 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
649 flatbuffers::Offset<frc971::Constraint> velocity_constraint_offset;
Austin Schuh6bcc2302019-03-23 22:28:06 -0700650
Alex Perrycb7da4b2019-08-28 19:35:56 -0700651 {
652 frc971::Constraint::Builder longitudinal_constraint_builder =
653 builder->MakeBuilder<frc971::Constraint>();
654 longitudinal_constraint_builder.add_constraint_type(
655 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
656 longitudinal_constraint_builder.add_value(1.0);
657 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
658 }
Austin Schuh6bcc2302019-03-23 22:28:06 -0700659
Alex Perrycb7da4b2019-08-28 19:35:56 -0700660 {
661 frc971::Constraint::Builder lateral_constraint_builder =
662 builder->MakeBuilder<frc971::Constraint>();
663 lateral_constraint_builder.add_constraint_type(
664 frc971::ConstraintType_LATERAL_ACCELERATION);
665 lateral_constraint_builder.add_value(1.0);
666 lateral_constraint_offset = lateral_constraint_builder.Finish();
667 }
Austin Schuh6bcc2302019-03-23 22:28:06 -0700668
Alex Perrycb7da4b2019-08-28 19:35:56 -0700669 {
670 frc971::Constraint::Builder voltage_constraint_builder =
671 builder->MakeBuilder<frc971::Constraint>();
672 voltage_constraint_builder.add_constraint_type(
673 frc971::ConstraintType_VOLTAGE);
674 voltage_constraint_builder.add_value(11.0);
675 voltage_constraint_offset = voltage_constraint_builder.Finish();
676 }
James Kuszmaulbc837872019-04-07 12:01:47 -0700677
Alex Perrycb7da4b2019-08-28 19:35:56 -0700678 {
679 frc971::Constraint::Builder velocity_constraint_builder =
680 builder->MakeBuilder<frc971::Constraint>();
681 velocity_constraint_builder.add_constraint_type(
682 frc971::ConstraintType_VELOCITY);
683 velocity_constraint_builder.add_value(0.5);
684 velocity_constraint_builder.add_start_distance(2.7);
685 velocity_constraint_builder.add_end_distance(10.0);
686 velocity_constraint_offset = velocity_constraint_builder.Finish();
687 }
Austin Schuh6bcc2302019-03-23 22:28:06 -0700688
Alex Perrycb7da4b2019-08-28 19:35:56 -0700689 flatbuffers::Offset<
690 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
691 constraints_offset =
692 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
693 {longitudinal_constraint_offset, lateral_constraint_offset,
694 voltage_constraint_offset, velocity_constraint_offset});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700695
Alex Perrycb7da4b2019-08-28 19:35:56 -0700696 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
697 builder->fbb()->CreateVector<float>({1.5, 2.0, 3.0, 4.0, 4.5, 5.12});
698 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
699 builder->fbb()->CreateVector<float>({3.4, 3.4, 3.4, 3.0, 3.0, 3.43});
700
701 frc971::MultiSpline::Builder multispline_builder =
702 builder->MakeBuilder<frc971::MultiSpline>();
703
704 multispline_builder.add_spline_count(1);
705 multispline_builder.add_constraints(constraints_offset);
706 multispline_builder.add_spline_x(spline_x_offset);
707 multispline_builder.add_spline_y(spline_y_offset);
708
709 return multispline_builder.Finish();
Austin Schuh6bcc2302019-03-23 22:28:06 -0700710}
711
Alex Perrycb7da4b2019-08-28 19:35:56 -0700712flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::BasicSSpline(
713 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
714 flatbuffers::Offset<frc971::Constraint> longitudinal_constraint_offset;
715 flatbuffers::Offset<frc971::Constraint> lateral_constraint_offset;
716 flatbuffers::Offset<frc971::Constraint> voltage_constraint_offset;
Austin Schuh6bcc2302019-03-23 22:28:06 -0700717
Alex Perrycb7da4b2019-08-28 19:35:56 -0700718 {
719 frc971::Constraint::Builder longitudinal_constraint_builder =
720 builder->MakeBuilder<frc971::Constraint>();
721 longitudinal_constraint_builder.add_constraint_type(
722 frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
723 longitudinal_constraint_builder.add_value(1.0);
724 longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
725 }
Austin Schuh6bcc2302019-03-23 22:28:06 -0700726
Alex Perrycb7da4b2019-08-28 19:35:56 -0700727 {
728 frc971::Constraint::Builder lateral_constraint_builder =
729 builder->MakeBuilder<frc971::Constraint>();
730 lateral_constraint_builder.add_constraint_type(
731 frc971::ConstraintType_LATERAL_ACCELERATION);
732 lateral_constraint_builder.add_value(1.0);
733 lateral_constraint_offset = lateral_constraint_builder.Finish();
734 }
Austin Schuh6bcc2302019-03-23 22:28:06 -0700735
Alex Perrycb7da4b2019-08-28 19:35:56 -0700736 {
737 frc971::Constraint::Builder voltage_constraint_builder =
738 builder->MakeBuilder<frc971::Constraint>();
739 voltage_constraint_builder.add_constraint_type(
740 frc971::ConstraintType_VOLTAGE);
741 voltage_constraint_builder.add_value(6.0);
742 voltage_constraint_offset = voltage_constraint_builder.Finish();
743 }
Austin Schuh6bcc2302019-03-23 22:28:06 -0700744
Alex Perrycb7da4b2019-08-28 19:35:56 -0700745 flatbuffers::Offset<
746 flatbuffers::Vector<flatbuffers::Offset<frc971::Constraint>>>
747 constraints_offset =
748 builder->fbb()->CreateVector<flatbuffers::Offset<frc971::Constraint>>(
749 {longitudinal_constraint_offset, lateral_constraint_offset,
750 voltage_constraint_offset});
751
Austin Schuh6bcc2302019-03-23 22:28:06 -0700752 const float startx = 0.4;
753 const float starty = 3.4;
Alex Perrycb7da4b2019-08-28 19:35:56 -0700754 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
755 builder->fbb()->CreateVector<float>({0.0f + startx, 0.6f + startx,
756 0.6f + startx, 0.4f + startx,
757 0.4f + startx, 1.0f + startx});
758 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
759 builder->fbb()->CreateVector<float>({starty - 0.0f, starty - 0.0f,
760 starty - 0.3f, starty - 0.7f,
761 starty - 1.0f, starty - 1.0f});
Austin Schuhb5b79a52019-05-08 20:32:07 -0700762
Alex Perrycb7da4b2019-08-28 19:35:56 -0700763 frc971::MultiSpline::Builder multispline_builder =
764 builder->MakeBuilder<frc971::MultiSpline>();
Austin Schuhb5b79a52019-05-08 20:32:07 -0700765
Alex Perrycb7da4b2019-08-28 19:35:56 -0700766 multispline_builder.add_spline_count(1);
767 multispline_builder.add_constraints(constraints_offset);
768 multispline_builder.add_spline_x(spline_x_offset);
769 multispline_builder.add_spline_y(spline_y_offset);
770
771 return multispline_builder.Finish();
Austin Schuh6bcc2302019-03-23 22:28:06 -0700772}
773
Alex Perrycb7da4b2019-08-28 19:35:56 -0700774flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::StraightLine(
775 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
776 flatbuffers::Offset<flatbuffers::Vector<float>> spline_x_offset =
777 builder->fbb()->CreateVector<float>(
778 {-12.3, -11.9, -11.5, -11.1, -10.6, -10.0});
779 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset =
780 builder->fbb()->CreateVector<float>({1.25, 1.25, 1.25, 1.25, 1.25, 1.25});
Austin Schuh6bcc2302019-03-23 22:28:06 -0700781
Alex Perrycb7da4b2019-08-28 19:35:56 -0700782 frc971::MultiSpline::Builder multispline_builder =
783 builder->MakeBuilder<frc971::MultiSpline>();
Austin Schuh6bcc2302019-03-23 22:28:06 -0700784
Alex Perrycb7da4b2019-08-28 19:35:56 -0700785 multispline_builder.add_spline_count(1);
786 multispline_builder.add_spline_x(spline_x_offset);
787 multispline_builder.add_spline_y(spline_y_offset);
Austin Schuhb5b79a52019-05-08 20:32:07 -0700788
Alex Perrycb7da4b2019-08-28 19:35:56 -0700789 return multispline_builder.Finish();
Austin Schuh6bcc2302019-03-23 22:28:06 -0700790}
791
792} // namespace actors
793} // namespace y2019