blob: 16f7445440ef6a6359893d4ecaf9d913d40c8303 [file] [log] [blame]
Stephan Massaltd021f972020-01-05 20:41:23 -08001include "frc971/control_loops/control_loops.fbs";
2include "frc971/control_loops/profiled_subsystem.fbs";
3
4namespace y2020.control_loops.superstructure;
5
milind-u0beb7dc2021-10-16 19:31:33 -07006enum Subsystem:byte {
7 FINISHER,
8 ACCELERATOR,
9 TURRET
10}
11
Sabina Davisedf89472020-02-17 15:27:37 -080012table FlywheelControllerStatus {
Tyler Chatowcf413662020-02-09 14:36:36 -080013 // The current average velocity in radians/second over the last kHistoryLength
14 // in shooter.h
Austin Schuhd7851b02020-11-14 13:46:27 -080015 avg_angular_velocity:double (id: 0);
Tyler Chatowcf413662020-02-09 14:36:36 -080016
17 // The current instantaneous filtered velocity in radians/second.
Austin Schuhd7851b02020-11-14 13:46:27 -080018 angular_velocity:double (id: 1);
Tyler Chatowcf413662020-02-09 14:36:36 -080019
20 // The target speed selected by the lookup table or from manual override
21 // Can be compared to velocity to determine if ready.
Austin Schuhd7851b02020-11-14 13:46:27 -080022 angular_velocity_goal:double (id: 2);
Austin Schuh43b9ae92020-02-29 23:08:38 -080023
24 // Voltage error.
Austin Schuhd7851b02020-11-14 13:46:27 -080025 voltage_error:double (id: 3);
Austin Schuh80476772021-03-06 20:17:36 -080026
27 // The commanded battery current.
28 commanded_current:double (id: 4);
29
30 // The angular velocity of the flywheel computed using delta x / delta t
31 dt_angular_velocity:double (id: 5);
Tyler Chatowcf413662020-02-09 14:36:36 -080032}
33
34table ShooterStatus {
35 // The final wheel shooting the ball
Austin Schuhd7851b02020-11-14 13:46:27 -080036 finisher:FlywheelControllerStatus (id: 0);
Tyler Chatowcf413662020-02-09 14:36:36 -080037
Sabina Davisedf89472020-02-17 15:27:37 -080038 // The subsystem to accelerate the ball before the finisher
Austin Schuh9dcd5202020-02-20 20:06:04 -080039 // Velocity is the fastest (top) wheel
Austin Schuhd7851b02020-11-14 13:46:27 -080040 accelerator_left:FlywheelControllerStatus (id: 1);
41 accelerator_right:FlywheelControllerStatus (id: 2);
Austin Schuh5c40ea42021-09-26 13:28:03 -070042
43 // If the shooter is ready, this is true. Note: don't use this for status
44 // checking, only for plotting. Changes in goal take time to impact this.
45 ready:bool (id: 3);
milind-u7baf7342021-08-25 18:31:26 -070046
47 // The total number of balls we have shot
48 balls_shot:int (id: 4);
Tyler Chatowcf413662020-02-09 14:36:36 -080049}
50
James Kuszmaulb1b2d8e2020-02-21 21:11:46 -080051table AimerStatus {
52 // The current goal angle for the turret auto-tracking, in radians.
Austin Schuhd7851b02020-11-14 13:46:27 -080053 turret_position:double (id: 0);
James Kuszmaulb1b2d8e2020-02-21 21:11:46 -080054 // The current goal velocity for the turret, in radians / sec.
Austin Schuhd7851b02020-11-14 13:46:27 -080055 turret_velocity:double (id: 1);
James Kuszmaula53c3ac2020-02-22 19:36:01 -080056 // Whether we are currently aiming for the inner port.
Austin Schuhd7851b02020-11-14 13:46:27 -080057 aiming_for_inner_port:bool (id: 2);
James Kuszmaul519585d2020-03-08 22:32:48 -070058 // The current distance to the target, in meters.
Austin Schuhd7851b02020-11-14 13:46:27 -080059 target_distance:double (id: 3);
James Kuszmaul519585d2020-03-08 22:32:48 -070060 // The current "shot distance." When shooting on the fly, this may be
61 // different from the static distance to the target.
Austin Schuhd7851b02020-11-14 13:46:27 -080062 shot_distance:double (id: 4);
James Kuszmaulb1b2d8e2020-02-21 21:11:46 -080063}
64
Stephan Massaltd021f972020-01-05 20:41:23 -080065table Status {
66 // All subsystems know their location.
Austin Schuhd7851b02020-11-14 13:46:27 -080067 zeroed:bool (id: 0);
Stephan Massaltd021f972020-01-05 20:41:23 -080068
Sabina Davis5187f862020-02-09 13:16:51 -080069 // If true, we have aborted. This is if one or all subsystem estops.
Austin Schuhd7851b02020-11-14 13:46:27 -080070 estopped:bool (id: 1);
Stephan Massaltd021f972020-01-05 20:41:23 -080071
Austin Schuh9dcd5202020-02-20 20:06:04 -080072 // Subsystem status.
Ravago Jones937587c2020-12-26 17:21:09 -080073 hood:frc971.control_loops.AbsoluteAndAbsoluteEncoderProfiledJointStatus (id: 2);
Austin Schuhd7851b02020-11-14 13:46:27 -080074 intake:frc971.control_loops.AbsoluteEncoderProfiledJointStatus (id: 3);
75 turret:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 4);
Tyler Chatowcf413662020-02-09 14:36:36 -080076
77 // Shooter subsystem status.
Austin Schuhd7851b02020-11-14 13:46:27 -080078 shooter:ShooterStatus (id: 5);
Sabina Davis5187f862020-02-09 13:16:51 -080079
80 // Status of the control_panel
Austin Schuhd7851b02020-11-14 13:46:27 -080081 control_panel:frc971.control_loops.RelativeEncoderProfiledJointStatus (id: 6);
James Kuszmaulb1b2d8e2020-02-21 21:11:46 -080082
83 // Status of the vision auto-tracking.
Austin Schuhd7851b02020-11-14 13:46:27 -080084 aimer:AimerStatus (id: 7);
milind-u0beb7dc2021-10-16 19:31:33 -070085
86 // Vector of the subsystems that are not at goal and are preventing shooting.
87 subsystems_not_ready:[Subsystem] (id: 8);
Stephan Massaltd021f972020-01-05 20:41:23 -080088}
89
90root_type Status;