# Is this what station keeping maneuvers look like, or just glitches in data? (SOHO via Horizons)

I've been enjoying the JPL Horizons web interface and after I discovered the incredibly extensive database associated with SOHO (Solar and Heliospheric Observatory, also see sohowww.nascom.nasa.gov) for this answer I decided to learn more about the satellite's orbit.

I exported a dataset of historical (and projected) orbit data for SOHO Spacecraft in 1 day steps using the following setup:

I also exported the positions of the Sun, and of the Earth-Moon Barycenter the same way.

Using the reduced mass of the Sun vs Earth-Moon Barycenter (EMB) system as:

$$\mu = \frac{m_{earth}+m_{moon}}{m_{sun}+m_{earth}+m_{moon}}$$

I used the equations of motion in a rotating frame, and solved numerically for zero acceleration along the EMB-sun line (y, z set to zero):

$$r_1=\sqrt{(x+\mu)^2}$$

$$r_2=\sqrt{(x-1+\mu)^2}$$

$$\ddot x=x-\frac{(1-\mu)(x+\mu)}{{r_1}^3}-\frac{\mu(x-1+\mu)}{{r_2}^3}$$

I found a zero at x = 0.989986 which is about 99% of the distance from the Sun-EMB Barycenter (basically the Sun) to the EMB, or about 1.5 million km from the earth towards the sun.

So I made a point and called it $$L_1$$ and defined it as this location, so as the EMB slowly moves closer and farther from the sun over the year, my $$L_1$$ 'origin' will breath with it.

Finally, I un-rotated the position so that the Sun-EMB line stayed fixed with the sun on the left, so that it looks like the standard configuration for CR3BP problems.

I got a pretty nice looking trajectory! The plot isn't breathtaking - limitations of Matplotlib and the (overly-)restrictive SE 2MB limit for GIFs.

Note, x, y, and z scales are all different - this is plotted at the moment just to fit into a cube. The blob (red) on the left in the middle of the orbit is $$L_1$$ as defined above, and the little cigar-shaped blob (blue) on the right represents the motion of the EMB in this particular frame. I did look at a plot with EMB-fixed instead of $$L_1$$, but the orbit became thicker. This way is really better looking, as you'd expect. The little black dots are the first and last 20 days (data points) in the extracted dataset.

If you look closely at the "top" there's a little blip, and excursion toward the sun. I think this is the famous, frightening episode in June to November 1998 when SOHO was almost lost. There is a page of recovery docs or you can read about it in Aerospace America May 1999: Saving SOHO or the article by ESA's F.C. Vandenbussche SOHO’s Recovery – An Unprecedented Success Story or for more of the technical details; Roberts 2002 The SOHO Mission L1 Halo Orbit Recovery From the Attitude Control Anomalies of 1998.

I wanted to see if I could find the event, and other stationkeeping maneuvers in the raw data. So, just to see what happened, I plotted the variation of x, y and z in my coordinates over the interval 3-dec-1996 to 4-jul-2016, which is all Horizons would give me on the day I downloaded it. Apparently it propagates the state vector a few weeks into the future.

To look for maneuvers, I plotted the first, second and third finite difference - a numerical way of approximating derivatives. Here's what I got:

In the 2nd and 3rd difference plots, the approximately harmonic motion nearly disappears, and discontinuities become prominent. I was assuming the data was showing me station keeping (SK) maneuvers. I noticed a big zig-zag around mid-October 2014. I found SOHO-Spacecraft-Events.pdf but strangely there are no propulsive maneuvers listed around that time.

click to enlarge:

So my question is: are these zig-zags (and in particular, the one around October 15, 2014) just stitching errors in the reconstructed data, or did a particle of dark matter collide with a Higgs boson and SOHO can report the first observation? (humor).

These are also from the sohowww.nascom.nasa.gov site:

• note: I'm looking for a nice-looking and useful reference/link for the equations of motion in the CR3BP rotating frame, that other readers can benefit from. I just pulled the eqn's above back from my script.
– uhoh
Jun 10, 2016 at 11:34
• Okay I'm curious--what prompted this particular line of inquiry? Jun 10, 2016 at 15:52
• @imallett the proximal cause is exactly as I wrote in the first sentence. When I saw the Pleiades zip past the sun in the GIF I made for that answer, I looked around more, saw that SOHO has been cranking out images & data for the last 20+ years and sounding CME alerts. looked at the orbit - one of the first about a libration point. Then I saw the Roberts 2002 paper there, which is actually pretty thorough, educational and (to me at least) exciting.
– uhoh
Jun 10, 2016 at 17:17
• Every since @TildalWave said the word manifold I've been hunkering down and trying to learn orbital mechanics. When I saw that Horizons has a database of historical missions, I couldn't resist! The difference plots are just something I always do with new data, sure enough, another learning moment!
– uhoh
Jun 10, 2016 at 17:20

You are most likely seeing an artifact of how JPL represents its ephemerides for fast numerical computation.

JPL integrates the equations of motion over time. This inevitably results in mismatches between the integrated state and observations. These errors are used to adjust initial states and the integration is then re-performed. The cycle stops when the errors drop below some threshold. JPL then computes sets of Chebyshev polynomial coefficients that approximately yield the integrated state. Each set of coefficients pertains to some specific span of time.

Multiple sets are used to enable coverage of longer spans of time. (An alternative would be to use higher order polynomials, but that will almost inevitably run into serious numerical computation issues. Higher order does not necessarily mean greater accuracy.) JPL tries to make the transitions from one set to another be continuous, definitely with regard to position, possibly with regard to velocity, but not to second and third derivatives.

Your third differences are magnifying the discontinuities in those transitions from one set of coefficients to another. I doubt there's any physical significance to those spikes.

• so maybe something like forward and backward propagation from each measurement, with "stitching errors" happen near the mid-points, and measurements are likely to have happened just befoe SK? So no Higgs-dark matter coupling constant? Rats! Thanks for the speedy and simultaneously definitive answer!
– uhoh
Jun 10, 2016 at 12:36
• I'll look further - in the 2nd difference plot you can see that the mid-October 2014 event is as big as the 1998 loss of control. These are the only two things that show up as big in the 20 year plot. Something about it is not routine.
– uhoh
Jun 10, 2016 at 15:17

I just noticed that this scenario is also summarized in Horizons output as well:

Therefore, the initial state at resumption of operations 1998-Sep-25 was integrated back to August 19 assuming a purely ballistic trajectory. Trajectory errors during this interval may be significant due to unmodelled dynamics.

Stitching solutions with unmodelled dynamics is probably one of the sources of these glitches in late 1998.

An unexpected loss of contact with SOHO occurred on 25 June 1998. The mission
was recovered and normal operations resumed in mid-November 1998. Despite
subsequent failures of all three gyroscopes (the last in December 1998),
new gyro-less control software installed by February 1999, allowing SOHO to
resume normal operations (and making SOHO the first 3-axis-stabilised
spacecraft to operate without a gyroscope).
[...]

SPACECRAFT TRAJECTORY (concatenated trajectories from GSFC FDF):

For the time-span 1998-Aug-19 to 1998-Sep-25, there is no official
trajectory information due to the recovery effort. Therefore, the initial
state at resumption of operations 1998-Sep-25 was integrated back to
August 19 assuming a purely ballistic trajectory. Trajectory errors
during this interval may be significant due to unmodelled dynamics.

Trajectory name             Start        Stop
--------------------------  -----------  -----------
soho_1995                   1995-Dec-02  1996-Jan-01
soho_1996                   1996-Jan-01  1997-Jan-01
soho_1997                   1997-Jan-01  1998-Jan-01
soho_1998a                  1998-Jan-01  1998-Aug-19
soho_1998a-b_gap            1998-Aug-19  1998-Sep-25 (ballistic filler)
soho_1998b                  1998-Sep-25  1999-Jan-01 (recovery of contact)
soho_1999                   1999-Jan-01  2000-Jan-01
soho_2000                   2000-Jan-01  2001-Jan-01
soho_2001                   2001-Jan-01  2002-Jan-01
soho_2002                   2002-Jan-01  2003-Jan-01
soho_2003                   2003-Jan-01  2004-Jan-01
soho_2004                   2004-Jan-01  2005-Jan-01
soho_2005                   2005-Jan-01  2006-Jan-01
soho_2006                   2006-Jan-01  2007-Jan-01
soho_2007                   2007-Jan-01  2008-Jan-01
soho_2008                   2008-Jan-01  2009-Jan-01
soho_2009                   2009-Jan-01  2010-Jan-01
soho_2010                   2010-Jan-01  2011-Jan-01
soho_2011                   2011-Jan-01  2012-Jan-01
soho_2012                   2012-Jan-01  2013-Jan-01
soho_2013                   2013-Jan-01  2014-Jan-01
soho_2014                   2014-Jan-01  2015-Jan-01
soho_2015                   2015-Jan-01  2016-Jan-01
soho_2016                   2016-Jan-01  2017-Jan-01
soho_2017                   2017-Jan-01  2018-Jan-01 (prediction Dec20-Jan01)
soho_2018                   2018-Jan-01  2018-Dec-03 (prediction after Sep 9)