nyx-space / nyx

Nyx is a high fidelity, fast, reliable and validated astrodynamics toolkit library written in Rust and available in Python
https://nyxspace.com
GNU Affero General Public License v3.0
198 stars 20 forks source link

Breaking changes: runtime filtering of measurements and selection of processing for simultaneous measurements #379

Open ChristopherRabotin opened 4 days ago

ChristopherRabotin commented 4 days ago

Summary

Orbit determination measurements are no longer their own type. Instead, they're all part of the Measurement structure which can store multiple simultaneous measurements in a HashMap. All tracking devices are represented as a BTreeMap. All tracking data is also represented as a BTreeMap.

This leads to significant code simplifications, along with runtime flexibility to enable or disable specific measurement types from specific ground stations (or trackers in general). This is an important requirement for operations where a specific measurement type by a given ground station may be unreliable.

Architectural Changes

Closes #333

New Features

Improvements

Bug Fixes

No change

Testing and validation

Documentation

This PR does not primarily deal with documentation changes.

github-actions[bot] commented 4 days ago

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

https://nyx-rustdoc--pr379-feat-gh-333-od-msr-j-jlj40tik.web.app

(expires Mon, 02 Dec 2024 01:16:11 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: d8e2a55934352d850c15d11866c39eb2d2e029be

ChristopherRabotin commented 3 days ago

~Executing the LRO example without any range data led to Error: SingularNoiseRk error.~

Fixed by setting the default measurement noise to identity.

Doppler and some range

To test, simply remove the range_km entry in the measurement_types of Goldstone and Canberra, and run the LRO example. When there is ranging data injected, we can see the uncertainty on the range to rise because the postfit values are larger than the prefits (which are zero), and similarly the Doppler uncertainty drops because in our model the velocity does not suffer from the oscillation we see in the range (refer to https://nyxspace.com/nyxspace/showcase/04_lro_od/ for details).

lro-range-resid

lro-doppler-resid

lro-resid-ratios

lro-chi-square

Azimuth and Doppler

lro-azmuth-resid lro-doppler-resid

codecov[bot] commented 3 days ago

Codecov Report

Attention: Patch coverage is 79.84252% with 256 lines in your changes missing coverage. Please review.

Project coverage is 66.33%. Comparing base (923aca9) to head (9cc143f). Report is 32 commits behind head on master.

Files with missing lines Patch % Lines
src/od/ground_station/mod.rs 71.65% 70 Missing :warning:
src/od/msr/data_arc.rs 79.47% 62 Missing :warning:
src/od/msr/sensitivity.rs 68.75% 35 Missing :warning:
src/od/simulator/arc.rs 76.19% 25 Missing :warning:
src/od/msr/measurement.rs 48.83% 22 Missing :warning:
src/od/process/mod.rs 85.29% 15 Missing :warning:
src/od/ground_station/trk_device.rs 90.69% 8 Missing :warning:
src/od/msr/types.rs 82.92% 7 Missing :warning:
src/od/process/export.rs 85.71% 4 Missing :warning:
src/od/estimate/residual.rs 85.00% 3 Missing :warning:
... and 4 more
Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #379 +/- ## ========================================== - Coverage 76.29% 66.33% -9.97% ========================================== Files 84 88 +4 Lines 13332 13363 +31 ========================================== - Hits 10172 8864 -1308 - Misses 3160 4499 +1339 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


🚨 Try these New Features: