Crate satkit

Crate satkit 

Source
Expand description

§SatKit: Satellite Toolkit

A comprehensive, high-performance satellite astrodynamics library combining the speed of Rust with the convenience of Python. SatKit provides industrial-grade satellite orbital mechanics calculations with a clean, intuitive API. Built from the ground up in Rust for maximum performance and memory safety, it offers complete Python bindings for all functionality, making advanced orbital mechanics accessible to both systems programmers and data scientists.

§Core Features

§Time Systems

  • Comprehensive timescale transformations (UTC, GPS, UT1, TDB, TT, TAI)
  • Leap second handling
  • High-precision time arithmetic and conversions

§Coordinate Frame Transformations

High-precision coordinate transforms between multiple reference frames:

  • International Terrestrial Reference Frame (ITRF): Earth-fixed frame
  • Geocentric Celestial Reference Frame (GCRF): Inertial frame using IAU-2006 reduction
  • True Equinox Mean Equator (TEME): Frame used in SGP4 propagation
  • Celestial Intermediate Reference Frame (CIRF): IAU-2006 intermediate frame
  • Terrestrial Intermediate Reference Frame (TIRF): Earth-rotation intermediate frame
  • Geodetic Coordinates: Latitude, longitude, altitude conversions

§Orbit Propagation

Multiple propagation methods for various accuracy requirements:

  • SGP4: Simplified General Perturbations for Two-Line Element (TLE) sets with fitting capability
  • Numerical Integration: High-precision propagation using adaptive Runge-Kutta 9(8) methods
  • Keplerian: Simplified two-body propagation
  • State Transition Matrix: Support for covariance propagation

§Force Models

Comprehensive perturbation modeling:

  • High-order Earth gravity (JGM2, JGM3, EGM96, ITU GRACE16)
  • Solar and lunar gravity perturbations
  • Atmospheric drag using NRLMSISE-00 density model with space weather data
  • Solar radiation pressure

§Ephemerides

  • JPL Ephemerides: High-precision planetary and lunar positions
  • Low-Precision Ephemerides: Fast analytical models for sun and moon

§Additional Capabilities

  • Keplerian orbital elements and conversions
  • Geodesic distance calculations
  • TLE parsing, generation, and orbit fitting
  • Unscented Kalman Filter (UKF) implementation

§Language Bindings

  • Rust: Native library available on crates.io
  • Python: Complete Python bindings via PyO3, available on PyPI

§Getting Started

§Data Files

The library requires external data files for many calculations:

Data files need to be downloaded once. Space weather and Earth orientation parameter files are updated daily and should be refreshed periodically for optimal accuracy.

§Downloading Data Files

// Print the directory where data will be stored
println!("Data directory: {:?}", satkit::utils::datadir());

// Download required data files
// - Downloads missing files
// - Updates space weather and Earth orientation parameters
// - Skips files that already exist
satkit::utils::update_datafiles(None, false);

§Example Usage

use satkit::{Instant, Duration, TimeScale, ITRFCoord, SolarSystem};

// Create a time instant
let time = Instant::from_datetime(2024, 1, 1, 12, 0, 0.0).unwrap();

// Coordinate frame transformations
let itrf_pos = ITRFCoord::from_geodetic_deg(42.0, -71.0, 100.0);

// Get planetary ephemeris
let (moon_pos, moon_vel) = satkit::jplephem::geocentric_state(
    SolarSystem::Moon,
    &time
).unwrap();

§References

This implementation relies heaviliy on the following excellent references:

  • “Fundamentals of Astrodynamics and Applications, Fourth Edition” by D. Vallado, Microcosm Press and Springer, 2013
  • “Satellite Orbits: Models, Methods, Applications” by O. Montenbruck and E. Gill, Springer, 2000

§License

MIT License - See LICENSE file for details

Re-exports§

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

Modules§

consts
Universal constants
earth_orientation_params
Earth orientation parameters (polar motion, delta-UT1, length of day) Earth Orientation Parameters (EOP) module
earthgravity
Zonal gravity model for Earth gravity
filters
frametransform
Conversion between coordinate frames
itrfcoord
International 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
mathtypes
Mathematical types used throughout the library
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
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