Test cases all pass.  Wrist should be good.  Made it a bit snappier.
diff --git a/aos/common/control_loop/ControlLoop-tmpl.h b/aos/common/control_loop/ControlLoop-tmpl.h
index 80d592a..a15d909 100644
--- a/aos/common/control_loop/ControlLoop-tmpl.h
+++ b/aos/common/control_loop/ControlLoop-tmpl.h
@@ -64,8 +64,10 @@
         return;
       }
     }
-    position->Print(state, sizeof(state));
-    LOG(DEBUG, "position={%s}\n", state);
+    if (position) {
+      position->Print(state, sizeof(state));
+      LOG(DEBUG, "position={%s}\n", state);
+    }
   }
 
   bool outputs_enabled = false;
diff --git a/aos/common/control_loop/ControlLoop.h b/aos/common/control_loop/ControlLoop.h
index e866bb7..ac88c98 100644
--- a/aos/common/control_loop/ControlLoop.h
+++ b/aos/common/control_loop/ControlLoop.h
@@ -49,9 +49,9 @@
  public:
   // Maximum age of position packets before the loop will be disabled due to
   // invalid position data.
-  static const int kPositionTimeoutMs = 100;
+  static const int kPositionTimeoutMs = 1000;
   // Maximum age of driver station packets before the loop will be disabled.
-  static const int kDSPacketTimeoutMs = 100;
+  static const int kDSPacketTimeoutMs = 500;
 
   ControlLoop(T *control_loop) : control_loop_(control_loop) {}