I'm looking for a reference/text for an explicit formula to calculate a satellite position given pseudorange measurements from later epoch times. I've seen a lot of matlab code on the internet but I was hoping to have these formulas laid out nicely. If anyone could point me to the right direction that would be great! Thanks!

  • 1
    An explicit formula (i.e. a closed form solution) isn't common because the formula isn't linear. Usually you take partial derivatives around a point estimate, and iterate until the residual is acceptable. Hence matlab... – BradHards Oct 1 '14 at 2:54

Algebraic solutions are not very common for GPS, however, several do exist. The most well-known one is probably Bancroft's. Others are Abel's and Kleusberg's.


If you look for some libraries and test environment in c++ or python you could have a look at the piksi swift software tools. It is open source (LGPL) and the code is well documented in terms of function description + literature sources.

The source code documentation of the function gnss_analysis/solution.py/singe_point_position addresses the literature Kaplan, E.. Understanding GPS - Principles and applications. 2nd edition Section 2.4.2 for example and implements the procedure.

def single_point_position(obs, max_iterations=15, tol=1e-4):
  Computes the single point position by iteratively solving linearized
  least squares solutions

  obs : pd.DataFrame
      A DataFrame that holds `pseudorange` observations (corrected for satellite
    clock errors), satellite position (`sat_x`, `sat_y`, `sat_z`) all in ECEF
    coordinates at the time of transmission and `tow` variable which corresponds
    to the time of arrival.
      All observations are assumed to have been propagated to a common time of
  max_iterations : int (optional)
      The maximum number of iterations, defaults to 15.
  tol : float (optional)
      Tolerance for convergence (same is used for both position and time),
      defaults to 1e-4.
  spp : dict
    A dictionary holding the single point position.  Keys included:
      pos_ecef : a length three array representing the position in ECEF coords.
      time : the gps system time at the solution
      clock_offset : the receiver clock error
      converged : a boolean indicating convergence.

    Kaplan, E.. Understanding GPS - Principles and applications. 2nd edition Section 2.4.2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.