blob: 255513401adf98697c9a70f2fa5c79c48c22a456 [file] [log] [blame]
Maxwell Hendersonad312342023-01-10 12:07:47 -08001include "frc971/control_loops/control_loops.fbs";
2include "frc971/control_loops/profiled_subsystem.fbs";
3
4namespace y2023.control_loops.superstructure;
5
milind-u37385182023-02-20 15:07:28 -08006enum ArmState : ubyte {
7 UNINITIALIZED = 0,
8 ZEROING = 1,
9 DISABLED = 2,
10 GOTO_PATH = 3,
11 RUNNING = 4,
12 ESTOP = 5,
13}
14
15table ArmStatus {
16 // State of the estimators.
17 proximal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 0);
18 distal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 1);
milind-u18a901d2023-02-17 21:51:55 -080019 roll_joint_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 18);
milind-u37385182023-02-20 15:07:28 -080020
21 // The node we are currently going to.
22 current_node:uint32 (id: 2);
23 // Distance (in radians) to the end of the path.
24 path_distance_to_go:float (id: 3);
25 // Goal position and velocity (radians)
26 goal_theta0:float (id: 4);
27 goal_theta1:float (id: 5);
milind-u18a901d2023-02-17 21:51:55 -080028 goal_theta2:float (id: 19);
milind-u37385182023-02-20 15:07:28 -080029 goal_omega0:float (id: 6);
30 goal_omega1:float (id: 7);
milind-u18a901d2023-02-17 21:51:55 -080031 goal_omega2:float (id: 20);
milind-u37385182023-02-20 15:07:28 -080032
33 // Current position and velocity (radians)
34 theta0:float (id: 8);
35 theta1:float (id: 9);
milind-u18a901d2023-02-17 21:51:55 -080036 theta2:float (id: 21);
milind-u37385182023-02-20 15:07:28 -080037
38 omega0:float (id: 10);
39 omega1:float (id: 11);
milind-u18a901d2023-02-17 21:51:55 -080040 omega2:float (id: 22);
milind-u37385182023-02-20 15:07:28 -080041
42 // Estimated voltage error for the two joints.
43 voltage_error0:float (id: 12);
44 voltage_error1:float (id: 13);
milind-u18a901d2023-02-17 21:51:55 -080045 voltage_error2:float (id: 23);
milind-u37385182023-02-20 15:07:28 -080046
47 // True if we are zeroed.
48 zeroed:bool (id: 14);
49
50 // True if the arm is zeroed.
51 estopped:bool (id: 15);
52
53 // The current state machine state.
54 state:ArmState (id: 16);
55
56 // The number of times the LQR solver failed.
57 failed_solutions:uint32 (id: 17);
58}
Maxwell Hendersonad312342023-01-10 12:07:47 -080059
Maxwell Henderson589cf272023-02-22 15:56:40 -080060// State of the superstructure state machine
61enum EndEffectorState : ubyte {
62 // Not doing anything
63 IDLE = 0,
64 // Intaking the game object into the end effector
65 INTAKING = 1,
66 // The game object is loaded into the end effector
67 LOADED = 2,
68 // Waiting for the arm to be at shooting goal and then telling the
69 // end effector to spit
70 SPITTING = 3,
71}
72
Maxwell Hendersonad312342023-01-10 12:07:47 -080073table Status {
74 // All subsystems know their location.
75 zeroed:bool (id: 0);
76
77 // If true, we have aborted. This is the or of all subsystem estops.
78 estopped:bool (id: 1);
Nikita Narang27610fc2023-02-08 19:40:31 -080079
milind-u37385182023-02-20 15:07:28 -080080 arm:ArmStatus (id: 2);
Nikita Narang27610fc2023-02-08 19:40:31 -080081
milind-u18a901d2023-02-17 21:51:55 -080082 wrist:frc971.control_loops.AbsoluteEncoderProfiledJointStatus (id: 3);
Maxwell Henderson589cf272023-02-22 15:56:40 -080083
84 end_effector_state:EndEffectorState (id: 4);
Maxwell Hendersonad312342023-01-10 12:07:47 -080085}
86
87root_type Status;