Add calibration for the practice robot.

Change-Id: I890e77933e7e56d9e2ed6a19800a9b5d4d966091
diff --git a/y2019/vision/calibrate_9971.sh b/y2019/vision/calibrate_9971.sh
new file mode 100755
index 0000000..9a05ce2
--- /dev/null
+++ b/y2019/vision/calibrate_9971.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+set -e
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+# We need to rebuild to save the old constants since the .cc file is baked into
+# the executable.
+calibration() {
+  bazel build -c opt //y2019/vision:global_calibration
+
+  ../../bazel-bin/y2019/vision/global_calibration "$@"
+}
+
+# Calibrate the comp robot.  This is assuming the data file captured has been
+# extracted into the users home directory.
+calibration \
+    --camera_id 1 \
+    --tape_start_x=-12.5 \
+    --tape_start_y=0.0 \
+    --tape_direction_x=-1.0 \
+    --tape_direction_y=0.0 \
+    --beginning_tape_measure_reading=16 \
+    --image_count=45 \
+    --constants=constants.cc \
+    --prefix ~/cam1/debug_viewer_jpeg_
+
+calibration \
+    --camera_id 14 \
+    --tape_start_x=12.5 \
+    --tape_start_y=0.0 \
+    --tape_direction_x=1.0 \
+    --tape_direction_y=0.0 \
+    --beginning_tape_measure_reading=16 \
+    --image_count=71 \
+    --constants=constants.cc \
+    --prefix ~/cam14/debug_viewer_jpeg_
+
+calibration \
+    --camera_id 15 \
+    --tape_start_x=12.5 \
+    --tape_start_y=0.0 \
+    --tape_direction_x=1.0 \
+    --tape_direction_y=0.0 \
+    --beginning_tape_measure_reading=25 \
+    --image_count=62 \
+    --constants=constants.cc \
+    --prefix ~/cam15/debug_viewer_jpeg_
+
+calibration \
+    --camera_id 17 \
+    --tape_start_x=-6.5 \
+    --tape_start_y=11.0 \
+    --tape_direction_x=0.0 \
+    --tape_direction_y=-1.0 \
+    --beginning_tape_measure_reading=29 \
+    --image_count=58 \
+    --constants=constants.cc \
+    --prefix ~/cam17/debug_viewer_jpeg_
+
+calibration \
+    --camera_id 18 \
+    --tape_start_x=6.5 \
+    --tape_start_y=-11.0 \
+    --tape_direction_x=0.0 \
+    --tape_direction_y=1.0 \
+    --beginning_tape_measure_reading=27 \
+    --image_count=60 \
+    --constants=constants.cc \
+    --prefix ~/cam18/debug_viewer_jpeg_
diff --git a/y2019/vision/constants.cc b/y2019/vision/constants.cc
index 44a143c..0fa8eda 100644
--- a/y2019/vision/constants.cc
+++ b/y2019/vision/constants.cc
@@ -5,6 +5,24 @@
 
 static constexpr double kInchesToMeters = 0.0254;
 
+CameraCalibration camera_1 = {
+    {
+        -0.874694 / 180.0 * M_PI, 338.619, 2.14651 / 180.0 * M_PI,
+    },
+    {
+        {{-5.44063 * kInchesToMeters, 2.83405 * kInchesToMeters,
+          33.0386 * kInchesToMeters}},
+        181.723 / 180.0 * M_PI,
+    },
+    {
+        1,
+        {{-12.5 * kInchesToMeters, 0.0}},
+        {{-1 * kInchesToMeters, 0.0}},
+        16,
+        "/home/alex/cam1/debug_viewer_jpeg_",
+        45,
+    }};
+
 CameraCalibration camera_4 = {
     {
         3.73623 / 180.0 * M_PI, 588.1, 0.269291 / 180.0 * M_PI,
@@ -131,6 +149,42 @@
         75,
     }};
 
+CameraCalibration camera_14 = {
+    {
+        -0.0729684 / 180.0 * M_PI, 343.569, 0.685893 / 180.0 * M_PI,
+    },
+    {
+        {{5.53867 * kInchesToMeters, 2.08897 * kInchesToMeters,
+          33.1766 * kInchesToMeters}},
+        -12.4121 / 180.0 * M_PI,
+    },
+    {
+        14,
+        {{12.5 * kInchesToMeters, 0.0}},
+        {{1 * kInchesToMeters, 0.0}},
+        16,
+        "/home/alex/cam14/debug_viewer_jpeg_",
+        71,
+    }};
+
+CameraCalibration camera_15 = {
+    {
+        -0.715538 / 180.0 * M_PI, 336.509, 1.54169 / 180.0 * M_PI,
+    },
+    {
+        {{4.57935 * kInchesToMeters, 4.16624 * kInchesToMeters,
+          33.433 * kInchesToMeters}},
+        20.9856 / 180.0 * M_PI,
+    },
+    {
+        15,
+        {{12.5 * kInchesToMeters, 0.0}},
+        {{1 * kInchesToMeters, 0.0}},
+        25,
+        "/home/alex/cam15/debug_viewer_jpeg_",
+        62,
+    }};
+
 CameraCalibration camera_16 = {
     {
         -1.30906 / 180.0 * M_PI, 347.372, 2.18486 / 180.0 * M_PI,
@@ -149,6 +203,42 @@
         55,
     }};
 
+CameraCalibration camera_17 = {
+    {
+        34.7631 / 180.0 * M_PI, 337.946, 2.48943 / 180.0 * M_PI,
+    },
+    {
+        {{3.15808 * kInchesToMeters, -2.5734 * kInchesToMeters,
+          11.8507 * kInchesToMeters}},
+        -92.1953 / 180.0 * M_PI,
+    },
+    {
+        17,
+        {{-6.5 * kInchesToMeters, 11 * kInchesToMeters}},
+        {{0.0, -1 * kInchesToMeters}},
+        29,
+        "/home/alex/cam17/debug_viewer_jpeg_",
+        58,
+    }};
+
+CameraCalibration camera_18 = {
+    {
+        33.9292 / 180.0 * M_PI, 338.44, -1.71889 / 180.0 * M_PI,
+    },
+    {
+        {{3.82945 * kInchesToMeters, 5.51444 * kInchesToMeters,
+          12.3803 * kInchesToMeters}},
+        96.0112 / 180.0 * M_PI,
+    },
+    {
+        18,
+        {{6.5 * kInchesToMeters, -11 * kInchesToMeters}},
+        {{0.0, 1 * kInchesToMeters}},
+        27,
+        "/home/alex/cam18/debug_viewer_jpeg_",
+        60,
+    }};
+
 CameraCalibration camera_19 = {
     {
         -0.341036 / 180.0 * M_PI, 324.626, 1.2545 / 180.0 * M_PI,
@@ -169,6 +259,8 @@
 
 const CameraCalibration *GetCamera(int camera_id) {
   switch (camera_id) {
+    case 1:
+      return &camera_1;
     case 4:
       return &camera_4;
     case 5:
@@ -183,8 +275,16 @@
       return &camera_9;
     case 10:
       return &camera_10;
+    case 14:
+      return &camera_14;
+    case 15:
+      return &camera_15;
     case 16:
       return &camera_16;
+    case 17:
+      return &camera_17;
+    case 18:
+      return &camera_18;
     case 19:
       return &camera_19;
     default: