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/aos/network/team_number.cc b/aos/network/team_number.cc
index 28ee67a..da6d0c5 100644
--- a/aos/network/team_number.cc
+++ b/aos/network/team_number.cc
@@ -39,8 +39,9 @@
   return std::nullopt;
 }
 
-std::optional<uint16_t> ParsePiTeamNumber(const std::string_view hostname) {
-  if (hostname.substr(0, 3) != "pi-") {
+std::optional<uint16_t> ParsePiOrOrinTeamNumber(
+    const std::string_view hostname) {
+  if ((hostname.substr(0, 3) != "pi-") && (hostname.substr(0, 5) != "orin-")) {
     return std::nullopt;
   }
   size_t first_separator = hostname.find('-');
@@ -93,9 +94,9 @@
     }
   }
   {
-    const auto result = team_number_internal::ParsePiTeamNumber(hostname);
+    const auto result = team_number_internal::ParsePiOrOrinTeamNumber(hostname);
     if (result) {
-      LOG(INFO) << "Pi hostname team number is: " << *result;
+      LOG(INFO) << "Pi/Orin hostname team number is: " << *result;
       return *result;
     }
   }
@@ -122,8 +123,8 @@
 
 void OverrideTeamNumber(uint16_t team) { override_team = team; }
 
-std::optional<uint16_t> ParsePiNumber(const std::string_view hostname) {
-  if (hostname.substr(0, 3) != "pi-") {
+std::optional<uint16_t> ParsePiOrOrinNumber(const std::string_view hostname) {
+  if ((hostname.substr(0, 3) != "pi-") && (hostname.substr(0, 5) != "orin-")) {
     return std::nullopt;
   }
   size_t first_separator = hostname.find('-');
diff --git a/aos/network/team_number.h b/aos/network/team_number.h
index b794309..9b9029a 100644
--- a/aos/network/team_number.h
+++ b/aos/network/team_number.h
@@ -27,15 +27,18 @@
 // Guaranteed to be safe to call during static initialization time.
 void OverrideTeamNumber(uint16_t team);
 
-// Returns the pi number for a pi formated hostname.  pi-team#-pi# (pi-971-5)
-std::optional<uint16_t> ParsePiNumber(const std::string_view hostname);
+// Returns the number for a pi/orin formatted hostname.  pi-team#-pi# (e.g., 5
+// for pi-971-5 or 2 for orin-9971-2)
+std::optional<uint16_t> ParsePiOrOrinNumber(const std::string_view hostname);
 
 namespace team_number_internal {
 
 std::optional<uint16_t> ParseRoborioTeamNumber(const std::string_view hostname);
 
-// Returns the team number for a pi formated hostname.  pi-team#-pi#
-std::optional<uint16_t> ParsePiTeamNumber(const std::string_view hostname);
+// Returns the team number for a pi/orin formatted hostname.  pi-team#-pi#
+// (e.g., 971 for pi-971-5 or 9971 for orin-9971-2)
+std::optional<uint16_t> ParsePiOrOrinTeamNumber(
+    const std::string_view hostname);
 
 }  // namespace team_number_internal
 }  // namespace network
diff --git a/aos/network/team_number_test.cc b/aos/network/team_number_test.cc
index 1ca3fc2..9922b1b 100644
--- a/aos/network/team_number_test.cc
+++ b/aos/network/team_number_test.cc
@@ -4,7 +4,7 @@
 
 namespace aos::network::testing {
 
-using team_number_internal::ParsePiTeamNumber;
+using team_number_internal::ParsePiOrOrinTeamNumber;
 using team_number_internal::ParseRoborioTeamNumber;
 
 TEST(TeamNumberTest, Parse2015TeamNumber) {
@@ -28,23 +28,35 @@
   EXPECT_FALSE(ParseRoborioTeamNumber("roboRIO--FRC"));
 }
 
-TEST(TeamNumberTest, ParsePiTeamNumber) {
-  EXPECT_EQ(971u, *ParsePiTeamNumber("pi-971-1"));
-  EXPECT_EQ(8971u, *ParsePiTeamNumber("pi-8971-22"));
-  EXPECT_EQ(8971u, *ParsePiTeamNumber("pi-8971-"));
+TEST(TeamNumberTest, ParsePiOrOrinTeamNumber) {
+  EXPECT_EQ(971u, *ParsePiOrOrinTeamNumber("pi-971-1"));
+  EXPECT_EQ(8971u, *ParsePiOrOrinTeamNumber("pi-8971-22"));
+  EXPECT_EQ(8971u, *ParsePiOrOrinTeamNumber("pi-8971-"));
+
+  EXPECT_EQ(971u, *ParsePiOrOrinTeamNumber("orin-971-1"));
+  EXPECT_EQ(8971u, *ParsePiOrOrinTeamNumber("orin-8971-22"));
+  EXPECT_EQ(8971u, *ParsePiOrOrinTeamNumber("orin-8971-"));
 
   EXPECT_FALSE(ParseRoborioTeamNumber("pi"));
   EXPECT_FALSE(ParseRoborioTeamNumber("pi-"));
   EXPECT_FALSE(ParseRoborioTeamNumber("pi-971"));
   EXPECT_FALSE(ParseRoborioTeamNumber("pi-971a-1"));
+  EXPECT_FALSE(ParseRoborioTeamNumber("orin-971-1"));
 
-  EXPECT_EQ(1u, *ParsePiNumber("pi-971-1"));
-  EXPECT_EQ(22u, *ParsePiNumber("pi-8971-22"));
+  EXPECT_EQ(1u, *ParsePiOrOrinNumber("pi-971-1"));
+  EXPECT_EQ(22u, *ParsePiOrOrinNumber("pi-8971-22"));
+  EXPECT_EQ(1u, *ParsePiOrOrinNumber("orin-971-1"));
+  EXPECT_EQ(22u, *ParsePiOrOrinNumber("orin-8971-22"));
 
-  EXPECT_FALSE(ParsePiNumber("pi-8971-"));
-  EXPECT_FALSE(ParsePiNumber("pi"));
-  EXPECT_FALSE(ParsePiNumber("pi-"));
-  EXPECT_FALSE(ParsePiNumber("pi-971"));
+  EXPECT_FALSE(ParsePiOrOrinNumber("pi-8971-"));
+  EXPECT_FALSE(ParsePiOrOrinNumber("pi"));
+  EXPECT_FALSE(ParsePiOrOrinNumber("pi-"));
+  EXPECT_FALSE(ParsePiOrOrinNumber("pi-971"));
+
+  EXPECT_FALSE(ParsePiOrOrinNumber("orin-8971-"));
+  EXPECT_FALSE(ParsePiOrOrinNumber("orin"));
+  EXPECT_FALSE(ParsePiOrOrinNumber("orin-"));
+  EXPECT_FALSE(ParsePiOrOrinNumber("orin-971"));
 }
 
 }  // namespace aos::network::testing