Update Hood to use AbsoluteAndAbsolute position

Change-Id: I3e88718560a6e3983681a3430dc31b5431c1a743
diff --git a/y2020/constants.h b/y2020/constants.h
index f0e3564..81e6dd0 100644
--- a/y2020/constants.h
+++ b/y2020/constants.h
@@ -39,7 +39,20 @@
   // Hood
   static constexpr double kHoodEncoderCountsPerRevolution() { return 4096.0; }
 
-  static constexpr double kHoodEncoderRatio() { return 8.0 / 72.0; }
+  static constexpr double kHoodEncoderRatio() {
+    // TODO: This math is not quite right
+    // 10.211 in of travel gets you 1 radian on the output
+    const double radians_per_in_travel = 1.0 / 10.211;
+
+    // one turn on the leadscrew gets you 12.0 mm travel
+    const double mm_travel_per_radian = 12.0 / (2.0 * M_PI);
+    const double in_travel_per_radian = mm_travel_per_radian / 25.4;
+
+    // units reduce; radians on the encoder * this number = radians on the hood
+    return in_travel_per_radian * radians_per_in_travel / 0.94816;
+  }
+
+  static constexpr double kHoodSingleTurnEncoderRatio() { return 8.0 / 72.0; }
 
   static constexpr double kMaxHoodEncoderPulsesPerSecond() {
     return control_loops::superstructure::hood::kFreeSpeed / (2.0 * M_PI) *
@@ -50,14 +63,14 @@
   static constexpr ::frc971::constants::Range kHoodRange() {
     return ::frc971::constants::Range{
         0.00,  // Back Hard
-        0.64,   // Front Hard
-        0.01,    // Back Soft
-        0.63    // Front Soft
+        0.64,  // Front Hard
+        0.01,  // Back Soft
+        0.63   // Front Soft
     };
   }
 
   ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
-      ::frc971::zeroing::AbsoluteEncoderZeroingEstimator>
+      ::frc971::zeroing::AbsoluteAndAbsoluteEncoderZeroingEstimator>
       hood;
 
   // Intake
@@ -152,7 +165,6 @@
            kFinisherEncoderRatio() * kFinisherEncoderCountsPerRevolution();
   }
 
-
   static constexpr double kAcceleratorEncoderCountsPerRevolution() {
     return 2048.0;
   }