Update intake and climber constants

Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: Ib7318810b000d3c1bc1a9a086af7048c3c9704da
diff --git a/y2024/constants.h b/y2024/constants.h
index 1d0f5d3..44c5c23 100644
--- a/y2024/constants.h
+++ b/y2024/constants.h
@@ -55,9 +55,7 @@
     return 4096.0;
   }
 
-  static constexpr double kIntakePivotEncoderRatio() {
-    return (16.0 / 64.0) * (18.0 / 62.0);
-  }
+  static constexpr double kIntakePivotEncoderRatio() { return (15.0 / 24.0); }
 
   static constexpr double kMaxIntakePivotEncoderPulsesPerSecond() {
     return control_loops::superstructure::intake_pivot::kFreeSpeed /
@@ -67,20 +65,22 @@
            kIntakePivotEncoderCountsPerRevolution();
   }
 
-  // TODO(Filip): Update climber values once we have them.
   static constexpr double kClimberEncoderCountsPerRevolution() {
     return 4096.0;
   }
 
-  static constexpr double kClimberEncoderRatio() {
-    return (16.0 / 64.0) * (18.0 / 62.0);
+  static constexpr double kClimberEncoderRatio() { return (16.0 / 60.0); }
+
+  static constexpr double kClimberPotMetersPerRevolution() {
+    return 16 * 0.25 * 0.0254 * kClimberEncoderRatio();
   }
 
-  static constexpr double kClimberPotRatio() { return 16.0 / 64.0; }
+  static constexpr double kClimberEncoderMetersPerRevolution() {
+    return kClimberPotMetersPerRevolution();
+  }
 
-  static constexpr double kClimberPotRadiansPerVolt() {
-    return kClimberPotRatio() * (3.0 /*turns*/ / 5.0 /*volts*/) *
-           (2 * M_PI /*radians*/);
+  static constexpr double kClimberPotMetersPerVolt() {
+    return kClimberPotMetersPerRevolution() * (10.0 /*turns*/ / 5.0 /*volts*/);
   }
 
   static constexpr double kMaxClimberEncoderPulsesPerSecond() {
diff --git a/y2024/constants/common.jinja2 b/y2024/constants/common.jinja2
index bcf0362..cb663fa 100644
--- a/y2024/constants/common.jinja2
+++ b/y2024/constants/common.jinja2
@@ -16,9 +16,8 @@
 }
 %}
 
-{# TODO(Filip): Update climber values #}
-{% set climber_encoder_ratio = (1.0 / 1.0) %}
-{% set climber_radius = 0.436496 %}
+{% set climber_encoder_ratio = (16.0 / 60.0) %}
+{% set climber_radius = 16.0 * 0.25 / 2.0 / pi %}
 {%
 set climber_zero = {
     "average_filter_size": zeroing_sample_size,
diff --git a/y2024/control_loops/python/climber.py b/y2024/control_loops/python/climber.py
index 10aeff9..9dd347b 100644
--- a/y2024/control_loops/python/climber.py
+++ b/y2024/control_loops/python/climber.py
@@ -14,19 +14,19 @@
 except gflags.DuplicateFlagError:
     pass
 
-# TODO(Filip): Update information the climber when design is finalized.
 kClimber = linear_system.LinearSystemParams(
     name='Climber',
-    motor=control_loop.Falcon(),
-    G=(1.0 / 4.0) * (1.0 / 3.0) * (1.0 / 3.0),
-    radius=22 * 0.25 / numpy.pi / 2.0 * 0.0254,
-    mass=2.0,
+    motor=control_loop.KrakenFOC(),
+    G=(8. / 60.) * (16. / 60.),
+    radius=16 * 0.25 / numpy.pi / 2.0 * 0.0254,
+    mass=1.0,
     q_pos=0.10,
     q_vel=1.35,
     kalman_q_pos=0.12,
     kalman_q_vel=2.00,
     kalman_q_voltage=35.0,
-    kalman_r_position=0.05)
+    kalman_r_position=0.05,
+)
 
 
 def main(argv):
diff --git a/y2024/control_loops/python/intake_pivot.py b/y2024/control_loops/python/intake_pivot.py
index f32aa8b..81a616f 100644
--- a/y2024/control_loops/python/intake_pivot.py
+++ b/y2024/control_loops/python/intake_pivot.py
@@ -20,8 +20,8 @@
 kIntakePivot = angular_system.AngularSystemParams(
     name='IntakePivot',
     motor=control_loop.KrakenFOC(),
-    G=(16.0 / 60.0) * (18.0 / 62.0) * (18.0 / 62.0) * (15.0 / 24.0),
-    J=0.34,  # Borrowed from 2022, 0.035 seems too low
+    G=(16. / 60.) * (18. / 62.) * (18. / 62.) * (15. / 24.),
+    J=0.25,
     q_pos=0.40,
     q_vel=20.0,
     kalman_q_pos=0.12,
@@ -52,4 +52,4 @@
 if __name__ == '__main__':
     argv = FLAGS(sys.argv)
     glog.init()
-    sys.exit(main(argv))
\ No newline at end of file
+    sys.exit(main(argv))
diff --git a/y2024/wpilib_interface.cc b/y2024/wpilib_interface.cc
index b396426..8050b57 100644
--- a/y2024/wpilib_interface.cc
+++ b/y2024/wpilib_interface.cc
@@ -78,7 +78,7 @@
 constexpr double kMaxBringupPower = 12.0;
 
 double climber_pot_translate(double voltage) {
-  return voltage * Values::kClimberPotRadiansPerVolt();
+  return voltage * Values::kClimberPotMetersPerVolt();
 }
 
 double drivetrain_velocity_translate(double in) {
@@ -140,7 +140,8 @@
 
       CopyPosition(climber_encoder_, builder->add_climber(),
                    Values::kClimberEncoderCountsPerRevolution(),
-                   Values::kClimberEncoderRatio(), climber_pot_translate, true,
+                   Values::kClimberEncoderMetersPerRevolution(),
+                   climber_pot_translate, true,
                    robot_constants_->robot()
                        ->climber_constants()
                        ->potentiometer_offset());