Remove global .frc971.control_loops.drivetrain_queue object

Change-Id: I424f09dcc8bc210e49cbdc805d1a423a72332617
diff --git a/y2014/joystick_reader.cc b/y2014/joystick_reader.cc
index 5510635..ecd55c9 100644
--- a/y2014/joystick_reader.cc
+++ b/y2014/joystick_reader.cc
@@ -20,8 +20,6 @@
 #include "y2014/control_loops/drivetrain/drivetrain_base.h"
 #include "y2014/control_loops/shooter/shooter.q.h"
 
-using ::frc971::control_loops::drivetrain_queue;
-
 using ::aos::input::driver_station::ButtonLocation;
 using ::aos::input::driver_station::JoystickAxis;
 using ::aos::input::driver_station::ControlBit;
@@ -168,6 +166,10 @@
         shooter_goal_sender_(
             event_loop->MakeSender<::y2014::control_loops::ShooterQueue::Goal>(
                 ".y2014.control_loops.shooter_queue.goal")),
+        drivetrain_status_fetcher_(
+            event_loop
+                ->MakeFetcher<::frc971::control_loops::DrivetrainQueue::Status>(
+                    ".frc971.control_loops.drivetrain_queue.status")),
         shot_power_(80.0),
         goal_angle_(0.0),
         separation_angle_(kGrabSeparation),
@@ -348,11 +350,11 @@
         velocity_compensation_ = 0.0;
       }
 
-      ::frc971::control_loops::drivetrain_queue.status.FetchLatest();
+      drivetrain_status_fetcher_.Fetch();
       double goal_angle = goal_angle_;
-      if (::frc971::control_loops::drivetrain_queue.status.get()) {
-        goal_angle += SpeedToAngleOffset(
-            ::frc971::control_loops::drivetrain_queue.status->robot_speed);
+      if (drivetrain_status_fetcher_.get()) {
+        goal_angle +=
+            SpeedToAngleOffset(drivetrain_status_fetcher_->robot_speed);
       } else {
         LOG_INTERVAL(no_drivetrain_status_);
       }
@@ -417,6 +419,8 @@
       claw_status_fetcher_;
   ::aos::Sender<::y2014::control_loops::ClawQueue::Goal> claw_goal_sender_;
   ::aos::Sender<::y2014::control_loops::ShooterQueue::Goal> shooter_goal_sender_;
+  ::aos::Fetcher<::frc971::control_loops::DrivetrainQueue::Status>
+      drivetrain_status_fetcher_;
 
   double shot_power_;
   double goal_angle_;
diff --git a/y2014/wpilib_interface.cc b/y2014/wpilib_interface.cc
index 5e398db..d4d7ad6 100644
--- a/y2014/wpilib_interface.cc
+++ b/y2014/wpilib_interface.cc
@@ -53,7 +53,6 @@
 #define M_PI 3.14159265358979323846
 #endif
 
-using ::frc971::control_loops::drivetrain_queue;
 using ::y2014::control_loops::ClawQueue;
 using ::y2014::control_loops::ShooterQueue;
 using aos::make_unique;
@@ -124,7 +123,11 @@
         shooter_position_sender_(event_loop->MakeSender<ShooterQueue::Position>(
             ".y2014.control_loops.shooter_queue.position")),
         claw_position_sender_(event_loop->MakeSender<ClawQueue::Position>(
-            ".y2014.control_loops.claw_queue.position")) {
+            ".y2014.control_loops.claw_queue.position")),
+        drivetrain_position_sender_(
+            event_loop->MakeSender<
+                ::frc971::control_loops::DrivetrainQueue::Position>(
+                ".frc971.control_loops.drivetrain_queue.position")) {
     // Set it to filter out anything shorter than 1/4 of the minimum pulse width
     // we should ever see.
     UpdateMediumEncoderFilterHz(kMaximumEncoderPulsesPerSecond);
@@ -246,7 +249,7 @@
     const auto &values = constants::GetValues();
 
     {
-      auto drivetrain_message = drivetrain_queue.position.MakeMessage();
+      auto drivetrain_message = drivetrain_position_sender_.MakeMessage();
       drivetrain_message->right_encoder =
           drivetrain_translate(drivetrain_right_encoder_->GetRaw());
       drivetrain_message->left_encoder =
@@ -402,6 +405,8 @@
   ::aos::Sender<::y2014::sensors::AutoMode> auto_mode_sender_;
   ::aos::Sender<ShooterQueue::Position> shooter_position_sender_;
   ::aos::Sender<ClawQueue::Position> claw_position_sender_;
+  ::aos::Sender<::frc971::control_loops::DrivetrainQueue::Position>
+      drivetrain_position_sender_;
 
   ::std::unique_ptr<::frc::AnalogInput> auto_selector_analog_;