Description
High level description
New feature
I've put a substantial amount of work into the Trajectory
type in Nyx. Quite frankly, it's extremely useful, and it should be ported to ANISE.
This will include event finding, which is very robust (Brent solver) and one of the main features of the trajectory structure.
To make this generic over an Orbit structure, I export the trait bounds as is recommended by PyO3
: https://pyo3.rs/v0.20.0/trait_bounds .
One of the main limitations of using the Trajectory structure in Python in Nyx is that it cannot be pickled. This sounds like it shouldn't be a big deal, but Kedro (among other frameworks) will pickle data between computational steps. As such, I think that pythonize would be useful, where the serialized representation of the structure is used as a proxy. In Nyx, I rely on using the parquet intermediate file, but that isn't convenient.
Once I tackle nyx-space/nyx#86, I'll have a better idea on how to integrate Nyx's Spacecraft
object with ANISE's Orbit
object. Nyx relies on spacecraft trajectories in several spots (e.g. orbit determination of spacecraft instead of just of their orbits): that feature must remain.
Requirements
- Store any number of states in a trajectory structure
- Interpolate in between these states using the Hermite algorithm currently available for Type 13 SPK
- Find events in a trajectory, including falling or rising edges
- Support Pickling of the data for Python interaction
Test plans
Grab those from Nyx.
Design
Move the Nyx implementation in full.