/SimpleKalmanFilter

A basic implementation of Kalman Filter for single variable models.

Primary LanguageC++MIT LicenseMIT

Simple Kalman Filter Library - GitHub license GitHub stars GitHub issues

KalmanFilter

This is a basic kalman filter library for unidimensional models that you can use with a stream of single values like barometric sensors, temperature sensors or even gyroscope and accelerometers.

  • Take a look at this youtube video to see the Kalman Filter working on a stream of values!

Special thanks to Professor Michel van Biezen and his amazing work in http://www.ilectureonline.com/

Repository Contents

  • /examples - Example sketches for the library (.ino). Run these from the Arduino IDE.
  • /src - Source files for the library (.cpp, .h).
  • keywords.txt - Keywords from this library that will be highlighted in the Arduino IDE.
  • library.properties - General library properties for the Arduino package manager.

Basic Usage

  • e_mea: Measurement Uncertainty - How much do we expect to our measurement vary
  • e_est: Estimation Uncertainty - Can be initilized with the same value as e_mea since the kalman filter will adjust its value.
  • q: Process Variance - usually a small number between 0.001 and 1 - how fast your measurement moves. Recommended 0.01. Should be tunned to your needs.
 SimpleKalmanFilter kf = SimpleKalmanFilter(e_mea, e_est, q);

 while (1) {
  float x = analogRead(A0);
  float estimated_x = kf.updateEstimate(x);
  
  // ...
 } 

Example Briefs

  • BasicKalmanFilterExample - A basic example reading a value from a potentiometer in A0 and SimpleKalmanFilter class to generate estimates.
  • AltitudeKalmanFilterExample - Uses a BMP180 barometric sensor and the SimpleKalmanFilter class to estimate the correct altitude.

Additional Documentation

Version History

License Information

This is an open source project!

Please review the LICENSE.md file for license information.

If you have any questions or concerns on licensing, please contact denys.sene@gmail.com.