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
403 stars 134 forks source link

Add example of track-to-track fusion #666

Closed ekhunter123 closed 2 years ago

ekhunter123 commented 2 years ago

Add example of track-to-track fusion using the new Bayesian formulation of the covariance intersection algorithm from Clark and Campbell (link).

I have run Sphinx to check the formatting, here is what it looks like as a PDF: Track2Track_Fusion_Example.pdf

This work was done with Daniel Clark, Sean O'Rourke (@orourkesm-afrl), and Bhashyam Balaji (@bhashyambalaji).

ekhunter123 commented 2 years ago

Now that the ChernoffUpdater and the track feeder are merged into main, I could remove their class definitions in this example. Or is it helpful to have them here for clarity?

nperree-dstl commented 2 years ago

Now that the ChernoffUpdater and the track feeder are merged into main, I could remove their class definitions in this example. Or is it helpful to have them here for clarity?

Yeah I would probably remove them from the example as it is quite a long one and let people explore the classes themselves if they want to

ekhunter123 commented 2 years ago

I removed the class definitions for the ChernoffUpdater and the Tracks2GaussianDetectionFeeder, and reworked the explanation to accommodate this. Here is the latest Sphinx rendering

T2TFusionExample.pdf

sdhiscocks commented 2 years ago

I'm not sure why, but when running on CircleCI, no tracks are produced. But it works fine locally.

I'll rebase on main to see if that resolves it.

sdhiscocks commented 2 years ago

So the issue was in certain configurations, the prune threshold was slightly too high. I recreated this on another Linux system running Python 3.10. I suspect this is caused by floating point precision discrepancy, either with Linux, Python 3.10, or version of NumPy or 3rd party libraries. Decreasing the threshold seems to have resolved the issue.

codecov[bot] commented 2 years ago

Codecov Report

Merging #666 (10a4c0d) into main (ee4ad3a) will increase coverage by 0.14%. The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #666      +/-   ##
==========================================
+ Coverage   94.48%   94.62%   +0.14%     
==========================================
  Files         171      171              
  Lines        8789     8789              
  Branches     1705     1705              
==========================================
+ Hits         8304     8317      +13     
+ Misses        350      342       -8     
+ Partials      135      130       -5     
Flag Coverage Δ
integration 70.36% <ø> (+0.96%) :arrow_up:
unittests 90.77% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
stonesoup/mixturereducer/gaussianmixture.py 97.80% <0.00%> (+1.09%) :arrow_up:
stonesoup/updater/pointprocess.py 98.64% <0.00%> (+2.70%) :arrow_up:
stonesoup/simulator/simple.py 98.00% <0.00%> (+4.66%) :arrow_up:
stonesoup/tracker/pointprocess.py 93.54% <0.00%> (+4.83%) :arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.