}
// Subtract the rotational angle of the robot from the setpoint
- double adjustedTurretSetpoint = MathUtil.angleModulus(turretAngle.getRadians() - drivepose.getRotation().getRadians());
+ double adjustedTurretSetpoint = MathUtil.inputModulus(turretAngle.getRadians() - drivepose.getRotation().getRadians(), TurretConstants.MIN_ANGLE, TurretConstants.MAX_ANGLE);
// Shortest path
- double error = MathUtil.inputModulus(Units.radiansToDegrees(adjustedTurretSetpoint) - Units.radiansToDegrees(turret.getPositionRad()), -180, 180);
+ double error = MathUtil.inputModulus(Units.radiansToDegrees(adjustedTurretSetpoint) - Units.radiansToDegrees(turret.getPositionRad()), TurretConstants.MIN_ANGLE, TurretConstants.MAX_ANGLE);
double potentialSetpoint = Units.radiansToDegrees(turret.getPositionRad()) + error + turretOffset;
// Stay within +/- 200 -- if shortest path is past 200, we go long way around
stowEverything();
}
-}
+}
\ No newline at end of file
// calculate shortest angular delta
double delta = best - lastRawSetpoint;
- delta = MathUtil.angleModulus(delta);
+ delta = MathUtil.inputModulus(delta, TurretConstants.MIN_ANGLE, TurretConstants.MAX_ANGLE);
// filter delta
double filteredDelta = setpointFilter.calculate(delta);
// apply filtered range
- lastFilteredRad = MathUtil.angleModulus(lastFilteredRad + filteredDelta);
+ lastFilteredRad = MathUtil.inputModulus(lastFilteredRad + filteredDelta, TurretConstants.MIN_ANGLE, TurretConstants.MAX_ANGLE);
lastRawSetpoint = best;
best = lastFilteredRad;
SmartDashboard.putBoolean("Turret Calibrated", !calibrating);
SmartDashboard.putBoolean("Turret At Setpoint", atSetpoint());
}
-
+ Logger.recordOutput("Turret/Position", getPositionDeg());
}
/* ---------------- Simulation ---------------- */
calibrating = false;
setFieldRelativeTarget(new Rotation2d(Units.degreesToRadians(TurretConstants.CALIBRATION_OFFSET)), 0.0);
}
-}
+}
\ No newline at end of file
import edu.wpi.first.math.util.Units;
public class TurretConstants {
- public static double MAX_ANGLE = 180; // Deg
- public static double MIN_ANGLE = -200; // Deg
+ public static double MAX_ANGLE = 175; // Deg
+ public static double MIN_ANGLE = -250; // Deg
public static double CALIBRATION_OFFSET = 0.0; // TODO: find this at hardstop