Need to clamp finPosition, not value

This commit is contained in:
JoePfeiffer 2023-01-14 20:39:50 -07:00
parent f61b8799ab
commit 5cfdb3959e

View File

@ -146,6 +146,7 @@ public class RollControl extends AbstractSimulationExtension {
if (finset == null) { if (finset == null) {
throw new SimulationException("A fin set with name '" + getControlFinName() + "' was not found"); throw new SimulationException("A fin set with name '" + getControlFinName() + "' was not found");
} }
System.out.println("fin set found at " + finset.hashCode());
// remember the initial fin position so we can set it back after running the simulation // remember the initial fin position so we can set it back after running the simulation
initialFinPosition = finset.getCantAngle(); initialFinPosition = finset.getCantAngle();
@ -165,6 +166,8 @@ public class RollControl extends AbstractSimulationExtension {
prevTime = status.getSimulationTime(); prevTime = status.getSimulationTime();
return; return;
} }
System.out.println("using fin set at " + finset.hashCode());
// Determine time step // Determine time step
double deltaT = status.getSimulationTime() - prevTime; double deltaT = status.getSimulationTime() - prevTime;
@ -187,10 +190,10 @@ public class RollControl extends AbstractSimulationExtension {
} }
// Clamp the fin angle between bounds // Clamp the fin angle between bounds
if (Math.abs(value) > getMaxFinAngle()) { if (Math.abs(finPosition) > getMaxFinAngle()) {
System.err.printf("Attempting to set angle %.1f at t=%.3f, clamping.\n", System.err.printf("Attempting to set angle %.1f at t=%.3f, clamping.\n",
value * 180 / Math.PI, status.getSimulationTime()); finPosition * 180 / Math.PI, status.getSimulationTime());
value = MathUtil.clamp(value, -getMaxFinAngle(), getMaxFinAngle()); finPosition = MathUtil.clamp(finPosition, -getMaxFinAngle(), getMaxFinAngle());
} }
// Set the control fin cant and store the data // Set the control fin cant and store the data