Generating TLEs from PV Measurements

Hi :slightly_smiling_face: Great work on the release of v12.0, lots of exciting features I’m looking forward to trying out :pray:

I am working on TLE orbit determination, where I have a series of position-velocity measurements and an initial guess for the TLE and would like to generate a new TLE which fits the dataset as closely as possible. I’ve been looking through various packages in the 12.0 release, including org.orekit.propagation.analytical.tle.generation with the LeastSquaresTleGenerationAlgorithm being pretty close to what I want to achieve. But if I understand correctly, this function would accept just a single measurement (as a SpacecraftState) and do the least squares fitting based on a Keplerian approximation?

Perhaps there is a better way to perform the orbit determination using multiple measurements - I am not too experienced in this field so I’d appreciate some pointers in the right direction.

I am also not certain if I should be sampling my dataset to better optimise the fitting - i.e. would it be more beneficial to provide a wider range of measurements across multiple days, or would several measurements across a shorter timespan (say an hour) lead to better results?

Thanks in advance :slight_smile:

Hi @JakeRandellOC,

There’s a tutorial TLEBasedOrbitDetermination that should help you :wink:

Hard to say, in general rules the longer the arc the better the OD. But since TLEs is based on SGP4 mean elements theory it tends to rapidly diverge from the real world.
You can try both methods and plot the residuals (PV measurements against PVs of the estimated TLEs) to test.
I think (not 100% sure) you will get:

  • In both cases the best fit (lowest residuals) around the estimation date
  • Smaller residuals on a 1 hour arc, but if you propagate further the difference between the propagated TLEs and the measurements will grow very fast
  • Bigger residuals on a long arc fit but with a TLE that stays “around” the measurements longer than in the previous case.

I don’t know if I’m very clear sorry.


Hi @MaximeJ, your explanation is clear thank you :smile: I will have a go at extracting parts of the tutorial for my use case and let you know how I get on. Thanks!

Hi @JakeRandellOC

The TLE-based orbit determination recommended by @MaximeJ is the best solution for your problem.

In terms of implementation, it is close to the classical orbit determination using a numerical propagator. But in that case you use a TLEPropagator for the propagation model.
At the end, you will obtain a TLE that fits the given measurements.

You can find theoritical information here:

Best regards,

1 Like

Hi @bcazabonne, really appreciate the extra documentation, thanks! :slight_smile: