Closed jmbarr closed 1 month ago
Looking at this made me think whether we could make this more modular by using a KalmanUpdater
(or subclass) via composition, rather than inheritance:
PDAUpdater
inherits from Updater
and accepts a KalmanUpdater
as an updater
property, which it then uses to either update()
or predict_measurement()
, as per lines 127 and 164KalmanPDAUpdater
/GaussianPDAUpdater
to reflect the fact that it applies specifically to Kalman/Gaussian cases.The above would pave the way for a ParticlePDAUpdater
/ELPFUpdater
that could be structured similarly to perform the PDA update for particle filters.
Looking at this made me think whether we could make this more modular by using a
KalmanUpdater
(or subclass) via composition, rather than inheritance:
PDAUpdater
inherits fromUpdater
and accepts aKalmanUpdater
as anupdater
property, which it then uses to eitherupdate()
orpredict_measurement()
, as per lines 127 and 164- The class could also be renamed to
KalmanPDAUpdater
/GaussianPDAUpdater
to reflect the fact that it applies specifically to Kalman/Gaussian cases.The above would pave the way for a
ParticlePDAUpdater
/ELPFUpdater
that could be structured similarly to perform the PDA update for particle filters.
Something similar was done for the DIEKF in #891: https://github.com/dstl/Stone-Soup/blob/e27fc3639d791d2441b6c4b8572c57932651deb3/stonesoup/updater/iterated.py
Per @sglvladi comment, I think it would be good to change structure to support more flexible structure, but I'll merge this for now.
Provides an updater based on probabilistic data association. See the documentation in the Updaters section, or have a look at this gist: https://gist.github.com/jmbarr/92dc83e28c04026136d4f8706a1159c1