Add a dual_imu value blender

Blends the murata and tdk values and provides an IMUValuesBatch message.
Will try to use the murata until we reach saturation according to the
tdk, from then we switch to using the tdk values.

Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: I11fcceb278cfd2a22c18d68bad074acc6a563562
diff --git a/y2024/BUILD b/y2024/BUILD
index eb266cf..92bf035 100644
--- a/y2024/BUILD
+++ b/y2024/BUILD
@@ -74,6 +74,7 @@
     start_binaries = [
         "//aos/events/logging:logger_main",
         "//frc971/imu_fdcan:can_translator",
+        "//frc971/imu_fdcan:dual_imu_blender",
         "//aos/network:message_bridge_client",
         "//aos/network:message_bridge_server",
         "//aos/network:web_proxy_main",
@@ -116,6 +117,7 @@
         "//aos/network:message_bridge_server_fbs",
         "//frc971/imu_fdcan:dual_imu_fbs",
         "//frc971/imu_fdcan:can_translator_status_fbs",
+        "//frc971/imu_fdcan:dual_imu_blender_status_fbs",
         "//y2024/constants:constants_fbs",
         "//frc971/control_loops/drivetrain/localization:localizer_output_fbs",
         "//frc971/can_logger:can_logging_fbs",
diff --git a/y2024/y2024_imu.json b/y2024/y2024_imu.json
index 12b00d4..e22e010 100644
--- a/y2024/y2024_imu.json
+++ b/y2024/y2024_imu.json
@@ -238,6 +238,14 @@
       "num_senders": 2
     },
     {
+      "name": "/imu",
+      "type": "frc971.imu.DualImuBlenderStatus",
+      "source_node": "imu",
+      "frequency": 1100,
+      "num_senders": 1,
+      "max_size": 200
+    },
+    {
       "name": "/imu/constants",
       "type": "y2024.Constants",
       "source_node": "imu",
@@ -310,6 +318,13 @@
       ]
     },
     {
+      "name": "dual_imu_blender",
+      "executable_name": "dual_imu_blender",
+      "nodes": [
+        "imu"
+      ]
+    },
+    {
       "name": "web_proxy",
       "executable_name": "web_proxy_main",
       "args": [