]> git.taranathan.com Git - FRC2026.git/commitdiff
fixed some values and added Drivetrain logic
authorWesley28w <wesleycwong@gmail.com>
Wed, 25 Mar 2026 17:15:55 +0000 (10:15 -0700)
committerWesley28w <wesleycwong@gmail.com>
Wed, 25 Mar 2026 17:15:55 +0000 (10:15 -0700)
src/main/java/frc/robot/commands/gpm/BrownOutControl.java
src/main/java/frc/robot/constants/swerve/DriveConstants.java
src/main/java/frc/robot/controls/PS5ControllerDriverConfig.java
src/main/java/frc/robot/subsystems/drivetrain/Drivetrain.java
src/main/java/frc/robot/subsystems/drivetrain/Module.java
src/main/java/frc/robot/util/BrownOut/BrownOutConstants.java
src/main/java/frc/robot/util/BrownOut/BrownOutManager.java [deleted file]

index 8f6f2701fe75eef27b76adf676d70825d08039b5..0fecc1ee6aa50e4fccd46ce5cb68efad3b57425e 100644 (file)
@@ -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
index 5cb0da5aaec69ea33a35fc08f496dcf8229fbfd4..9cce375ef5e749d60e14b3c4a73dd1c8a4306916 100644 (file)
@@ -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;
     
index 0cf022b97eceae46dc98b0ad980cefd56d6459da..f20b0240e2dd4a8c943e0bc34a26ad79009c2285 100644 (file)
@@ -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());
         }));
index 7a8b54bb3118dffcce8f5e9f2a69956033b61465..f145c423f7207b47d7551abebd9c19485e5e2cd1 100644 (file)
@@ -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.
      *
index d0ada94d1fa5f92005fed2878c0da229c14e6976..8fc3165cc8f12e7e0ebe1a2b11940258e2a792e9 100644 (file)
@@ -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
index eb0c3d43cb92bdd6fb030799d193aa67cabc0f12..b560936ebc27c6ed10ec193617615da6c099e6dd 100644 (file)
@@ -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 (file)
index 5cf942b..0000000
+++ /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() {}
-}