blob: db866875392c3bd4dc2cce0b20fde319a84d13da [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
60table Status {
61 // All subsystems know their location.
62 zeroed:bool (id: 0);
63
64 // If true, we have aborted. This is the or of all subsystem estops.
65 estopped:bool (id: 1);
Nikita Narang27610fc2023-02-08 19:40:31 -080066
milind-u37385182023-02-20 15:07:28 -080067 arm:ArmStatus (id: 2);
Nikita Narang27610fc2023-02-08 19:40:31 -080068
milind-u18a901d2023-02-17 21:51:55 -080069 wrist:frc971.control_loops.AbsoluteEncoderProfiledJointStatus (id: 3);
Maxwell Hendersonad312342023-01-10 12:07:47 -080070}
71
72root_type Status;