Add arm code to 2023

Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: If97b4dd4c8fb16371e21ac6e9667a2d52b1b53a6
diff --git a/y2023/constants.h b/y2023/constants.h
index edcb794..64153af 100644
--- a/y2023/constants.h
+++ b/y2023/constants.h
@@ -9,6 +9,7 @@
 #include "frc971/control_loops/pose.h"
 #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"
 
 namespace y2023 {
 namespace constants {
@@ -51,6 +52,29 @@
            control_loops::drivetrain::kHighOutputRatio *
            control_loops::drivetrain::kWheelRadius;
   }
+  static constexpr double kProximalEncoderCountsPerRevolution() {
+    return 4096.0;
+  }
+  static constexpr double kProximalEncoderRatio() { return (15.0 / 95.0); }
+  static constexpr double kMaxProximalEncoderPulsesPerSecond() {
+    return control_loops::superstructure::arm::kArmConstants.free_speed /
+           (2.0 * M_PI) / control_loops::superstructure::arm::kArmConstants.g1 /
+           kProximalEncoderRatio() * kProximalEncoderCountsPerRevolution();
+  }
+  static constexpr double kProximalPotRatio() {
+    return (24.0 / 36.0) * (24.0 / 58.0) * (15.0 / 95.0);
+  }
+
+  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();
+  }
+  static constexpr double kDistalPotRatio() {
+    return (24.0 / 36.0) * (18.0 / 66.0) * (15.0 / 95.0);
+  }
 
   struct PotConstants {
     ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
@@ -65,6 +89,14 @@
         subsystem_params;
     double potentiometer_offset;
   };
+
+  struct ArmJointConstants {
+    ::frc971::constants::PotAndAbsoluteEncoderZeroingConstants zeroing;
+    double potentiometer_offset;
+  };
+
+  ArmJointConstants arm_proximal;
+  ArmJointConstants arm_distal;
 };
 
 // Creates and returns a Values instance for the constants.