[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orekit Users] BatchLeastSquares issues



Dear Orekit users,

This is my first message in this list, nice to meet you all and thank you for making Orekit available for general use!

I'm trying to run some orbit determination tests and I'm facing some issues with it that I'm not sure how to solve. I don't know if I found issues with the orbit determination implementation or if I'm doing something wrong.

For the test case, I have a simple circular LEO orbit and a radar station. I propagate the orbit for a number of days, and record the observations from the radar station. I can record range, azel and Doppler observations.

Then I add some Gaussian noise to the observations and feed them to the Batch Least Square orbit determination solver. As starting orbit I'm using the actual initial orbit used to propagate, which is very optimistic.

In some cases it works just fine, and estimate() returns after a few iterations with a low residual value. I'm using a LeastSquareObserver to monitor the evolution of the process that can be found here: https://pastebin.com/QQ1AW65i

However, I'm facing several problems with some cases:

* When using only azel observations, the process makes 7 iterations and then becomes unresponsive. After a lot of time (like half an hour), it makes an 8th iteration and keeps processing. I haven't waited to check if there is a 9th iteration after an hour, but it seems stuck. Test case is here: (modify path to orekit-data as provided): https://pastebin.com/uYjUw7Pn

* When Doppler measurements are used, the initial RMS is absurdly large and usually the process doesn't converge, so I end with some Exception from Orekit or Hipparchus about NaNs, like in this example: https://pastebin.com/P0PBtec7

* Sometimes during the process (usually at the first iteration) it tries re-entering orbits and I get exceptions of low altitude, like in https://pastebin.com/gtU1ZkKB

I've read that the Hipparchus library doesn't support parameter bounding and it is done in Orekit with predefined bounds so it may not be possible to avoid re-entering orbits during the estimation process. It happens more frequently when the initial orbit is not the one used to propagate (as in these cases), but one coming from an IOD. In that case, it's pretty common (in my tests) to get re-entering orbits or diverging iterations even with high orbits (about 700 km).

I'm not sure if this user list is the best place to report this problems as I'm not discarding that the issue is on my wrong usage of the library. But I could fill issue reports if you wish.

Thank you very much!