Orbit Determination only with range and range rate meas

Hi all,
I am trying to execute this code (from python) for orbit determination.
I have range, azimuth, elevation and range-rate measurements.
If I convert the range/az/el in cartesion x,y,z I am able to perform OD.
If I use directly range/az/el meas, I got a singularity error, the same if I use only range and range-rate meas.

Seem that OD works fine, if I use cartesian measure, but it gives problems when I use the meas from range/az/el or range/range-rate.

The error that I got is this:

JavaError: <super: <class ‘JavaError’>, >
Java stacktrace:
org.orekit.errors.OrekitException: unable to solve: singular problem
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:441)
Caused by: org.hipparchus.exception.MathIllegalStateException: unable to solve: singular problem
at org.hipparchus.optim.nonlinear.vector.leastsquares.GaussNewtonOptimizer.optimize(GaussNewtonOptimizer.java:193)
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:435)

Note: the code is taken from this discussion : Orbit determination from a TDM file and a TLE reference - #6 by yzokras

Many thanks for your time and help
Détermination d’orbite avec TDM et TLE de référence(1).py (20.7 KB)
TDM-file.tdm (263.4 KB)

Hi @AlessandroV

I didn’t run your code, but I’ve a simple question regarding the units involved in the simulation.
Did you checked the measurement values which are used when creating the measurement objects? I means, did you checked that they are in SI units?

currentAzEl = [angle_1_az[i], angle_2_el[i]]
measurement = AngularAzEl(station, epoch[i], currentAzEl, weight_azel, sigma_azel, satellite)
range_measurement = Range(station, True, epoch[i], rng[i] * 1000, sigma_range, weight_range, satellite)
doppler_measurement = RangeRate(station, epoch[i], doppler[i] * 1000, sigma_range, weight_range, True, satellite)

Best regards,
Bryan

Hi @bcazabonne ,
Many thanks for your advice.
Yes range and range-rate (i.e. doppler) are in meter , meter/seconds and az/el are in radiants.

Many thanks for your time and help
Best Regards
Alessandro

Are your measurements generated ones or real ones?

I ask the question because I googled the NORAD ID and saw that it corresponds to an upper stage of launcher that performed a reentry.
Therefore, I’m surprised to see that the dynamical model only consider the newtonian attraction (i.e., no perturbation are added to the NumericalPropagatorBuilder)

Bryan

Hi @bcazabonne the measurements should be real ones.
I mean, I found them on the web, from the discussion:

Orbit determination from a TDM file and a TLE reference - #6 by yzokras

Many thanks for your time and help
Alessandro

Did you tried to add additional perturbations like drag, Earth pontential harmonics, 3rd body attraction?
The purpose is the have a more accurate perturbations models in order to improve the propagation model used by the estimator.

Hi @bcazabonne , yes I did it.

I add: spherical harmonics, drag, solar radiation pressure, third body Sun and Moon, relativistic correction.

If I perform with measure position: line 546 → OD is performed
If I perform with range/ra,dec/range rate: line 513-515 → OD is NOT performed

Many thanks for your time and help.
Kind Regards

Alessandro
Détermination d’orbite avec TDM et TLE de référence(1).py (23.4 KB)
TDM-file.tdm (263.4 KB)

Ok, now I’ve no idea of what’s wrong. I’ll have to run the code :slightly_smiling_face:

Best regards,
Bryan