The question Unravelling Cassini's “ball of yarn” orbit around Saturn, tabulation of propulsive maneuvers? asks for a source for documentation of orbital maneuvers of the Cassini spacecraft.
Suppose instead I wanted to write a python script for an "orbital maneuver detector" that operated on a big table of state vectors of a spacecraft in orbit around a central body, and flags when the orbit seems to have changed by more than some threshold, how might it work?
An example would be a plane-change detector. Two points along an orbit plus the origin defines a plane, and the normal vector would be recorded. For good sensitivity, the two points should not be too close together or collinear with the center, so a quarter period would be a good target for an interval.
The change in angle between successive normals would be small and smooth if the orbit were precessing due to a J2 (oblateness) term from the central body, but some types of propulsive maneuvers would induce a sudden big change, and that could be flagged.
But that's just one example and it would certainly miss for example non-plane-changing raising/lowering maneuvers. While that might show up as a change in the rate of precession, that could be difficult of the orbit were already high or the central body had a low J2.
Question: Is there a more generalized way to do this based on Keplerian element analysis (extracted from state vectors) without getting into orbit propagation via numerical integration? Is there a formalized approach to this already?
I tried looking for sudden changes in the higher derivatives (differences) of the state vectors in the question Is this what station keeping maneuvers look like, or just glitches in data? (SOHO via Horizons) but all I found was glitch artifacts where different segments of the propagated orbits were spliced.
above: Teaser GIF to get you to enjoy the real thing here (since even the low-res version is larger than the Stack Exchange imgur's limit of 2 MB MiB)
