Dear Orekit team,
For an open source project that I am developing, I am trying to use Orekit to generate orbit estimations, based on:
- an original TLE, and
- a set of measurements, in the form of TDMs (for ranging) or OEMs (GPS based)
In order to make some tests and to make sure I get the concept right, I prepared a test (see attached) with:
- an initial TLE (from Celestrak), let’s call it TLE-1, which is ca 2 weeks old (epoch: 14/03/2023);
- an updated TLE (from Celetrak), rather new, let’s call it TLE-2;
- a OEM file, generated by propagating the updated TLE-2, with one point every 5 minutes, covering ca. 2 days (27/03 - 29/03).
The idea is that, starting from the initial TLE (TLE-1) and applying orbit determination using the OEM file generated by the updated TLE (TLE-2), I could derive a 3rd TLE (TLE-3) that is very close to TLE-2, so that the orbit position/velocity errors between the propagated orbits of TLE-3 and TLE-2 is actually lower than the error obtained comparing the propagation of TLE-1 and TLE-2.
The reality is that the error is actually quite large: in terms of positioning, TLE-1 has an error of ca. 3.6 km with respect to TLE-2, but the derived TLE (TLE-3) has more than 30 km error on the 27/03 with respect to TLE-2…
I defined the orbit determination without atmospheric drag and solar radiation pressure, with a spacecraft mass of 2600 kg and I got the following TLE-3 (in ca. 5 minutes processing):
1 54234U 22150A 23073.00000000 .00000224 00000-0 10631-3 0 1368
2 54234 98.7088 12.4818 0001523 60.1873 15.8200 14.19571986 17555
If I run the same with the two additional perturbations, the estimation takes much longer and after 20 minutes I stopped it.
Changing the mass to 600 kg does not introduce any change to the derived TLE orbit:
1 54234U 22150A 23073.00000000 .00000224 00000-0 10631-3 0 1368
2 54234 98.7088 12.4818 0001523 60.1873 15.8200 14.19571986 17555
The Celestrak TLEs are:
TLE-1
1 54234U 22150A 23073.00000000 .00000224 00000-0 10631-3 0 1368
2 54234 098.7089 012.4823 0001096 091.3860 344.8096 14.19561677017553
TLE-2
1 54234U 22150A 23082.14800799 .00000237 00000+0 13325-3 0 9999
2 54234 98.7098 21.4778 0001071 76.9929 283.1367 14.19566608 18848
Do you have any insight/feedback on what I might setup in the wrong way, and why the derived orbit is so off with respect to the OEM positions used as input measurements? I am attaching the code of the test and the OEM input file as well, in case you have some time to give it a look. The approach is the same from GorgiAstro.
Thanks a lot for the help, and congratulations for Orekit: it is really a nice piece of software. I am sure that the problem I am observing is related to something wrong used in my code, since the OEM data is correct and, if I just propagate the orbit defined by the OEM, it pretty much matches the propagation from the generating TLE (TLE-2).
Best regards,
Dario
OrbitDeterminationComputation.java (12.1 KB)
measurements.xml (222.8 KB)