Skip to content
This repository was archived by the owner on Jan 10, 2025. It is now read-only.

Commit 5da0fea

Browse files
committed
continue robot manager
1 parent 123fb4f commit 5da0fea

File tree

1 file changed

+112
-11
lines changed

1 file changed

+112
-11
lines changed

src/main/java/frc/robot/robot_manager/RobotManager.java

Lines changed: 112 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ public class RobotManager extends StateMachine<RobotState> {
2323
public final IntakeSubsystem intake;
2424
public final QueuerSubsystem queuer;
2525

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;
2828

2929
public RobotManager(
3030
ArmSubsystem arm,
@@ -50,11 +50,32 @@ protected void collectInputs() {}
5050
protected RobotState getNexState(RobotState currentState) {
5151
// state transition
5252
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+
}
5373
case SPEAKER_PREPARE_TO_SCORE -> {
5474
if (shooter.atGoal() && arm.atGoal()) {
5575
setStateFromRequest(RobotState.SPEAKER_SCORING);
5676
}
5777
}
78+
5879
case AMP_PREPARE_TO_SCORE -> {
5980
if (shooter.atGoal() && arm.atGoal()) {
6081
setStateFromRequest(RobotState.AMP_SCORING);
@@ -70,6 +91,33 @@ protected RobotState getNexState(RobotState currentState) {
7091
setStateFromRequest(RobotState.PASS_SHOOTING);
7192
}
7293
}
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+
}
73121
}
74122
return currentState;
75123
}
@@ -78,30 +126,72 @@ protected RobotState getNexState(RobotState currentState) {
78126
protected void afterTransition(RobotState newState) {
79127
// on state change
80128
switch (newState) {
81-
case SPEAKER_PREPARE_TO_SCORE -> {
129+
case SPEAKER_PREPARE_TO_SCORE, SPEAKER_SCORING -> {
82130
arm.setState(ArmState.SPEAKER_SHOT);
83131
shooter.setState(ShooterState.SPEAKER_SHOT);
84132
intake.setState(IntakeState.IDLE);
85133
queuer.seState(QueuerState.IDLE_WITH_GP);
86134
}
87-
case AMP_PREPARE_TO_SCORE -> {
135+
case AMP_PREPARE_TO_SCORE, AMP_SCORING -> {
88136
arm.setState(ArmState.AMP);
89137
shooter.setState(ShooterState.AMP);
90138
intake.setState(IntakeState.IDLE);
91139
queuer.seState(QueuerState.IDLE_WITH_GP);
92140
}
93-
case FEEDING_PREPARE_TO_SHOOT -> {
141+
case FEEDING_PREPARE_TO_SHOOT, FEEDING_SHOOTING -> {
94142
arm.setState(ArmState.FEEDING);
95143
shooter.setState(ShooterState.FEEDING);
96144
intake.setState(IntakeState.IDLE);
97145
queuer.seState(QueuerState.IDLE_WITH_GP);
98146
}
99-
case PASS_PREPARE_TO_SHOOT -> {
147+
case PASS_PREPARE_TO_SHOOT, PASS_SHOOTING -> {
100148
arm.setState(ArmState.PASS);
101149
shooter.setState(ShooterState.PASS);
102150
intake.setState(IntakeState.IDLE);
103151
queuer.seState(QueuerState.IDLE_WITH_GP);
104152
}
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+
}
105195
}
106196
}
107197

@@ -111,15 +201,26 @@ public void robotPeriodic() {
111201

112202
// continous sate action
113203
switch (getState()) {
114-
case SPEAKER_PREPARE_TO_SCORE -> {
115-
shooter.setDistanceToFeedSpot(distanceToFeedSpot);
204+
case SPEAKER_PREPARE_TO_SCORE, SPEAKER_SCORING -> {
116205
shooter.setDistanceToSpeaker(distanceToSpeaker);
206+
arm.setDistanceToSpeaker(distanceToSpeaker);
117207
}
118-
case FEEDING_PREPARE_TO_SHOOT -> {
208+
case FEEDING_PREPARE_TO_SHOOT, FEEDING_SHOOTING -> {
119209
shooter.setDistanceToFeedSpot(distanceToFeedSpot);
120-
shooter.setDistanceToSpeaker(distanceToSpeaker);
210+
arm.setDistanceToFeedSpot(distanceToFeedSpot);
121211
}
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 -> {}
123224
}
124225
}
125226
}

0 commit comments

Comments
 (0)