Refactor of apriltag detector to send out tags

Split into app in y2024, and libs in frc971

Added in calibration constants to y2024, including single basic camera

Modified team number parsing to work with orins

Pulled out year-by-year calibration call to a single FindCameraCalibration
call, and rest (extrinsics, intrinsics) are year-agnostic

Moving camera calibration files into constants/calib_files directory, instead
of vision/calib_files

Change-Id: Ic485086aad9665d2b571551a5afb337c9254d690
Signed-off-by: Jim Ostrowski <yimmy13@gmail.com>
diff --git a/y2024/constants/971.json b/y2024/constants/971.json
index 7e04438..a061f39 100644
--- a/y2024/constants/971.json
+++ b/y2024/constants/971.json
@@ -1,6 +1,11 @@
 {% from 'y2024/constants/common.jinja2' import intake_pivot_zero %}
 
 {
+  "cameras": [
+    {
+      "calibration": {% include 'y2024/constants/calib_files/calibration_orin-971-1_cam-24-00.json' %}
+    }
+  ],
   "robot": {
     "intake_constants": {
       {% set _ = intake_pivot_zero.update(
diff --git a/y2024/constants/BUILD b/y2024/constants/BUILD
index 078d616..18e506a 100644
--- a/y2024/constants/BUILD
+++ b/y2024/constants/BUILD
@@ -41,6 +41,7 @@
         "9971.json",
         "common.jinja2",
         "common.json",
+        "//y2024/constants/calib_files",
         "//y2024/control_loops/drivetrain:drivetrain_config.json",
         "//y2024/control_loops/superstructure/intake_pivot:intake_pivot_json",
         "//y2024/vision/maps",
@@ -56,6 +57,7 @@
     deps = [
         "//frc971/control_loops:profiled_subsystem_fbs",
         "//frc971/control_loops/drivetrain:drivetrain_config_fbs",
+        "//frc971/vision:calibration_fbs",
         "//frc971/vision:target_map_fbs",
         "//frc971/zeroing:constants_fbs",
     ],
diff --git a/y2024/constants/calib_files/BUILD b/y2024/constants/calib_files/BUILD
new file mode 100644
index 0000000..1f33d50
--- /dev/null
+++ b/y2024/constants/calib_files/BUILD
@@ -0,0 +1,5 @@
+filegroup(
+    name = "calib_files",
+    srcs = glob(["*.json"]),
+    visibility = ["//visibility:public"],
+)
diff --git a/y2024/constants/calib_files/calibration_orin-971-1_cam-24-00.json b/y2024/constants/calib_files/calibration_orin-971-1_cam-24-00.json
new file mode 100644
index 0000000..e083a13
--- /dev/null
+++ b/y2024/constants/calib_files/calibration_orin-971-1_cam-24-00.json
@@ -0,0 +1 @@
+{ "node_name": "orin1", "team_number": 971, "intrinsics": [ 893.617798, 0.0, 612.44397, 0.0, 893.193115, 375.196381, 0.0, 0.0, 1.0 ], "fixed_extrinsics": { "data": [ -0.483961, 0.220781, 0.84678, 0.176109, 0.868846, 0.005849, 0.495048, -0.231149, 0.104344, 0.975306, -0.194656, 0.550508, 0.0, 0.0, 0.0, 1.0 ] }, "dist_coeffs": [ -0.443805, 0.238734, 0.000133, 0.000448, -0.071068 ], "calibration_timestamp": 1358499779650270322, "camera_id": "23-09" }
diff --git a/y2024/constants/constants.fbs b/y2024/constants/constants.fbs
index ee5ff60..e648df0 100644
--- a/y2024/constants/constants.fbs
+++ b/y2024/constants/constants.fbs
@@ -1,3 +1,4 @@
+include "frc971/vision/calibration.fbs";
 include "frc971/vision/target_map.fbs";
 include "frc971/control_loops/profiled_subsystem.fbs";
 include "frc971/zeroing/constants.fbs";
@@ -5,6 +6,10 @@
 
 namespace y2024;
 
+table CameraConfiguration {
+  calibration:frc971.vision.calibration.CameraCalibration (id: 0);
+}
+
 table ShotParams {
     shot_velocity: double (id: 0);
     shot_angle: double (id: 1);
@@ -63,6 +68,7 @@
 table Constants {
   robot:RobotConstants (id: 0);
   common:Common (id: 1);
+  cameras:[CameraConfiguration] (id: 2);
 }
 
 root_type Constants;