Broadcast GNSS Ephemeris Generation

Hello everyone,

I am working on building my understanding of how GNSS Control Segments work to ensure the latest broadcast ephemeris models used by GNSS satellites provide receivers with enough precision to accurately resolve their positions on earth. As part of this process I am exploring how broadcast ephemeris models may be fit using Orekit and Hipparchus to a series of estimated ECEF satellite positions over time. I am currently building a LeastSquaresProblem in Hipparchus but I am having trouble applying constraints appropriately to ensure my problem converges with little to no residuals. Are there any examples or utilities included in Orekit or Hipparchus to assist with approaching this problem?

Hi @segrote welcome!

Broadcast ephemeris models are very crude. They correspond to Keplerian motion plus a few drifts and harmonics. This limitation implies that if you expect them to represent accurate positions to fulfills users needs, you have to fit them over a very small part of the orbit and refresh them often. If you use a too long fitting interval, the model will not be able to represent the true position, and you will have large residuals.

On a small part of an orbit (say one or two hours), you should not need any constraints, just a basic least square fitting should work.