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];
}
}
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
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
// 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