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() -> sgp4::Result<()> {
    match ureq::get("https://celestrak.com/NORAD/elements/gp.php")
        .query("GROUP", "galileo")
        .query("FORMAT", "json")
        .call()
    {
        Ok(response) => {
            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(())
        }
        Err(ureq::Error::Status(code, response)) => Err(sgp4::Error::new(format!(
            "network error {}: {}",
            code,
            response.into_string()?
        ))),
        Err(error) => Err(sgp4::Error::new(error.to_string())),
    }
}

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

Represents an SGP4 error

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

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