Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Commit

Permalink
simplify control logic and default sprint mode
Browse files Browse the repository at this point in the history
the values for sprint mode are tentative as they rely on swerve and driveteam testing
  • Loading branch information
srimanachanta committed Dec 19, 2023
1 parent 849386e commit 879223c
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 32 deletions.
4 changes: 3 additions & 1 deletion src/main/java/frc/robot/RobotContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,13 @@ public RobotContainer() {

private void configureButtonBindings() {
m_drive.setDefaultCommand(
DriveCommandFactory.joystickDrive(
DriveCommandFactory.sprintJoystickDrive(
m_drive,
() -> -controller.getLeftY(),
() -> -controller.getLeftX(),
() -> -controller.getRightX(),
controller.getHID()::getRightBumper,
0.5,
0.1));
controller.x().onTrue(Commands.runOnce(m_drive::stopWithX, m_drive));
}
Expand Down
81 changes: 50 additions & 31 deletions src/main/java/frc/robot/commands/drive/DriveCommandFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,28 @@ public static Command joystickDrive(

return Commands.run(
() -> {
double x_val = xSupplier.getAsDouble() * xCoefficient.get();
double y_val = ySupplier.getAsDouble() * yCoefficient.get();
double omega_val = omegaSupplier.getAsDouble() * omegaCoefficient.get();

double x =
Math.copySign(
Math.min(Math.pow(MathUtil.applyDeadband(x_val, deadband), 2), 1.0), x_val);
double y =
Math.copySign(
Math.min(Math.pow(MathUtil.applyDeadband(y_val, deadband), 2), 1.0), y_val);
double omega =
Math.copySign(
Math.min(Math.pow(MathUtil.applyDeadband(omega_val, deadband), 2), 1.0),
omega_val);
double x_val = MathUtil.applyDeadband(xSupplier.getAsDouble(), deadband);
double y_val = MathUtil.applyDeadband(ySupplier.getAsDouble(), deadband);
double omega_val = MathUtil.applyDeadband(omegaSupplier.getAsDouble(), deadband);

double x = 0.0;
double y = 0.0;
double omega = 0.0;

if (x_val != 0) {
x_val = x_val * xCoefficient.get();
x = Math.copySign(Math.min(Math.pow(x_val, 2), 1.0), x_val);
}

if (y_val != 0) {
y_val = y_val * yCoefficient.get();
y = Math.copySign(Math.min(Math.pow(y_val, 2), 1.0), y_val);
}

if (omega_val != 0) {
omega_val = omega_val * omegaCoefficient.get();
omega = Math.copySign(Math.min(Math.pow(omega_val, 2), 1.0), omega_val);
}

driveBase.runVelocity(toFieldRelative(x, y, omega));
},
Expand Down Expand Up @@ -94,23 +102,34 @@ public static Command sprintJoystickDrive(

return Commands.run(
() -> {
double x_val = xSupplier.getAsDouble() * xCoefficient.get() * maxNonSprintSpeed;
double y_val = ySupplier.getAsDouble() * yCoefficient.get() * maxNonSprintSpeed;
double omega_val = omegaSupplier.getAsDouble() * omegaCoefficient.get();

double sprintVal = sprintSupplier.getAsBoolean() ? 0.5 : 0.0;
double x =
Math.copySign(
Math.min(Math.pow(MathUtil.applyDeadband(x_val, deadband), 2) + sprintVal, 1.0),
x_val);
double y =
Math.copySign(
Math.min(Math.pow(MathUtil.applyDeadband(y_val, deadband), 2) + sprintVal, 1.0),
y_val);
double omega =
Math.copySign(
Math.min(Math.pow(MathUtil.applyDeadband(omega_val, deadband), 2), 1.0),
omega_val);
double x_val = MathUtil.applyDeadband(xSupplier.getAsDouble(), deadband);
double y_val = MathUtil.applyDeadband(ySupplier.getAsDouble(), deadband);
double omega_val = MathUtil.applyDeadband(omegaSupplier.getAsDouble(), deadband);

double x = 0.0;
double y = 0.0;
double omega = 0.0;

double sprintIncreaseVal = 1.0 - maxNonSprintSpeed;

if (x_val != 0) {
x_val =
(x_val * xCoefficient.get() * maxNonSprintSpeed)
+ (sprintSupplier.getAsBoolean() ? sprintIncreaseVal : 0.0);
x = Math.copySign(Math.min(Math.pow(x_val, 2), 1.0), x_val);
}

if (y_val != 0) {
y_val =
(y_val * yCoefficient.get() * maxNonSprintSpeed)
+ (sprintSupplier.getAsBoolean() ? sprintIncreaseVal : 0.0);
y = Math.copySign(Math.min(Math.pow(y_val, 2), 1.0), y_val);
}

if (omega_val != 0) {
omega_val = omega_val * omegaCoefficient.get();
omega = Math.copySign(Math.min(Math.pow(omega_val, 2), 1.0), omega_val);
}

driveBase.runVelocity(toFieldRelative(x, y, omega));
},
Expand Down

0 comments on commit 879223c

Please sign in to comment.