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

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

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

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 Getting Started: getting-started.md

2023-04-10 C++ Source for Models

Commit d2bec5c

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

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

Python classes for models and Kalman filters

2022-08-26 Python User Interface

Commit 578ea7e

Demonstrate the User Interface for FormaK