}
// Subtract the rotational angle of the robot from the setpoint
- double adjustedTurretSetpoint = MathUtil.inputModulus(turretAngle.getRadians() - drivepose.getRotation().getRadians(), TurretConstants.MIN_ANGLE, TurretConstants.MAX_ANGLE);
+ double adjustedTurretSetpoint = MathUtil.angleModulus(turretAngle.getRadians() - drivepose.getRotation().getRadians());
// Shortest path
- double error = MathUtil.inputModulus(Units.radiansToDegrees(adjustedTurretSetpoint) - Units.radiansToDegrees(turret.getPositionRad()), TurretConstants.MIN_ANGLE, TurretConstants.MAX_ANGLE);
+ double error = MathUtil.inputModulus(Units.radiansToDegrees(adjustedTurretSetpoint) - Units.radiansToDegrees(turret.getPositionRad()), -180, 180);
double potentialSetpoint = Units.radiansToDegrees(turret.getPositionRad()) + error + turretOffset;
// Stay within physical limits -- if shortest path is past max angle, we go long way around
stowEverything();
}
-}
\ No newline at end of file
+}
// calculate shortest angular delta
double delta = best - lastRawSetpoint;
- delta = MathUtil.inputModulus(delta, Units.degreesToRadians(TurretConstants.MIN_ANGLE), Units.degreesToRadians(TurretConstants.MAX_ANGLE));
+ delta = MathUtil.angleModulus(delta);
// filter delta
double filteredDelta = setpointFilter.calculate(delta);
// apply filtered range
- lastFilteredRad = MathUtil.inputModulus(lastFilteredRad + filteredDelta, Units.degreesToRadians(TurretConstants.MIN_ANGLE), Units.degreesToRadians(TurretConstants.MAX_ANGLE));
+ lastFilteredRad = MathUtil.angleModulus(lastFilteredRad + filteredDelta);
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 = 175; // Deg NOTE: currently it actually only goes to 150
- public static double MIN_ANGLE = -250; // Deg
+ public static double MAX_ANGLE = 180; // Deg
+ public static double MIN_ANGLE = -200; // Deg
public static double CALIBRATION_OFFSET = 0.0; // TODO: find this at hardstop