blob: 5f53651b97aab0de66a0884687068f3798a45272 [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"
James Kuszmaulddd2ba62020-03-08 22:17:13 -07006#include "aos/robot_state/joystick_state_generated.h"
Stephan Massaltd021f972020-01-05 20:41:23 -08007#include "frc971/control_loops/control_loops_generated.h"
8#include "frc971/control_loops/drivetrain/drivetrain_goal_generated.h"
9/*
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>(
43 "splines/autonav_slalom.json")) {}
Ravago Jonesc2a08022021-02-06 17:40:54 -080044
Stephan Massaltd021f972020-01-05 20:41:23 -080045 static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
James Kuszmaulddd2ba62020-03-08 22:17:13 -070046 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
47 aos::Alliance alliance);
Stephan Massaltd021f972020-01-05 20:41:23 -080048 static flatbuffers::Offset<frc971::MultiSpline> StraightLine(
49 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder);
Ravago Jonesc2a08022021-02-06 17:40:54 -080050
51 flatbuffers::Offset<frc971::MultiSpline> TestSpline(
52 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
53 return aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_,
54 builder->fbb());
55 }
kyle96c406e2021-02-27 14:07:22 -080056 flatbuffers::Offset<frc971::MultiSpline> SplineRedA(
57 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
58 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_a_,
59 builder->fbb());
60 }
61 flatbuffers::Offset<frc971::MultiSpline> SplineBlueA(
62 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
63 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_a_,
64 builder->fbb());
65 }
66 flatbuffers::Offset<frc971::MultiSpline> SplineRedB(
67 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
68 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_b_,
69 builder->fbb());
70 }
71 flatbuffers::Offset<frc971::MultiSpline> SplineBlueB(
72 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
73 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_b_,
74 builder->fbb());
75 }
Ravago Jones9c326f52021-03-20 15:00:16 -070076 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce1(
77 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
78 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_1_,
79 builder->fbb());
80 }
81 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce2(
82 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
83 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_2_,
84 builder->fbb());
85 }
86 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce3(
87 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
88 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_3_,
89 builder->fbb());
90 }
91 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce4(
92 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
93 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_4_,
94 builder->fbb());
95 }
96 flatbuffers::Offset<frc971::MultiSpline> AutoNavBarrel(
97 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
98 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_barrel_,
99 builder->fbb());
100 }
101 flatbuffers::Offset<frc971::MultiSpline> AutoNavSlalom(
102 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
103 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_slalom_,
104 builder->fbb());
105 }
Ravago Jonesc2a08022021-02-06 17:40:54 -0800106
107 private:
108 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
kyle96c406e2021-02-27 14:07:22 -0800109 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_a_;
110 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_a_;
111 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_b_;
112 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_b_;
Ravago Jones9c326f52021-03-20 15:00:16 -0700113 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_1_;
114 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_2_;
115 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_3_;
116 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_4_;
117 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_barrel_;
118 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_slalom_;
Stephan Massaltd021f972020-01-05 20:41:23 -0800119};
120
121} // namespace actors
122} // namespace y2020
123
124#endif // y2020_ACTORS_AUTO_SPLINES_H_