lib/RoboLib/ballistics/constraints:

BallisticConstraint.evaluate() may throw
BallisticException
This commit is contained in:
Ray Healy 2026-02-14 13:57:02 -05:00
parent 126a8dd83b
commit ef6a02cffc
4 changed files with 11 additions and 8 deletions

View File

@ -5,6 +5,7 @@ import java.util.ArrayList;
import org.fairportrobotics.frc.robolib.trajectory.Velocity3d; import org.fairportrobotics.frc.robolib.trajectory.Velocity3d;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BCEvalParams; import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BCEvalParams;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BallisticConstraint; import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BallisticConstraint;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.exceptions.BallisticException;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel; import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel;
import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.Angle;
@ -53,7 +54,7 @@ public abstract class BallisticCalculator {
Velocity3d robotVelocity, Velocity3d robotVelocity,
Angle robotAngle, Angle robotAngle,
Velocity3d shooterVelocity Velocity3d shooterVelocity
) { ) throws BallisticException {
return this.computeSolution( return this.computeSolution(
model, model.getInitParam(), robotVelocity, robotAngle, shooterVelocity model, model.getInitParam(), robotVelocity, robotAngle, shooterVelocity
); );
@ -78,7 +79,7 @@ public abstract class BallisticCalculator {
Velocity3d robotVelocity, Velocity3d robotVelocity,
Angle robotAngle, Angle robotAngle,
Velocity3d shooterVelocity Velocity3d shooterVelocity
); ) throws BallisticException;
/** /**
@ -93,7 +94,7 @@ public abstract class BallisticCalculator {
*/ */
protected <M extends BallisticModel<P>, P> Double evaluateCandidate( protected <M extends BallisticModel<P>, P> Double evaluateCandidate(
M model, BCEvalParams evalParams M model, BCEvalParams evalParams
) { ) throws BallisticException {
// Get the weight component for velocity difference // Get the weight component for velocity difference
Velocity3d velShooterDiff = Velocity3d velShooterDiff =
evalParams.getCandidateShooterVelocity().minus(evalParams.getCurrentShooterVelocity()); evalParams.getCandidateShooterVelocity().minus(evalParams.getCurrentShooterVelocity());

View File

@ -5,6 +5,7 @@ import java.util.LinkedList;
import org.fairportrobotics.frc.robolib.trajectory.Velocity3d; import org.fairportrobotics.frc.robolib.trajectory.Velocity3d;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BCEvalParams; import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BCEvalParams;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.exceptions.BallisticException;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel; import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel;
import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.Angle;
@ -21,7 +22,7 @@ public class GreedyBallisticCalculator extends BallisticCalculator {
Velocity3d robotVelocity, Velocity3d robotVelocity,
Angle robotAngle, Angle robotAngle,
Velocity3d shooterVelocity Velocity3d shooterVelocity
) { ) throws BallisticException {
model.paramComputedReset(); model.paramComputedReset();
LinkedList<P> candidate_params = new LinkedList<>(); LinkedList<P> candidate_params = new LinkedList<>();

View File

@ -2,6 +2,7 @@ package org.fairportrobotics.frc.robolib.trajectory.ballistics.calculators;
import org.fairportrobotics.frc.robolib.trajectory.Velocity3d; import org.fairportrobotics.frc.robolib.trajectory.Velocity3d;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BCEvalParams; import org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints.BCEvalParams;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.exceptions.BallisticException;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel; import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel;
import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.Angle;
@ -18,7 +19,7 @@ public class HillDescentBallisticCalculator extends BallisticCalculator {
Velocity3d robotVelocity, Velocity3d robotVelocity,
Angle robotAngle, Angle robotAngle,
Velocity3d shooterVelocity Velocity3d shooterVelocity
) { ) throws BallisticException {
Velocity3d candidateVelocity = model.getCandidateVelocity(modelParam); Velocity3d candidateVelocity = model.getCandidateVelocity(modelParam);
BCEvalParams evalParams = new BCEvalParams(robotVelocity, robotAngle, shooterVelocity, candidateVelocity); BCEvalParams evalParams = new BCEvalParams(robotVelocity, robotAngle, shooterVelocity, candidateVelocity);
return new BCResult(this.evaluateCandidate(model, evalParams), evalParams); return new BCResult(this.evaluateCandidate(model, evalParams), evalParams);
@ -30,7 +31,7 @@ public class HillDescentBallisticCalculator extends BallisticCalculator {
Velocity3d robotVelocity, Velocity3d robotVelocity,
Angle robotAngle, Angle robotAngle,
Velocity3d shooterVelocity Velocity3d shooterVelocity
) { ) throws BallisticException {
model.paramComputedReset(); model.paramComputedReset();
P bestParam = initParam; P bestParam = initParam;

View File

@ -1,8 +1,8 @@
package org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints; package org.fairportrobotics.frc.robolib.trajectory.ballistics.constraints;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.exceptions.BallisticException;
import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel; import org.fairportrobotics.frc.robolib.trajectory.ballistics.models.BallisticModel;
public abstract class BallisticConstraint { public abstract class BallisticConstraint {
protected double weight; protected double weight;
@ -51,5 +51,5 @@ public abstract class BallisticConstraint {
*/ */
public abstract <M extends BallisticModel<P>, P> Double evaluate( public abstract <M extends BallisticModel<P>, P> Double evaluate(
M model, BCEvalParams evalParams M model, BCEvalParams evalParams
); ) throws BallisticException;
} }