# Detecting propulsive maneuvers in a table of state vectors

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)

• In real life I would most likely try using a Kalman filter or some other smoothing technique to determine the orbit from the state vectors. Maneuvers in any direction would show in the residuals of the filter . But that is effectively numerical propagation, which you don't want. – Carlos N Jun 10 '18 at 9:27
• The problem with sticking strictly in Keplerian space is that those are terrible at taking higher order perturbations into account. I expect at Saturn you don't get much solar perturbation, but perturbations from the moons will be a big factor. I'm also not sure how strong the J4 and higher gravity terms might be. You could still give your basic idea a try. Convert to Keps and look at the slopes of the elements. But my gut tells me that the osculations in the elements will make it very hard to find maneuvers. – Carlos N Jun 10 '18 at 9:27
• @CarlosN thanks for your perspective. In the end I can't think of any reply except "yep". Still I think it will be fun to do and find out what happens. – uhoh Jun 10 '18 at 16:59