Add camera calibration to target estimate

Signed-off-by: Milind Upadhyay <milind.upadhyay@gmail.com>
Change-Id: Ica30bd4c98f4d10c0bf1dc9e1f4cebea3ae2225c
diff --git a/y2022/vision/BUILD b/y2022/vision/BUILD
index 284dd66..4f1c7ff 100644
--- a/y2022/vision/BUILD
+++ b/y2022/vision/BUILD
@@ -151,6 +151,7 @@
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//y2022:__subpackages__"],
     deps = [
+        ":calibration_fbs",
         ":target_estimate_fbs",
         "//third_party:opencv",
     ],
@@ -160,6 +161,9 @@
     name = "target_estimate_fbs",
     srcs = ["target_estimate.fbs"],
     gen_reflections = 1,
+    includes = [
+        ":calibration_fbs_includes",
+    ],
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//y2022:__subpackages__"],
 )
diff --git a/y2022/vision/camera_reader.cc b/y2022/vision/camera_reader.cc
index abce18c..b8e666e 100644
--- a/y2022/vision/camera_reader.cc
+++ b/y2022/vision/camera_reader.cc
@@ -105,11 +105,15 @@
     blob_result_offset = blob_result_builder.Finish();
   }
 
+  const auto camera_calibration_offset =
+      aos::RecursiveCopyFlatBuffer(camera_calibration_, builder.fbb());
+
   auto target_estimate_builder = builder.MakeBuilder<TargetEstimate>();
   TargetEstimator::EstimateTargetLocation(
       blob_result.centroid, CameraIntrinsics(), CameraExtrinsics(),
       &target_estimate_builder);
   target_estimate_builder.add_blob_result(blob_result_offset);
+  target_estimate_builder.add_camera_calibration(camera_calibration_offset);
 
   builder.CheckOk(builder.Send(target_estimate_builder.Finish()));
 }
diff --git a/y2022/vision/target_estimate.fbs b/y2022/vision/target_estimate.fbs
index 707014c..2621634 100644
--- a/y2022/vision/target_estimate.fbs
+++ b/y2022/vision/target_estimate.fbs
@@ -1,3 +1,5 @@
+include "y2022/vision/calibration.fbs";
+
 namespace y2022.vision;
 
 struct Point {
@@ -39,7 +41,8 @@
 
   blob_result:BlobResultFbs (id: 2);
 
-  // TODO(milind): add confidence
+  // Information about the camera which took this image.
+  camera_calibration:frc971.vision.calibration.CameraCalibration (id: 3);
 }
 
 root_type TargetEstimate;