I am trying to develop GNSSPropagatorBuilder using YUMA almanac file. I obtained the GNSS propagator ephemeris result and compared them with the TLEPropagator method using the nearest TLE file at the epoch. Comparing both result with the precise ephemeris data (SP3 file) yields almost the same error for different GNSS satellites. I am curious about the advantage of using GNSSPropagatorBuilder method instead of TLEPropagator method. Below are the result for 1 day propagation:
Absolute error GPS TLE: [704.58687077 490.93284704 751.82865889]
Absolute error GPS truth: [ 1525.31744111 11632.04067343 56175.34525701]
Absolute error TLE truth: [ 820.73057034 11141.10782639 56927.17391589]
Relative error GPS TLE %: [ 0.004335 -0.00239872 -0.01720887]
Relative error GPS truth %: [ 0.00938458 -0.05683476 -1.28581697]
Relative error TLE truth %: [ 0.00504936 -0.05443473 -1.30280164]
It could be interesting to see the evolution of the error between between t0 and t0 + 1day, where t0 is the almanac epoch.
I expect that the error will be small at the beginning and increase a lot with the time.
TLE propagation is done using the SGP4/SDP4 model. This model consider few zonal harmonics (J2, J3, and J4 if I good remember), luni-solar attraction, and drag.
At the opposite, the almanac propagation doesn’t consider any orbital perturbation. That’s probably why the TLE accuracy is better than the Almanac accuracy after the one day propagation.
If I good remember, almanac are very precise at the almanac epoch and in a time span of few hours.
Thank you for the very quick reply. So, if i understand correct, GNSSPropagatorBuilder helps us to propagate YUMA/SEM almanac files of GNSS satellites and there is no advantage of using GNSS propagator in terms of accuracy for the long propagation period. Maybe it could be interesting case to add orbital perturbation to the GNSS propagator so that accuracy of the propagator could be increased.
Another thing that i tried was using SP3 precise ephemeris file with the BoundedPropagator method. I implemented this in my code but BoundedPropagator method gives me unexpected results. I expect that the results would be very close to the SP3 ephemeris file timestamped position data but it was not the case. Do you have any idea why this difference comes from?
No. The GNSS propagator is not intended to be an accurate propagator, it is intended to be an implementation of the model that is consistent with the data in the navigation message. If you need accuracy, you have to use something dedicated to accuracy.
Beware SP3 are generally in some terrestrial frame and Orekit propagators work in inertial frames, so there are some frame transforms involved.
I obtained the file from the internet and they are used WGS84 frame in the ephemeris file. I am using SP3Parser method and that method requires WGS84 frame as input. I am not sure about how to implement WGS84 as a frame?