Calculating new satellite position given pseudorange measurements

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!

• 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

Parameters
----------
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
arrival.
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.
Returns
--------
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.

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