Move Position, robot_state, and joystick_state over

ControlLoop should now be completely using the event loop.

Change-Id: Ifb936c384d1031abbc9e61d834b1ef157ad0841c
diff --git a/frc971/control_loops/drivetrain/polydrivetrain.h b/frc971/control_loops/drivetrain/polydrivetrain.h
index 64b1aff..cc3468a 100644
--- a/frc971/control_loops/drivetrain/polydrivetrain.h
+++ b/frc971/control_loops/drivetrain/polydrivetrain.h
@@ -45,7 +45,7 @@
 
   Scalar MaxVelocity();
 
-  void Update();
+  void Update(Scalar voltage_battery);
 
   void SetOutput(::frc971::control_loops::DrivetrainQueue::Output *output);
 
@@ -292,7 +292,7 @@
 }
 
 template <typename Scalar>
-void PolyDrivetrain<Scalar>::Update() {
+void PolyDrivetrain<Scalar>::Update(Scalar voltage_battery) {
   if (dt_config_.loop_type == LoopType::CLOSED_LOOP) {
     loop_->mutable_X_hat()(0, 0) = kf_->X_hat()(1, 0);
     loop_->mutable_X_hat()(1, 0) = kf_->X_hat()(3, 0);
@@ -406,7 +406,9 @@
         (R_right / dt_config_.v)(0, 0) + (IsInGear(right_gear_) ? 0 : wiggle),
         -kTwelve, kTwelve);
 #ifdef __linux__
-    loop_->mutable_U() *= kTwelve / ::aos::robot_state->voltage_battery;
+    loop_->mutable_U() *= kTwelve / voltage_battery;
+#else
+    (void)voltage_battery;
 #endif  // __linux__
   }
 }