Add shooter to wpilib_interface

Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: I56e53cbfdd1a4e0cf20f95967b39da6f32e262ca
diff --git a/y2024/constants.h b/y2024/constants.h
index 2e482e6..2eff408 100644
--- a/y2024/constants.h
+++ b/y2024/constants.h
@@ -11,9 +11,12 @@
 #include "frc971/zeroing/absolute_encoder.h"
 #include "frc971/zeroing/pot_and_absolute_encoder.h"
 #include "y2024/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2024/control_loops/superstructure/altitude/altitude_plant.h"
+#include "y2024/control_loops/superstructure/catapult/catapult_plant.h"
 #include "y2024/control_loops/superstructure/climber/climber_plant.h"
 #include "y2024/control_loops/superstructure/extend/extend_plant.h"
 #include "y2024/control_loops/superstructure/intake_pivot/intake_pivot_plant.h"
+#include "y2024/control_loops/superstructure/turret/turret_plant.h"
 
 namespace y2024::constants {
 
@@ -91,6 +94,25 @@
   }
 
   static constexpr double kExtendEncoderCountsPerRevolution() { return 4096.0; }
+  // TODO: (niko) add the gear ratios for the intake once we have them
+  static constexpr double kCatapultEncoderCountsPerRevolution() {
+    return 4096.0;
+  }
+
+  static constexpr double kCatapultEncoderRatio() { return 12.0 / 24.0; }
+
+  static constexpr double kCatapultPotRatio() { return 12.0 / 24.0; }
+
+  static constexpr double kCatapultPotRadiansPerVolt() {
+    return kCatapultPotRatio() * (3.0 /*turns*/ / 5.0 /*volts*/) *
+           (2 * M_PI /*radians*/);
+  }
+
+  static constexpr double kMaxCatapultEncoderPulsesPerSecond() {
+    return control_loops::superstructure::catapult::kFreeSpeed / (2.0 * M_PI) *
+           control_loops::superstructure::catapult::kOutputRatio /
+           kCatapultEncoderRatio() * kCatapultEncoderCountsPerRevolution();
+  }
 
   static constexpr double kExtendEncoderRatio() { return 1.0; }
 
@@ -109,6 +131,42 @@
            kExtendEncoderRatio() * kExtendEncoderCountsPerRevolution();
   }
 
+  static constexpr double kTurretEncoderCountsPerRevolution() { return 4096.0; }
+
+  static constexpr double kTurretPotRatio() {
+    return (22.0 / 100.0) * (28.0 / 48.0) * (36.0 / 24.0);
+  }
+
+  static constexpr double kTurretEncoderRatio() { return 22.0 / 100.0; }
+
+  static constexpr double kTurretPotRadiansPerVolt() {
+    return kTurretPotRatio() * (10.0 /*turns*/ / 5.0 /*volts*/) *
+           (2 * M_PI /*radians*/);
+  }
+  static constexpr double kMaxTurretEncoderPulsesPerSecond() {
+    return control_loops::superstructure::turret::kFreeSpeed / (2.0 * M_PI) *
+           control_loops::superstructure::turret::kOutputRatio /
+           kTurretEncoderRatio() * kTurretEncoderCountsPerRevolution();
+  }
+
+  static constexpr double kAltitudeEncoderCountsPerRevolution() {
+    return 4096.0;
+  }
+
+  static constexpr double kAltitudeEncoderRatio() { return 16.0 / 162.0; }
+
+  static constexpr double kAltitudePotRatio() { return 16.0 / 162.0; }
+
+  static constexpr double kAltitudePotRadiansPerVolt() {
+    return kAltitudePotRatio() * (10.0 /*turns*/ / 5.0 /*volts*/) *
+           (2 * M_PI /*radians*/);
+  }
+  static constexpr double kMaxAltitudeEncoderPulsesPerSecond() {
+    return control_loops::superstructure::altitude::kFreeSpeed / (2.0 * M_PI) *
+           control_loops::superstructure::altitude::kOutputRatio /
+           kAltitudeEncoderRatio() * kAltitudeEncoderCountsPerRevolution();
+  }
+
   // 20 -> 28 reduction to a 0.5" radius roller
   static constexpr double kTransferRollerOutputRatio = (20.0 / 28.0) * 0.0127;
   // 20 -> 34 reduction, and the 34 is on a 0.625" radius roller