diff --git a/src/main/deploy/ShooterData.csv b/src/main/deploy/ShooterData.csv index b0f3627..16e194d 100644 --- a/src/main/deploy/ShooterData.csv +++ b/src/main/deploy/ShooterData.csv @@ -1,4 +1,4 @@ -Distance (in) ,Hood Ext. (u) ,Drum Velocity (u/ds) ,Time (s) +Distance (in) ,Hood Ext. (u) ,Drum Velocity (u/ds) ,Duration (s) 96 ,-25.00 ,0.425 ,0 144 ,-47.57 ,0. ,0 192 ,-55.55 ,0.500 ,0 diff --git a/src/main/java/frc4388/robot/subsystems/BoomBoom.java b/src/main/java/frc4388/robot/subsystems/BoomBoom.java index b7eaced..a2e87df 100644 --- a/src/main/java/frc4388/robot/subsystems/BoomBoom.java +++ b/src/main/java/frc4388/robot/subsystems/BoomBoom.java @@ -47,14 +47,12 @@ public class BoomBoom extends SubsystemBase { // SimpleMotorFeedforward feedforward = new SimpleMotorFeedforward(69, 42, 0); //get real values later public static class ShooterTableEntry { - public Double distance, hoodExt, drumVelocity; + public Double distance, hoodExt, drumVelocity, duration; } private ShooterTableEntry[] m_shooterTable; - /* - * Creates new BoomBoom subsystem, has drum shooter and angle adjuster - */ - /** Creates a new BoomBoom. */ + + /** Creates a new BoomBoom, which has a drum shooter and angle adjuster. */ public BoomBoom(WPI_TalonFX shooterFalconLeft, WPI_TalonFX shooterFalconRight) { m_shooterFalconLeft = shooterFalconLeft; m_shooterFalconRight = shooterFalconRight; @@ -94,20 +92,39 @@ public class BoomBoom extends SubsystemBase { } } + /** + * This is a function that takes a value (distance) and returns a value (drumVelocity) that is a + * linear interpolation of the two values (drumVelocity) at the two closest points in the table + * (m_shooterTable) to the given value (distance). + * @param distance Distance in shooter table + * @return Drum Velocity in units per 100 ms + */ public Double getVelocity(final Double distance) { - // This is a function that takes a value (distance) and returns a value (drumVelocity) that is a - // linear interpolation of the two values (drumVelocity) at the two closest points in the table - // (m_shooterTable) to the given value (distance). return linearInterpolate(m_shooterTable, distance, e -> e.distance, e -> e.drumVelocity).doubleValue(); } + /** + * This is a function that takes a value (distance) and returns a value (hoodExt) that is a linear + * interpolation of the two values (hoodExt) at the two closest points in the table (m_shooterTable) + * to the given value (distance). + * @param distance Distance in shooter table + * @return Hood extension in units + */ public Double getHood(final Double distance) { - // This is a function that takes a value (distance) and returns a value (hoodExt) that is a linear - // interpolation of the two values (hoodExt) at the two closest points in the table (m_shooterTable) - // to the given value (distance). return linearInterpolate(m_shooterTable, distance, e -> e.distance, e -> e.hoodExt).doubleValue(); } + /** + * This is a function that takes a value (distance) and returns a value (duration) that is a linear + * interpolation of the two values (duration) at the two closest points in the table (m_shooterTable) + * to the given value (distance). + * @param distance Distance in shooter table + * @return Shot duration in seconds + */ + public Double getDuration(final Double distance) { + return linearInterpolate(m_shooterTable, distance, e -> e.distance, e -> e.duration).doubleValue(); + } + /** * Using the given lookup value (x) and lookup getter function, locates the nearest entries in the * given table to be used as the lower (x0) and upper (x1) bounds for interpolation. Returns the