#space #design #mission #orbit #estimation

bin+lib nyx-space

A high-fidelity space mission toolkit, with orbit propagation, estimation and some systems engineering

24 releases

Uses old Rust 2015

0.0.23 Oct 8, 2020
0.0.22 Jul 16, 2020
0.0.21 May 27, 2020
0.0.20-alpha.1 Mar 13, 2020
0.0.4 Jun 17, 2018

#68 in Science

Download history 1/week @ 2020-06-23 23/week @ 2020-06-30 44/week @ 2020-07-07 33/week @ 2020-07-14 80/week @ 2020-07-21 4/week @ 2020-07-28 23/week @ 2020-08-04 23/week @ 2020-08-11 23/week @ 2020-08-18 28/week @ 2020-08-25 70/week @ 2020-09-01 23/week @ 2020-09-08 1/week @ 2020-09-15 26/week @ 2020-09-29 20/week @ 2020-10-06

120 downloads per month

Apache-2.0

5MB
13K SLoC

nyx

Nyx is a high fidelity, fast, reliable and validated astrodynamical toolkit library written in Rust.

The target audience is researchers and astrodynamics engineers. The rationale for using Rust is to allow for very fast computations, guaranteed thread safety, and portability to all platforms supported by Rust.

nyx-space on crates.io nyx-space on docs.rs

License

The LICENSE will be strictly enforced once this toolkit reaches production-level quality.

Features

Unless specified otherwise in the documentation of specific functions, all vectors and matrices are statically allocated.

Lots of features are still being worked on, and there currently isn't any guarantee that the API won't change between versions. However, you can be assured that the API will not change for previous versions. Outstanding mission design features available here, and orbit determination features here.

Propagation

  • Propagation with different Runge Kutta methods (validated in GMAT)
  • Convenient and explicit definition of the dynamics for a simulation (cf. tests/orbitaldyn.rs)
  • Propagation to different stopping conditions
  • Detect orbital events in other frames (#107)

Dynamical models

  • Multibody dynamics using XB files (caveat: #61) (cf. tests/orbitaldyn.rs)
  • Finite burns with fuel depletion (including low thrust / ion propulsion) (cf. tests/prop/)
  • Sub-Optimal Control of continuous thrust (e.g. Ruggerio, Petropoulos/Q-law) (cf. tests/prop/closedloop_multi_oe_ruggiero.rs)
  • Solar radiation pressure modeling (cf. tests/srp.rs)
  • Basic drag models (cannonball)
  • Spherical harmonics (#28)
  • Spacecraft attitude control and some useful optimal control algorithms

Orbit determination

  • Statistical Orbit Determination: Classical and Extended Kalman Filter (cf. tests/stat_od/two_body.rs)
  • Orbit Determination with multibody dynamics (cf. tests/stat_od/multi_body.rs)
  • Smoothing and iterations of CKFs (#105)
  • Square Root Information Filer (SRIF) (#91)
  • An easy-to-use OD user interface (#109)
  • Estimation with spherical harmonics enabled (#123)
  • Solar radiation pressure (SRP) parameter estimation (#98)
  • Covariance mapping and estimate frame transformations (#106, #112)
  • State noise compensation (SNC) (#85)
  • Dynamic model compensation (DMC) (#86)
  • High fidelity ground station placement (#92)

Celestial computations

  • Orbital state manipulation (from GMAT source code and validated in GMAT) (cf. tests/state.rs)
  • Planetary and Solar eclipse and visibility computation (cf. tests/eclipse.rs)
  • Light-time corrections and abberations (#88)
  • Frame rotations #93

Who am I?

An astrodynamics engineer with a heavy background in software. Nyx relies on the drawbacks of smd, a library I wrote in Go while researching at the University of Colorado at Boulder. I work for Advanced Space (we do really cool stuff).

Examples

Refer to the tests for short examples.

Dependencies

~14MB
~262K SLoC