Added zeroing to ADIS16448
Broke out averaging from gyro_sender into a new class.
Change-Id: Iedaa0a7bd39337dbbe61a6d856ce28227f2747a5
diff --git a/frc971/wpilib/ADIS16448.h b/frc971/wpilib/ADIS16448.h
index 778ab49..4fefd07 100644
--- a/frc971/wpilib/ADIS16448.h
+++ b/frc971/wpilib/ADIS16448.h
@@ -37,6 +37,12 @@
void Quit() { run_ = false; }
+ bool gyros_are_zeroed() const { return gyros_are_zeroed_.load(); }
+
+ double gyro_x_zeroed_offset() const { return gyro_x_zeroed_offset_; }
+ double gyro_y_zeroed_offset() const { return gyro_y_zeroed_offset_; }
+ double gyro_z_zeroed_offset() const { return gyro_z_zeroed_offset_; }
+
private:
// Converts a 16-bit value at data to a scaled output value where a value of 1
// corresponds to lsb_per_output.
@@ -70,6 +76,12 @@
DigitalInput *const dio1_;
::std::atomic<bool> run_{true};
+
+ // The averaged values of the gyro over 6 seconds after power up.
+ ::std::atomic<bool> gyros_are_zeroed_{false};
+ double gyro_x_zeroed_offset_ = 0.0;
+ double gyro_y_zeroed_offset_ = 0.0;
+ double gyro_z_zeroed_offset_ = 0.0;
};
} // namespace wpilib