estkit implements 86 state estimators and observers — from the Kalman filter to moving-horizon estimation, particle filters and deterministic observers — against a single model-agnostic interface, with no dynamic memory and no exceptions, then measures every one of them on the battery-management problem of an electric aircraft.
One header per estimator, each templated on a small model concept
(f, h, Q, R; Jacobians optional). No heap, no exceptions, fixed-size linear
algebra with compile-time dimensions, Real = double or float,
warning-free under -Wall -Wextra -Wpedantic -Werror on GCC and Clang, and it
cross-compiles to a Cortex-M7. The battery model is one instance; a drone navigation model
and an attitude model are others — the same Ekf<M> estimates all three.
Two truth plants — an enhanced equivalent-circuit cell and an electrochemical single-particle model built from LG M50 electrode data — over four missions, twelve fault scenarios and three noise seeds, plus a twelve-cell pack, a 120-mission ageing study and an instrumented flight. Cross-validated against FilterPy, PyBaMM and ahrs to floating-point precision.
The results →Any discrete-time model that provides a transition, a measurement and two noise covariances plugs into every estimator unchanged. Everything below the model concept is problem-independent; everything above it is the only battery-specific code.
On a cell whose model the estimator knows, the nominal problem is solved by any tuned closed-loop filter; the field is separated only by faults. On a cell whose model it does not know, every converged Kalman filter parks on a ~4 % bias with a clean innovation, while fading-memory and fixed-gain estimators hold under 0.7 %. The choice of estimator matters much less than whether it is told the truth about its model and its sensors.
The plain EKF fails the hardest scenario (MHE-RTI and the
adaptive family reach 0.50 % where the EKF has
12.4 %) not because it
is a poor filter but because it is an exact one for a model that is wrong.
Drop one header into your project and run any filter on your own model in twenty lines.
Getting started →A reproducible, cross-validated benchmark and a 958-page report with one chapter per estimator.
The report →A reference estimator stack for an electric-aircraft battery-management system, with the evidence.
Recommendations →