13 releases

0.4.1 Jul 30, 2024
0.4.0 Jul 19, 2023
0.3.8 Mar 13, 2023
0.3.6 Jul 5, 2022
0.2.1 Nov 12, 2020

#120 in Science

Download history 261/week @ 2024-07-29 60/week @ 2024-08-05 155/week @ 2024-08-12 79/week @ 2024-08-19 33/week @ 2024-08-26 70/week @ 2024-09-02 54/week @ 2024-09-09 106/week @ 2024-09-16 79/week @ 2024-09-23 237/week @ 2024-09-30 66/week @ 2024-10-07 77/week @ 2024-10-14 24/week @ 2024-10-21 106/week @ 2024-10-28 87/week @ 2024-11-04 62/week @ 2024-11-11

280 downloads per month

MIT license

160KB
3K SLoC

C++ 1.5K SLoC // 0.4% comments Rust 1.5K SLoC // 0.0% comments

sgp4-rs

CI Status Docs Crate

This crate implements a wrapper around the C++ implementation of the SGP-4 orbital propagator as provided in the "Revisiting Spacetrack Report #3" paper (link). It provides high level bindings to the propagator library with a more modern interface.

Our approach separates the low-level unsafe bindings into the sgp4_sys module, while safe functions are exported through the library's root module. Because the underlying SGP4 implementation is thread-safe, this crate can be used in multithreaded environments and with async/await code.

We have not created bindings to every function in the library, especially as some of them are duplicative of Rust standard library functions. The core propagator functionality is exposed, and allows predicting an orbiting body's state vector at a given time from two line element data.

Building

sgp4 builds cleanly on the stable Rust channel, but does require a local C++ compiler to be present in order to build the wrapped SGP4 library.

Experimental Features

The tlegen feature adds basic support for creating custom TLEs from a set of orbital elements. This feature is subject to several important caveats, so it is not enabled by default. See the ClassicalOrbitalElements documentation for details.

The sgp4 crate is a pure Rust reimplementation of the Vallado library which this crate wraps.

Dependencies

~2.2–3.5MB
~68K SLoC