Add claw control loop.

It's based pretty heavily on the fridge loop. Currently, all the
tests pass.

Change-Id: Ieb386dfa5c3fe2d34e2d191fa39a44dc77ee6ab6
diff --git a/frc971/constants.cc b/frc971/constants.cc
index 3e7b4c7..e197f99 100644
--- a/frc971/constants.cc
+++ b/frc971/constants.cc
@@ -80,6 +80,10 @@
 
 const int kZeroingSampleSize = 20;
 
+// TODO(danielp): All these values might need to change.
+const double kClawPistonSwitchTime = 0.4;
+const double kClawZeroingRange = 0.3;
+
 const Values *DoGetValuesForTeam(uint16_t team) {
   switch (team) {
     case 1:  // for tests
@@ -114,9 +118,11 @@
              0.1000000000, 1.2000000000},
 
             // Zeroing constants for wrist.
-            // TODO(sensors): Get actual offsets for these.
-            {kZeroingSampleSize, kClawEncoderIndexDifference, 0.0},
+            {kZeroingSampleSize, kClawEncoderIndexDifference, 0.35},
+
             0.0,
+            kClawPistonSwitchTime,
+            kClawZeroingRange
           },
 
           {
@@ -180,9 +186,11 @@
              0.1000000000, 1.2000000000},
 
             // Zeroing constants for wrist.
-            // TODO(sensors): Get actual offsets for these.
             {kZeroingSampleSize, kClawEncoderIndexDifference, 0.0},
+
             0.0,
+            kClawPistonSwitchTime,
+            kClawZeroingRange
           },
 
           {
@@ -246,6 +254,9 @@
            // TODO(sensors): Get actual offsets for these.
            {kZeroingSampleSize, kClawEncoderIndexDifference, 0.977913},
            6.1663463999999992,
+
+           kClawPistonSwitchTime,
+           kClawZeroingRange
           },
 
           {// Elevator values, in meters.