Kalman 0.3.0
Kalman Filter
|
std::initializer_list
if possible? emtpy
type if the deducer would fail to help avoid specialization? Make this class usable in constant expressions.
Is this filter restricted to Newton's equations of motion? That is only a discretized continuous-time kinematic filter? How about non-Newtonian systems?
Symmetrization support might be superfluous. How to confirm it is safe to remove? Optional?
Would we want to support smoothers?
Prepare support for larger dataset recording for graphing, metrics of large test data to facilitate tuning.
Support filter generator from equation? Third party integration?
Compare performance of general filter with its equivalent generated?
Support ranges operator filter?
Support mux pipes https://github.com/joboccara/pipes operator filter?
Reproduce Ardupilot's inertial navigation EKF and comparison benchmarks in SITL (software in the loop simulation).
Should we provide the operator[] for the vector characteristics regardless of implementation? And for the matrix ones too? It could simplify client code.
Should we provide the operator[] for state directly on the filter? Is the state X always what the user would want?
Should a fluent interface be useful in addition to the imperative and declarative paradigms support?
Expand std::format support with standard arguments and Eigen3 types?
Support, test complex number filters?
Use automatic (Eigen::AutoDiffScalar?), symbolic, numerical solvers to define the filter characteristics and simplify solving the dynamic system for non-mathematicians.
Support, use "Taking Static Type-Safety to the Next Level - Physical Units for Matrices" by Daniel Withopf and record the lesson learned: both usage and development is harder without compile time units verification.
Should we add back the call operator? How to resolve the update/predict ordering? And parameter ordering?
Should we support the noise cross covariance N = E[wvᵀ]
for correlated noise sources, with default to null?
Can we implement Temporal Parallelization of Bayesian Smoothers, Simo Sarkka, Senior Member, IEEE, Angel F. Garc ıa-Fernandez, https://arxiv.org/pdf/1905.13002.pdf ? GPU implementation? Parallel implementation?
Consider if returning the state column vector X would be preferable? Or fluent interface? Would be compatible with an ES-EKF implementation?
Can the parameter pack of PredictionTypes
be explicit in the method declaration for user clarity?
Consider if returning the state column vector X would be preferable? Or fluent interface? Would be compatible with an ES-EKF implementation?
Can the parameter pack of UpdateTypes
be explicit in the method declaration for user clarity?
inline constexpr auto & x(this auto&& self)
. Explore and compare performance.
Explore optimization of heap allocations?
Explore constexpr support?
Explore verification of lazy evaluation?
Remove unecessary empty paramaters when MSVC supports lambda without them.
Rewrite this test as a property-based test.
Static assert the sizes and value type?
P2585 may be useful in simplifying and standardizing the support.
Generalize out internal method concept when MSVC has better if-constexpr-requires support.