# What's New Release Notes ## 2024-02-20 Introductory Documentation Update the `demo/` directory to provide more written documentation of the features and what's going on. Additional examples for using each feature are located in the `featuretests/` directory. ## 2024-01-28 Hyperparameter Tuning FormaK now provides functionality to select hyperparameters from a known set. For example, an innovation filtering (see below) level can be selected from data. This method is general and can be used to select categorical values for configuring a model or estimator. *Breaking Changes*: - The `formak.python` EKF is no longer scikit-learn compatible. To use it with scikit-learn, it should be wrapper in the `SklearnEKFAdapter` class. Other Improvements: - There is the introduction of a significant quantity of Python types for function signatures in this design ## 2024-01-17 Better Documentation FormaK now provides HTML documentation in the `docs/generated/html/` directory. The documentation can be re-generated by running the command `make html` in the `docs/` directory. Other Improvements: - Updates Github Actions to check that documentation is regenerated as needed ## 2023-10-29 Reference Model: Strapdown IMU FormaK now provides a reference implementation of a Strapdown IMU. This can be used as a reference model to include within another model or used as a reference for understanding the current best practices when developing new models. ## 2023-09-18 Innovation Filtering Innovation filtering provides error rejection for the Kalman Filter. If measurements come in that are sufficiently improbable based on the current variance of the system then the measurement will be ignored. This is useful for cases such as recieving a heading that is 180 degrees opposed to the current estimated heading of the vehicle. Maybe it's helpful, but it's likely an erroneous reading. API Change: - Refactored error prone creation of sensor data in favor of a new key-based method ## 2023-08-04 Introducing FormaK Runtime Commit [`50eeadc`](https://github.com/buckbaskin/formak/commit/50eeadc69655d288a32b20f5b821b77977dba349) The first piece of the FormaK Runtime is the `ManagedFilter`. This will coordinate new sensor readings, process model updates and sensor model updates with an easy to use interface. The FormaK runtime will continue to be expanded over time to offer new features (e.g. around netcode and better managing sensor readings) as well as offering additional opt-in services (e.g. logging). Other Improvements: - Reorganize how the AST is packaged with reusable fragments - Fix misconfigured CI - Fix misconfigured Linting ## 2023-06-29 Common Subexpression Elimination Commit [`80fdd9d`](https://github.com/buckbaskin/formak/commit/80fdd9dca89b3f15b53baed0ebea56ead8a7f432) Common Subexpression Elimination removes all unnecessary code from the compute graph for the process model and individual sensor models in the filter. This represents a straightforward performance win that should benefit all models without changing the compute outcome. The upside for enabling the feature grows with model size because Common Subexpression Elimination with reduce shared computation at all scales, both large segments of repeat computation and the smallest operations. ## 2023-05-05 Calibration Commit [`02005ce`](https://github.com/buckbaskin/formak/commit/02005ce4fe932f5ad4d1131b117fa0b0a20232b9) Add an optional Calibration parameter for setting up multiple sensor models or adding sensors at known positions. Other Improvements: - Performance for the `ui.Model` and code generation flows is much improved Calibration Design: [designs/calibration.md](../designs/calibration) Getting Started: [getting-started.md](getting-started) ## 2023-04-10 C++ Source for Models Commit [`d2bec5c`](https://github.com/buckbaskin/formak/commit/d2bec5c7ea27f8092ea6d28c61917e7926fb8e72) Generate C++ source for models as an add on to the symbolic and Python sources for models ## 2022-12-21 Scikit-Learn Integration Commit [`ecbdb9e`](https://github.com/buckbaskin/formak/commit/ecbdb9ecf4812cdd12b0fc5194e23ebed6718978) FormaK Python models adapt the interface for Scikit-Learn (train, test, etc). This enables easier model fitting and additional integration with the Python science tools ecosystem. ## 2022-09-13 Python Source for Models Commit [`7e5ba82`](https://github.com/buckbaskin/formak/commit/7e5ba82c2c7bc0307bd145cc7a7c5d55c3e917f2) Python classes for models and Kalman filters ## 2022-08-26 Python User Interface Commit [`578ea7e`](https://github.com/buckbaskin/formak/commit/578ea7e721637ce3a2a16768b8bba49d4dd94130) Demonstrate the User Interface for FormaK