Remove global .frc971.control_loops.drivetrain_queue object

Change-Id: I424f09dcc8bc210e49cbdc805d1a423a72332617
diff --git a/y2018/control_loops/superstructure/superstructure.cc b/y2018/control_loops/superstructure/superstructure.cc
index d0ff71d..24a8880 100644
--- a/y2018/control_loops/superstructure/superstructure.cc
+++ b/y2018/control_loops/superstructure/superstructure.cc
@@ -33,6 +33,10 @@
       vision_status_fetcher_(
           event_loop->MakeFetcher<::y2018::vision::VisionStatus>(
               ".y2018.vision.vision_status")),
+      drivetrain_output_fetcher_(
+          event_loop
+              ->MakeFetcher<::frc971::control_loops::DrivetrainQueue::Output>(
+                  ".frc971.control_loops.drivetrain_queue.output")),
       intake_left_(constants::GetValues().left_intake.zeroing),
       intake_right_(constants::GetValues().right_intake.zeroing) {}
 
@@ -256,7 +260,7 @@
   }
   status->rotation_state = static_cast<uint32_t>(rotation_state_);
 
-  ::frc971::control_loops::drivetrain_queue.output.FetchLatest();
+  drivetrain_output_fetcher_.Fetch();
 
   vision_status_fetcher_.Fetch();
   monotonic_clock::time_point monotonic_now = event_loop()->monotonic_now();
@@ -275,11 +279,10 @@
     SendColors(0.0, 0.0, 0.5);
   } else if (position->box_distance < 0.2) {
     SendColors(0.0, 0.5, 0.0);
-  } else if (::frc971::control_loops::drivetrain_queue.output.get() &&
-             ::std::max(::std::abs(::frc971::control_loops::drivetrain_queue
-                                       .output->left_voltage),
-                        ::std::abs(::frc971::control_loops::drivetrain_queue
-                                       .output->right_voltage)) > 11.5) {
+  } else if (drivetrain_output_fetcher_.get() &&
+             ::std::max(::std::abs(drivetrain_output_fetcher_->left_voltage),
+                        ::std::abs(drivetrain_output_fetcher_->right_voltage)) >
+                 11.5) {
     SendColors(0.5, 0.0, 0.5);
   } else {
     SendColors(0.0, 0.0, 0.0);
diff --git a/y2018/control_loops/superstructure/superstructure.h b/y2018/control_loops/superstructure/superstructure.h
index bceb643..81b6d9d 100644
--- a/y2018/control_loops/superstructure/superstructure.h
+++ b/y2018/control_loops/superstructure/superstructure.h
@@ -5,6 +5,7 @@
 
 #include "aos/controls/control_loop.h"
 #include "aos/events/event-loop.h"
+#include "frc971/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "y2018/control_loops/superstructure/arm/arm.h"
 #include "y2018/control_loops/superstructure/intake/intake.h"
@@ -40,6 +41,8 @@
 
   ::aos::Sender<::y2018::StatusLight> status_light_sender_;
   ::aos::Fetcher<::y2018::vision::VisionStatus> vision_status_fetcher_;
+  ::aos::Fetcher<::frc971::control_loops::DrivetrainQueue::Output>
+      drivetrain_output_fetcher_;
 
   intake::IntakeSide intake_left_;
   intake::IntakeSide intake_right_;
diff --git a/y2018/control_loops/superstructure/superstructure_lib_test.cc b/y2018/control_loops/superstructure/superstructure_lib_test.cc
index 8533dce..202c428 100644
--- a/y2018/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2018/control_loops/superstructure/superstructure_lib_test.cc
@@ -274,7 +274,6 @@
                               ".y2018.control_loops.superstructure.status",
                               ".y2018.control_loops.superstructure.position"),
         superstructure_(&event_loop_, ".y2018.control_loops.superstructure") {
-    ::frc971::control_loops::drivetrain_queue.output.Clear();
     set_team_id(::frc971::control_loops::testing::kTeamNumber);
   }