blob: 891228b04d6e08bb8a4f7f71fcfa12c4a289b998 [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 Kuszmaul75a18c52021-03-10 22:02:07 -080046 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
47 *builder,
James Kuszmaulddd2ba62020-03-08 22:17:13 -070048 aos::Alliance alliance);
Stephan Massaltd021f972020-01-05 20:41:23 -080049 static flatbuffers::Offset<frc971::MultiSpline> StraightLine(
James Kuszmaul75a18c52021-03-10 22:02:07 -080050 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
51 *builder);
Ravago Jonesc2a08022021-02-06 17:40:54 -080052
53 flatbuffers::Offset<frc971::MultiSpline> TestSpline(
James Kuszmaul75a18c52021-03-10 22:02:07 -080054 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
55 *builder) {
Ravago Jonesc2a08022021-02-06 17:40:54 -080056 return aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_,
57 builder->fbb());
58 }
kyle96c406e2021-02-27 14:07:22 -080059 flatbuffers::Offset<frc971::MultiSpline> SplineRedA(
James Kuszmaul75a18c52021-03-10 22:02:07 -080060 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
61 *builder) {
kyle96c406e2021-02-27 14:07:22 -080062 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_a_,
63 builder->fbb());
64 }
65 flatbuffers::Offset<frc971::MultiSpline> SplineBlueA(
James Kuszmaul75a18c52021-03-10 22:02:07 -080066 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
67 *builder) {
kyle96c406e2021-02-27 14:07:22 -080068 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_a_,
69 builder->fbb());
70 }
71 flatbuffers::Offset<frc971::MultiSpline> SplineRedB(
James Kuszmaul75a18c52021-03-10 22:02:07 -080072 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
73 *builder) {
kyle96c406e2021-02-27 14:07:22 -080074 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_b_,
75 builder->fbb());
76 }
77 flatbuffers::Offset<frc971::MultiSpline> SplineBlueB(
James Kuszmaul75a18c52021-03-10 22:02:07 -080078 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
79 *builder) {
kyle96c406e2021-02-27 14:07:22 -080080 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_b_,
81 builder->fbb());
82 }
Ravago Jones9c326f52021-03-20 15:00:16 -070083 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce1(
James Kuszmaul75a18c52021-03-10 22:02:07 -080084 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
85 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -070086 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_1_,
87 builder->fbb());
88 }
89 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce2(
James Kuszmaul75a18c52021-03-10 22:02:07 -080090 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
91 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -070092 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_2_,
93 builder->fbb());
94 }
95 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce3(
James Kuszmaul75a18c52021-03-10 22:02:07 -080096 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
97 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -070098 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_3_,
99 builder->fbb());
100 }
101 flatbuffers::Offset<frc971::MultiSpline> AutoNavBounce4(
James Kuszmaul75a18c52021-03-10 22:02:07 -0800102 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
103 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700104 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_bounce_4_,
105 builder->fbb());
106 }
107 flatbuffers::Offset<frc971::MultiSpline> AutoNavBarrel(
James Kuszmaul75a18c52021-03-10 22:02:07 -0800108 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
109 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700110 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_barrel_,
111 builder->fbb());
112 }
113 flatbuffers::Offset<frc971::MultiSpline> AutoNavSlalom(
James Kuszmaul75a18c52021-03-10 22:02:07 -0800114 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
115 *builder) {
Ravago Jones9c326f52021-03-20 15:00:16 -0700116 return aos::CopyFlatBuffer<frc971::MultiSpline>(autonav_slalom_,
117 builder->fbb());
118 }
Ravago Jonesc2a08022021-02-06 17:40:54 -0800119
120 private:
121 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
kyle96c406e2021-02-27 14:07:22 -0800122 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_a_;
123 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_a_;
124 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_b_;
125 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_b_;
Ravago Jones9c326f52021-03-20 15:00:16 -0700126 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_1_;
127 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_2_;
128 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_3_;
129 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_bounce_4_;
130 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_barrel_;
131 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> autonav_slalom_;
Stephan Massaltd021f972020-01-05 20:41:23 -0800132};
133
134} // namespace actors
135} // namespace y2020
136
137#endif // y2020_ACTORS_AUTO_SPLINES_H_