No zeroing while moving for absolute encoders

Modified zeroing code for pot and absolute encoder to no longer
update estimates of offsets while moving. This causes a delay of
3 samples (due to a sample buffer size).

Change-Id: Iaf82ad83ebcfc68fa75ce23716c7d89a6e34a917
diff --git a/frc971/zeroing/zeroing_test.cc b/frc971/zeroing/zeroing_test.cc
index 87debdd..420ca61 100644
--- a/frc971/zeroing/zeroing_test.cc
+++ b/frc971/zeroing/zeroing_test.cc
@@ -22,6 +22,7 @@
 static const size_t kSampleSize = 30;
 static const double kAcceptableUnzeroedError = 0.2;
 static const double kIndexErrorFraction = 0.3;
+static const size_t kMovingBufferSize = 3;
 
 class ZeroingTest : public ::testing::Test {
  protected:
@@ -319,15 +320,16 @@
   const double start_pos = 2.1;
   double measured_absolute_position = 0.3 * index_diff;
 
-  PotAndAbsoluteEncoderZeroingConstants constants{
-      kSampleSize, index_diff, measured_absolute_position, 0.1};
+  PotAndAbsoluteEncoderZeroingConstants constants{kSampleSize, index_diff,
+                                                  measured_absolute_position,
+                                                  0.1, kMovingBufferSize};
 
   sim.Initialize(start_pos, index_diff / 3.0, 0.0,
                  constants.measured_absolute_position);
 
   PotAndAbsEncoderZeroingEstimator estimator(constants);
 
-  for (size_t i = 0; i < kSampleSize - 1; ++i) {
+  for (size_t i = 0; i < kSampleSize + kMovingBufferSize - 1; ++i) {
     MoveTo(&sim, &estimator, start_pos);
     ASSERT_FALSE(estimator.zeroed());
   }
@@ -345,15 +347,16 @@
   const double start_pos = 10 * index_diff;
   double measured_absolute_position = 0.3 * index_diff;
 
-  PotAndAbsoluteEncoderZeroingConstants constants{
-      kSampleSize, index_diff, measured_absolute_position, 0.1};
+  PotAndAbsoluteEncoderZeroingConstants constants{kSampleSize, index_diff,
+                                                  measured_absolute_position,
+                                                  0.1, kMovingBufferSize};
 
   sim.Initialize(start_pos, index_diff / 3.0, 0.0,
                  constants.measured_absolute_position);
 
   PotAndAbsEncoderZeroingEstimator estimator(constants);
 
-  for (size_t i = 0; i < kSampleSize - 1; ++i) {
+  for (size_t i = 0; i < kSampleSize + kMovingBufferSize - 1; ++i) {
     MoveTo(&sim, &estimator, start_pos + i * index_diff);
     ASSERT_FALSE(estimator.zeroed());
   }