@@ -23,8 +23,8 @@ public class RobotManager extends StateMachine<RobotState> {
23
23
public final IntakeSubsystem intake ;
24
24
public final QueuerSubsystem queuer ;
25
25
26
- private final double distanceToFeedSpot = 0 ;
27
- private final double distanceToSpeaker = 0 ;
26
+ private final double distanceToFeedSpot = 0.0 ;
27
+ private final double distanceToSpeaker = 0.0 ;
28
28
29
29
public RobotManager (
30
30
ArmSubsystem arm ,
@@ -50,11 +50,32 @@ protected void collectInputs() {}
50
50
protected RobotState getNexState (RobotState currentState ) {
51
51
// state transition
52
52
switch (currentState ) {
53
+ case SPEAKER_SCORING -> {
54
+ if (!queuer .hasNote ()) {
55
+ setStateFromRequest (RobotState .IDLE_NO_GP );
56
+ }
57
+ }
58
+ case AMP_SCORING -> {
59
+ if (!queuer .hasNote ()) {
60
+ setStateFromRequest (RobotState .IDLE_NO_GP );
61
+ }
62
+ }
63
+ case FEEDING_SHOOTING -> {
64
+ if (!queuer .hasNote ()) {
65
+ setStateFromRequest (RobotState .IDLE_NO_GP );
66
+ }
67
+ }
68
+ case PASS_SHOOTING -> {
69
+ if (!queuer .hasNote ()) {
70
+ setStateFromRequest (RobotState .IDLE_NO_GP );
71
+ }
72
+ }
53
73
case SPEAKER_PREPARE_TO_SCORE -> {
54
74
if (shooter .atGoal () && arm .atGoal ()) {
55
75
setStateFromRequest (RobotState .SPEAKER_SCORING );
56
76
}
57
77
}
78
+
58
79
case AMP_PREPARE_TO_SCORE -> {
59
80
if (shooter .atGoal () && arm .atGoal ()) {
60
81
setStateFromRequest (RobotState .AMP_SCORING );
@@ -70,6 +91,33 @@ protected RobotState getNexState(RobotState currentState) {
70
91
setStateFromRequest (RobotState .PASS_SHOOTING );
71
92
}
72
93
}
94
+ case UNJAM -> {}
95
+ case INTAKING -> {
96
+ if (intake .hasNote () || queuer .hasNote ()) {
97
+ setStateFromRequest (RobotState .IDLE_WITH_GP );
98
+ }
99
+ }
100
+ case OUTTAKING -> {
101
+ if (!intake .hasNote () && !queuer .hasNote ()) {
102
+ setStateFromRequest (RobotState .IDLE_NO_GP );
103
+ }
104
+ }
105
+ case CLIMBING_1_LINEUP -> {
106
+ if (arm .atGoal ()) {
107
+ setStateFromRequest (RobotState .CLIMBING_2_HANGING );
108
+ }
109
+ }
110
+ case CLIMBING_2_HANGING -> {}
111
+ case IDLE_NO_GP -> {
112
+ if (queuer .hasNote () || intake .hasNote ()) {
113
+ setStateFromRequest (RobotState .IDLE_WITH_GP );
114
+ }
115
+ }
116
+ case IDLE_WITH_GP -> {
117
+ if (!queuer .hasNote () && !intake .hasNote ()) {
118
+ setStateFromRequest (RobotState .IDLE_NO_GP );
119
+ }
120
+ }
73
121
}
74
122
return currentState ;
75
123
}
@@ -78,30 +126,72 @@ protected RobotState getNexState(RobotState currentState) {
78
126
protected void afterTransition (RobotState newState ) {
79
127
// on state change
80
128
switch (newState ) {
81
- case SPEAKER_PREPARE_TO_SCORE -> {
129
+ case SPEAKER_PREPARE_TO_SCORE , SPEAKER_SCORING -> {
82
130
arm .setState (ArmState .SPEAKER_SHOT );
83
131
shooter .setState (ShooterState .SPEAKER_SHOT );
84
132
intake .setState (IntakeState .IDLE );
85
133
queuer .seState (QueuerState .IDLE_WITH_GP );
86
134
}
87
- case AMP_PREPARE_TO_SCORE -> {
135
+ case AMP_PREPARE_TO_SCORE , AMP_SCORING -> {
88
136
arm .setState (ArmState .AMP );
89
137
shooter .setState (ShooterState .AMP );
90
138
intake .setState (IntakeState .IDLE );
91
139
queuer .seState (QueuerState .IDLE_WITH_GP );
92
140
}
93
- case FEEDING_PREPARE_TO_SHOOT -> {
141
+ case FEEDING_PREPARE_TO_SHOOT , FEEDING_SHOOTING -> {
94
142
arm .setState (ArmState .FEEDING );
95
143
shooter .setState (ShooterState .FEEDING );
96
144
intake .setState (IntakeState .IDLE );
97
145
queuer .seState (QueuerState .IDLE_WITH_GP );
98
146
}
99
- case PASS_PREPARE_TO_SHOOT -> {
147
+ case PASS_PREPARE_TO_SHOOT , PASS_SHOOTING -> {
100
148
arm .setState (ArmState .PASS );
101
149
shooter .setState (ShooterState .PASS );
102
150
intake .setState (IntakeState .IDLE );
103
151
queuer .seState (QueuerState .IDLE_WITH_GP );
104
152
}
153
+ case UNJAM -> {
154
+ arm .setState (ArmState .AMP );
155
+ shooter .setState (ShooterState .DROP );
156
+ intake .setState (IntakeState .OUTTAKING );
157
+ queuer .seState (QueuerState .OUTTAKING );
158
+ }
159
+ case INTAKING -> {
160
+ arm .setState (ArmState .IDLE );
161
+ shooter .setState (ShooterState .IDLE_STOPPED );
162
+ intake .setState (IntakeState .INTAKING );
163
+ queuer .seState (QueuerState .INTAKING );
164
+ }
165
+ case OUTTAKING -> {
166
+ arm .setState (ArmState .IDLE );
167
+ shooter .setState (ShooterState .IDLE_STOPPED );
168
+ intake .setState (IntakeState .OUTTAKING );
169
+ queuer .seState (QueuerState .OUTTAKING );
170
+ }
171
+ case CLIMBING_1_LINEUP -> {
172
+ arm .setState (ArmState .CLIMBING_1_LINEUP );
173
+ shooter .setState (ShooterState .IDLE_STOPPED );
174
+ intake .setState (IntakeState .IDLE );
175
+ queuer .seState (QueuerState .IDLE_NO_GP );
176
+ }
177
+ case CLIMBING_2_HANGING -> {
178
+ arm .setState (ArmState .CLIMBING_1_LINEUP );
179
+ shooter .setState (ShooterState .IDLE_STOPPED );
180
+ intake .setState (IntakeState .IDLE );
181
+ queuer .seState (QueuerState .IDLE_NO_GP );
182
+ }
183
+ case IDLE_NO_GP -> {
184
+ arm .setState (ArmState .IDLE );
185
+ shooter .setState (ShooterState .IDLE_STOPPED );
186
+ intake .setState (IntakeState .IDLE );
187
+ queuer .seState (QueuerState .IDLE_NO_GP );
188
+ }
189
+ case IDLE_WITH_GP -> {
190
+ arm .setState (ArmState .IDLE );
191
+ shooter .setState (ShooterState .IDLE_STOPPED );
192
+ intake .setState (IntakeState .IDLE );
193
+ queuer .seState (QueuerState .IDLE_WITH_GP );
194
+ }
105
195
}
106
196
}
107
197
@@ -111,15 +201,26 @@ public void robotPeriodic() {
111
201
112
202
// continous sate action
113
203
switch (getState ()) {
114
- case SPEAKER_PREPARE_TO_SCORE -> {
115
- shooter .setDistanceToFeedSpot (distanceToFeedSpot );
204
+ case SPEAKER_PREPARE_TO_SCORE , SPEAKER_SCORING -> {
116
205
shooter .setDistanceToSpeaker (distanceToSpeaker );
206
+ arm .setDistanceToSpeaker (distanceToSpeaker );
117
207
}
118
- case FEEDING_PREPARE_TO_SHOOT -> {
208
+ case FEEDING_PREPARE_TO_SHOOT , FEEDING_SHOOTING -> {
119
209
shooter .setDistanceToFeedSpot (distanceToFeedSpot );
120
- shooter . setDistanceToSpeaker ( distanceToSpeaker );
210
+ arm . setDistanceToFeedSpot ( distanceToFeedSpot );
121
211
}
122
- case AMP_PREPARE_TO_SCORE , PASS_PREPARE_TO_SHOOT -> {}
212
+
213
+ case AMP_PREPARE_TO_SCORE ,
214
+ PASS_PREPARE_TO_SHOOT ,
215
+ AMP_SCORING ,
216
+ PASS_SHOOTING ,
217
+ UNJAM ,
218
+ INTAKING ,
219
+ OUTTAKING ,
220
+ IDLE_NO_GP ,
221
+ IDLE_WITH_GP ,
222
+ CLIMBING_1_LINEUP ,
223
+ CLIMBING_2_HANGING -> {}
123
224
}
124
225
}
125
226
}
0 commit comments