Kill global .y2019.control_loops.superstructure.superstructure_queue object

Change-Id: Ib75e31cb6717e7421af2f33848f7a77bfb572d15
diff --git a/y2019/actors/autonomous_actor.cc b/y2019/actors/autonomous_actor.cc
index c933181..0f2b04e 100644
--- a/y2019/actors/autonomous_actor.cc
+++ b/y2019/actors/autonomous_actor.cc
@@ -25,7 +25,15 @@
       localizer_control_sender_(
           event_loop->MakeSender<
               ::frc971::control_loops::drivetrain::LocalizerControl>(
-              ".frc971.control_loops.drivetrain.localizer_control")) {}
+              ".frc971.control_loops.drivetrain.localizer_control")),
+      superstructure_goal_sender_(
+          event_loop->MakeSender<::y2019::control_loops::superstructure::
+                                     SuperstructureQueue::Goal>(
+              ".y2019.control_loops.superstructure.superstructure_queue.goal")),
+      superstructure_status_fetcher_(event_loop->MakeFetcher<
+                                     ::y2019::control_loops::superstructure::
+                                         SuperstructureQueue::Status>(
+          ".y2019.control_loops.superstructure.superstructure_queue.status")) {}
 
 bool AutonomousActor::WaitForDriveXGreater(double x) {
   LOG(INFO, "Waiting until x > %f\n", x);
diff --git a/y2019/actors/autonomous_actor.h b/y2019/actors/autonomous_actor.h
index 13b336d..1992543 100644
--- a/y2019/actors/autonomous_actor.h
+++ b/y2019/actors/autonomous_actor.h
@@ -17,7 +17,6 @@
 namespace actors {
 
 using ::frc971::ProfileParameters;
-using ::y2019::control_loops::superstructure::superstructure_queue;
 
 struct ElevatorWristPosition {
   double elevator;
@@ -76,7 +75,7 @@
   }
 
   void SendSuperstructureGoal() {
-    auto new_superstructure_goal = superstructure_queue.goal.MakeMessage();
+    auto new_superstructure_goal = superstructure_goal_sender_.MakeMessage();
     new_superstructure_goal->elevator.unsafe_goal = elevator_goal_;
     new_superstructure_goal->wrist.unsafe_goal = wrist_goal_;
     new_superstructure_goal->intake.unsafe_goal = intake_goal_;
@@ -100,10 +99,10 @@
   }
 
   bool IsSucked() {
-    superstructure_queue.status.FetchLatest();
+    superstructure_status_fetcher_.Fetch();
 
-    if (superstructure_queue.status.get()) {
-      return superstructure_queue.status->has_piece;
+    if (superstructure_status_fetcher_.get()) {
+      return superstructure_status_fetcher_->has_piece;
     }
     return false;
   }
@@ -139,20 +138,20 @@
   }
 
   bool IsSuperstructureDone() {
-    superstructure_queue.status.FetchLatest();
+    superstructure_status_fetcher_.Fetch();
 
     double kElevatorTolerance = 0.01;
     double kWristTolerance = 0.05;
 
-    if (superstructure_queue.status.get()) {
+    if (superstructure_status_fetcher_.get()) {
       const bool elevator_at_goal =
           ::std::abs(elevator_goal_ -
-                     superstructure_queue.status->elevator.position) <
+                     superstructure_status_fetcher_->elevator.position) <
           kElevatorTolerance;
 
       const bool wrist_at_goal =
           ::std::abs(wrist_goal_ -
-                     superstructure_queue.status->wrist.position) <
+                     superstructure_status_fetcher_->wrist.position) <
           kWristTolerance;
 
       return elevator_at_goal && wrist_at_goal;
@@ -170,8 +169,7 @@
         return false;
       }
       phased_loop.SleepUntilNext();
-      superstructure_queue.status.FetchLatest();
-      superstructure_queue.goal.FetchLatest();
+      superstructure_status_fetcher_.Fetch();
       if (IsSuperstructureDone()) {
         return true;
       }
@@ -186,6 +184,12 @@
 
   ::aos::Sender<::frc971::control_loops::drivetrain::LocalizerControl>
       localizer_control_sender_;
+  ::aos::Sender<
+      ::y2019::control_loops::superstructure::SuperstructureQueue::Goal>
+      superstructure_goal_sender_;
+  ::aos::Fetcher<
+      ::y2019::control_loops::superstructure::SuperstructureQueue::Status>
+      superstructure_status_fetcher_;
 };
 
 }  // namespace actors