Post by JonSupposing three satellites transmit signals with time stamps that are picked
up by a receiver. If the clocks on the satellites are closely synchronized,
then
|AD|=|AB|+t_AB
|BD|=|BC|+t_BC
|CD|=|CA|+t_CA
Where
A,B,C=position vectors of three satellites
AB,BC,CA=distances between satellites
t_AB,t_BC,t_CA=time differences between signals at D.
D=position vector of receiver.
Once |AD|,|BD|,|CD| are found, the coordinates of D can be derived.
Is this how it is done?
summarized at
http://mypeoplepc.com/members/jon8338/math/id8.html
In GPS the positions and velocities and clocks of the satellites are
normally known, they are determined by tracking the satellites from
ground, and the information is uploaded to the satellites. The message
from the satellite contains time and position information and the
receiver on the ground knows it as well.
In this application of GPS the observation equations are formed for
so-called pseudo-distances, which are time differences between the
receiver clock on ground and the clock information received from the
satellite. The receiver clock is quartz oscillator just like your wrist
watch, and it comes with an offset typically in the order of several
seconds. The receiver clock error (I call it \Delta t_q) is a parameter
to solve for together with the coordinates of the receiver.
Normally you start with 4 satellites so that the equations to solve are:
\rho_{aq} = s * (t_q - t_a) + s * \Delta t_q
\rho_{bq} = s * (t_q - t_b) + s * \Delta t_q
\rho_{cq} = s * (t_q - t_c) + s * \Delta t_q
\rho_{dq} = s * (t_q - t_d) + s * \Delta t_q
where
\rho_{aq} etc are so-called pseudo-distances between receiver "q" and
satellite "a", other satellites are "b" "c" and "d", "s" is the speed of
light, t_q is the time in the receiver, and t_a is the time in satellite
a, and \Delta t_q is the time bias or the clock error of the receiver
The term s * (t_q - t_a) is the geometric distance between satellite "a"
and the receiver, and \rho_{aq} \rho_{bq} \rho_{cq} \rho_{dq} are
measured by the receiver. You can also write:
\rho_{aq} = r_{aq} + s * \Delta t_q
\rho_{bq} = r_{bq} + s * \Delta t_q
\rho_{cq} = r_{cq} + s * \Delta t_q
\rho_{dq} = r_{dq} + s * \Delta t_q
where r_{aq} etc are the geometric distances. To solve these equations
one normally linearizes the equations relative to an approximate
position that is provided to the receiver, or that is memorized from
earlier computations. Let us call this approximate location (x0,y0,z0).
In that case the linearized equations become:
\begin{vec}{c}
\Delta \rho_{aq} \\
\Delta \rho_{bq} \\
\Delta \rho_{cq} \\
\Delta \rho_{dq} \\
\end{vec}
=
\begin{mat}{cccc}
\diff{r_{aq}}{x0} \diff{r_{aq}}{y0} \diff{r_{aq}}{z0} s \\
\diff{r_{bq}}{x0} \diff{r_{bq}}{y0} \diff{r_{bq}}{z0} s \\
\diff{r_{cq}}{x0} \diff{r_{cq}}{y0} \diff{r_{cq}}{z0} s \\
\diff{r_{dq}}{x0} \diff{r_{dq}}{y0} \diff{r_{dq}}{z0} s \\
\end{mat}
*
\begin{vec}
\Delta x0 \\
\Delta y0 \\
\Delta z0 \\
\Delta t_q \\
\end{vec}
where \Delta \rho_{aq} etc are observed minus approximated pseudo range
differences (approximated because we can estimate them once the
approximated location x0 y0 z0 is provided), \diff{r_{aq}}{x0} etc are
partial derivatives from geometric range to coordinates, and \Delta x0
etc are shifts to apply to the approximate coordinates.
The left hand side of these equations is known, the right hand side
matrix is known (although it is an approximation) and the right hand
side vector can be solved by inverting the equations. Within a couple of
iterations you update the approximate location until there are no more
coordinate shifts as discussed above.
Now, the OP said he had only three pseudo ranges. In that case you must
add another constraint equation to the system of equations because it
becomes rank deficient. Normally one adds a constraint equation like a
height of the GPS receiver.
Hope this helps,
Q
--
CO2 at 390 ppm and counting, put a tiger in your tank -- ESSO commercial