Light refactoring of intrinsics calibration code

Change-Id: Ic7e7a621d9e03ef85e6d3074bff993ee3e470aca
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/frc971/vision/charuco_lib.h b/frc971/vision/charuco_lib.h
index 984cef6..b2ca7ee 100644
--- a/frc971/vision/charuco_lib.h
+++ b/frc971/vision/charuco_lib.h
@@ -11,8 +11,7 @@
 #include "absl/types/span.h"
 #include "aos/events/event_loop.h"
 #include "aos/network/message_bridge_server_generated.h"
-#include "y2020/vision/sift/sift_generated.h"
-#include "y2020/vision/sift/sift_training_generated.h"
+#include "frc971/vision/calibration_generated.h"
 #include "external/com_github_foxglove_schemas/ImageAnnotations_generated.h"
 
 DECLARE_bool(visualize);
@@ -24,23 +23,19 @@
 // training data.
 class CameraCalibration {
  public:
-  CameraCalibration(const absl::Span<const uint8_t> training_data_bfbs,
-                    std::string_view pi);
+  CameraCalibration(const calibration::CameraCalibration *calibration);
 
   // Intrinsics for the located camera.
-  cv::Mat CameraIntrinsics() const;
-  Eigen::Matrix3d CameraIntrinsicsEigen() const;
+  cv::Mat CameraIntrinsics() const { return intrinsics_; }
+  Eigen::Matrix3d CameraIntrinsicsEigen() const { return intrinsics_eigen_; }
 
   // Distortion coefficients for the located camera.
-  cv::Mat CameraDistCoeffs() const;
+  cv::Mat CameraDistCoeffs() const { return dist_coeffs_; }
 
  private:
-  // Finds the camera specific calibration flatbuffer.
-  const sift::CameraCalibration *FindCameraCalibration(
-      const sift::TrainingData *const training_data, std::string_view pi) const;
-
-  // Pointer to this camera's calibration parameters.
-  const sift::CameraCalibration *camera_calibration_;
+  const cv::Mat intrinsics_;
+  const Eigen::Matrix3d intrinsics_eigen_;
+  const cv::Mat dist_coeffs_;
 };
 
 // Helper class to call a function with a cv::Mat and age when an image shows up
@@ -108,7 +103,8 @@
   // multiple targets in an image; for charuco boards, there should be just one
   // element
   CharucoExtractor(
-      aos::EventLoop *event_loop, std::string_view pi, TargetType target_type,
+      aos::EventLoop *event_loop,
+      const calibration::CameraCalibration *calibration, TargetType target_type,
       std::string_view image_channel,
       std::function<void(cv::Mat, aos::monotonic_clock::time_point,
                          std::vector<cv::Vec4i>,
@@ -125,9 +121,11 @@
   cv::Ptr<cv::aruco::CharucoBoard> board() const { return board_; }
 
   // Returns the camera matrix for this camera.
-  const cv::Mat camera_matrix() const { return camera_matrix_; }
+  const cv::Mat camera_matrix() const {
+    return calibration_.CameraIntrinsics();
+  }
   // Returns the distortion coefficients for this camera.
-  const cv::Mat dist_coeffs() const { return dist_coeffs_; }
+  const cv::Mat dist_coeffs() const { return calibration_.CameraDistCoeffs(); }
 
  private:
   // Creates the dictionary, board, and other parameters for the appropriate
@@ -146,7 +144,6 @@
                        std::vector<Eigen::Vector3d> *tvecs_eigen);
 
   aos::EventLoop *event_loop_;
-  CameraCalibration calibration_;
 
   cv::Ptr<cv::aruco::Dictionary> dictionary_;
   cv::Ptr<cv::aruco::CharucoBoard> board_;
@@ -161,15 +158,7 @@
   // Length of a side of the checkerboard squares (around the marker)
   double square_length_;
 
-  // Intrinsic calibration matrix
-  const cv::Mat camera_matrix_;
-  // Intrinsic calibration matrix as Eigen::Matrix3d
-  const Eigen::Matrix3d eigen_camera_matrix_;
-  // Intrinsic distortion coefficients
-  const cv::Mat dist_coeffs_;
-
-  // Index number of the raspberry pi
-  const std::optional<uint16_t> pi_number_;
+  CameraCalibration calibration_;
 
   // Function to call.
   std::function<void(