Skip to content

Commit 373848e

Browse files
committed
Improved subsystem state logging
1 parent c15b36c commit 373848e

8 files changed

Lines changed: 55 additions & 49 deletions

File tree

src/main/java/frc/robot/Robot.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
package frc.robot;
66

7-
import static frc.robot.RobotContainer.shooterState;
8-
97
import edu.wpi.first.epilogue.Epilogue;
108
import edu.wpi.first.epilogue.Logged;
119
import edu.wpi.first.math.geometry.Pose2d;
@@ -19,9 +17,13 @@
1917
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
2018
import edu.wpi.first.wpilibj2.command.Command;
2119
import edu.wpi.first.wpilibj2.command.CommandScheduler;
20+
import frc.robot.commands.DrivetrainCommand;
2221
import frc.robot.commands.FlywheelCommand;
22+
import frc.robot.commands.KickerCommand;
2323
import frc.robot.config.TunerConstants;
2424
import frc.robot.subsystems.CommandSwerveDrivetrain;
25+
import frc.robot.subsystems.Hopper;
26+
import frc.robot.subsystems.Intake;
2527

2628
@Logged
2729
public class Robot extends TimedRobot {
@@ -48,8 +50,11 @@ public Robot() {
4850
@Override
4951
public void robotPeriodic() {
5052
CommandScheduler.getInstance().run();
51-
SmartDashboard.putString("shoot-state", shooterState);
52-
SmartDashboard.putString("shoot-on", FlywheelCommand.isOn);
53+
SmartDashboard.putString("Flywheel State", FlywheelCommand.flywheelState);
54+
SmartDashboard.putString("Drivetrain State", DrivetrainCommand.drivetrainState);
55+
SmartDashboard.putString("Hopper State", Hopper.hopperState);
56+
SmartDashboard.putString("Intake State", Intake.intakeState);
57+
SmartDashboard.putString("Kicker State", KickerCommand.kickerState);
5358
try {
5459
var pose = drivetrain.getState().Pose;
5560
SmartDashboard.putNumber("OdometryX", pose.getX());

src/main/java/frc/robot/commands/DrivetrainCommand.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static enum Position {
3131
private DoubleSupplier leftY;
3232
private DoubleSupplier leftX;
3333
private DoubleSupplier rightX;
34+
public static String drivetrainState = "Stopped";
3435

3536
private final double MaxSpeed =
3637
TunerConstants.kSpeedAt12Volts.in(MetersPerSecond); // kSpeedAt12Volts desired top speed
@@ -113,25 +114,24 @@ public void execute() {
113114
.withRotationalRate(
114115
-rightX.getAsDouble()
115116
* MaxAngularRate)); // Drive counterclockwise with negative X
116-
// System.out.println("TELEOP");
117+
drivetrainState = "Teleop Drive";
117118
break;
118119

119120
// (Needs check) Mode for when shots are from a still position
120121
case STILL_SHOT:
121122
// make X with wheels, set wheels to brake mode
122123
applyRequest.ModuleStates = states;
123124
subsystem.setControl(applyRequest);
124-
// System.out.println("Drivetrain: Still Shot Configuration");
125+
drivetrainState = "Still Shot";
125126
break;
126127

127128
// (Incomplete) Mode for moving shots
128129
case SOTM:
129130
// shoot on the move, reference Mechanical Advantage build log
130-
// System.out.println("Drivetrain: SOTM Drive");
131+
drivetrainState = "Shoot on the Move Drive";
131132
break;
132133

133134
case AUTO_ALIGN_HUB:
134-
// System.out.println("AUTO ALIGN");
135135
// Recompute the desired heading toward the hub each loop
136136
m_targetAngle =
137137
ShotCalculator.getRotationTowardsHub(
@@ -155,7 +155,7 @@ public void execute() {
155155
subsystem.setControl(
156156
drive.withVelocityX(0.0).withVelocityY(0.0).withRotationalRate(rotOutput));
157157
}
158-
158+
drivetrainState = "Auto Align";
159159
break;
160160

161161
default:

src/main/java/frc/robot/commands/FlywheelCommand.java

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public static enum Position {
2121
private Flywheel subsystem;
2222
private Position pose;
2323
private CommandSwerveDrivetrain drivetrain;
24-
public static String isOn = "";
24+
public static String flywheelState = "Stopped";
2525

2626
public FlywheelCommand(Flywheel subsystem, Position pose, CommandSwerveDrivetrain drivetrain) {
2727
this.pose = pose;
@@ -37,34 +37,25 @@ public void execute() {
3737
// Spins flywheels at proper speed for shooting from hub
3838
case HUB_SHOT:
3939
subsystem.shoot(FlywheelConfig.FLYWHEEL_HUB_SHOT_SPEED);
40-
isOn = "true";
41-
// System.out.println("Flywheel: Hub Shot");
40+
flywheelState = "Hub Shot";
4241
break;
4342

4443
// Spins flywheels at proper speed for shooting from tower
4544
case TOWER_SHOT:
4645
subsystem.shoot(FlywheelConfig.FLYWHEEL_TOWER_SHOT_SPEED);
47-
isOn = "true";
48-
49-
// System.out.println("Flywheel: Tower Shot");
46+
flywheelState = "Tower Shot";
5047
break;
5148

5249
case TRENCH_SHOT:
5350
subsystem.shoot(FlywheelConfig.FLYWHEEL_TRENCH_SHOT_SPEED);
54-
isOn = "true";
55-
56-
// System.out.println("Flywheel: Trench Shot");
51+
flywheelState = "Trench Shot";
5752
break;
5853

5954
// Spins flywheels at estimated speed given distance from hub
6055
case CALCULATED_SHOT:
61-
isOn = "true";
56+
flywheelState = "Calculated Shot";
6257
subsystem.shoot(
6358
ShotCalculator.calculateFlywheelShot(drivetrain.getState().Pose.getTranslation()));
64-
System.out.println(
65-
"Flywheel: Calculated Shot"
66-
+ ShotCalculator.calculateFlywheelShot(
67-
drivetrain.getState().Pose.getTranslation()));
6859
break;
6960

7061
// Determines if robot should be prepared to shoot (if during active period or 5 seconds
@@ -74,13 +65,13 @@ public void execute() {
7465
subsystem.shoot(
7566
ShotCalculator.calculateFlywheelDefaultShot(
7667
drivetrain.getState().Pose.getTranslation()));
77-
// System.out.println("Flywheel: Default Shot");
68+
flywheelState = "Default Shot";
7869
break;
7970

8071
// Runs flywheels in outtake direction in case of jam
8172
case OUTTAKE:
8273
subsystem.outtake(FlywheelConfig.FLYWHEEL_OUTTAKE_SPEED);
83-
// System.out.println("Flywheel: Outtake");
74+
flywheelState = "Outtake";
8475
break;
8576

8677
default:
@@ -91,7 +82,7 @@ public void execute() {
9182
@Override
9283
public void end(boolean interrupted) {
9384
subsystem.stop();
94-
isOn = "false";
85+
flywheelState = "none";
9586
}
9687

9788
@Override

src/main/java/frc/robot/commands/HopperCommand.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,27 +34,21 @@ public void initialize() {
3434
// extend
3535
case EXTEND_RETRACT:
3636
if (isExtended) {
37-
System.out.println("Hopper: Retracting");
3837
subsystem.move(HopperConfig.HOPPER_RETRACT_ROTATION);
3938
RobotContainer.isExtended = false;
40-
System.out.println(RobotContainer.isExtended);
4139
} else {
42-
System.out.println("Hopper: Extending");
4340
subsystem.move(HopperConfig.HOPPER_EXTEND_ROTATION);
4441
RobotContainer.isExtended = true;
45-
System.out.println(RobotContainer.isExtended);
4642
}
4743
break;
4844

49-
// (Needs check) Retracts then extends hopper back to original position to push balls into
45+
// Retracts then extends hopper back to original position to push balls into
5046
// kicker for shooting
5147
case SHOOT_RETRACT:
52-
// System.out.println("Hopper: Shoot Retracting");
5348
subsystem.slowMove(HopperConfig.HOPPER_RETRACT_ROTATION);
5449
break;
5550

5651
case SHOOT_EXTEND:
57-
// System.out.println("Hopper: Shoot Extending");
5852
subsystem.move(HopperConfig.HOPPER_EXTEND_ROTATION);
5953
break;
6054

src/main/java/frc/robot/commands/IntakeCommand.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public void initialize() {
2929
// Runs intake
3030
case INTAKE:
3131
subsystem.intake(IntakeConfig.INTAKE_INTAKE_SPEED);
32-
// System.out.println("Intake: Intaking");
3332
break;
3433

3534
// Runs intake in outtaking direction
@@ -40,7 +39,6 @@ public void initialize() {
4039
// Slow intake for shooting
4140
case SLOW_INTAKE:
4241
subsystem.intake(IntakeConfig.INTAKE_SLOW_SPEED);
43-
// System.out.println("Intake: run for shooting");
4442
break;
4543

4644
default:

src/main/java/frc/robot/commands/KickerCommand.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public static enum Position {
1414

1515
private Kicker subsystem;
1616
private Position pose;
17+
public static String kickerState = "Stopped";
1718

1819
public KickerCommand(Kicker subsystem, Position pose) {
1920
this.pose = pose;
@@ -28,11 +29,13 @@ public void execute() {
2829
// Intakes balls to shooter
2930
case INTAKE:
3031
subsystem.intake(KickerConfig.KICKER_INTAKE_SPEED);
32+
kickerState = "Intaking";
3133
break;
3234

3335
// Pushes balls out of shooter area to hopper area
3436
case OUTTAKE:
3537
subsystem.outtake(KickerConfig.KICKER_OUTTAKE_SPEED);
38+
kickerState = "Outtaking";
3639
break;
3740

3841
default:
@@ -43,6 +46,7 @@ public void execute() {
4346
@Override
4447
public void end(boolean interrupted) {
4548
subsystem.stop();
49+
kickerState = "Stopped";
4650
}
4751

4852
@Override

src/main/java/frc/robot/subsystems/Hopper.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
@Logged
1515
public class Hopper extends SubsystemBase {
1616
protected TalonFX hopper;
17+
public static String hopperState = "None";
1718

1819
public Hopper() {
1920

@@ -52,25 +53,41 @@ public Hopper() {
5253

5354
public void move(double rotation) {
5455
hopper.setControl(new MotionMagicVoltage(rotation).withSlot(0));
56+
if (rotation == HopperConfig.HOPPER_EXTEND_ROTATION) {
57+
hopperState = "Move: Extending";
58+
} else if (rotation == HopperConfig.HOPPER_RETRACT_ROTATION) {
59+
hopperState = "Move: Retracting";
60+
} else {
61+
hopperState = "Move: Unknown";
62+
}
5563
}
5664

5765
public void slowMove(double rotation) {
5866
hopper.setControl(new MotionMagicVoltage(rotation).withSlot(1));
67+
if (rotation == HopperConfig.HOPPER_EXTEND_ROTATION) {
68+
hopperState = "Slow Move: Extending";
69+
} else if (rotation == HopperConfig.HOPPER_RETRACT_ROTATION) {
70+
hopperState = "Slow Move: Retracting";
71+
} else {
72+
hopperState = "Slow Move: Unknown";
73+
}
5974
}
6075

6176
public void extendDirectional(double speed) {
6277
speed = Math.abs(speed);
6378
hopper.setControl(new VoltageOut(-speed));
79+
hopperState = "Extend Directional";
6480
}
6581

6682
public void retractDirectional(double speed) {
6783
speed = Math.abs(speed);
6884
hopper.setControl(new VoltageOut(-speed));
85+
hopperState = "Retract Directional";
6986
}
7087

7188
public void stop() {
7289
hopper.stopMotor();
73-
System.out.println("Hopper: Stopped");
90+
hopperState = "Stopped";
7491
}
7592

7693
public void zero() {
@@ -109,23 +126,10 @@ public static double getRotation(boolean isExtended) {
109126
public void toggleExtend() {
110127
if (extended) {
111128
move(HopperConfig.HOPPER_RETRACT_ROTATION);
112-
System.out.println("Hopper: retracting");
113129
extended = false;
114130
} else {
115131
move(HopperConfig.HOPPER_EXTEND_ROTATION);
116-
System.out.println("Hopper: extending");
117132
extended = true;
118133
}
119134
}
120-
121-
// @Override
122-
// public void periodic() {
123-
// if (DriverStation.isDisabled()) {
124-
// hopper.setNeutralMode(NeutralModeValue.Coast);
125-
// } else if (isRetractedByPosition()) {
126-
// hopper.setNeutralMode(NeutralModeValue.Brake);
127-
// } else {
128-
// hopper.setNeutralMode(NeutralModeValue.Coast);
129-
// }
130-
// }
131135
}

src/main/java/frc/robot/subsystems/Intake.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
@Logged
1414
public class Intake extends SubsystemBase {
1515
protected TalonFX intake;
16+
public static String intakeState = "Stopped";
1617

1718
public Intake() {
1819
intake = new TalonFX(CANMappings.INTAKE_MOTOR_ID);
@@ -34,14 +35,23 @@ public Intake() {
3435
public void intake(double speed) {
3536
speed = Math.abs(speed);
3637
intake.setControl(new VoltageOut(speed));
38+
if (speed == IntakeConfig.INTAKE_INTAKE_SPEED) {
39+
intakeState = "Intaking: Default";
40+
} else if (speed == IntakeConfig.INTAKE_SLOW_SPEED) {
41+
intakeState = "Intaking: Slow";
42+
} else {
43+
intakeState = "Intaking: Unknown";
44+
}
3745
}
3846

3947
public void outtake(double speed) {
4048
speed = Math.abs(speed);
4149
intake.setControl(new VoltageOut(-speed));
50+
intakeState = "Outtaking";
4251
}
4352

4453
public void stop() {
4554
intake.stopMotor();
55+
intakeState = "Stopped";
4656
}
4757
}

0 commit comments

Comments
 (0)