}
// 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()), TurretConstants.MIN_ANGLE, TurretConstants.MAX_ANGLE);
// 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 ---------------- */
import edu.wpi.first.math.util.Units;
public class TurretConstants {
- public static double MAX_ANGLE = 175; // Deg
+ public static double MAX_ANGLE = 175; // Deg NOTE: currently it actually only goes to 150
public static double MIN_ANGLE = -250; // Deg
public static double CALIBRATION_OFFSET = 0.0; // TODO: find this at hardstop