Crate satkit

Source
Expand description

§“SatKit” : Satellite Tool SatKit

§Crate Features:

  • Timescale transformations (UTC, GPS, UT1, TBD, TT, …)
  • High-precision coordinate transforms between:
    • International Terrestrial Reference Frame (ITRF)
    • Geocentric Celestial Reference Frame (GCRF) using IAU-2006 reduction
    • True-Equinox Mean Equator (TEME) frame used in SGP4 propagation of TLEs
    • Celestial Intermediate Reference Frame (CIRF)
    • Terrestrial Intermediate Reference Frame (TIRF)
    • Terrestrial Geodetic frame (latitude, longitude)
  • Two-Line Element Set (TLE) processing, and propagation with SGP4
  • Keplerian orbit propagation
  • JPL planetary ephemerides
  • High-order gravity models
  • High-precision, high-speed numerical satellite orbit propagation with high-order (9/8) efficient Runga-Kutta solvers, ability to solve for state transition matrix for covariance propagation, and inclusion following forces:
    • High-order Earth gravity with multiple models
    • Solar gravity
    • Lunar gravity
    • Dra, with NRL MISE-00 density model and inclusion of space weather data
    • Radiation pressure

§Language Bindings

  • Standalone Rust library available on on https://crates.io
  • Python bindings availble on PyPi

§Getting started

The library relies on the use of several external data sources for many of the calculations. These include:

These data sources must be downloaded and placed in a directory that is accessible to the library. The library provides a utility function to download these files from the internet.

The data files need only be downloaded once. However, the space weather data file (necessary for density calculations that impact satellite drag) and the Earth Orientation Parameters (necessary for accurate inertial-to-earth frame transformations) are updated daily and should be refreshed as necessary.

§Downloading the data files

// Print the directoyr where data will be stored
println!("Data directory: {:?}", satkit::utils::datadir());
// Update the data files (download those that are missing; refresh those that are out of date)
// This will always download the most-recent space weather data and Earth Orientation Parameters
// Other data files will be skipped if they are already present
satkit::utils::update_datafiles(None, false);

Re-exports§

pub use itrfcoord::ITRFCoord;
pub use tle::TLE;

Modules§

consts
Universal constants
earth_orientation_params
Earth orientation parameters (polar motion, delta-UT1, lenth of day)
earthgravity
Zonal gravity model for Earth gravity
filters
frametransform
Conversion between coordinate frames
itrfcoord
Internation Terrestrial Reference Frame coordinates & transformations to Geodetic, East-North-Up, North-East-Down
jplephem
Solar system body ephemerides, as published by the Jet Propulsion Laboratory (JPL)
kepler
Keplerian orbital elements Keplerian orbital elements module
lpephem
Low-precision ephemeris for sun and moon
nrlmsise
NRL-MISE00 Density model
orbitprop
High-Precision Orbit Propagation via Runga-Kutta 9(8) Integration
sgp4
SGP-4 Orbit Propagator
spaceweather
Space Weather
tle
Two-line Element Set
types
utils
Utility functions

Structs§

Duration
Structure representing a duration in time This can be used to add or subtract times from an Instant object.
Instant
A module for handling time and date conversions. Time is stored natively as the number of microseconds since the Unix epoch (1970-01-01 00:00:00 UTC) with leap seconds accounted for.

Enums§

Frame
SolarSystem
Solar system bodies
TimeScale
Time Scales
Weekday
Day of week