blob: 396fe4ba20df5d8f992311eb5badad7b354f951c [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
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -080016namespace y2020::actors {
Stephan Massaltd021f972020-01-05 20:41:23 -080017
18class AutonomousSplines {
19 public:
Ravago Jonesc2a08022021-02-06 17:40:54 -080020 AutonomousSplines()
21 : test_spline_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
kyle96c406e2021-02-27 14:07:22 -080022 "splines/test_spline.json")),
Ravago Jonesa7b3c822021-08-26 12:36:03 -070023 target_aligned_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
24 "splines/target_aligned_1.json")),
25 target_aligned_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
26 "splines/target_aligned_2.json")),
milind-u0e203782021-10-30 21:57:20 -070027 target_aligned_3_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
28 "splines/target_aligned_3.json")),
Ravago Jonesa7b3c822021-08-26 12:36:03 -070029 target_offset_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
30 "splines/target_offset_1.json")),
31 target_offset_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
Austin Schuh3653cf22021-11-12 11:54:51 -080032 "splines/target_offset_2.json")),
33 far_side_fender_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
34 "splines/9971_to_fender.json")) {}
Ravago Jonesc2a08022021-02-06 17:40:54 -080035
Stephan Massaltd021f972020-01-05 20:41:23 -080036 static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
James Kuszmaul75a18c52021-03-10 22:02:07 -080037 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
38 *builder,
James Kuszmaulddd2ba62020-03-08 22:17:13 -070039 aos::Alliance alliance);
Stephan Massaltd021f972020-01-05 20:41:23 -080040 static flatbuffers::Offset<frc971::MultiSpline> StraightLine(
James Kuszmaul75a18c52021-03-10 22:02:07 -080041 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
42 *builder);
Ravago Jonesc2a08022021-02-06 17:40:54 -080043
44 flatbuffers::Offset<frc971::MultiSpline> TestSpline(
James Kuszmaul75a18c52021-03-10 22:02:07 -080045 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
46 *builder) {
Ravago Jonesc2a08022021-02-06 17:40:54 -080047 return aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_,
48 builder->fbb());
49 }
50
Ravago Jonesa7b3c822021-08-26 12:36:03 -070051 flatbuffers::Offset<frc971::MultiSpline> TargetAligned1(
52 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
Austin Schuhd0e9e062021-10-24 17:40:58 -070053 *builder,
54 aos::Alliance alliance);
Ravago Jonesa7b3c822021-08-26 12:36:03 -070055 flatbuffers::Offset<frc971::MultiSpline> TargetAligned2(
56 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
Austin Schuhd0e9e062021-10-24 17:40:58 -070057 *builder,
58 aos::Alliance alliance);
milind-u0e203782021-10-30 21:57:20 -070059 flatbuffers::Offset<frc971::MultiSpline> TargetAligned3(
60 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
61 *builder,
62 aos::Alliance alliance);
Ravago Jonesa7b3c822021-08-26 12:36:03 -070063 flatbuffers::Offset<frc971::MultiSpline> TargetOffset1(
64 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
65 *builder) {
66 return aos::CopyFlatBuffer<frc971::MultiSpline>(target_offset_1_,
67 builder->fbb());
68 }
69 flatbuffers::Offset<frc971::MultiSpline> TargetOffset2(
70 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
71 *builder) {
72 return aos::CopyFlatBuffer<frc971::MultiSpline>(target_offset_2_,
73 builder->fbb());
74 }
75
Austin Schuh3653cf22021-11-12 11:54:51 -080076 flatbuffers::Offset<frc971::MultiSpline> FarSideFender(
77 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
78 *builder,
79 aos::Alliance alliance);
80
Ravago Jonesc2a08022021-02-06 17:40:54 -080081 private:
82 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
Ravago Jonesa7b3c822021-08-26 12:36:03 -070083 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_aligned_1_;
84 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_aligned_2_;
milind-u0e203782021-10-30 21:57:20 -070085 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_aligned_3_;
Ravago Jonesa7b3c822021-08-26 12:36:03 -070086 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_offset_1_;
87 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> target_offset_2_;
Austin Schuh3653cf22021-11-12 11:54:51 -080088 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> far_side_fender_;
Stephan Massaltd021f972020-01-05 20:41:23 -080089};
90
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -080091} // namespace y2020::actors
Stephan Massaltd021f972020-01-05 20:41:23 -080092
93#endif // y2020_ACTORS_AUTO_SPLINES_H_