1414import edu .wpi .first .math .trajectory .TrapezoidProfile .Constraints ;
1515import edu .wpi .first .wpilibj .DriverStation ;
1616import edu .wpi .first .wpilibj .Filesystem ;
17+ import edu .wpi .first .wpilibj .RobotController ;
1718import edu .wpi .first .wpilibj .smartdashboard .Field2d ;
1819import edu .wpi .first .wpilibj .smartdashboard .SmartDashboard ;
1920
@@ -44,6 +45,7 @@ public class Drive extends Subsystem<DriveStates> {
4445 // Swerve:
4546 private SwerveInputStream swerveInputs ;
4647 private SwerveDrive swerveDrive ;
48+ private boolean fieldRelative ;
4749
4850 // PID Controllers:
4951 private ProfiledPIDController xPID ;
@@ -54,6 +56,7 @@ public class Drive extends Subsystem<DriveStates> {
5456 private Pose2d target ;
5557 private Command pathfindingCommand ;
5658 private boolean first ;
59+ private boolean slow ;
5760 // INSTANCE:
5861 private static Drive instance ;
5962
@@ -70,6 +73,7 @@ public Drive() {
7073
7174 // Create field:
7275 field = new Field2d ();
76+ fieldRelative = true ;
7377
7478 //Logging for pathplanner
7579 PathPlannerLogging .setLogActivePathCallback (poses -> {
@@ -95,6 +99,8 @@ public Drive() {
9599 yPID .setTolerance (Y_TOLERANCE .magnitude ());
96100 rotationPID .setTolerance (ROTATION_TOLERANCE .in (Radians ));
97101
102+ slow = false ;
103+
98104 // Setup SwerveDrive:
99105 SwerveDriveTelemetry .verbosity = TelemetryVerbosity .HIGH ;
100106 try {
@@ -146,14 +152,14 @@ public Drive() {
146152
147153 private void establishTriggers () {
148154 // Auto Align Activate:
149- addRunnableTrigger ( () -> { this .BeginAligning (DriveStates .AUTO_ALIGNING_REEF ); }, () -> Controllers .DRIVER_CONTROLLER .getPOV () == 0 && getState () == DriveStates .MANUAL );
150- addRunnableTrigger ( () -> { this .BeginAligning (DriveStates .AUTO_ALIGNING_FEEDER ); }, () -> Controllers .DRIVER_CONTROLLER .getPOV () == 90 && getState () == DriveStates .MANUAL );
155+ // addRunnableTrigger( () -> { this.BeginAligning(DriveStates.AUTO_ALIGNING_REEF); }, () -> Controllers.DRIVER_CONTROLLER.getPOV() == 0 && getState() == DriveStates.MANUAL );
156+ // addRunnableTrigger( () -> { this.BeginAligning(DriveStates.AUTO_ALIGNING_FEEDER); }, () -> Controllers.DRIVER_CONTROLLER.getPOV() == 90 && getState() == DriveStates.MANUAL );
151157 //addRunnableTrigger( () -> { this.BeginAligning(DriveStates.AUTO_ALIGNING_CAGES); }, () -> Controllers.DRIVER_CONTROLLER.getPOV() == 180 && getState() == DriveStates.MANUAL );
152158 addRunnableTrigger (() -> swerveDrive .lockPose (), () -> DRIVER_CONTROLLER .getAButton ());
153159 // Auto Align Cancel:
154160
155- addRunnableTrigger ( () -> { this .EndAligning (); }, () -> atSetpoint () && getState () != DriveStates .MANUAL );
156- addRunnableTrigger ( () -> { this .EndAligning (); }, Controllers .DRIVER_CONTROLLER ::getXButtonPressed );
161+ // addRunnableTrigger( () -> { this.EndAligning(); }, () -> atSetpoint() && getState() != DriveStates.MANUAL );
162+ // addRunnableTrigger( () -> { this.EndAligning(); }, Controllers.DRIVER_CONTROLLER::getXButtonPressed );
157163 }
158164
159165 // Aligner Transition Methods:
@@ -228,18 +234,35 @@ public void runState() {
228234 } else {
229235 // Manual Control
230236 // Slow Mode:
231- if (Controllers .DRIVER_CONTROLLER .getLeftBumperButton ()) {
232- swerveInputs .scaleTranslation (0.5 );
233- swerveInputs .scaleRotation (0.5 );
237+ if (slow ) {
238+ if (Controllers .DRIVER_CONTROLLER .getLeftBumperButtonPressed ()) {
239+ slow = false ;
240+ }
241+ swerveInputs .scaleTranslation (0.33 );
242+ swerveInputs .scaleRotation (0.33 );
234243 } else {
244+ if (Controllers .DRIVER_CONTROLLER .getLeftBumperButtonPressed ()) {
245+ slow = true ;
246+ }
235247 swerveInputs .scaleTranslation (1 );
236248 swerveInputs .scaleRotation (1 );
237249 }
238250 // Lock Pose:
239251 if (Controllers .DRIVER_CONTROLLER .getRightBumperButton ()) {
240252 swerveDrive .lockPose ();
241253 }
242- swerveDrive .driveFieldOriented (swerveInputs .get ());
254+
255+ if (fieldRelative ) {
256+ if (DRIVER_CONTROLLER .getBackButtonPressed ()) {
257+ fieldRelative = false ;
258+ }
259+ swerveDrive .driveFieldOriented (swerveInputs .get ());
260+ } else {
261+ if (DRIVER_CONTROLLER .getBackButtonPressed ()) {
262+ fieldRelative = true ;
263+ }
264+ swerveDrive .drive (swerveInputs .get ());
265+ }
243266 }
244267 // Update Alignment Targets:
245268 if (!DriverStation .getAlliance ().isEmpty ()) {
@@ -254,6 +277,8 @@ public void runState() {
254277 }
255278 field .getObject ("ROBOT" ).setPose (swerveDrive .getPose ());
256279 // Logging:
280+ SmartDashboard .putBoolean ("SLOW" , slow );
281+ SmartDashboard .putBoolean ("FIELD RELATIVE" , fieldRelative );
257282 SmartDashboard .putData ("Field" , field );
258283 SmartDashboard .putString ("DRIVE_STATE" , getState ().getStateString ());
259284 Logger .recordOutput ("Pose" , swerveDrive .getPose ());
0 commit comments