I am working on developing a user friendly SGP4 orbit propagator in C on a PIC24.

I have extensively read Revisiting Spacetrack Report #3 and celestrak - there are a few outstanding questions I have.

I have the SGP4 portion working. I can pass in TLE's and get the expected results from the Appendix of Revisiting Spacetrack Report #3. However, TLE's are not intuitive, nor are they easy to type out without making an error. They also have superfluous information. Needless to say, I don't want to use TLE's.

The users will have access to GPS telemetry; so instead, I would like to pass in ECI position and velocity, time 1, time 2 and Earth Orientation Parameters. But there seems to be a disconnect in my understanding of the various coordinate frames involved.

My current plan of attack is to make the following transformations:




TEME to orbital elements (in TEME) by standard methods

Propagate via SGP4 (over t2-t1, resultant vectors are TEME)

TEME to PEF by GMST (now at time 2)

PEF to ECEF by EOP (now at time 2)

ECEF to ECI by GMST (time 2)

Then I would output the position and velocity vectors.

I have several questions, and would appreciate any help or pointers to resources:

  1. Does this seem like the right approach? To me it seems like going in circles from an inertial frame (ECI) through Earth fixed frames (ECEF, PEF) then back to inertial (TEME).
  2. Can I do the standard position/velocity to Keplerian orbital elements in the TEME frame (and vice/versa)? I've taken TLE's from Revisiting Spacetrack Report #3's appendix D, used those orbital elements to produce positing velocity vectors and compared those to the original state in appendix E corresponding to that TLE. Doing so causes errors on the order of 5-10km in any direction and 0.005 km/s in velocities.
  3. Finally, is even speaking about frame ECI incorrect? That is, is ECI a class of coordinate frames that are pseudo-inertial and fixed at the center of the Earth? TEME would be one of these frames, GCRF another?

Thanks in advance for any help. I know this is a long post - I've spent quite a bit of time trying to ensure the correct implementation.


  • TEME: True Equator Mean Equinox (The TEME frame is the coordinate frame of the output of SGP4)
  • GMST: Greenwich Mean Sidereal Time
  • EOP: Earth Orientation Parameters
  • PEF: Pseudo Earth Fixed
  • ECI: Earth-Centered Inertial
  • GCRF: Geocentric Celestial Reference Frame
  • SGP4: Simplified General Perturbations 4

1 Answer 1


While this answer was written for a different question/project, it points out that the Two Line Element sets and the SGP4 propagator work together and each is designed specifically to work only with the other. The elements of a TLE are not exactly Keplerian orbital elements, even though the parameter names overlap with Keplerian element names.

This is because orbits around the Earth are not Keplerian, and accurate propagation of orbits forward in time must take into account several non-Keplerian effects, including:

I can recommend two ways to proceed:

  1. Don't mess with success, leave the highly successful TLE + SGP4 team untouched, making only a wrapper. Leave what you call "superfluous" information out at your own peril.
  2. Use TLE + SGP4 to produce a state vector (3D position plus 3D velocity) then propagate in a cartesian, inertial frame space using your own model for Earth's monopole field plus all of the effects in the bullets above, which is quite a technical challenge.
  • $\begingroup$ Thanks for the response! Follow up question: If I go with option 1, should I tell the user to pull the TLE from NORAD as input at epoch? And then I still need to get the TEME output into a relevant frame, correct? $\endgroup$ Apr 20, 2018 at 16:43
  • $\begingroup$ TEME = True Equator Mean Equinox $\endgroup$ Apr 23, 2018 at 16:50
  • $\begingroup$ TEME = True Equator Mean Equinox GMST = Greenwich Mean Sidereal Time EOP = Earth Orientation Parameters PEF = Pseudo Earth Fixed The TEME frame is the coordinate frame of the output of SGP4. The Earth Orientation Parameters are the x,y coordinates of the axis of rotation of the Earth, they are published here: celestrak.com/SpaceData $\endgroup$ Apr 23, 2018 at 16:55
  • 1
    $\begingroup$ And to answer your first question. The TLE may not be available (I'm still not entirely sure how to get TLE's in the first place), but GPS telemetry will be available as position, velocity at epoch in an Earth Fixed frame. I'd like the user to be able to easily input data they have available and get an output in an easy to use format. $\endgroup$ Apr 23, 2018 at 16:58
  • $\begingroup$ @AshtonMeginnis Thanks for your reply! I'll take another look. To get TLE's check out the answers to Obtain archived TLE data and also is space-track.org a free service? $\endgroup$
    – uhoh
    Apr 23, 2018 at 17:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.