blob: 4690fb8661fbdb25b663b0dfb395f89e08cd3557 [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>(
31 "splines/spline_blue_b.json")) {}
Ravago Jonesc2a08022021-02-06 17:40:54 -080032
Stephan Massaltd021f972020-01-05 20:41:23 -080033 static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
James Kuszmaulddd2ba62020-03-08 22:17:13 -070034 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
35 aos::Alliance alliance);
Stephan Massaltd021f972020-01-05 20:41:23 -080036 static flatbuffers::Offset<frc971::MultiSpline> StraightLine(
37 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder);
Ravago Jonesc2a08022021-02-06 17:40:54 -080038
39 flatbuffers::Offset<frc971::MultiSpline> TestSpline(
40 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
41 return aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_,
42 builder->fbb());
43 }
kyle96c406e2021-02-27 14:07:22 -080044 flatbuffers::Offset<frc971::MultiSpline> SplineRedA(
45 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
46 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_a_,
47 builder->fbb());
48 }
49 flatbuffers::Offset<frc971::MultiSpline> SplineBlueA(
50 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
51 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_a_,
52 builder->fbb());
53 }
54 flatbuffers::Offset<frc971::MultiSpline> SplineRedB(
55 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
56 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_red_b_,
57 builder->fbb());
58 }
59 flatbuffers::Offset<frc971::MultiSpline> SplineBlueB(
60 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder) {
61 return aos::CopyFlatBuffer<frc971::MultiSpline>(spline_blue_b_,
62 builder->fbb());
63 }
Ravago Jonesc2a08022021-02-06 17:40:54 -080064
65 private:
66 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
kyle96c406e2021-02-27 14:07:22 -080067 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_a_;
68 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_a_;
69 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_red_b_;
70 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> spline_blue_b_;
Stephan Massaltd021f972020-01-05 20:41:23 -080071};
72
73} // namespace actors
74} // namespace y2020
75
76#endif // y2020_ACTORS_AUTO_SPLINES_H_