Crate sgp4

source ·
Expand description

This crate implements the SGP4 algorithm for satellite propagation.

It also provides methods to parse Two-Line Element Set (TLE) and Orbit Mean-Elements Message (OMM) data.

A UTF-8 transcript of the mathematical expressions that compose SGP4 can be found in the repository https://github.com/neuromorphicsystems/sgp4.

Example

The following standalone program downloads the lastest Galileo OMMs from Celestrak and predicts the satellites’ positions and velocities after 12 h and 24 h.

fn main() -> anyhow::Result<()> {
    let response = ureq::get("https://celestrak.com/NORAD/elements/gp.php")
        .query("GROUP", "galileo")
        .query("FORMAT", "json")
        .call()?;
    let elements_group: Vec<sgp4::Elements> = response.into_json()?;
    for elements in &elements_group {
        println!("{}", elements.object_name.as_ref().unwrap());
        let constants = sgp4::Constants::from_elements(elements)?;
        for hours in &[12, 24] {
            println!("    t = {} min", hours * 60);
            let prediction = constants.propagate((hours * 60) as f64)?;
            println!("        r = {:?} km", prediction.position);
            println!("        ṙ = {:?} km.s⁻¹", prediction.velocity);
        }
    }
    Ok(())
}

More examples can be found in the repository https://github.com/neuromorphicsystems/sgp4/tree/master/examples.

Structs

Propagator variables calculated from epoch quantities and used during propagation
General perturbations orbital data parsed from a TLE or OMM
Model of the Earth radius and gravitational field
The Brouwer orbital elements
Predicted satellite position and velocity after SGP4 propagation
Represents the state of the deep space resonnance integrator

Enums

A satellite’s elements classification
Represents an SGP4 error

Constants

The geopotential model used in the AFSPC implementation
The geopotential model recommended by the IAU

Functions

Converts an epoch to sidereal time using the AFSPC expression
Converts an epoch to sidereal time using the IAU expression
Parses a multi-line TL/2LE string into a list of Elements
Parses a multi-line TL/3LE string into a list of Elements

Type Definitions

The result type returned by SGP4 functions