From: Wesley28w Date: Wed, 25 Mar 2026 17:15:55 +0000 (-0700) Subject: fixed some values and added Drivetrain logic X-Git-Url: https://git.taranathan.com/?a=commitdiff_plain;h=4fc9d268bac9dba8a30836cc22aabb46e1ba733a;p=FRC2026.git fixed some values and added Drivetrain logic --- diff --git a/src/main/java/frc/robot/commands/gpm/BrownOutControl.java b/src/main/java/frc/robot/commands/gpm/BrownOutControl.java index 8f6f270..0fecc1e 100644 --- a/src/main/java/frc/robot/commands/gpm/BrownOutControl.java +++ b/src/main/java/frc/robot/commands/gpm/BrownOutControl.java @@ -47,16 +47,17 @@ public class BrownOutControl extends Command { public BrownOutLevel monitor() { // pretty sure this is where you get it. Need to check if this is same as logs. + // voltage 6.3 is brownout where issues occur, but 4.75 is dead robot double batteryVoltage = RobotController.getBatteryVoltage(); - if (batteryVoltage > 8.25) { + if (batteryVoltage > 7.5) { // normal return levels[0]; - } else if (batteryVoltage > 7.75) { - return levels[1]; - } else if (batteryVoltage > 7.25) { + } else if (batteryVoltage > 6.75) { // if 7.5 to 6.75 + return levels[1]; // lower drivetrain + } else if (batteryVoltage > 6.0) { // if 6.75 to 6.0 (browning out) return levels[2]; - } else if (batteryVoltage > 6.75) { + } else if (batteryVoltage > 5.25) { // if 6.0 to 5.0 (mayday) return levels[3]; - } else { + } else { // were are on life support at this point 5.25 to 4.75 return levels[4]; } } @@ -70,13 +71,13 @@ public class BrownOutControl extends Command { double steerCurrent = level.steerCurrent; double driveCurrent = level.driveCurrent; + // apply them / set them shooter.setNewCurrentLimit(shooterCurrent); turret.setCurrentLimits(turretCurrent); hood.setCurrentLimits(hoodCurrent); spindexer.setNewCurrentLimit(spindexerCurrent); intake.setCurrentLimits(intakeCurrent); - - // TODO: set drivetrain currents. I'll do it once we fix drivetrain. + drivetrain.applyNewModuleCurrents(steerCurrent, driveCurrent); } @Override diff --git a/src/main/java/frc/robot/constants/swerve/DriveConstants.java b/src/main/java/frc/robot/constants/swerve/DriveConstants.java index 5cb0da5..9cce375 100644 --- a/src/main/java/frc/robot/constants/swerve/DriveConstants.java +++ b/src/main/java/frc/robot/constants/swerve/DriveConstants.java @@ -129,8 +129,8 @@ public class DriveConstants { public static final double STEER_PEAK_CURRENT_DURATION = 0.01; public static final boolean STEER_ENABLE_CURRENT_LIMIT = true; - public static final int DRIVE_CONTINUOUS_CURRENT_LIMIT = 60; - public static final int DRIVE_PEAK_CURRENT_LIMIT = 60; + public static final int DRIVE_CONTINUOUS_CURRENT_LIMIT = 40; + public static final int DRIVE_PEAK_CURRENT_LIMIT = 40; public static final double DRIVE_PEAK_CURRENT_DURATION = 0.01; public static final boolean DRIVE_ENABLE_CURRENT_LIMIT = true; diff --git a/src/main/java/frc/robot/controls/PS5ControllerDriverConfig.java b/src/main/java/frc/robot/controls/PS5ControllerDriverConfig.java index 0cf022b..f20b024 100644 --- a/src/main/java/frc/robot/controls/PS5ControllerDriverConfig.java +++ b/src/main/java/frc/robot/controls/PS5ControllerDriverConfig.java @@ -198,6 +198,7 @@ public class PS5ControllerDriverConfig extends BaseDriverConfig { })); } + // turns it on controller.get(PS5Button.TOUCHPAD).onTrue(new InstantCommand(() -> { new BrownOutControl(shooter, spindexer, turret, intake, hood, getDrivetrain()); })); diff --git a/src/main/java/frc/robot/subsystems/drivetrain/Drivetrain.java b/src/main/java/frc/robot/subsystems/drivetrain/Drivetrain.java index 7a8b54b..f145c42 100644 --- a/src/main/java/frc/robot/subsystems/drivetrain/Drivetrain.java +++ b/src/main/java/frc/robot/subsystems/drivetrain/Drivetrain.java @@ -366,6 +366,13 @@ public class Drivetrain extends SubsystemBase { trenchAlign = target; } + // for current limit setting (brownout protection) + public void applyNewModuleCurrents(double steerCurrent, double driveCurren) { + for (Module module : modules) { // iterate over our modules + module.setNewCurrentLimit(steerCurrent, driveCurren); + } + } + /** * Sets the desired states for all swerve modules. * diff --git a/src/main/java/frc/robot/subsystems/drivetrain/Module.java b/src/main/java/frc/robot/subsystems/drivetrain/Module.java index d0ada94..8fc3165 100644 --- a/src/main/java/frc/robot/subsystems/drivetrain/Module.java +++ b/src/main/java/frc/robot/subsystems/drivetrain/Module.java @@ -341,6 +341,28 @@ public class Module implements ModuleIO{ public double getDriveStatorCurrent(){ return inputs.driveCurrentAmps; } + + // I took the config things straight from this file + public void setNewCurrentLimit(double currentSteer, double currentDrive) { + CurrentLimitsConfigs steerConfig = new CurrentLimitsConfigs(); + // steer + steerConfig.SupplyCurrentLimitEnable = DriveConstants.STEER_ENABLE_CURRENT_LIMIT; + steerConfig.SupplyCurrentLimit = currentSteer; + steerConfig.SupplyCurrentLowerLimit = currentSteer; + steerConfig.SupplyCurrentLowerTime = DriveConstants.STEER_PEAK_CURRENT_DURATION; + angleMotor.getConfigurator().apply(steerConfig); // apply + + // drive + CurrentLimitsConfigs dirveConfig = new CurrentLimitsConfigs(); + dirveConfig.SupplyCurrentLimitEnable = DriveConstants.DRIVE_ENABLE_CURRENT_LIMIT; + dirveConfig.SupplyCurrentLimit = currentDrive; + dirveConfig.SupplyCurrentLowerLimit = currentDrive; + dirveConfig.SupplyCurrentLowerTime = DriveConstants.DRIVE_PEAK_CURRENT_DURATION; + dirveConfig.StatorCurrentLimit = currentDrive; + dirveConfig.StatorCurrentLimitEnable = DriveConstants.DRIVE_ENABLE_CURRENT_LIMIT; + driveMotor.getConfigurator().apply(dirveConfig); // apply + } + private void configDriveMotor() { var talonFXConfigs = new TalonFXConfiguration(); // set Motion Magic settings diff --git a/src/main/java/frc/robot/util/BrownOut/BrownOutConstants.java b/src/main/java/frc/robot/util/BrownOut/BrownOutConstants.java index eb0c3d4..b560936 100644 --- a/src/main/java/frc/robot/util/BrownOut/BrownOutConstants.java +++ b/src/main/java/frc/robot/util/BrownOut/BrownOutConstants.java @@ -35,46 +35,46 @@ public class BrownOutConstants { // should deplete drivetrain a bit and lower everything else slightly. Preserve Shooter. public static final BrownOutLevel BROWNOUT_LVL_TWO = new BrownOutLevel( - ShooterConstants.SHOOTER_CURRENT_LIMIT, - HoodConstants.NORMAL_CURRENT_LIMIT, - SpindexerConstants.currentLimit, - TurretConstants.NORMAL_CURRENT_LIMIT, - IntakeConstants.NORMAL_CURRENT_LIMIT, - DriveConstants.STEER_PEAK_CURRENT_LIMIT, - DriveConstants.DRIVE_PEAK_CURRENT_LIMIT + ShooterConstants.SHOOTER_CURRENT_LIMIT * 1.0, // keep as same + HoodConstants.NORMAL_CURRENT_LIMIT * 1.0, // preserve aiming speed + SpindexerConstants.currentLimit * 1.0, // preserve indexing speed + TurretConstants.NORMAL_CURRENT_LIMIT * 1.0, // preserve aiming speed + IntakeConstants.NORMAL_CURRENT_LIMIT * 1.0, // preserve indexing speed + DriveConstants.STEER_PEAK_CURRENT_LIMIT * 0.8, // lower drive rotation + DriveConstants.DRIVE_PEAK_CURRENT_LIMIT * 0.8 // lower drive movement ); // lower bps systems: intake & spindexer. Preserve Shooter. Slight lower on evertthing else public static final BrownOutLevel BROWNOUT_LVL_THREE = new BrownOutLevel( - ShooterConstants.SHOOTER_CURRENT_LIMIT, - HoodConstants.NORMAL_CURRENT_LIMIT, - SpindexerConstants.currentLimit, - TurretConstants.NORMAL_CURRENT_LIMIT, - IntakeConstants.NORMAL_CURRENT_LIMIT, - DriveConstants.STEER_PEAK_CURRENT_LIMIT, - DriveConstants.DRIVE_PEAK_CURRENT_LIMIT + ShooterConstants.SHOOTER_CURRENT_LIMIT * 1.0, // keep as same + HoodConstants.NORMAL_CURRENT_LIMIT * 1.0, // preserve aiming speed + SpindexerConstants.currentLimit * 0.8, // preserve indexing speed + TurretConstants.NORMAL_CURRENT_LIMIT * 1.0, // preserve aiming speed + IntakeConstants.NORMAL_CURRENT_LIMIT * 0.8, // preserve indexing speed + DriveConstants.STEER_PEAK_CURRENT_LIMIT * 0.7, // lower drive rotation + DriveConstants.DRIVE_PEAK_CURRENT_LIMIT * 0.7 // lower drive movement ); // lower aiming systems: turret & hood. Preserve Shooter. Slight lower on everything else public static final BrownOutLevel BROWNOUT_LVL_FOUR = new BrownOutLevel( - ShooterConstants.SHOOTER_CURRENT_LIMIT, - HoodConstants.NORMAL_CURRENT_LIMIT, - SpindexerConstants.currentLimit, - TurretConstants.NORMAL_CURRENT_LIMIT, - IntakeConstants.NORMAL_CURRENT_LIMIT, - DriveConstants.STEER_PEAK_CURRENT_LIMIT, - DriveConstants.DRIVE_PEAK_CURRENT_LIMIT + ShooterConstants.SHOOTER_CURRENT_LIMIT * 1.0, // keep as same + HoodConstants.NORMAL_CURRENT_LIMIT * 0.8, // preserve aiming speed + SpindexerConstants.currentLimit * 0.6, // preserve indexing speed + TurretConstants.NORMAL_CURRENT_LIMIT * 0.8, // preserve aiming speed + IntakeConstants.NORMAL_CURRENT_LIMIT * 0.6, // preserve indexing speed + DriveConstants.STEER_PEAK_CURRENT_LIMIT * 0.5, // lower drive rotation + DriveConstants.DRIVE_PEAK_CURRENT_LIMIT * 0.5 // lower drive movement ); // now we have to deplete shooter... THIS IS REALLY BAD IS IT COMES TO THIS. public static final BrownOutLevel BROWNOUT_LVL_FIVE = new BrownOutLevel( - ShooterConstants.SHOOTER_CURRENT_LIMIT, - HoodConstants.NORMAL_CURRENT_LIMIT, - SpindexerConstants.currentLimit, - TurretConstants.NORMAL_CURRENT_LIMIT, - IntakeConstants.NORMAL_CURRENT_LIMIT, - DriveConstants.STEER_PEAK_CURRENT_LIMIT, - DriveConstants.DRIVE_PEAK_CURRENT_LIMIT + ShooterConstants.SHOOTER_CURRENT_LIMIT * 0.8, // keep as same + HoodConstants.NORMAL_CURRENT_LIMIT * 0.7, // preserve aiming speed + SpindexerConstants.currentLimit * 0.5, // preserve indexing speed + TurretConstants.NORMAL_CURRENT_LIMIT * 0.7, // preserve aiming speed + IntakeConstants.NORMAL_CURRENT_LIMIT * 0.5, // preserve indexing speed + DriveConstants.STEER_PEAK_CURRENT_LIMIT * 0.45, // lower drive rotation + DriveConstants.DRIVE_PEAK_CURRENT_LIMIT * 0.45 // lower drive movement ); } \ No newline at end of file diff --git a/src/main/java/frc/robot/util/BrownOut/BrownOutManager.java b/src/main/java/frc/robot/util/BrownOut/BrownOutManager.java deleted file mode 100644 index 5cf942b..0000000 --- a/src/main/java/frc/robot/util/BrownOut/BrownOutManager.java +++ /dev/null @@ -1,17 +0,0 @@ -package frc.robot.util.BrownOut; - -public class BrownOutManager { - public BrownOutLevel[] levels = { - BrownOutConstants.BROWNOUT_LVL_ONE, - BrownOutConstants.BROWNOUT_LVL_TWO, - BrownOutConstants.BROWNOUT_LVL_THREE, - BrownOutConstants.BROWNOUT_LVL_FOUR, - BrownOutConstants.BROWNOUT_LVL_FIVE, - }; - - public void monitor() { - - } - - public void apply() {} -}