blob: ff4b22fa340361fb845932f1f5f74b6ffd8ba13b [file] [log] [blame]
Stephan Massaltd021f972020-01-05 20:41:23 -08001#ifndef y2020_ACTORS_AUTO_SPLINES_H_
2#define y2020_ACTORS_AUTO_SPLINES_H_
3
4#include "aos/events/event_loop.h"
Ravago Jonesc2a08022021-02-06 17:40:54 -08005#include "aos/flatbuffer_merge.h"
Stephan Massaltd021f972020-01-05 20:41:23 -08006#include "frc971/control_loops/control_loops_generated.h"
7#include "frc971/control_loops/drivetrain/drivetrain_goal_generated.h"
James Kuszmaul7077d342021-06-09 20:23:58 -07008#include "frc971/input/joystick_state_generated.h"
Stephan Massaltd021f972020-01-05 20:41:23 -08009/*
10
11 The cooridinate system for the autonomous splines is the same as the spline
12 python generator and drivetrain spline systems.
13
14*/
15
16namespace y2020 {
17namespace actors {
18
19class AutonomousSplines {
20 public:
Ravago Jonesc2a08022021-02-06 17:40:54 -080021 AutonomousSplines()
22 : test_spline_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
kyle96c406e2021-02-27 14:07:22 -080023 "splines/test_spline.json")),
24 spline_red_a_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
25 "splines/spline_red_a.json")),
26 spline_blue_a_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
27 "splines/spline_blue_a.json")),
28 spline_red_b_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
29 "splines/spline_red_b.json")),
30 spline_blue_b_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
Ravago Jones9c326f52021-03-20 15:00:16 -070031 "splines/spline_blue_b.json")),
32 autonav_bounce_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
33 "splines/autonav_bounce_1.json")),
34 autonav_bounce_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
35 "splines/autonav_bounce_2.json")),
36 autonav_bounce_3_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
37 "splines/autonav_bounce_3.json")),
38 autonav_bounce_4_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
39 "splines/autonav_bounce_4.json")),
40 autonav_barrel_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
41 "splines/autonav_barrel.json")),
42 autonav_slalom_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
Ravago Jonesa7b3c822021-08-26 12:36:03 -070043 "splines/autonav_slalom.json")),
44 target_aligned_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
45 "splines/target_aligned_1.json")),
46 target_aligned_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
47 "splines/target_aligned_2.json")),
48 target_offset_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
49 "splines/target_offset_1.json")),
50 target_offset_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
51 "splines/target_offset_2.json")) {}
Ravago Jonesc2a08022021-02-06 17:40:54 -080052
Stephan Massaltd021f972020-01-05 20:41:23 -080053 static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
James Kuszmaul75a18c52021-03-10 22:02:07 -080054 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
55 *builder,
James Kuszmaulddd2ba62020-03-08 22:17:13 -070056 aos::Alliance alliance);
Stephan Massaltd021f972020-01-05 20:41:23 -080057 static flatbuffers::Offset<frc971::MultiSpline> StraightLine(
James Kuszmaul75a18c52021-03-10 22:02:07 -080058 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
59 *builder);
Ravago Jonesc2a08022021-02-06 17:40:54 -080060
61 flatbuffers::Offset<frc971::MultiSpline> TestSpline(
James Kuszmaul75a18c52021-03-10 22:02:07 -080062 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
63 *builder) {
Ravago Jonesc2a08022021-02-06 17:40:54 -080064 return aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_,
65 builder->fbb());
66 }
kyle96c406e2021-02-27 14:07:22 -080067 flatbuffers::Offset<frc971::MultiSpline> SplineRedA(
James Kuszmaul75a18c52021-03-10 22:02:07 -080068 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
69 *builder) {
kyle96c406e2021-02-27 14:07:22 -080070 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_a_,
71 builder->fbb());
72 }
73 flatbuffers::Offset<frc971::MultiSpline> SplineBlueA(
James Kuszmaul75a18c52021-03-10 22:02:07 -080074 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
75 *builder) {
kyle96c406e2021-02-27 14:07:22 -080076 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_a_,
77 builder->fbb());
78 }
79 flatbuffers::Offset<frc971::MultiSpline> SplineRedB(
James Kuszmaul75a18c52021-03-10 22:02:07 -080080 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
81 *builder) {
kyle96c406e2021-02-27 14:07:22 -080082 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_b_,
83 builder->fbb());
84 }
85 flatbuffers::Offset<frc971::MultiSpline> SplineBlueB(
James Kuszmaul75a18c52021-03-10 22:02:07 -080086 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
87 *builder) {
kyle96c406e2021-02-27 14:07:22 -080088 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_b_,
89 builder->fbb());
90 }
Ravago Jones9c326f52021-03-20 15:00:16 -070091 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce1(
James Kuszmaul75a18c52021-03-10 22:02:07 -080092 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
93 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -070094 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_1_,
95 builder->fbb());
96 }
97 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce2(
James Kuszmaul75a18c52021-03-10 22:02:07 -080098 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
99 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700100 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_2_,
101 builder->fbb());
102 }
103 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce3(
James Kuszmaul75a18c52021-03-10 22:02:07 -0800104 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
105 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700106 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_3_,
107 builder->fbb());
108 }
109 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce4(
James Kuszmaul75a18c52021-03-10 22:02:07 -0800110 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
111 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700112 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_4_,
113 builder->fbb());
114 }
115 flatbuffers::Offset<frc971::MultiSpline> AutoNavBarrel(
James Kuszmaul75a18c52021-03-10 22:02:07 -0800116 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
117 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700118 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_barrel_,
119 builder->fbb());
120 }
121 flatbuffers::Offset<frc971::MultiSpline> AutoNavSlalom(
James Kuszmaul75a18c52021-03-10 22:02:07 -0800122 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
123 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700124 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_slalom_,
125 builder->fbb());
126 }
Ravago Jonesc2a08022021-02-06 17:40:54 -0800127
Ravago Jonesa7b3c822021-08-26 12:36:03 -0700128 flatbuffers::Offset<frc971::MultiSpline> TargetAligned1(
129 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
130 *builder) {
131 return aos::CopyFlatBuffer<frc971::MultiSpline>(target_aligned_1_,
132 builder->fbb());
133 }
134 flatbuffers::Offset<frc971::MultiSpline> TargetAligned2(
135 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
136 *builder) {
137 return aos::CopyFlatBuffer<frc971::MultiSpline>(target_aligned_2_,
138 builder->fbb());
139 }
140 flatbuffers::Offset<frc971::MultiSpline> TargetOffset1(
141 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
142 *builder) {
143 return aos::CopyFlatBuffer<frc971::MultiSpline>(target_offset_1_,
144 builder->fbb());
145 }
146 flatbuffers::Offset<frc971::MultiSpline> TargetOffset2(
147 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
148 *builder) {
149 return aos::CopyFlatBuffer<frc971::MultiSpline>(target_offset_2_,
150 builder->fbb());
151 }
152
Ravago Jonesc2a08022021-02-06 17:40:54 -0800153 private:
154 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
kyle96c406e2021-02-27 14:07:22 -0800155 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_a_;
156 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_a_;
157 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_b_;
158 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_b_;
Ravago Jones9c326f52021-03-20 15:00:16 -0700159 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_1_;
160 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_2_;
161 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_3_;
162 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_4_;
163 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_barrel_;
164 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_slalom_;
Ravago Jonesa7b3c822021-08-26 12:36:03 -0700165 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_aligned_1_;
166 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_aligned_2_;
167 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_offset_1_;
168 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_offset_2_;
Stephan Massaltd021f972020-01-05 20:41:23 -0800169};
170
171} // namespace actors
172} // namespace y2020
173
174#endif // y2020_ACTORS_AUTO_SPLINES_H_