Adding a camera_id to our intrinsic calibration file

We'll need to manually label and track these, since the pi cameras
don't have an internal serial number (as best I can tell).

I think this is important, since we can swap cameras between pi's
and it's hard to be sure we've got the right calibration based on
pi hostame.

Including calibration files for cameras 22-01 to 22-07

Added a little detail to the CHECK, since it wasn't very clear

Change-Id: I6dd6f8e19355bb0fefce2fcb7fd79ba5c95fb374
Signed-off-by: Jim Ostrowski <yimmy13@gmail.com>
diff --git a/y2022/vision/blob_detector.cc b/y2022/vision/blob_detector.cc
index ce257a9..96d7ffd 100644
--- a/y2022/vision/blob_detector.cc
+++ b/y2022/vision/blob_detector.cc
@@ -336,9 +336,9 @@
   blob_result->filtered_blobs = filtered_pair.first;
   blob_result->centroid = filtered_pair.second;
   auto end = aos::monotonic_clock::now();
-  LOG(INFO) << "Blob detection elapsed time: "
-            << std::chrono::duration<double, std::milli>(end - start).count()
-            << " ms";
+  VLOG(2) << "Blob detection elapsed time: "
+          << std::chrono::duration<double, std::milli>(end - start).count()
+          << " ms";
 }
 
 }  // namespace vision
diff --git a/y2022/vision/calib_files/calibration_pi-971-1_cam-22-01_2022-02-12_14-35_00.000000000.json b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-01_2022-02-12_14-35_00.000000000.json
new file mode 100644
index 0000000..3c30b15
--- /dev/null
+++ b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-01_2022-02-12_14-35_00.000000000.json
@@ -0,0 +1,24 @@
+{
+ "node_name": "pi1",
+ "team_number": 971,
+ "intrinsics": [
+  391.63916,
+  0.0,
+  312.691162,
+  0.0,
+  391.535889,
+  267.138672,
+  0.0,
+  0.0,
+  1.0
+ ],
+ "dist_coeffs": [
+  0.121374,
+  -0.203352,
+  0.000325,
+  0.002694,
+  0.054089
+ ],
+ "calibration_timestamp": 1635611589630802881,
+ "camera_id": "22-01"
+}
diff --git a/y2022/vision/calib_files/calibration_pi-971-1_cam-22-02_2022-01-28_05-35-16.002911868.json b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-02_2022-01-28_05-35-16.002911868.json
new file mode 100644
index 0000000..b147867
--- /dev/null
+++ b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-02_2022-01-28_05-35-16.002911868.json
@@ -0,0 +1,24 @@
+{
+ "node_name": "pi1",
+ "team_number": 971,
+ "intrinsics": [
+  390.833618,
+  0.0,
+  298.229218,
+  0.0,
+  390.547882,
+  251.143417,
+  0.0,
+  0.0,
+  1.0
+ ],
+ "dist_coeffs": [
+  0.120491,
+  -0.190643,
+  0.000534,
+  -0.000345,
+  0.029808
+ ],
+ "calibration_timestamp": 1643348116002911868,
+ "camera_id": "22-02"
+}
\ No newline at end of file
diff --git a/y2022/vision/calib_files/calibration_pi-971-1_cam-22-03_2022-02-12_16-53-00.000000000.json b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-03_2022-02-12_16-53-00.000000000.json
new file mode 100644
index 0000000..a107065
--- /dev/null
+++ b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-03_2022-02-12_16-53-00.000000000.json
@@ -0,0 +1,24 @@
+{
+ "node_name": "pi1",
+ "team_number": 971,
+ "intrinsics": [
+  388.182281,
+  0.0,
+  306.279083,
+  0.0,
+  388.440582,
+  224.480484,
+  0.0,
+  0.0,
+  1.0
+ ],
+ "dist_coeffs": [
+  0.129443,
+  -0.225948,
+  0.001234,
+  -0.000004,
+  0.068937
+ ],
+ "calibration_timestamp": 1643342760319632865,
+ "camera_id": "22-03"
+}
diff --git a/y2022/vision/calib_files/calibration_pi-971-1_cam-22-04_2022-01-28_05-26-43.135661745.json b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-04_2022-01-28_05-26-43.135661745.json
new file mode 100755
index 0000000..8c19c46
--- /dev/null
+++ b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-04_2022-01-28_05-26-43.135661745.json
@@ -0,0 +1,24 @@
+{
+ "node_name": "pi1",
+ "team_number": 971,
+ "intrinsics": [
+  386.619232,
+  0.0,
+  335.525116,
+  0.0,
+  386.309601,
+  225.775742,
+  0.0,
+  0.0,
+  1.0
+ ],
+ "dist_coeffs": [
+  0.130693,
+  -0.238688,
+  0.002466,
+  -0.00017,
+  0.083145
+ ],
+ "calibration_timestamp": 1643347603135661745,
+ "camera_id": "22-04"
+}
\ No newline at end of file
diff --git a/y2022/vision/calib_files/calibration_pi-971-1_cam-22-05_2022-02-16_20-40-00.000000000.json b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-05_2022-02-16_20-40-00.000000000.json
new file mode 100755
index 0000000..a5ebf82
--- /dev/null
+++ b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-05_2022-02-16_20-40-00.000000000.json
@@ -0,0 +1,24 @@
+{
+ "node_name": "pi1",
+ "team_number": 971,
+ "intrinsics": [
+  387.791046,
+  0.0,
+  360.276276,
+  0.0,
+  387.214264,
+  235.913925,
+  0.0,
+  0.0,
+  1.0
+ ],
+ "dist_coeffs": [
+  0.132322,
+  -0.247507,
+  0.001326,
+  0.002151,
+  0.098543
+ ],
+ "calibration_timestamp": 1643348271146848848,
+ "camera_id": "22-05"
+}
diff --git a/y2022/vision/calib_files/calibration_pi-971-1_cam-22-06_2022-02-16_20-54-00.000000000.json b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-06_2022-02-16_20-54-00.000000000.json
new file mode 100755
index 0000000..71aaf02
--- /dev/null
+++ b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-06_2022-02-16_20-54-00.000000000.json
@@ -0,0 +1,24 @@
+{
+ "node_name": "pi1",
+ "team_number": 971,
+ "intrinsics": [
+  389.730774,
+  0.0,
+  329.825134,
+  0.0,
+  389.599243,
+  205.222931,
+  0.0,
+  0.0,
+  1.0
+ ],
+ "dist_coeffs": [
+  0.12185,
+  -0.214579,
+  -0.00013,
+  0.000629,
+  0.066571
+ ],
+ "calibration_timestamp": 1643348049373070054,
+ "camera_id": "22-06"
+}
diff --git a/y2022/vision/calib_files/calibration_pi-971-1_cam-22-07_2022-02-16_21-20-00.000000000.json b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-07_2022-02-16_21-20-00.000000000.json
new file mode 100755
index 0000000..27ed863
--- /dev/null
+++ b/y2022/vision/calib_files/calibration_pi-971-1_cam-22-07_2022-02-16_21-20-00.000000000.json
@@ -0,0 +1,24 @@
+{
+ "node_name": "pi1",
+ "team_number": 971,
+ "intrinsics": [
+  388.062378,
+  0.0,
+  333.890381,
+  0.0,
+  388.149048,
+  212.644363,
+  0.0,
+  0.0,
+  1.0
+ ],
+ "dist_coeffs": [
+  0.123399,
+  -0.21765,
+  -0.00085,
+  0.000694,
+  0.067006
+ ],
+ "calibration_timestamp": 1643348078845387555,
+ "camera_id": "22-07"
+}
diff --git a/y2022/vision/camera_definition.py b/y2022/vision/camera_definition.py
index a45c704..30057a5 100644
--- a/y2022/vision/camera_definition.py
+++ b/y2022/vision/camera_definition.py
@@ -48,6 +48,7 @@
         self.turret_ext = None
         self.node_name = ""
         self.team_number = -1
+        self.camera_id = ""
         self.timestamp = 0
 
 
@@ -144,6 +145,10 @@
 
             team_number = calib_dict["team_number"]
             node_name = calib_dict["node_name"]
+            camera_id = "UNKNOWN"
+            if "camera_id" in calib_dict:
+                camera_id = calib_dict["camera_id"]
+
             camera_matrix = np.asarray(calib_dict["intrinsics"]).reshape(
                 (3, 3))
             dist_coeffs = np.asarray(calib_dict["dist_coeffs"]).reshape((1, 5))
@@ -158,6 +163,7 @@
 
             camera_params.node_name = node_name
             camera_params.team_number = team_number
+            camera_params.camera_id = camera_id
             camera_params.camera_int.camera_matrix = copy.copy(camera_matrix)
             camera_params.camera_int.dist_coeffs = copy.copy(dist_coeffs)
             camera_list.append(camera_params)
diff --git a/y2022/vision/camera_reader_main.cc b/y2022/vision/camera_reader_main.cc
index f1c5fdf..52ee51a 100644
--- a/y2022/vision/camera_reader_main.cc
+++ b/y2022/vision/camera_reader_main.cc
@@ -6,7 +6,8 @@
 // bazel run //y2022/vision:camera_reader -- --config y2022/config.json
 //   --override_hostname pi-7971-1  --ignore_timestamps true
 DEFINE_string(config, "config.json", "Path to the config file to use.");
-DEFINE_uint32(exposure, 5, "Exposure time, in 100us increments");
+DEFINE_uint32(exposure, 5,
+              "Exposure time, in 100us increments; 0 implies auto exposure");
 
 namespace y2022 {
 namespace vision {
@@ -33,7 +34,9 @@
   }
 
   V4L2Reader v4l2_reader(&event_loop, "/dev/video0");
-  v4l2_reader.SetExposure(FLAGS_exposure);
+  if (FLAGS_exposure > 0) {
+    v4l2_reader.SetExposure(FLAGS_exposure);
+  }
 
   CameraReader camera_reader(&event_loop, &calibration_data.message(),
                              &v4l2_reader);
diff --git a/y2022/vision/create_calib_file.py b/y2022/vision/create_calib_file.py
index de9f65d..6b24d28 100644
--- a/y2022/vision/create_calib_file.py
+++ b/y2022/vision/create_calib_file.py
@@ -44,13 +44,9 @@
 
 
 def main():
-
-    camera_calib_list = None
-
-    output_path = sys.argv[1]
-
     camera_calib_list = camera_definition.load_camera_definitions()
 
+    output_path = sys.argv[1]
     glog.debug("Writing file to %s", output_path)
 
     fbb = flatbuffers.Builder(0)