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 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)
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”
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.
Hi. My data file is a list of time stamped RAs, Decs, all from the same station (lat, long, and alt). I know that all parameters are present in the file: every timestamp has a correspond ra, dec, lat, long, alt. I am writing in what the code is supposed to read into another file and double checking: all parameters are there. However, I suspect that the data file covers a small fraction of the orbit. I have done numerical experiments in which I generate my own orbit and then sample observation arcs of various lengths at various time sampling rates. I found that if the observation arc is less than 20% of the orbit then I fall into the singular problem issue. I wonder if this is the real issue with my real data.
It could be the cause. Especially if you are doing an angle only orbit determination. Indeed, a distance observation usually help to improve the observability of the problem.
If it is possible, could you provide a runnable script to investigate your problem?