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

Initial orbit determination #84

Open
ChristopherRabotin opened this issue Dec 11, 2022 · 0 comments
Open

Initial orbit determination #84

ChristopherRabotin opened this issue Dec 11, 2022 · 0 comments
Labels
Kind: New feature This is a proposed new feature Priority: low Status: Design Issue at Design phase of the quality assurance process Topic: Orbit Determination

Comments

@ChristopherRabotin
Copy link
Member

ChristopherRabotin commented Dec 11, 2022

High level description

Orbit determination is the process of determining the position and velocity of a spacecraft from observations, such as range, range rate, and angles data. This information is essential for spacecraft mission planning and trajectory optimization.

Currently, Nyx does not support initial orbit determination methods, such as Gibbs' method, that can be used without any initial state information. This issue aims to add support for initial orbit determination methods to Nyx, allowing users to determine the initial position and velocity of a spacecraft using observations.

Requirements

To support initial orbit determination in Nyx, the following requirements shall be met:

  • Nyx shall support initial orbit determination using range and range-rate data: "However, [this method] is limited to using range and range rate observations, and cannot be used with angles-only data." (ChatGPT)
  • Examples shall be provided of how to use the ODProcess structure to determine the initial position and velocity of a spacecraft using initial orbit determination methods.

Test plans

To test the ability to determine initial orbits using the ODProcess structure in Nyx, the following steps shall be taken:

  • Use the ODProcess structure in Nyx to determine the initial position and velocity of the spacecraft in the test cases using initial orbit determination methods.
  • Compare the determined initial orbits to known solutions for the test cases to verify their accuracy. These test cases can be generated from Nyx itself.
  • Test the ability to use initial orbit determination methods in spacecraft mission planning and trajectory optimization using the ODProcess structure in Nyx.
    est cases with a large number of observations to verify the accuracy and performance of the initial orbit determination methods with large datasets.
  • Test cases with a small number of observations to verify the ability of the initial orbit determination methods to handle cases with limited data.
  • Test cases with noisy or corrupted observations to verify the robustness of the initial orbit determination methods to errors in the data.
  • Test cases with extreme orbital conditions, such as high eccentricity or inclination, to verify the accuracy of the initial orbit determination methods in challenging situations.
  • Test cases with multiple spacecraft and/or targets to verify the ability of the initial orbit determination methods to handle multiple objects.

Design

This is the design section. Each subsection has its own subsection in the quality assurance document.

Algorithm demonstration

Potential sources:

ChatGPT:

Gibbs' method for initial orbit determination can provide an initial covariance for the position and velocity of the spacecraft. The covariance can be computed from the observations and used to estimate the uncertainty in the determined initial orbit.

The initial covariance is typically computed as a 3x3 or 6x6 matrix, depending on whether the position and velocity are treated as separate or combined variables. The diagonal elements of the covariance matrix represent the variance of the individual components of the initial state vector, while the off-diagonal elements represent the covariance between the different components. The initial covariance can be used, for example, to assess the reliability of the determined initial orbit and to propagate uncertainty through subsequent calculations, such as trajectory optimization.

API definition

fn initial_orbit_determination(&mut self, observations: &[Observation]) -> Result<Estimate, NyxError> {}

// (...)
pub trait Estimate { // Human: replace this with the current `Estimate` structure
    fn state(&self) -> &Vector;
    fn covariance(&self) -> &Matrix;
}

High level architecture

  1. Define a set of observations containing range and range rate data for the spacecraft.
  2. Initialize the position and velocity of the spacecraft to a reasonable guess.
  3. Compute the range and range rate at the current estimate of the position and velocity.
  4. Update the position and velocity using the computed range and range rate and the measured values.
  5. Compute the covariance of the updated position and velocity.
  6. Repeat steps 3-5 until the position and velocity converge to a stable solution.
  7. Return the final estimate of the position and velocity, along with its covariance.

The observations are used to iteratively refine the initial estimate of the position and velocity of the spacecraft. The position and velocity are updated using the computed range and range rate and the measured values, and the covariance is computed at each step to provide an estimate of the uncertainty in the initial orbit. The process is repeated until the position and velocity converge to a stable solution, at which point the final estimate of the position and velocity, along with its covariance, is returned.

Detailed design

The detailed design *will be used in the documentation of how Nyx works.

Feel free to fill out additional QA sections here, but these will typically be determined during the development, including the release in which this issue will be tackled.

@ChristopherRabotin ChristopherRabotin added Status: Design Issue at Design phase of the quality assurance process Kind: New feature This is a proposed new feature Topic: Orbit Determination labels Dec 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Kind: New feature This is a proposed new feature Priority: low Status: Design Issue at Design phase of the quality assurance process Topic: Orbit Determination
Projects
None yet
Development

No branches or pull requests

1 participant