Singular Problem

Hi. I am new to Orekit. I am getting this error while trying to do orbit determination. Kindly note that I am implementing orekit in Python. I initially thought that it was due to the small number of points. I increased the points 10-fold I am still getting the same problem. I appreciate your help.

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

Hi @bassemsabra

Welcome to the Orekit forum!

How many parameters do you estimate and how many observations do you have?
In addition, could you give me:

  1. The complete list of estimated parameters
  2. The first and last epoch of you observations

With these information, we should find why you have a singular problem :slightly_smiling_face:

Best regards,
Bryan

Hi Bryan. Thanks for the reach out! I give it the station coor (long, lat, and alt), epoch, RA, and DEC and want to do orbit determination. I am using the BatchLSEstimator.

from org.orekit.estimation.measurements import Range, AngularAzEl, AngularRaDec, ObservableSatellite
from orekit.pyhelpers import JArray
observableSatellite = ObservableSatellite(0) # Propagator index = 0
for a, b in stationData.iterrows():
orekit_radec = AngularRaDec(
stationData.loc[a, ‘OrekitGroundStation’], gcrf,
datetime_to_absolutedate(julian.from_jd(b[‘epoch’], fmt=‘jd’)),
JArray(‘double’)([float(b[‘ra’]), float(b[‘dec’])]),
JArray(‘double’)([float(100e4), float(100e4)]),
JArray(‘double’)([float(1.0), float(1.0)]), # Base weight
observableSatellite
)
estimator.addMeasurement(orekit_radec)

estimatedPropagatorArrayData = estimator.estimate()

First epoch in the file: 2021-07-30T08:24:38.740
Last epoch in the file: 2021-07-30T09:13:30.280

I appreciate your help.
Bassem,

Are your angles in radians or in degree?
Orekit works only with SI units, i.e. radians for angles.

I also think the standard deviation is way too large 100e4 reads as one million radians to me.

Hi Luc. Thanks. I changed the angles to radians (used deg2rad), decreased the standard deviation, experimented with “float” or no “float” … but all gave back the same problem “singular” :frowning:

Hi, can you give me the complete list of estimated parameters?
Singular problems usually occurs when we try to estimate a parameter which is not observable (e.g., a time stamped parameter where the epoch is not in the observation arc, a tropospheric or ionospheric parameter without range measurements, etc.)

The best would be to have a runnable script allowing to reproduce your problem. If you can provide that, it would be very useful.

Bryan