Adding reprojection error as an output to calibration

Also, bumping the threshold default to 2 pixels, since we're
using higher resolution images, and it generally fails with errors
close to 2 pixels (when it probably shouldn't)

Change-Id: I2bd84e7a6a48ed789ef6636e0892eed574459702
Signed-off-by: Jim Ostrowski <yimmy13@gmail.com>
diff --git a/frc971/vision/intrinsics_calibration_lib.cc b/frc971/vision/intrinsics_calibration_lib.cc
index 6f242f4..c48c12d 100644
--- a/frc971/vision/intrinsics_calibration_lib.cc
+++ b/frc971/vision/intrinsics_calibration_lib.cc
@@ -172,7 +172,8 @@
     cv::Mat camera_matrix, cv::Mat dist_coeffs,
     aos::realtime_clock::time_point realtime_now, std::string_view cpu_type,
     uint16_t cpu_number, std::string_view camera_channel,
-    std::string_view camera_id, uint16_t team_number) {
+    std::string_view camera_id, uint16_t team_number,
+    double reprojection_error) {
   flatbuffers::FlatBufferBuilder fbb;
   flatbuffers::Offset<flatbuffers::String> name_offset =
       fbb.CreateString(absl::StrFormat("%s%d", cpu_type, cpu_number));
@@ -200,6 +201,8 @@
   camera_calibration_builder.add_team_number(team_number);
   camera_calibration_builder.add_camera_number(camera_number.value());
   camera_calibration_builder.add_camera_id(camera_id_offset);
+  camera_calibration_builder.add_reprojection_error(
+      static_cast<float>(reprojection_error));
   camera_calibration_builder.add_calibration_timestamp(
       realtime_now.time_since_epoch().count());
   camera_calibration_builder.add_intrinsics(intrinsics_offset);
@@ -228,7 +231,7 @@
         img_size, camera_matrix, dist_coeffs, rvecs, tvecs,
         std_deviations_intrinsics, std_deviations_extrinsics, per_view_errors,
         calibration_flags);
-    CHECK_LE(reprojection_error, 1.0)
+    CHECK_LE(reprojection_error, 2.0)
         << ": Reproduction error is bad-- greater than 1 pixel.";
     LOG(INFO) << "Reprojection Error is " << reprojection_error;
 
@@ -239,10 +242,10 @@
     CHECK(team_number) << ": Invalid hostname " << hostname_
                        << ", failed to parse team number";
     aos::FlatbufferDetachedBuffer<calibration::CameraCalibration>
-        camera_calibration =
-            BuildCalibration(camera_matrix, dist_coeffs, realtime_now,
-                             cpu_type_.value(), cpu_number_.value(),
-                             camera_channel_, camera_id_, team_number.value());
+        camera_calibration = BuildCalibration(
+            camera_matrix, dist_coeffs, realtime_now, cpu_type_.value(),
+            cpu_number_.value(), camera_channel_, camera_id_,
+            team_number.value(), reprojection_error);
     std::stringstream time_ss;
     time_ss << realtime_now;