blob: 1005c46cad1439ff88c0d508e2b794f4cd360c66 [file] [log] [blame]
milind-u086d7262022-01-19 20:44:18 -08001include "frc971/control_loops/control_loops.fbs";
2include "frc971/control_loops/profiled_subsystem.fbs";
3
4namespace y2022.control_loops.superstructure;
5
Ravago Jones5da06352022-03-04 20:26:24 -08006// Contains which intake has a ball
7enum IntakeState : ubyte {
8 NO_BALL,
9 INTAKE_FRONT_BALL,
10 INTAKE_BACK_BALL,
11}
12
13// State of the superstructure state machine
14enum SuperstructureState : ubyte {
15 // Before a ball is intaked, when neither intake beambreak is triggered
16 IDLE,
17 // Transferring ball with transfer rollers. Moves turret to loading position.
18 TRANSFERRING,
19 // Loading the ball into the catapult
20 LOADING,
21 // The ball is loaded into the catapult
22 LOADED,
23 // Waiting for the turret to be at shooting goal and then telling the
24 // catapult to fire.
25 SHOOTING,
26}
27
James Kuszmaul84083f42022-02-27 17:24:38 -080028table AimerStatus {
29 // The current goal angle for the turret auto-tracking, in radians.
30 turret_position:double (id: 0);
31 // The current goal velocity for the turret, in radians / sec.
32 turret_velocity:double (id: 1);
33 // The current distance to the target, in meters.
34 target_distance:double (id: 2);
35 // The current "shot distance." When shooting on the fly, this may be
36 // different from the static distance to the target.
37 shot_distance:double (id: 3);
38}
39
milind-u086d7262022-01-19 20:44:18 -080040table Status {
41 // All subsystems know their location.
42 zeroed:bool (id: 0);
43
44 // If true, we have aborted. This is the or of all subsystem estops.
45 estopped:bool (id: 1);
Ravago Jones5da06352022-03-04 20:26:24 -080046 // The state of the superstructure
47
48 state:SuperstructureState (id: 10);
49 // Intaking state
50 intake_state:IntakeState (id: 11);
51 // Whether the flippers are open for shooting
52 flippers_open:bool (id: 12);
53 // Whether the flippers failed to open and we are retrying
54 reseating_in_catapult:bool (id: 13);
55 // Whether the catapult was told to fire,
56 // meaning that the turret and flippers are ready for firing
57 // and we were asked to fire. Different from fire flag in goal.
58 fire:bool (id: 14);
Griffin Bui67abb912022-01-22 16:16:21 -080059
Siddhant Kanwar0e37f592022-02-21 19:26:50 -080060 // Subsystem statuses
61 climber:frc971.control_loops.RelativeEncoderProfiledJointStatus (id: 2);
Henry Speiser55aa3ba2022-02-21 23:21:12 -080062
63 // Estimated angles and angular velocities of the intakes.
64 intake_front:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 3);
65 intake_back:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 4);
66
67 turret:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 5);
Austin Schuh39f26f62022-02-24 21:34:46 -080068
69 catapult:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 6);
70
71 solve_time:double (id: 7);
72 mpc_active:bool (id: 8);
Austin Schuh80fc2752022-02-25 13:33:56 -080073
74 // The number of shots we have taken.
75 shot_count:int32 (id: 9);
James Kuszmaul84083f42022-02-27 17:24:38 -080076
77 aimer:AimerStatus (id: 15);
milind-u086d7262022-01-19 20:44:18 -080078}
79
Austin Schuh39f26f62022-02-24 21:34:46 -080080root_type Status;