Estop on subsystem error.

Change-Id: I95e3158caf7766d2fa1668161ad32c3e1ad3ca1e
diff --git a/frc971/zeroing/zeroing.h b/frc971/zeroing/zeroing.h
index 4b21bc4..7b77fdd 100644
--- a/frc971/zeroing/zeroing.h
+++ b/frc971/zeroing/zeroing.h
@@ -226,6 +226,8 @@
   // Returns information about our current state.
   State GetEstimatorState() const;
 
+  void TriggerError() { error_ = true; }
+
  private:
   // Returns the current real position using the relative encoder offset.
   double CalculateCurrentPosition(const IndexPosition &info);
diff --git a/y2017/control_loops/superstructure/hood/hood.cc b/y2017/control_loops/superstructure/hood/hood.cc
index b5acba0..b0c02de 100644
--- a/y2017/control_loops/superstructure/hood/hood.cc
+++ b/y2017/control_loops/superstructure/hood/hood.cc
@@ -149,7 +149,8 @@
       }
 
       // ESTOP if we hit the hard limits.
-      if (profiled_subsystem_.CheckHardLimits()) {
+      if (profiled_subsystem_.CheckHardLimits() ||
+          profiled_subsystem_.error()) {
         state_ = State::ESTOP;
       }
     } break;
diff --git a/y2017/control_loops/superstructure/intake/intake.cc b/y2017/control_loops/superstructure/intake/intake.cc
index c66e493..9d56542 100644
--- a/y2017/control_loops/superstructure/intake/intake.cc
+++ b/y2017/control_loops/superstructure/intake/intake.cc
@@ -85,7 +85,8 @@
       }
 
       // ESTOP if we hit the hard limits.
-      if (profiled_subsystem_.CheckHardLimits()) {
+      if (profiled_subsystem_.CheckHardLimits() ||
+          profiled_subsystem_.error()) {
         state_ = State::ESTOP;
       }
     } break;
diff --git a/y2017/control_loops/superstructure/turret/turret.cc b/y2017/control_loops/superstructure/turret/turret.cc
index 9616dff..3a3a126 100644
--- a/y2017/control_loops/superstructure/turret/turret.cc
+++ b/y2017/control_loops/superstructure/turret/turret.cc
@@ -85,7 +85,8 @@
       }
 
       // ESTOP if we hit the hard limits.
-      if (profiled_subsystem_.CheckHardLimits()) {
+      if (profiled_subsystem_.CheckHardLimits() ||
+          profiled_subsystem_.error()) {
         state_ = State::ESTOP;
       }
     } break;