Spacecraft observation errors in Find_Orb

You're probably here because you ran Find_Orb, either the on-line form version or installed on your computer, and got a message such as the following :

4 satellite observations had incorrect offset data.  The file
'debug.txt' may have further information.  These observations
have been excluded.  See https://www.projectpluto.com/sc_obs.htm
for more information.

(or possibly saying that some observations lack offsets, or offset lines appear without corresponding observations, or the offsets aren't correctly formatted... several errors will lead you to this page.)

Important point : If you got this message with observations that came from the Minor Planet Center, then it means either that MPC has mangled the offsets, or that Find_Orb is failing to process them correctly. (Both have happened.) I would suggest that you contact me, ideally attaching the offending observations.

You can, of course, still go ahead and fix the errors, using either the Add_Off tool described below or by reading through the documentation of how spacecraft offsets are specified. But MPC would rather not be distributing bad data, and I'd rather not have bugs in my software.

However, the usual cause of this message is that people have created observational data and run afoul of the strict formatting specifications for spacecraft offsets.

'Add_Off' tool for adding spacecraft offsets

I would recommend that your first move be to feed the observations through the 'Add_Off' tool to add/fix spacecraft positions to your astrometry. It will remove any existing spacecraft position data, and insert correctly formatted positions generated by the JPL Horizons system. You can then check Add_Off's results against what you created and possibly spot issues. (Or you can just go ahead and use Add_Off's results. I think at this point, a lot of people don't even bother to generate spacecraft offset data themselves; they just let Add_Off do it.)

Add_Off will also insert spacecraft velocity information. This is not normally required, but it does allow Find_Orb to compute radial velocities, apparent motions, and along-track and cross-track errors for the observations in question.

Before I wrode Add_Off, I wrote the paragraphs below in hopes it would help people figure out what was wrong with their spacecraft offset data. It still may be of interest. But you can just go ahead and use Add_Off without problems.

Explanation of spacecraft offsets

Almost all observations you'll feed to Find_Orb are from ground-based observatories that have MPC observatory codes. If you tell Find_Orb that somebody at (703) Catalina Sky Survey observed something on 2013 May 31.415926, it can look up the location of that observatory (near Tucson, Arizona) and figure out the position and velocity of CSS, relative to the rest of the universe, at that time. You don't have to tell it the observatory location for every single observation.

Spacecraft are another matter. Exactly where was the WISE spacecraft on 2013 May 31.415926, or the Hubble Space Telescope? In such cases, the position (and ideally, velocity) of the spacecraft relative to some reference point has to be specified.

The Minor Planet Center provides for this by supplying a second 80-column record giving Cartesian coordinates for the observer location. Under normal circumstances, the observation file will have pairs of records : an 'S' record with the usual data about the time of the observation, RA/dec observed, and magnitude, followed by an 's' record with the coordinates of the spacecraft at the time. An example, for (C51) NEOWISE (header/trailer lines added for clarity; you wouldn't have them in 'real' data) :

 Obj Name      Year Mo DD.ddddd  Right Asc (J2000) dec           Mag    ReferCod
     K11C02N  S2020 06 20.25008 00 00 52.61 -06 24 50.8          18   RLEM109C51
     K11C02N  s2020 06 20.25008 1 + 6003.4381 + 3286.3045 +  437.2127   EM109C51
 Obj Name      Year Mo DD.ddddd ^   Xloc        Yloc         Zloc       ReferCod

The second record says that NEOWISE was at x=+6003.4381, y=+3286.3045, z=+437.2127 km, relative to the center of the earth in J2000 coordinates, at the time the observation was made. The offsets can be formatted in various different ways; see the bottom of this page for examples.

Types of spacecraft offset errors

In theory, each observation should appear just as above : an 'S' record with the sort of data you'd have for any observation, followed immediately by an 's' record with the spacecraft position at that time, in either kilometers or AU. Except for the 's' being uppercase and then lowercase, the first 32 bytes of each line should match exactly.

In reality, the 'S' and 's' records sometimes get rearranged so that they are out of order. Find_Orb will figure that part out and match up records correctly.

However, you will get warnings from Find_Orb if, for example, there are 'S' records with no matching 's' record. You will get, appropriately enough,

(number) satellite observations lacked spacecraft locations.
See https://www.projectpluto.com/sc_obs.htm for more info.  

(with a corresponding error for locations lacking observations.)

If you simply don't have spacecraft locations, or have bad ones, this tool will generate correct ones for you.

In the opposite case, where you have spacecraft position ('s') records that don't match to observed RA/decs, you'll get

(number) satellite observations lacked RA/decs.  See
https://www.projectpluto.com/sc_obs.htm for more info.  

Formatting problems with offset lines

The record specifying the spacecraft location must be formatted exactly as specified. The locations must be in J2000 equatorial coordinates relative to the geocenter. There must be a plus or minus in columns 35, 47, and 59. The decimal points must be in the specified columns. You cannot use scientific notation. Some valid examples from MPC's archives (I'd suggest cutting/pasting a version matching the offsets for your spacecraft and using it as a template for your own data) :

(offsets all under 100000 km,  used by low-earth orbiters such as WISE)
     K20B11N  S2020 01 17.94551502 17 37.16 +45 30 16.2                LEB255C51
     K20B11N  s2020 01 17.9455151 + 2981.9713 + 3157.1994 + 5297.6887   EB255C51

(offsets all under one million km.  TESS uses this.)
     K01FO3X  S2019 05 03.96923514 45 53.56 -36 40 58.5          19.2 GV~3Y0SC57
     K01FO3X  s2019 05 03.9692351 -207830.830 +201031.705 -68357.0570   ~3Y0SC57

(offsets all under ten million km.  Mostly used by Gaia, JWST, SOHO.)
z9987K06UJ8Y  S2019 07 26.24274223 37 30.822-17 07 24.24                ~3GcZ258
z9987K06UJ8Y  s2019 07 26.2427421 + 551363.13 -1190783.85 - 650915.72   ~3GcZ258

(offsets all under ten AU.  Used by Spitzer,  STEREO-A and B.)
    CK20P04a  S2020 08 05.81349109 32 59.20 +19 12 05.0           9.5 V EQ231249
    CK20P04a  s2020 08 05.8134912 -0.00764172 +0.00398263 +0.00230158   EQ231249

(offsets up to 100 AU.  I think only New Horizons has used this.)
15810         S2016 04 08.39601 15 40 08.828+12 24 25.22         17.4 Vq~1tcJC54
15810         s2016 04 08.39601 2 +09.8128912 -31.3466745 -12.3048787   ~1tcJC54

Note that it used to be that only the first and fourth formats were legal. The others were added as spacecraft went places that broke the limits. If you're running an older version of Find_Orb, it may complain about the other formats. In that case, I suggest updating Find_Orb.