Add y2023 wrist and roll constants

Signed-off-by: milind-u <milind.upadhyay@gmail.com>
Change-Id: I801842f0852a0e93c10b16cd83621de3b05b039c
diff --git a/y2023/constants.h b/y2023/constants.h
index 64153af..f8e766c 100644
--- a/y2023/constants.h
+++ b/y2023/constants.h
@@ -10,6 +10,8 @@
 #include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
 #include "y2023/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 #include "y2023/control_loops/superstructure/arm/arm_constants.h"
+#include "y2023/control_loops/superstructure/roll/roll_plant.h"
+#include "y2023/control_loops/superstructure/wrist/wrist_plant.h"
 
 namespace y2023 {
 namespace constants {
@@ -65,17 +67,78 @@
     return (24.0 / 36.0) * (24.0 / 58.0) * (15.0 / 95.0);
   }
 
+  static constexpr double kProximalPotRadiansPerVolt() {
+    return kProximalPotRatio() * (10.0 /*turns*/ / 5.0 /*volts*/) *
+           (2 * M_PI /*radians*/);
+  }
+
   static constexpr double kDistalEncoderCountsPerRevolution() { return 4096.0; }
   static constexpr double kDistalEncoderRatio() { return (15.0 / 95.0); }
   static constexpr double kMaxDistalEncoderPulsesPerSecond() {
     return control_loops::superstructure::arm::kArmConstants.free_speed /
            (2.0 * M_PI) / control_loops::superstructure::arm::kArmConstants.g2 /
-           kDistalEncoderRatio() * kProximalEncoderCountsPerRevolution();
+           kDistalEncoderRatio() * kDistalEncoderCountsPerRevolution();
   }
   static constexpr double kDistalPotRatio() {
     return (24.0 / 36.0) * (18.0 / 66.0) * (15.0 / 95.0);
   }
 
+  static constexpr double kDistalPotRadiansPerVolt() {
+    return kDistalPotRatio() * (10.0 /*turns*/ / 5.0 /*volts*/) *
+           (2 * M_PI /*radians*/);
+  }
+
+  // Roll joint
+  static constexpr double kRollJointEncoderCountsPerRevolution() {
+    return 4096.0;
+  }
+
+  static constexpr double kRollJointEncoderRatio() { return (18.0 / 48.0); }
+
+  static constexpr double kRollJointPotRatio() { return (18.0 / 48.0); }
+
+  static constexpr double kRollJointPotRadiansPerVolt() {
+    return kRollJointPotRatio() * (3.0 /*turns*/ / 5.0 /*volts*/) *
+           (2 * M_PI /*radians*/);
+  }
+
+  static constexpr double kMaxRollJointEncoderPulsesPerSecond() {
+    return control_loops::superstructure::roll::kFreeSpeed / (2.0 * M_PI) *
+           control_loops::superstructure::roll::kOutputRatio /
+           kRollJointEncoderRatio() * kRollJointEncoderCountsPerRevolution();
+  }
+
+  static constexpr ::frc971::constants::Range kRollJointRange() {
+    return ::frc971::constants::Range{
+        -1.05,  // Back Hard
+        1.44,   // Front Hard
+        -0.89,  // Back Soft
+        1.26    // Front Soft
+    };
+  }
+
+  // Wrist
+  static constexpr double kWristEncoderCountsPerRevolution() { return 4096.0; }
+
+  static constexpr double kWristEncoderRatio() {
+    return (24.0 / 36.0) * (36.0 / 60.0);
+  }
+
+  static constexpr double kMaxWristEncoderPulsesPerSecond() {
+    return control_loops::superstructure::wrist::kFreeSpeed / (2.0 * M_PI) *
+           control_loops::superstructure::wrist::kOutputRatio /
+           kWristEncoderRatio() * kWristEncoderCountsPerRevolution();
+  }
+
+  static constexpr ::frc971::constants::Range kWristRange() {
+    return ::frc971::constants::Range{
+        -1.05,  // Back Hard
+        1.44,   // Front Hard
+        -0.89,  // Back Soft
+        1.26    // Front Soft
+    };
+  }
+
   struct PotConstants {
     ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
         ::frc971::zeroing::RelativeEncoderZeroingEstimator>
@@ -97,6 +160,12 @@
 
   ArmJointConstants arm_proximal;
   ArmJointConstants arm_distal;
+
+  PotAndAbsEncoderConstants roll_joint;
+
+  ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
+      ::frc971::zeroing::AbsoluteEncoderZeroingEstimator>
+      wrist;
 };
 
 // Creates and returns a Values instance for the constants.