Skip to content
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

Account for state covariance in measurement noise #337

Conversation

ChristopherRabotin
Copy link
Member

@ChristopherRabotin ChristopherRabotin commented Jul 13, 2024

Summary

This is an important set of changes for operational like OD.

  • Measurement noise now accounts for the state covariance as per the ODTK MathSpec equation 4.10. It was previously fixed at the initialization of the filter.
  • Measurements are now rejected in full based on the time-varying measurement noise
  • Measurement stochastic model now accounts for the white noise separately from the bias (modeled as a first order Gauss Markov process).
  • Gausse Markov process simplified, but still matches the NASA Best Practices for Navigation Filters

Closes #331

TODOs

  • TrackingArc to allow for quick change in the device configurations
  • Assess the difficulty of adding an "interpret" function to the ODP which makes recommendations based on ODTK's Goldilock blog post.

Architectural Changes

  • New Stochastics trait to define any noise modeling
  • Ground station uses the new stochastic, which distinguishes between the white noise and the bias.

New Features

  • Residuals are now exported in the OD export, along with the measurement noise used at this time step and the tracker used for that residual

Improvements

No change

Bug Fixes

No change

Testing and validation

The residual rejection test was thoroughly analyzed. Notably, the state errors are checked to be within the covariance bounds, i.e. ensure that the filter has not diverged even when almost all of the measurements are rejected. A super high SNC residual rejection test now checks that none of the residuals are rejected, because the state covariance is so high.

In both cases, a large initial state error is defined. No iteration is done, nor is there any BLSE (cf. #85) to improve the large initial state error.

Hyper inflated SNC test

Note: Don't do this in real-life, instead dramatically increase the tracker noise.

covar-ric-pos-resid-large-snc
covar-ric-vel-resid-large-snc
doppler-resid-large-snc
range-resid-large-snc

Standard SNC, large state deviation

covar-ric-pos-resid-reject
covar-ric-vel-resid-reject
doppler-resid-reject
range-resid-reject

Documentation

This PR does not primarily deal with documentation changes.

Copy link

github-actions bot commented Jul 13, 2024

Visit the preview URL for this PR (updated for commit f5f7c11):

https://nyx-rustdoc--pr337-331-measurement-upda-x1ahpgb6.web.app

(expires Sun, 21 Jul 2024 20:40:59 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: d8e2a55934352d850c15d11866c39eb2d2e029be

@ChristopherRabotin
Copy link
Member Author

It would be a bit of a pain to develop the whole assessment of the residuals, so I'm skipping this for now.

@ChristopherRabotin
Copy link
Member Author

Blocked on tokio-rs/bytes#722.

@ChristopherRabotin ChristopherRabotin merged commit 3ff6b25 into master Jul 14, 2024
7 checks passed
@ChristopherRabotin ChristopherRabotin deleted the 331-measurement-update-and-residual-rejection-shall-account-for-each-participants-noise-level branch July 14, 2024 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Measurement update and residual rejection shall account for each participant's noise level
1 participant