Add SFR 4/5-piece auto

This brings in the 5 piece auto as it existed at the end of SFR.

Note: This squashes multiple commits worth of work.

Change-Id: Ia0bca787647cba9620be40d27d8d1e424d567b03
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/y2024/autonomous/autonomous_actor_main.cc b/y2024/autonomous/autonomous_actor_main.cc
index 4a8e146..5049b0f 100644
--- a/y2024/autonomous/autonomous_actor_main.cc
+++ b/y2024/autonomous/autonomous_actor_main.cc
@@ -2,6 +2,7 @@
 
 #include "aos/events/shm_event_loop.h"
 #include "aos/init.h"
+#include "frc971/constants/constants_sender_lib.h"
 #include "y2024/autonomous/autonomous_actor.h"
 
 int main(int argc, char *argv[]) {
@@ -10,8 +11,16 @@
   aos::FlatbufferDetachedBuffer<aos::Configuration> config =
       aos::configuration::ReadConfig("aos_config.json");
 
+  frc971::constants::WaitForConstants<y2024::Constants>(&config.message());
+
+  ::aos::ShmEventLoop constant_fetcher_event_loop(&config.message());
+  frc971::constants::ConstantsFetcher<y2024::Constants> constants_fetcher(
+      &constant_fetcher_event_loop);
+
+  const y2024::Constants *robot_constants = &constants_fetcher.constants();
+
   ::aos::ShmEventLoop event_loop(&config.message());
-  ::y2024::autonomous::AutonomousActor autonomous(&event_loop);
+  ::y2024::autonomous::AutonomousActor autonomous(&event_loop, robot_constants);
 
   event_loop.Run();