blob: 93360d3afd89452ddd94a199a0d75b9f8af16afd [file] [log] [blame]
Niko Sohmers3860f8a2024-01-12 21:05:19 -08001#ifndef Y2024_AUTONOMOUS_AUTO_SPLINES_H_
2#define Y2024_AUTONOMOUS_AUTO_SPLINES_H_
3
4#include "aos/events/event_loop.h"
5#include "aos/flatbuffer_merge.h"
6#include "frc971/control_loops/control_loops_generated.h"
7#include "frc971/control_loops/drivetrain/drivetrain_goal_generated.h"
8#include "frc971/input/joystick_state_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
Maxwell Henderson09a4b022024-01-19 21:39:51 -080016namespace y2024::autonomous {
Niko Sohmers3860f8a2024-01-12 21:05:19 -080017
18class AutonomousSplines {
19 public:
20 AutonomousSplines()
21 : test_spline_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
James Kuszmaulb5f11832024-03-15 22:30:59 -070022 "splines/test_spline.json")),
23 mobility_and_shoot_spline_(
24 aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
25 "splines/mobilityandshoot.0.json")),
26 four_piece_spline_1_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
27 "splines/five_note.0.json")),
28 four_piece_spline_2_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
29 "splines/five_note.1.json")),
30 four_piece_spline_3_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
31 "splines/five_note.2.json")),
32 four_piece_spline_4_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
33 "splines/five_note.3.json")),
34 four_piece_spline_5_(aos::JsonFileToFlatbuffer<frc971::MultiSpline>(
35 "splines/five_note.4.json")) {}
Niko Sohmers3860f8a2024-01-12 21:05:19 -080036 static flatbuffers::Offset<frc971::MultiSpline> BasicSSpline(
37 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
38 *builder,
39 aos::Alliance alliance);
40 static flatbuffers::Offset<frc971::MultiSpline> StraightLine(
41 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
42 *builder,
43 aos::Alliance alliance);
44
45 flatbuffers::Offset<frc971::MultiSpline> TestSpline(
46 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
47 *builder,
48 aos::Alliance alliance);
James Kuszmaulb5f11832024-03-15 22:30:59 -070049 flatbuffers::Offset<frc971::MultiSpline> MobilityAndShootSpline(
50 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
51 *builder,
52 aos::Alliance alliance);
53 flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline1(
54 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
55 *builder,
56 aos::Alliance alliance);
57 flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline2(
58 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
59 *builder,
60 aos::Alliance alliance);
61 flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline3(
62 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
63 *builder,
64 aos::Alliance alliance);
65 flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline4(
66 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
67 *builder,
68 aos::Alliance alliance);
69 flatbuffers::Offset<frc971::MultiSpline> FourPieceSpline5(
70 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
71 *builder,
72 aos::Alliance alliance);
Niko Sohmers3860f8a2024-01-12 21:05:19 -080073
74 private:
75 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> test_spline_;
James Kuszmaulb5f11832024-03-15 22:30:59 -070076 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> mobility_and_shoot_spline_;
77 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_1_;
78 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_2_;
79 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_3_;
80 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_4_;
81 aos::FlatbufferDetachedBuffer<frc971::MultiSpline> four_piece_spline_5_;
Niko Sohmers3860f8a2024-01-12 21:05:19 -080082};
83
Maxwell Henderson09a4b022024-01-19 21:39:51 -080084} // namespace y2024::autonomous
Niko Sohmers3860f8a2024-01-12 21:05:19 -080085
86#endif // Y2024_AUTONOMOUS_AUTO_SPLINES_H_