Added units per volt ratio constants

This makes it easier to convert subsystem
measurement units to volts instead of having to
manually multiply the pot ratios.

Signed-off-by: Nathan Leong <100028864@mvla.net>
Change-Id: If0d8d21db50bffd3058c783bbe2b274fd714eeac
Signed-off-by: Nathan Leong <100028864@mvla.net>
diff --git a/y2022/constants.cc b/y2022/constants.cc
index c97058e..af6e829 100644
--- a/y2022/constants.cc
+++ b/y2022/constants.cc
@@ -10,6 +10,7 @@
 #include "absl/base/call_once.h"
 #include "aos/mutex/mutex.h"
 #include "aos/network/team_number.h"
+#include "frc971/wpilib/wpilib_utils.h"
 #include "glog/logging.h"
 #include "y2022/control_loops/superstructure/catapult/integral_catapult_plant.h"
 #include "y2022/control_loops/superstructure/climber/integral_climber_plant.h"
@@ -190,21 +191,25 @@
               {5, {4.0}},
           });
 
-      climber->potentiometer_offset = 0.0;
-      intake_front->potentiometer_offset = 0.0;
-      intake_front->subsystem_params.zeroing_constants
-          .measured_absolute_position = 0.0;
-      intake_back->potentiometer_offset = 0.0;
-      intake_back->subsystem_params.zeroing_constants
-          .measured_absolute_position = 0.0;
-      turret->potentiometer_offset = 0.0;
-      turret->subsystem_params.zeroing_constants.measured_absolute_position =
-          0.0;
-      flipper_arm_left->potentiometer_offset = 0.0;
-      flipper_arm_right->potentiometer_offset = 0.0;
+      climber->potentiometer_offset = -0.035;
 
-      catapult_params->zeroing_constants.measured_absolute_position = 0.0;
-      catapult->potentiometer_offset = 0.0;
+      intake_front->potentiometer_offset = 3.122;
+      intake_front->subsystem_params.zeroing_constants
+          .measured_absolute_position = 0.175;
+
+      intake_back->potentiometer_offset = 3.365;
+      intake_back->subsystem_params.zeroing_constants
+          .measured_absolute_position = 0.052;
+
+      turret->potentiometer_offset = -10.668;
+      turret->subsystem_params.zeroing_constants.measured_absolute_position =
+          1.308;
+
+      flipper_arm_left->potentiometer_offset = -6.40;
+      flipper_arm_right->potentiometer_offset = 5.56;
+
+      catapult_params->zeroing_constants.measured_absolute_position = 1.717;
+      catapult->potentiometer_offset = -2.034;
 
       ball_color->reference_red = {0, 0, 1, 1};
       ball_color->reference_blue = {0, 0, 1, 1};
@@ -348,6 +353,47 @@
       LOG(FATAL) << "unknown team: " << team;
   }
 
+  CHECK(frc971::wpilib::SafePotVoltageRange(
+      Values::kClimberRange(), climber->potentiometer_offset,
+      [](double meters) { return meters / Values::kClimberPotMetersPerVolt(); },
+      false))
+      << "Couldn't translate climber pot";
+  CHECK(frc971::wpilib::SafePotVoltageRange(
+      Values::kFlipperArmRange(), flipper_arm_left->potentiometer_offset,
+      [](double radians) {
+        return radians / Values::kFlipperArmsPotRadiansPerVolt();
+      },
+      false))
+      << "Couldn't translate flipper left pot";
+  CHECK(frc971::wpilib::SafePotVoltageRange(
+      Values::kFlipperArmRange(), flipper_arm_right->potentiometer_offset,
+      [](double radians) {
+        return radians / Values::kFlipperArmsPotRadiansPerVolt();
+      },
+      true))
+      << "Couldn't translate flipper right pot";
+  CHECK(frc971::wpilib::SafePotVoltageRange(
+      Values::kIntakeRange(), intake_front->potentiometer_offset,
+      [](double radians) {
+        return radians / Values::kIntakePotRadiansPerVolt();
+      },
+      true))
+      << "Couldn't translate front intake pot";
+  CHECK(frc971::wpilib::SafePotVoltageRange(
+      Values::kIntakeRange(), intake_back->potentiometer_offset,
+      [](double radians) {
+        return radians / Values::kIntakePotRadiansPerVolt();
+      },
+      true))
+      << "Couldn't translate back intake pot";
+  CHECK(frc971::wpilib::SafePotVoltageRange(
+      *turret_range, turret->potentiometer_offset,
+      [](double radians) {
+        return radians / Values::kTurretPotRadiansPerVolt();
+      },
+      false))
+      << "Couldn't translate turret pot";
+
   return r;
 }