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