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

OD Process shall support azimuth and elevation data, and JIT filtering of measurement types #333

Open ChristopherRabotin opened 4 months ago

ChristopherRabotin commented 4 months ago

High level description

At the moment, OD only support range and Doppler measurement, simultaneous or not. In practice, especially in LEOP, we may want to use azimuth and elevation data to quickly converge on a valid solution. Moreover, in practice, a tracking data provider may not always align the range, Doppler, and angle data at the same epoch. Hence, this change should ensure that each participant in an ODP can be configured to support either of the supported measurements at runtime without requiring a rebuild.

Requirements

Test plans

Simulate tracking data where the range bias is 250 meters for a lunar orbiter. Run the OD in three different cases:

  1. Range and Doppler processed at once
  2. Range only
  3. Doppler only

This will demonstrate just-in-time filtering of measurements, and how processing biased range and Doppler affects the OD results. Use this to write recommendations in the documentation.

Design

This will most likely lead to a decently large refactoring. Specifically, each ground station will need to specify whether it supports a given measurement type. Then, the data read may be nullable (so it must be nullable in the exported data frame). If it's null, or if that participant does not support this measurement type, then the associated row/column of the sensitivity matrix must be nulled as well. This change will likely simplify the trait bounds for the ODP structure, which is why it must be done before version 2.0.0 is stabilized.

ChristopherRabotin commented 1 week ago

Architecture thoughts

Implementation plan