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_vec: Vec<sgp4::Elements> = response.into_json()?;
    for elements in &elements_vec {
        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(sgp4::MinutesSinceEpoch((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.

Re-exports

Structs

Enums

Constants

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

Functions