Added make_hybrid_drivetrain_velocity_loop to drivetrain_config

Change-Id: I66dde6ddf0fc63c794d6b11ff2a2131005902953
diff --git a/frc971/control_loops/drivetrain/BUILD b/frc971/control_loops/drivetrain/BUILD
index c37f379..7f87cca 100644
--- a/frc971/control_loops/drivetrain/BUILD
+++ b/frc971/control_loops/drivetrain/BUILD
@@ -34,6 +34,7 @@
     ],
     deps = [
         "//frc971:shifter_hall_effect",
+        "//frc971/control_loops:hybrid_state_feedback_loop",
         "//frc971/control_loops:state_feedback_loop",
     ],
 )
diff --git a/frc971/control_loops/drivetrain/drivetrain_config.h b/frc971/control_loops/drivetrain/drivetrain_config.h
index 476128d..c4652be 100644
--- a/frc971/control_loops/drivetrain/drivetrain_config.h
+++ b/frc971/control_loops/drivetrain/drivetrain_config.h
@@ -3,8 +3,11 @@
 
 #include <functional>
 
-#include "frc971/shifter_hall_effect.h"
+#if defined(__linux__)
+#include "frc971/control_loops/hybrid_state_feedback_loop.h"
+#endif
 #include "frc971/control_loops/state_feedback_loop.h"
+#include "frc971/shifter_hall_effect.h"
 
 namespace frc971 {
 namespace control_loops {
@@ -53,6 +56,12 @@
   ::std::function<StateFeedbackLoop<4, 2, 2, Scalar>()> make_drivetrain_loop;
   ::std::function<StateFeedbackLoop<2, 2, 2, Scalar>()> make_v_drivetrain_loop;
   ::std::function<StateFeedbackLoop<7, 2, 4, Scalar>()> make_kf_drivetrain_loop;
+#if defined(__linux__)
+  ::std::function<
+      StateFeedbackLoop<2, 2, 2, Scalar, StateFeedbackHybridPlant<2, 2, 2>,
+                        HybridKalman<2, 2, 2>>()>
+      make_hybrid_drivetrain_velocity_loop;
+#endif
 
   ::std::chrono::nanoseconds dt;  // Control loop time step.
   Scalar robot_radius;            // Robot radius, in meters.
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index 383059f..f6d5aa2 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -17,6 +17,7 @@
 #include "frc971/queues/gyro.q.h"
 #include "y2016/constants.h"
 #include "y2016/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2016/control_loops/drivetrain/hybrid_velocity_drivetrain.h"
 #include "y2016/control_loops/drivetrain/kalman_drivetrain_motor_plant.h"
 #include "y2016/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
 
@@ -43,6 +44,7 @@
       ::y2016::control_loops::drivetrain::MakeDrivetrainLoop,
       ::y2016::control_loops::drivetrain::MakeVelocityDrivetrainLoop,
       ::y2016::control_loops::drivetrain::MakeKFDrivetrainLoop,
+      ::y2016::control_loops::drivetrain::MakeHybridVelocityDrivetrainLoop,
 
       chrono::duration_cast<chrono::nanoseconds>(
           chrono::duration<double>(::y2016::control_loops::drivetrain::kDt)),
diff --git a/frc971/control_loops/hybrid_state_feedback_loop.h b/frc971/control_loops/hybrid_state_feedback_loop.h
index 05d5aab..0af0144 100644
--- a/frc971/control_loops/hybrid_state_feedback_loop.h
+++ b/frc971/control_loops/hybrid_state_feedback_loop.h
@@ -3,7 +3,6 @@
 
 #include <assert.h>
 
-#include <iostream>
 #include <memory>
 #include <utility>
 #include <vector>
diff --git a/frc971/control_loops/state_feedback_loop.h b/frc971/control_loops/state_feedback_loop.h
index dd581bf..2511d98 100644
--- a/frc971/control_loops/state_feedback_loop.h
+++ b/frc971/control_loops/state_feedback_loop.h
@@ -3,7 +3,6 @@
 
 #include <assert.h>
 
-#include <iostream>
 #include <memory>
 #include <utility>
 #include <vector>