blob: c93f6f34959224a6905f0d903cb3de4389afebcf [file] [log] [blame]
Niko Sohmers3860f8a2024-01-12 21:05:19 -08001include "frc971/control_loops/profiled_subsystem.fbs";
Nathan Leongdd728002024-02-03 15:26:53 -08002include "frc971/control_loops/catapult/catapult_goal.fbs";
Niko Sohmers3860f8a2024-01-12 21:05:19 -08003
4namespace y2024.control_loops.superstructure;
5
Filip Kujawa7a799602024-02-23 12:27:47 -08006// Represents goal for the intake pivot and rollers
7// INTAKE will extend the pivot and turn on the rollers to intake the note.
8// SPIT will extend the pivot and turn on the rollers (in reverse) to spit out the note.
9enum IntakeGoal : ubyte {
Niko Sohmers58e64c82024-01-14 12:49:54 -080010 NONE = 0,
Filip Kujawa7a799602024-02-23 12:27:47 -080011 INTAKE = 1,
12 SPIT = 2,
Niko Sohmers78f71352024-02-02 16:47:40 -080013}
14
James Kuszmauldf3a3cb2024-03-15 22:03:37 -070015enum IntakePivotGoal : ubyte {
16 UP = 0,
17 DOWN = 1,
18}
19
Filip Kujawa57507152024-01-31 20:09:25 -080020// Represents goal for climber
21// FULL_EXTEND is for fully extending the climber
Filip Kujawa57507152024-01-31 20:09:25 -080022// RETRACT is for retracting the climber
23enum ClimberGoal : ubyte {
24 FULL_EXTEND = 0,
Filip Kujawaa7c8b412024-02-24 18:29:29 -080025 RETRACT = 1,
Maxwell Henderson7db29782024-02-24 20:10:26 -080026 STOWED = 2,
Filip Kujawa57507152024-01-31 20:09:25 -080027}
28
Filip Kujawa1286c012024-03-31 22:53:27 -070029enum AutoAimMode: ubyte {
30 NONE = 0, // No auto aim.
31 SPEAKER = 1, // Auto aim for the speaker shot.
32 SHUTTLE = 2, // Auto aim for the shuttle shot.
Austin Schuh79903e82024-04-07 23:12:00 -070033 TURRET_SHUTTLE = 3, // Auto aim for the turret-only shuttle shot.
Filip Kujawa1286c012024-03-31 22:53:27 -070034}
35
Maxwell Hendersoned970292024-02-02 20:08:08 -080036table ShooterGoal {
37 catapult_goal:frc971.control_loops.catapult.CatapultGoal (id: 0);
Filip Kujawaa7c8b412024-02-24 18:29:29 -080038
Filip Kujawa1286c012024-03-31 22:53:27 -070039 auto_aim: AutoAimMode (id: 1);
Maxwell Hendersoned970292024-02-02 20:08:08 -080040
41 // Position for the turret when we aren't auto aiming
Filip Kujawa7a799602024-02-23 12:27:47 -080042 turret_position: frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemGoal (id: 2);
Maxwell Hendersoned970292024-02-02 20:08:08 -080043
44 // Position for the altitude when we aren't auto aiming
Filip Kujawa7a799602024-02-23 12:27:47 -080045 altitude_position: frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemGoal (id: 3);
Niko Sohmersc4d2c502024-02-19 19:35:35 -080046
Filip Kujawaa7c8b412024-02-24 18:29:29 -080047 // If true, we started with the ball loaded and should proceed to that state.
Filip Kujawa7a799602024-02-23 12:27:47 -080048 preloaded:bool = false (id: 4);
Maxwell Hendersoned970292024-02-02 20:08:08 -080049}
50
Filip Kujawaa7c8b412024-02-24 18:29:29 -080051// Represents goal for the note movement through the robot
Filip Kujawa7a799602024-02-23 12:27:47 -080052// to various scoring positions
53// NONE represents no goal for the note
54// AMP represents the goal to move the note and the extend to the AMP scoring position
55// TRAP represents the goal to move the note and the extend to the TRAP scoring position
56// CATAPULT represents the goal to load the note in the catapult.
57// It will complete the catapult goal before accepting new goals.
58enum NoteGoal : ubyte {
59 NONE = 0,
Filip Kujawa102a9b22024-02-18 09:40:23 -080060 AMP = 1,
61 TRAP = 2,
Filip Kujawa7a799602024-02-23 12:27:47 -080062 CATAPULT = 3,
Filip Kujawa102a9b22024-02-18 09:40:23 -080063}
64
Filip Kujawa102a9b22024-02-18 09:40:23 -080065
Niko Sohmers58e64c82024-01-14 12:49:54 -080066table Goal {
Filip Kujawa7a799602024-02-23 12:27:47 -080067 intake_goal:IntakeGoal = NONE (id: 0);
James Kuszmauldf3a3cb2024-03-15 22:03:37 -070068 intake_pivot:IntakePivotGoal = UP (id: 5);
Niko Sohmers4d93d4c2024-03-24 14:48:26 -070069
70 // Deprecated since climber no longer has an encoder
Filip Kujawaa7c8b412024-02-24 18:29:29 -080071 climber_goal:ClimberGoal (id: 1);
Niko Sohmers4d93d4c2024-03-24 14:48:26 -070072
73 // Voltage we want to give to climber
74 // Positive voltage is for climber up
75 // Negative voltage is for climber down
76 climber_goal_voltage:double = 0.0 (id: 8);
77
Filip Kujawaa7c8b412024-02-24 18:29:29 -080078 shooter_goal:ShooterGoal (id: 2);
79 note_goal:NoteGoal (id: 3);
80 fire: bool (id: 4);
James Kuszmauldf3a3cb2024-03-15 22:03:37 -070081
82 // Tells the climber to go absurdly slow on FULL_EXTEND
Austin Schuh79903e82024-04-07 23:12:00 -070083 // Deprecated now because we take care of this through
Niko Sohmers4d93d4c2024-03-24 14:48:26 -070084 // climber_goal_voltage
85 slow_climber: bool = false (id: 6, deprecated);
Maxwell Henderson45878502024-03-15 19:35:25 -070086
87 // Spit on the extend motors
88 spit_extend: bool = false (id: 7);
Niko Sohmers58e64c82024-01-14 12:49:54 -080089}
Niko Sohmers3860f8a2024-01-12 21:05:19 -080090root_type Goal;