This library currently includes an Extended Kalman Filter (EKF) developed alongside a linear algebra library. Both are designed to be lightweight and efficient, making them ideal for use on embedded platforms. They are also intended to be independent of any external libraries.
The duration of prediction and update steps in the Extended Kalman Filter (EKF) is analyzed below. To do this, time measurements were taken for several problem sizes, varying the number of states (X_DIM), the number of control inputs (U_DIM) and the dimension of the measurement vector (Z_DIM). Speed tests ran on ESP32 with numerical jacobian's computation enabled. This gives an idea of the maximum frequency at which this class can operate for a given problem's size.
The complexity of the EKF is obviously O(n^3).
For more details, see the ekf_complexity_analysis where coefficients are stored and can be used to predict the time needed (in micros second) for a given problem size.
This library is ideal for anyone learning how filters work in C++ on embedded platforms. The current release includes foundational an Extended Kalman filter, using this linear algebra library.
The documentation of classes is available on this page.
The library is still under development. The EKF has been tested and should be functional, as verified using UNITY. Refer to the test section for details about the testing process, and check the latest test coverage report for an overview of the current coverage.
- Implement EKF
- Implement 1 dimensional tests for EKF
- Implement n dimensional tests for EKF
- Implement performance tests for EKF
- write documentation for EKF
- write examples for EKF
- docusaurus instead of doxygen
Do the same for UKF and particle filter.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
I'm a student working on this library out of curiosity and a desire to learn about matrix computations and state estimators. Through this project, I aim to deepen my understanding of these concepts, particularly in the context of embedded systems.
Note: This README was partially translated from French to English with the assistance of ChatGPT.