Skip to content

Releases: nyx-space/nyx

🚀 2.0.0-rc: SPICE/ANISE as backend for ephemeris and frame rotation + major orbit determination improvements 🚀

04 Jul 03:24
9b482d7
Compare
Choose a tag to compare

Nyx Astrodynamics Toolkit -- 2.0.0-rc: ANISE as a backend

🚀 This is monumental release 🚀

This release represents years of work and innovation. The primary motivation behind ANISE was to provide multi-threaded SPICE support in Nyx, and it has culminated in this significant update. Additionally, this release aligns with the goals set for hifitime version 4.0.0-alpha, which has been in planning for over a year.

I am excited to share this major update with the community and look forward to your feedback and contributions. Thank you for your continued support and interest in the Nyx Astrodynamics Toolkit! Always feel to contact me directly via this form.

New features

  • All planetary ephemeris computations, all reference frame rotations, all planetary constants, all fixed planetary rotations (e.g. J2000 to J2000 Ecliptic) now rely entirely on ANISE. ANISE is validated to match NASA/NAIF SPICE to machine precision for all ephemeris computations. ANISE is validated to match SPICE on all rotation computations to less than 1e-8 degree for all planetary centric body fixed rotations. In short, ANISE is a full rewrite of SPICE, and you should use it. This is a essentially a rewrite and therefore is a major breaking change. Cf. Rewrite of Nyx to rely on ANISE for planetary data and frame transformations by @ChristopherRabotin in #305
  • Orbit determination results now export 1-sigma uncertainties for most spacecraft state information, including all Keplerian orbital elements. This approach uses hyperdual numbers / automatic differentiation for rotating the covariance into the new state space.
  • Examples Added: Nyx now includes examples on how to use the toolkit. These examples were held off until 2.0.0 due to the significant changes expected after integrating ANISE. Check out the examples here -- #328

Removed functionalities

  • Orbit Propagation Changes: It is no longer possible to propagate only an orbit; only full spacecraft can be propagated. While support for specific types can still be trivially implemented, none have been added yet. Consequently, orbit determination now only works on the spacecraft type, and estimation of the coefficient of reflectivity and drag will be added for stable 2.0.0.
  • Python Interface Temporarily Unavailable: The 2.0.0-rc release is not available in Python. The Python interface will be re-enabled for version 2.0.0.

What's Changed

New Contributors

Full Changelog: 2.0.0-beta.0...2.0.0-rc

Version 2.0.0-beta.0: Minor Python usability enhancements

22 Nov 03:22
81367af
Compare
Choose a tag to compare

Summary

Progress toward 2.0.0, mostly related to the Python interface and speeding up of import/export of CCSDS OEM files, cf. #183 , #189, #206.

What's Changed

New Contributors

Full Changelog: 2.0.0-alpha.2...2.0.0-beta.0

Version 2.0.0-alpha.2: Fix trajectory loading from Python and OEM with duplicate epochs

06 Jun 16:41
0488c72
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 2.0.0-alpha.1...2.0.0-alpha.2

Version 2.0.0-alpha.1: Minor Python usability enhancements

02 Jun 16:51
1d95cc9
Compare
Choose a tag to compare

What's Changed

Full Changelog: 2.0.0-alpha...2.0.0-alpha.1

Version 2.0.0-alpha: Python + more realistic OD noise models + OD estimation flexibility + Export to Parquet and CCSDS OEM

25 May 14:09
c9e51e4
Compare
Choose a tag to compare

Version 2.0.0-alpha

This is a big release!

First, working from @thomasantony 's work, Nyx now has Python bindings. I expect that most users will want to use the Python bindings directly instead of developing in Rust. Even in my limited experience with the Nyx library in Python, it enables for much faster iteration from a mission analysis or orbit determination engineer point of view. The package is available on pypi so you can run pip install nyx_space. Expect to see some iteration on how this work with version 2.0.0-beta, most notably for changes to how ephemeris and orientation files are used.

Second, no more CSV exports. Nyx now exports (and imports) everything in Parquet files: this allows for very easy interoperability with dataframes, thereby allowing users to create, modify, or search data using pandas, polars. Note that Nyx leverages the metadata of these parquet files to store additional information (like ground station configuration in the simulation of orbit determination measurements), but writing that is not yet supported in neither pandas or polars (but pyarrow supports it).

Third, the orbit determination code has been heavily refactored. This work enables estimation of different state sizes: this will allow estimating the biases in the transponders, or the coefficient of reflectivity of a vehicle (these functionalities aren't yet implemented, cf. #94 ). It also allows for online measurement rejection: for example, if the residual ratio of a measurement is more than 3-sigmas away from the mean residual, it can be rejected on the fly instead of having to manually remove it from the list of measurements. The refactoring also now includes a first order Gauss Markov process for noise modeling. This is the industry standard: a time correlated noise with a user-provided time constant, and a constant noise floor. That said, if one wants different noises, they can now write them directly in a measurement parquet file in Python, and have Nyx ingest that!

Fourth, the big thing that is lacking in Nyx, and in this release, is documentation. To acknowledge that, there's now a Github issue template to request better documentation. It'll likely only be done in https://github.com/nyx-space/nyx/milestone/7 since version 2.0.0-beta will bring in a number of other breaking changes. Jump into @ThibFrgsGmz 's discussion here as well: #137 . On his recommendation, Nyx will use the Diataxis documentation method.

What's Changed

New Contributors

Full Changelog: 1.1.2...2.0.0-alpha

Hotfix release: Update to nalgebra 0.32

22 Feb 16:20
e0d7d5f
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 1.0.0...1.1.2