Large Position Error Despite Low Residual RMS in Batch Least Squares OD (Possible Overfitting?)

Hello Orekit Community,

I’m new to Orekit and to orbit determination in general, and I’m currently working on OD using simulated measurements.

Here’s my setup:

  • Measurements: Simulated AER data generated from a reference orbit (using SP3).

  • Propagation: Numerical propagator (not bounded).

  • Process:

    1. Perform Initial Orbit Determination (IOD).

    2. Use the IOD result to initialize Batch Least Squares (BLS) estimation.

  • Force models:

    • Included drag and SRP, using estimated area values and reasonable guesses for CdC_dCd​ and CrC_rCr​.

    • Not estimating global drag or SRP scale factors, since I have only one day of data and no prior knowledge of the satellite’s attitude or exact area.

  • Noise and tolerances:

    • Added measurement noise: range sigma = 50 m; angular sigma = 0.001 deg

    • BLS position tolerance = 10 m.

The BLS estimation converges in about 12–15 iterations.

  • The RMS of residuals reduces from ~300 to ~1.

  • Most residuals fall well within the 3-sigma bounds of the injected noise.

  • The estimated covariance matrix shows uncertainties on the order of centimeters.

However, when comparing the estimated orbit to the numerically propagated “truth” orbit, I observe position errors on the order of 10³ meters.
All numerical propagator settings are identical between the truth simulation and the estimator used in BLS.

With my limited understanding of BLS, this seems like a case of overfitting — the estimator fits the measurement noise too closely, yielding an unrealistically optimistic covariance.

Could anyone please confirm if this interpretation makes sense, and advise on how to address it?
I’m also planning to use the BLS covariance to initialize a Kalman Filter, but with such small covariance values, the resulting Kalman gain might become too small to be practical.

Any insights or suggestions would be greatly appreciated.

PS: All units and frame conversions are taken care of.

Best regards,
src6

Hi there,

Since you have non gravitational force, are you sure you’re passing the correct mass to the OD via the PropagatorBuilder?

Cheers,
Romain.

Hi Romain,

I’ve been passing the dry mass from open-source data through the PropagatorBuilder.

Best Regards,
src6

Hi @src6,

Hard to say without any data or code.
Could you please plot the residuals ? And the difference between truth orbit and estimated orbit ?
Have you tried with a lower noise to simulate a “perfect” OD first and rule out any configuration issue ?

Best regards,
Maxime