From 3f60a91184f885329a19aba3475c0848f6688c6a Mon Sep 17 00:00:00 2001 From: Ray Healy Date: Sat, 21 Feb 2026 15:28:20 -0500 Subject: [PATCH] trajectory/ballistics/constraints/BCEvalParams: Define generators for candidate shooter velocity (field and robot relative) --- .../ballistics/constraints/BCEvalParams.java | 48 +++++++++++++++++++ .../constraints/BCEvalParamsTest.java | 16 +++++++ 2 files changed, 64 insertions(+) diff --git a/lib/src/main/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParams.java b/lib/src/main/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParams.java index be3ec9b..bdbc4a2 100644 --- a/lib/src/main/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParams.java +++ b/lib/src/main/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParams.java @@ -29,6 +29,54 @@ public class BCEvalParams { // Setup // + public static BCEvalParams genSetShooterVelocity( + Velocity3d candidateShooterVelocity + ) { + return genSetShooterVelocity( + Velocity3d.zero, Units.Degrees.zero(), Velocity3d.zero, + candidateShooterVelocity + ); + } + + public static BCEvalParams genSetShooterVelocity( + Velocity3d robotVelocity, + Angle robotAngle, + Velocity3d currentShooterVelocity, + Velocity3d candidateShooterVelocity + ) { + return new BCEvalParams( + robotVelocity, + robotAngle, + currentShooterVelocity, + candidateShooterVelocity.plus(robotVelocity) + ); + + } + + public static BCEvalParams genSetShooterRelativeVelocity( + Velocity3d candidateShooterVelocityRelative + ) { + return genSetShooterRelativeVelocity( + Velocity3d.zero, Units.Degrees.zero(), Velocity3d.zero, + candidateShooterVelocityRelative + ); + } + + public static BCEvalParams genSetShooterRelativeVelocity( + Velocity3d robotVelocity, + Angle robotAngle, + Velocity3d currentShooterVelocity, + Velocity3d candidateShooterVelocityRelative + ) { + BCEvalParams toRet = genSetShooterVelocity( + robotVelocity, + robotAngle, + currentShooterVelocity, + candidateShooterVelocityRelative.rotate(robotAngle) + ); + return toRet; + } + public BCEvalParams( Velocity3d robotVelocity, Angle robotAngle, diff --git a/lib/src/test/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParamsTest.java b/lib/src/test/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParamsTest.java index 217ea8e..eff55e7 100644 --- a/lib/src/test/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParamsTest.java +++ b/lib/src/test/java/org/fairportrobotics/frc/robolib/trajectory/ballistics/constraints/BCEvalParamsTest.java @@ -43,4 +43,20 @@ public class BCEvalParamsTest { "Robot Velocity and Angle" ); } + + @Test void testGenSetShooterVelocity() { + Velocity3d shooterVelocity = Velocity3d.genSpherical(2.0, -135.0, 0.0); + assertEquals( + shooterVelocity, + BCEvalParams.genSetShooterVelocity(shooterVelocity).getCandidateShooterVelocity() + ); + } + + @Test void testGenSetShooterRelativeVelocity() { + Velocity3d shooterRelativeVelocity = Velocity3d.genSpherical(2.0, -135.0, 0.0); + assertEquals( + shooterRelativeVelocity, + BCEvalParams.genSetShooterRelativeVelocity(shooterRelativeVelocity).getCandidateShooterVelocityRelative() + ); + } }