dstl / Stone-Soup

A software project to provide the target tracking community with a framework for the development and testing of tracking algorithms.
https://stonesoup.rtfd.io
MIT License
384 stars 126 forks source link

PDA Updater #913

Closed jmbarr closed 1 month ago

jmbarr commented 6 months ago

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

sglvladi commented 4 months 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:

The above would pave the way for a ParticlePDAUpdater/ELPFUpdater that could be structured similarly to perform the PDA update for particle filters.

sdhiscocks commented 4 months 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 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

sdhiscocks commented 1 month ago

Per @sglvladi comment, I think it would be good to change structure to support more flexible structure, but I'll merge this for now.