blob: 5d17fb64caef4a0dfc5b386e5a198e6ed5e49b17 [file] [log] [blame]
Comran Morshed25f81a02016-01-23 13:40:10 +00001package y2016.control_loops;
2
3import "aos/common/controls/control_loops.q";
4import "frc971/control_loops/control_loops.q";
5
Austin Schuh2fc10fa2016-02-08 00:44:34 -08006struct JointState {
7 // Angle of the joint in radians.
Austin Schuh39fd6102016-02-13 22:59:48 -08008 float angle;
Austin Schuh2fc10fa2016-02-08 00:44:34 -08009 // Angular velocity of the joint in radians/second.
10 float angular_velocity;
11 // Profiled goal angle of the joint in radians.
Austin Schuh39fd6102016-02-13 22:59:48 -080012 float goal_angle;
Austin Schuh2fc10fa2016-02-08 00:44:34 -080013 // Profiled goal angular velocity of the joint in radians/second.
Austin Schuh39fd6102016-02-13 22:59:48 -080014 float goal_angular_velocity;
15 // Unprofiled goal angle of the joint in radians.
16 float unprofiled_goal_angle;
17 // Unprofiled goal angular velocity of the joint in radians/second.
18 float unprofiled_goal_angular_velocity;
Austin Schuh2fc10fa2016-02-08 00:44:34 -080019
Austin Schuhbe041152016-02-28 22:01:52 -080020 // The estimated voltage error.
21 float voltage_error;
22
23 // The calculated velocity with delta x/delta t
24 float calculated_velocity;
25
26 // Components of the control loop output
27 float position_power;
28 float velocity_power;
29 float feedforwards_power;
30
Austin Schuh2fc10fa2016-02-08 00:44:34 -080031 // State of the estimator.
32 .frc971.EstimatorState estimator_state;
33};
34
Comran Morshed25f81a02016-01-23 13:40:10 +000035queue_group SuperstructureQueue {
36 implements aos.control_loops.ControlLoop;
37
38 message Goal {
Austin Schuh2fc10fa2016-02-08 00:44:34 -080039 // Zero on the intake is when the horizontal tube stock members are level
40 // with the ground. This will be essentially when we are in the intaking
41 // position. Positive is up. The angle is measured relative to the top
42 // of the robot frame.
43 // Zero on the shoulder is horizontal. Positive is up. The angle is
44 // measured relative to the top of the robot frame.
45 // Zero on the wrist is horizontal and landed in the bellypan. Positive is
Austin Schuh5551b072016-02-15 14:06:36 -080046 // the same direction as the shoulder. The angle is measured relative to
47 // the top of the robot frame.
Austin Schuh2fc10fa2016-02-08 00:44:34 -080048
49 // Goal angles and angular velocities of the superstructure subsystems.
50 double angle_intake;
51 double angle_shoulder;
52 // In relation to the ground plane.
53 double angle_wrist;
54
55 // Caps on velocity/acceleration for profiling. 0 for the default.
56 float max_angular_velocity_intake;
57 float max_angular_velocity_shoulder;
58 float max_angular_velocity_wrist;
59
60 float max_angular_acceleration_intake;
61 float max_angular_acceleration_shoulder;
62 float max_angular_acceleration_wrist;
Comran Morshedf4cd7642016-02-15 20:40:49 +000063
64 // Voltage to send to the rollers. Positive is sucking in.
Campbell Crowleyd4fd6552016-02-21 17:53:46 -080065 float voltage_top_rollers;
66 float voltage_bottom_rollers;
Comran Morshed25f81a02016-01-23 13:40:10 +000067 };
68
69 message Status {
Austin Schuh2fc10fa2016-02-08 00:44:34 -080070 // Are the superstructure subsystems zeroed?
71 bool zeroed;
72
73 // If true, we have aborted.
74 bool estopped;
75
76 // The internal state of the state machine.
77 int32_t state;
78
79
80 // Estimated angles and angular velocities of the superstructure subsystems.
81 JointState intake;
82 JointState shoulder;
83 JointState wrist;
Austin Schuhf59b6bc2016-03-11 21:26:19 -080084
85 int32_t shoulder_controller_index;
Austin Schuh5b1a4cd2016-03-11 21:28:38 -080086
87 // Is the superstructure collided?
88 bool is_collided;
Comran Morshed25f81a02016-01-23 13:40:10 +000089 };
90
91 message Position {
Austin Schuh2fc10fa2016-02-08 00:44:34 -080092 // Zero for the intake potentiometer value is horizontal, and positive is
93 // up.
94 // Zero for the shoulder potentiometer value is horizontal, and positive is
95 // up.
96 // Zero for the wrist potentiometer value is parallel to the arm and with
97 // the shooter wheels pointed towards the shoulder joint. This is measured
98 // relative to the arm, not the ground, not like the world we actually
99 // present to users.
100 .frc971.PotAndIndexPosition intake;
101 .frc971.PotAndIndexPosition shoulder;
102 .frc971.PotAndIndexPosition wrist;
103 };
104
105 message Output {
Austin Schuh39fd6102016-02-13 22:59:48 -0800106 float voltage_intake;
107 float voltage_shoulder;
108 float voltage_wrist;
Comran Morshedf4cd7642016-02-15 20:40:49 +0000109
Campbell Crowleyd4fd6552016-02-21 17:53:46 -0800110 float voltage_top_rollers;
111 float voltage_bottom_rollers;
Comran Morshed25f81a02016-01-23 13:40:10 +0000112 };
113
114 queue Goal goal;
115 queue Position position;
Austin Schuh2fc10fa2016-02-08 00:44:34 -0800116 queue Output output;
Comran Morshed25f81a02016-01-23 13:40:10 +0000117 queue Status status;
118};
119
120queue_group SuperstructureQueue superstructure_queue;