sammmlow / LEOGPS

:earth_asia: :satellite: :earth_asia: :satellite: LEOGPS - Satellite Navigation with GPS on Python!
MIT License
63 stars 15 forks source link

Large Oscillatory Position Errors After Receiver Clock Sync #1

Closed sammmlow closed 3 years ago

sammmlow commented 3 years ago

Current solutions tested on GRACE A/B formation flying satellites, exhibit positioning errors from pseudo-range solutions on the order of ~100m, and relative navigation inaccuracies in double digit centimeters. This is two orders of magnitude worse off than expected from typical precise orbit determination results used as a comparison. Ephemeris errors accruing from the orbit interpolation of the GPS satellites seem to be responsible. Current orbit interpolation uses an 11th Order Lagrange Polynomial Interpolation. A review of current range measurement modelling, and the setup of the non-linear least squares, should be conducted.

sammmlow commented 3 years ago

image

Strangely enough, comparing GPS satellite ephemeris interpolation using a 17th Order Lagrange Interpolation gives the exact same ephemeris solutions as the ORBGEN output from Bernese GNSS (a commercial precise orbit determination software). This gives a hint that the issue isn't about GPS orbit interpolation. Also, looking at the error plots (at 10s time steps) from the GRACE A ground truth show that there is a somewhat periodic motion about the errors, for each XYZ component, with each period being very close to one orbit (95 minutes). Thus, measurement noise and GPS orbit interpolation errors are ruled out. Ionospheric errors will never reach that magnitude either. Clocks are checked to be correctly compensated for.

Thus, the only likely places to look for are: 1) Inclusion of antenna phase center of GPS satellites 2) Computation of relativistic path corrections 3) Compensation of Earth rotation parameters

Issue will still remain open until I debug this. Definitely not a coding error too but more likely an algorithmic one.

sammmlow commented 3 years ago

image

Now, applying a simplified Z-axis Earth Rotation offset to the position of the GPS satellites does reduce the actual position errors but only about the X and Y components of the LEO (line 203 of posvel.py).

sammmlow commented 3 years ago

The problem has finally been resolved!

While Earth Rotation offsets were applied to the position of the GPS satellite in ECEF, I had not considered that the GPS satellites' movement during the 70 - 80 ms of the signal time of flight, which accounted for ~ 200m of movement almost.

image

Receiver clock synchronisation using CODE observables is now able to achieve a code positioning accuracy of ~4m RMS.