1

I need to propagate a large number of orbits (get a satellite's position at a certain time) from TLEs (two-line element sets) using Kepler's laws. Ordinarily I'd use a real propagator like SGP4/SDP4, but these need to be computed extremely quickly and accuracy isn't particularly important.

From the TLE I can get a variety of properties, including eccentricity, inclination, apogee, and epoch.

The epoch is the sequential calendar date when the satellite crossed the equator in an ascending (northerly) direction subsequent to a series of observations that were made to calculate the elements. http://www.satobs.org/element.html

My general idea is to use the apogee, inclination, and eccentricity to define an ellipse around the earth; however, I'm not sure how to figure out where on that ellipse the satellite is at a given time. To summarize: using Kepler's Laws and a Two-Line Element Set, how do I figure out the position of a satellite at a given point in time?

Qmechanic
  • 220,844

1 Answers1

0

The first thing to do is to decide whether you need to do this. You say they must be calculated 'extremely quickly', but before you go any further, you should benchmark the standard codes to say 'some library name is X times too slow to be practical'. "Premature optimization is the root of all evil."

The epoch (in a TLE) is not necessarily the time the satellite crossed the equator. Instead, it is the time at which the rest of the TLE elements are valid. In particular, it is the time for which the 'Mean Anomaly' has the value listed in the TLE (line 2, columns 44-51).

For a time of interest, take the time since the epoch, multiply by the 'Mean Motion' (converting from revs/day to degrees/whatever time unit you are using) and add to the 'Mean Anomaly' to get the Mean Anomaly for the time of interest. Then use Kepler's Equation to convert to true anomaly, then do the appropriate rotations to get a spatial location.

But first, see if the standard libraries are too slow. You will need to use the standard libraries anyway to get a cross-check in order to debug your own code.

DMPalmer
  • 734