-
Notifications
You must be signed in to change notification settings - Fork 141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add example of track-to-track fusion #666
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tutorial looks good! Just some really small documentation comments from looking at the pdf version.
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 |
I removed the class definitions for the ChernoffUpdater and the Tracks2GaussianDetectionFeeder, and reworked the explanation to accommodate this. Here is the latest Sphinx rendering |
|
||
plotter1.fig.show() | ||
|
||
track = track_fusion_tracks.pop() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Building on CircleCI currently fails as track_fusion_tracks
is an empty set.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah I see, thanks Steve! I added an if statement to check if the track_fusion_tracks has any tracks in it before plotting. I've run the notebook so many times on my own, and it very rarely happens that there are no tracks. So I think this is an adequate solution.
I'm not sure why, but when running on CircleCI, no tracks are produced. But it works fine locally. I'll rebase on |
Add example of track-to-track fusion using the new Bayesian formulation of the covariance intersection algorithm
Co-authored-by: Nicola Perree <[email protected]>
The ChernoffUpdater and Tracks2GaussianDetectionFeeder are now merged in Stone Soup, so don't need to be written in this example.
e483da3
to
ec9ed86
Compare
On certain environments, no tracks are formed as mixture is pruned too soon.
ec9ed86
to
10a4c0d
Compare
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 Report
@@ 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
Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
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).