Tuned drivetrain kalman filter.

Change-Id: I630770a1331cf896bc6d2de6a58fee880c0185c3
diff --git a/y2014/control_loops/drivetrain/drivetrain.h b/y2014/control_loops/drivetrain/drivetrain.h
index a77ab15..5b8da12 100644
--- a/y2014/control_loops/drivetrain/drivetrain.h
+++ b/y2014/control_loops/drivetrain/drivetrain.h
@@ -22,11 +22,7 @@
   // drivetrain at frc971::control_loops::drivetrain
   explicit DrivetrainLoop(
       ::frc971::control_loops::DrivetrainQueue *my_drivetrain =
-          &::frc971::control_loops::drivetrain_queue)
-      : aos::controls::ControlLoop<control_loops::DrivetrainQueue>(
-            my_drivetrain) {
-    ::aos::controls::HPolytope<0>::Init();
-  }
+          &::frc971::control_loops::drivetrain_queue);
 
  protected:
   // Executes one cycle of the control loop.
@@ -39,9 +35,17 @@
   typedef ::aos::util::SimpleLogInterval SimpleLogInterval;
   SimpleLogInterval no_position_ = SimpleLogInterval(
       ::aos::time::Time::InSeconds(0.25), WARNING, "no position");
+  double last_gyro_heading_ = 0.0;
+  double last_gyro_rate_ = 0.0;
 
   PolyDrivetrain dt_openloop_;
   DrivetrainMotorsSS dt_closedloop_;
+  StateFeedbackLoop<7, 2, 3> kf_;
+
+  double last_left_voltage_ = 0;
+  double last_right_voltage_ = 0;
+
+  double integrated_kf_heading_ = 0;
 };
 
 }  // namespace drivetrain