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!
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 """ ....