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

Revamp tracking schedule building #261

Merged
merged 23 commits into from
Dec 23, 2023

Conversation

ChristopherRabotin
Copy link
Member

@ChristopherRabotin ChristopherRabotin commented Dec 3, 2023

Effects

Includes breaking changes for the TrkConfig.

There was an attempt at building a tracking schedule while the measurements were generated. This led to a few unrealistic set ups, including the fact that the sampling rate could be wrong because of some attempt at being clever would fail.

This PR changes how TrkConfig is set up. There no longer is a start and end time per se. Instead, there's a scheduler, which will always schedule on visibility (defined as elevation > 0, regardless of the elevation mask of the ground station), and a cadence (either Continuous or Intermittent with an on/off tracking). From the scheduler, a set of "tracking strands" are built: these correspond to start/stop times during which the vehicle is over the horizon (in the SEZ frame of the ground station). Then, there is a "hand off" strategy that determines how to handle the case where several ground stations can see the vehicle.

Fixes #260

Measurement plots

The following plots used this configuration:

Madrid:
  strands:
    - start: 2020-01-01 00:00:00 UTC
      end: 2020-01-01 03:00:00 UTC
  sampling: 1 min

Canberra:
  strands:
    - start: 2020-01-01 15:00:00 UTC
      end: 2020-01-01 17:00:00 UTC
    - start: 2020-01-01 19:00:00 UTC
      end: 2020-01-02 00:00:00 UTC
  sampling: 1 min

Goldstone:
  strands:
    - start: 2020-01-01 06:00:00 UTC
      end: 2020-01-01 08:00:00 UTC
    - start: 2020-01-01 09:00:00 UTC
      end: 2020-01-01 12:00:00 UTC
  sampling: 1 min

No type specified

Shows all tracking strands:

newplot

In [1]: from nyx_space.plots.od import plot_measurements
In [2]: import pandas as pd
In [3]: msr_df = pd.read_parquet("/home/chris/Workspace/nyx-space/nyx/output_data/two_body_od_val_arc.parquet")
In [4]: plot_measurements(msr_df)

Ranging data

Fuzzy matching on column name: plot_measurements(msr_df, "range")
newplot(1)

Doppler data

Fuzzy matching on column name: plot_measurements(msr_df, "dop")
newplot(2)

TODO

  • Enable and test the hand off strategy
  • Add measurement plot example
  • Fix Python

P.S.: This PR likely includes quite a bit more work.

Copy link

github-actions bot commented Dec 3, 2023

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

https://nyx-rustdoc--pr261-hotfix-tracking-sche-2qbe6whg.web.app

(expires Sat, 30 Dec 2023 08:31:30 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: d8e2a55934352d850c15d11866c39eb2d2e029be

This is a pretty useful feature for ground station passes, which I'll implement right away.
Test results are still poor and I'm really not sure why.
Working on fixing the other ones which use the schedule. It's probably a change in the measurement generation that causes the issue.
For robustness test, I had to increase the tolerance by an order of magnitude. I explain this because this test uses the new tracking set up. This one uses the actual event of rising above the horizon to find when to start tracking. It causes the OD propagator and the truth propagator to take a different step size.
@ChristopherRabotin ChristopherRabotin merged commit d9864f2 into master Dec 23, 2023
13 checks passed
@ChristopherRabotin ChristopherRabotin deleted the hotfix/tracking-schedule-not-applied branch December 23, 2023 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Revamp tracking config / schedule
1 participant