Add y2023 folder

2022 Bot specific things were removed

Change-Id: I6563d477a65bf2eae5d39933003742bd372cf82e
Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Signed-off-by: Xander Yee <xander.yee@gmail.com>
diff --git a/y2023/vision/BUILD b/y2023/vision/BUILD
index 2f93b16..106ee5d 100644
--- a/y2023/vision/BUILD
+++ b/y2023/vision/BUILD
@@ -1,3 +1,13 @@
+load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
+
+flatbuffer_cc_library(
+    name = "calibration_fbs",
+    srcs = ["calibration.fbs"],
+    gen_reflections = 1,
+    target_compatible_with = ["@platforms//os:linux"],
+    visibility = ["//y2023:__subpackages__"],
+)
+
 cc_binary(
     name = "camera_reader",
     srcs = [
diff --git a/y2023/vision/calibration.fbs b/y2023/vision/calibration.fbs
new file mode 100644
index 0000000..f5e30a6
--- /dev/null
+++ b/y2023/vision/calibration.fbs
@@ -0,0 +1,55 @@
+namespace frc971.vision.calibration;
+
+table TransformationMatrix {
+  // The matrix data for a row-major 4x4 homogeneous transformation matrix.
+  // This implies the bottom row is (0, 0, 0, 1).
+  data:[float] (id: 0);
+}
+
+// Calibration information for a given camera on a given robot.
+table CameraCalibration {
+  // The name of the camera node which this calibration data applies to.
+  node_name:string (id: 0);
+  // The team number of the robot which this calibration data applies to.
+  team_number:int (id: 1);
+
+  // Intrinsics for the camera.
+  //
+  // This is the standard OpenCV intrinsics matrix in row major order (3x3).
+  intrinsics:[float] (id: 2);
+
+  // Fixed extrinsics for the camera. This transforms from camera coordinates to
+  // robot coordinates. For example: multiplying (0, 0, 0, 1) by this results in
+  // the position of the camera aperture in robot coordinates.
+  fixed_extrinsics:TransformationMatrix (id: 3);
+
+  // Extrinsics for a camera on a turret. This will only be filled out for
+  // applicable cameras. For turret-mounted cameras, fixed_extrinsics defines
+  // a position for the center of rotation of the turret, and this field defines
+  // a position for the camera on the turret.
+  //
+  // The combination of the two transformations is underdefined, so nothing can
+  // distinguish between the two parts of the final extrinsics for a given
+  // turret position.
+  //
+  // To get the final extrinsics for a camera using this transformation,
+  // multiply (in order):
+  //   fixed_extrinsics
+  //   rotation around the Z axis by the turret angle
+  //   turret_extrinsics
+  turret_extrinsics:TransformationMatrix (id: 4);
+
+  // This is the standard OpenCV 5 parameter distortion coefficients
+  dist_coeffs:[float] (id: 5);
+
+  // Timestamp for when the calibration was taken on the realtime clock.
+  calibration_timestamp:int64 (id: 6);
+}
+
+// Calibration information for all the cameras we know about.
+table CalibrationData {
+  camera_calibrations:[CameraCalibration] (id: 0);
+}
+
+
+root_type CalibrationData;
diff --git a/y2023/vision/camera_reader.cc b/y2023/vision/camera_reader.cc
index 3466c83..7004225 100644
--- a/y2023/vision/camera_reader.cc
+++ b/y2023/vision/camera_reader.cc
@@ -8,7 +8,7 @@
 
 DEFINE_string(config, "aos_config.json", "Path to the config file to use.");
 
-namespace y2022 {
+namespace y2023 {
 namespace vision {
 namespace {
 
@@ -102,9 +102,9 @@
 
 }  // namespace
 }  // namespace vision
-}  // namespace y2022
+}  // namespace y2023
 
 int main(int argc, char **argv) {
   aos::InitGoogle(&argc, &argv);
-  y2022::vision::CameraReaderMain();
+  y2023::vision::CameraReaderMain();
 }