Satellite Orbital Dynamics Toolkit
Project description
Satellite Toolkit with Rust
An accurate, high-performance satellite orbital kinematics toolkit, written in Rust with a sensible interface.
Github
Crates.io
PyPi
Language Bindings
- Native Rust bindings
- Python bindings for compiled rust code ... speed of Rust with convenience of Python
Install withpip install satkit
PyPi includes binaries for windows, macos (Intel & arm), and linux
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-2000 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)
- Geodesic distances
- SGP4, and Keplerian orbit propagation
- JPL high-precision planetary ephemerides
- High-order gravity models
- High-precision, high-speed numerical satellite orbit propagation with high-order efficient Runga-Kutta solvers, ability to solve for state transition matrix, and inclusion following forces:
- High-order Earth gravity with multiple models
- Solar gravity
- Lunar gravity
- Drag (NRL MISE-00 density model)
- Radiation pressure
ODE Solvers
The high-precision numerical satellite orbit propagation makes use of standard Runga-Kutta methods for integration of ordinary differential equations. The ODE solver is included as part of the library.
The methods use Runga-Kutta pairs for ODE integration and error estimation generated by Jim Verner: https://www.sfu.ca/~jverner/
References, Models, and External Software.
The equations and many of the unit tests underlying this work are drawn from the following sources:
- "Fundamentals of Astrodynamics and Applications, Fourth Edition", D. Vallado, Microcosm Press and Springer, 2013.
https://celestrak.org/software/vallado-sw.php - "Satellite Orbits: Models, Methods, Applications", O. Montenbruck and E. Gill, Springer, 2000.
https://doi.org/10.1007/978-3-642-58351-3
This code makes reference to and relies on models generated by the following:
- SGP4 Orbit Propagator - https://celestrak.org/software/tskelso-sw.php
NORAD / SGP4 orbit propagator used to generate position and velocity states from orbital ephemerides described by Two-Line Element Sets (TLEs). This code base includes a pure-rust translation of the SGP4 orbit propagator - NRL MSISE-00 Density Model - https://ccmc.gsfc.nasa.gov/models/NRLMSIS~00/
NRL model of air density, including density at high altitudes, used in to compute satellite drag - Gravity Models - http://icgem.gfz-potsdam.de/home
International Center for Global Earth Models (ICEGM), collection and archive in a common format of all existing global gravity field models - Space Weather - https://celestrak.org/SpaceData/
Space weather used to modulate the air density used in drag calculations - Earth Orientation Parameters - https://celestrak.org/SpaceData/
Time-varying Earth orientation parameters used for time epoch conversions and high-precision rotations between the inertial and Earth-fixed coordinate frames - IERS Conventions - https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html
International Earth Rotation and Reference Systems Service Technical Note 36 for rotation between inertial and Earth-fixed coordinate systems.
Verification
The code includes rust test modules and python test modules for verification of nearly calculations, including but not limited to:
- JPL Ephemeris - Via JPL-provided test vectors for Chebychev polynomial calculation
- SGP4 - Via SGP4 test vectors provided with original C++ distribution
Author
Steven Michael (ssmichael@gmail.com)
Please reach out of you find errors in code or calculations, are interested in contributing to this repository, or have suggestions for improvements to the API.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for satkit-0.2.5-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72d5eacb022ef0a6fdf76b0091f37e4a13ffa74a0c3a7b912ebdb0e9e80e0620 |
|
MD5 | cd4c451e9af8802f23bb7b4e3613bcf0 |
|
BLAKE2b-256 | 241f8ae3d739531399750e64eeee1fd2a4eaf245405c1a2f1e499df03395ed09 |
Hashes for satkit-0.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb47902a2f5b1d2c85de9e6933a20b85941b48dd75507d38b172d1403194426d |
|
MD5 | f66b14ac180f6b0b7b8fbc56a944a2cc |
|
BLAKE2b-256 | 490bc89c8a47a9a9d305b7c9fd49885ab14fe558241e9731f3b823bfa2cac50f |
Hashes for satkit-0.2.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9f23ad3b322f49bf922b528e49367532923d18b253f4d82a5ff35656694c202 |
|
MD5 | 76f777e103e30aaaf0d09aa56e85a4da |
|
BLAKE2b-256 | 8eb0d63c620a12d0b68565aff53e928c76d3ee2cfde8d0af3a72ea314f687ce5 |
Hashes for satkit-0.2.5-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9153402d15448c485df6217a32bfb69d74c65a26fea0250d10c24a7ba6723b86 |
|
MD5 | f3071efb57107a885e7ddc72618ec55c |
|
BLAKE2b-256 | 3abb116608bf8882d6f1d2b5275306c167e634298247399031f4c3bac7d12b10 |
Hashes for satkit-0.2.5-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd1d243f75ec71529a521cb1e95ea080f9f249beb8855d4aab5c22bc1814a1d0 |
|
MD5 | ec6a9a8e88349c7332a5d37d5b56cc4e |
|
BLAKE2b-256 | f5395cbd1e9ef6ec78059074ed7a03620adfb6dcf24ccc85d2afd6005289763a |
Hashes for satkit-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 855540844679fe36ed263f9a391029d2424686fd53c4300ce0ae77c5513ae324 |
|
MD5 | 9d6c75fe91eb10abf960bdcbc7cc2626 |
|
BLAKE2b-256 | dd5cb8a6899cd036b5ab5b11d9e822cd706971ef66b3b4fe19568796e847f9e0 |
Hashes for satkit-0.2.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b62488f6ca30fac9e5da8271a8badadb0e856d845e452ce488f8d8a2f655d05f |
|
MD5 | f6071ac816fe61516ad5db1a81b2584e |
|
BLAKE2b-256 | a6c24ccdc8c832562d95c25967d033b78bc30fe340951b4078a4c37cf2908024 |
Hashes for satkit-0.2.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c016e483cae417e478a19056ec9cf03f5af3077924332565e4dab77483d03ba |
|
MD5 | f9895b6839b3ce26638138174086dfff |
|
BLAKE2b-256 | a429362a1275c14659a44e09f2ef45bdb5e2a05c31050099dfcef63afdc5cb73 |
Hashes for satkit-0.2.5-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f5308a224bbd15b9d043c20aae1bd9235b1de16b1f876ef4ccbf198e612917a |
|
MD5 | 1e4628500ea88ad08ae630cdd6a38862 |
|
BLAKE2b-256 | d01f41628beb5b72ed0ae1cf11bbe6374fa4ed11fca78ffafacb95ac543e8b4c |
Hashes for satkit-0.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 958fd87211de71de56f1fd99994e1ec67ea559d1ed1aa5eb9e9c5747e15f9e45 |
|
MD5 | 8f457b0d251ec20f476558aa411945e7 |
|
BLAKE2b-256 | f6b07234ce289a4bcf57907ab2d874268a004ec3dc0a280dcd3cab0e04d8465f |
Hashes for satkit-0.2.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0821d5bda45da64338080be4f5d7cdae15a8a92c6b01bfa8f77dd84f9dcda7df |
|
MD5 | 68f1e59874683be5392c87ec076c11ea |
|
BLAKE2b-256 | 5c98ecae5593cfbe3a679a8230c923186f2dc2fcaf44dc0be239f23638882c46 |
Hashes for satkit-0.2.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11a9d74a116d419bc31cd854d6f0ed63b63f4fbcbd62af3dbb2fef0e526982b1 |
|
MD5 | 9be37cbaaa62c759c4f71df62f14271e |
|
BLAKE2b-256 | 29f23179d3ee4bbf8a3f82269800aa6b9281d320b9a470f95c9ec0a83918c935 |
Hashes for satkit-0.2.5-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 448a38995a9be19c7bb64671f8de4df5d11e694352c5f03dbdc7d6d880b853a9 |
|
MD5 | 2d38f64bd74fe7f8337a50fcd63b6167 |
|
BLAKE2b-256 | 255cf35498e5f42ae0b51ec07618c1400118dbeec4ec63d1d87a6b8bdfba4b86 |
Hashes for satkit-0.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ed26ac03caabf546d5859020e786c4f842fa888e49927b8eaea6504536e4c43 |
|
MD5 | 5117f029ba1d8a5dd9af1e4416ba9ab8 |
|
BLAKE2b-256 | c5b4ab6c7701f3b462b5ad9d5c9301a35c2e13c2035c45a6d94733bd0ccc02d9 |
Hashes for satkit-0.2.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e95f085d51e84fd87d1ccdbccb006eee884f667b93e0ca083001e502f635d15 |
|
MD5 | 243d1e40531ae4a32c9acb5e8c696dd3 |
|
BLAKE2b-256 | b626413788b3de54ab8c1d06279906a107bd99e5cdc0fe79b2e12972d82772c5 |
Hashes for satkit-0.2.5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 61d737b4ee227bb1e18cd9cd368fc1c97107d212b445c0853fee2dad6466db84 |
|
MD5 | 8080eb9ccf649127c58855a422a71207 |
|
BLAKE2b-256 | 57807ad7e797daaeb3d8b8f4c7a1f9dc5da43b694a93fc2d8503719378f0243c |
Hashes for satkit-0.2.5-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a72a631b22070d95a4053909764f5362b04f01f97aade88274be9328f2de8dfe |
|
MD5 | 9486f7e6d1c5217e6ff039a35f766e3d |
|
BLAKE2b-256 | df048426af978289318084067e1adab13ba7285e2136bf1c53356dda709f7a7d |
Hashes for satkit-0.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3de582a273068b970a10e354fa1e4032f7ebd295d064540560a0a2b551c4cd40 |
|
MD5 | 06535ff00f93ffcafc4f28d3e32d3d62 |
|
BLAKE2b-256 | 4e77cfedb0c3638b1742277999dc3a32c4927730880410750da29d9446978171 |
Hashes for satkit-0.2.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0646b15c684193693f0ec829d84398798ae523619878b83fcbff1aa9b411f98e |
|
MD5 | f44a374605ea40d483db95c14591b2fa |
|
BLAKE2b-256 | 0490678606877c1ae73e22f99cb1fce729c2d2951a4aa147744c97a1d5748900 |
Hashes for satkit-0.2.5-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52131910dd730263ea443f1385eaa575fc891ab18923399f5eed3ec9d215cf9e |
|
MD5 | 51af8631d1c032cbaecdc2d07231bf43 |
|
BLAKE2b-256 | ad128d0e4b08990ebe88f847cad4391ad0e101d482332f992a0b1c44f9a7090d |