Remove unused 2022 channels

IMUValuesBatch on the roborio is unused, I erroneously added a drivetrain
Position message on the imu node earlier, and the drivetrain test
library needed to be updated to support the encoders in the IMUValues
message (as well as the GyroReadings message).

Also, begin forwarding superstructure status message to the IMU pi, and
set the LocalizerControl message to be reliable.

Change-Id: I18f1b4131710e0539018002e91fce99f7f1215b4
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 62b77c4..767fb61 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -35,7 +35,7 @@
       localizer_control_fetcher_(
           event_loop->MakeFetcher<LocalizerControl>("/drivetrain")),
       imu_values_fetcher_(
-          event_loop->MakeFetcher<::frc971::IMUValuesBatch>("/drivetrain")),
+          event_loop->TryMakeFetcher<::frc971::IMUValuesBatch>("/drivetrain")),
       gyro_reading_fetcher_(
           event_loop->MakeFetcher<::frc971::sensors::GyroReading>(
               "/drivetrain")),
@@ -52,7 +52,9 @@
   event_loop->OnRun([this]() {
     // On the first fetch, make sure that we are caught all the way up to the
     // present.
-    imu_values_fetcher_.Fetch();
+    if (imu_values_fetcher_.valid()) {
+      imu_values_fetcher_.Fetch();
+    }
   });
   if (dt_config.is_simulated) {
     down_estimator_.assume_perfect_gravity();
@@ -117,7 +119,7 @@
       break;
   }
 
-  while (imu_values_fetcher_.FetchNext()) {
+  while (imu_values_fetcher_.valid() && imu_values_fetcher_.FetchNext()) {
     CHECK(imu_values_fetcher_->has_readings());
     last_gyro_time_ = monotonic_now;
     for (const IMUValues *value : *imu_values_fetcher_->readings()) {
@@ -138,7 +140,7 @@
   }
 
   bool got_imu_reading = false;
-  if (imu_values_fetcher_.get() != nullptr) {
+  if (imu_values_fetcher_.valid() && imu_values_fetcher_.get() != nullptr) {
     imu_zeroer_.ProcessMeasurements();
     got_imu_reading = true;
     CHECK(imu_values_fetcher_->has_readings());