diff --git a/bot3/control_loops/drivetrain/drivetrain.cc b/bot3/control_loops/drivetrain/drivetrain.cc
index ae313e5..bf81510 100644
--- a/bot3/control_loops/drivetrain/drivetrain.cc
+++ b/bot3/control_loops/drivetrain/drivetrain.cc
@@ -20,6 +20,7 @@
 #include "bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 #include "bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h"
 #include "bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
+#include "bot3/shifter_hall_effect.h"
 #include "frc971/control_loops/coerce_goal.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "frc971/queues/other_sensors.q.h"
@@ -290,7 +291,7 @@
   }
   static bool IsInGear(Gear gear) { return gear == LOW || gear == HIGH; }
 
-  static double MotorSpeed(const ::frc971::constants::ShifterHallEffect &hall_effect,
+  static double MotorSpeed(const constants::ShifterHallEffect &hall_effect,
                            double shifter_position, double velocity) {
     // TODO(austin): G_high, G_low and kWheelRadius
     const double avg_hall_effect =
@@ -303,7 +304,7 @@
     }
   }
 
-  Gear ComputeGear(const ::frc971::constants::ShifterHallEffect &hall_effect,
+  Gear ComputeGear(const constants::ShifterHallEffect &hall_effect,
                    double velocity, Gear current) {
     const double low_omega = MotorSpeed(hall_effect, 0.0, ::std::abs(velocity));
     const double high_omega =
diff --git a/bot3/control_loops/drivetrain/drivetrain_constants.h b/bot3/control_loops/drivetrain/drivetrain_constants.h
index 9d49d59..95a74f5 100644
--- a/bot3/control_loops/drivetrain/drivetrain_constants.h
+++ b/bot3/control_loops/drivetrain/drivetrain_constants.h
@@ -1,17 +1,17 @@
 #ifndef BOT3_CONTROL_LOOPS_DRIVETRAIN_CONSTANTS_H_
 #define BOT3_CONTROL_LOOPS_DRIVETRAIN_CONSTANTS_H_
 
+#include "bot3/shifter_hall_effect.h"
 #include "frc971/control_loops/state_feedback_loop.h"
-#include "frc971/shifter_hall_effect.h"
 
 namespace bot3 {
 namespace control_loops {
 
 // TODO(danielp): Figure out the real values for these constants.
-constexpr ::frc971::constants::ShifterHallEffect kBot3LeftDriveShifter =
-    {555, 657, 660, 560, 0.2, 0.7};
-constexpr ::frc971::constants::ShifterHallEffect kBot3RightDriveShifter =
-    {555, 660, 644, 552, 0.2, 0.7};
+constexpr constants::ShifterHallEffect kBot3LeftDriveShifter =
+    {170, 475, 1.2, 1.0};
+constexpr constants::ShifterHallEffect kBot3RightDriveShifter =
+    {177, 486, 1.2, 1.0};
 
 constexpr double kBot3TurnWidth = 0.5;
 constexpr double kBot3DrivetrainDoneDistance = 0.02;
diff --git a/bot3/input/sensor_receiver.cc b/bot3/input/sensor_receiver.cc
index 6aec89d..c42e609 100644
--- a/bot3/input/sensor_receiver.cc
+++ b/bot3/input/sensor_receiver.cc
@@ -12,8 +12,8 @@
 #include "bot3/control_loops/drivetrain/drivetrain.q.h"
 #include "bot3/control_loops/drivetrain/drivetrain_constants.h"
 #include "bot3/queues/to_log.q.h"
+#include "bot3/shifter_hall_effect.h"
 #include "frc971/queues/other_sensors.q.h"
-#include "frc971/shifter_hall_effect.h"
 
 #ifndef M_PI
 #define M_PI 3.14159265358979323846
@@ -64,21 +64,10 @@
   return in / 16.0 / 1000.0 / (180.0 / M_PI);
 }
 
-double hall_translate(const ::frc971::constants::ShifterHallEffect &k, uint16_t in_low,
-                      uint16_t in_high) {
-  const double low_ratio =
-      0.5 * (in_low - static_cast<double>(k.low_gear_low)) /
-      static_cast<double>(k.low_gear_middle - k.low_gear_low);
-  const double high_ratio =
-      0.5 + 0.5 * (in_high - static_cast<double>(k.high_gear_middle)) /
-      static_cast<double>(k.high_gear_high - k.high_gear_middle);
-
-  // Return low when we are below 1/2, and high when we are above 1/2.
-  if (low_ratio + high_ratio < 1.0) {
-    return low_ratio;
-  } else {
-    return high_ratio;
-  }
+double hall_translate(const constants::ShifterHallEffect & k,
+    uint16_t in_value) {
+    return (in_value - static_cast<double>(k.low)) /
+        static_cast<double>(k.high - k.low);
 }
 
 void PacketReceived(const ::bbb::DataStruct *data,
@@ -137,11 +126,9 @@
       .right_encoder(drivetrain_translate(data->main.right_drive))
       .left_encoder(-drivetrain_translate(data->main.left_drive))
       .left_shifter_position(hall_translate(control_loops::kBot3LeftDriveShifter,
-                                            data->main.low_left_drive_hall,
-                                            data->main.high_left_drive_hall))
+                                            data->main.low_left_drive_hall))
       .right_shifter_position(hall_translate(control_loops::kBot3RightDriveShifter,
-                                             data->main.low_right_drive_hall,
-                                             data->main.high_right_drive_hall))
+                                             data->main.low_right_drive_hall))
       .battery_voltage(battery_translate(data->main.battery_voltage_high,
                                          data->main.battery_voltage_low))
       .Send();
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index e85351e..dba72d4 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -12,12 +12,12 @@
 #include "aos/common/logging/queue_logging.h"
 #include "aos/common/logging/matrix_logging.h"
 
+#include "frc971/constants.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "frc971/control_loops/coerce_goal.h"
 #include "frc971/control_loops/drivetrain/polydrivetrain_cim_plant.h"
 #include "frc971/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/queues/other_sensors.q.h"
-#include "frc971/constants.h"
 #include "frc971/shifter_hall_effect.h"
 
 using frc971::sensors::gyro_reading;
