# [FOSS-GPS] Question of reference satellite selection

John Morris john at coyotebush.net
Mon Mar 15 14:01:34 EDT 2010

```For long measurements, you will want to shift from one reference satellite
to another.

As an analogy, double differencing is similar to a surveyor comparing
altitudes between a set of hills.  You don't know the absolute altitudes,
but you can figure out how high each hill is relative to the others. To get
the job done, you pick one hill as your benchmark and define the variables
Hill(1)-Hill(benchmark) = x1
Hill(2)-Hill(benchmark) = x2
...
Hill(benchmark)-Hill(benchmark) = xbenchmark = 0
Based on your survey measurements you create a set of equations:    Ax = b
which solves for the relative altitudes.  (Since xbenchmark is zero,  you
don't include xbenchmark in the equations.)

Now, you decide you want to use a different hill as your benchmark.  You
need to redefine your variables and find an equivalent set of equations
based on the new benchmark. It takes some figuring out, but you end up with
a fairly simple procedure based on the following:
xi' = Hill(i) - Hill(newbenchmark)
=   [  Hill(i) - Hill(oldbenchmark) ] - [ Hill(new) -
Hill(oldbenchmark) ]
=      xi - xnew

If you are more mathematically inclined than I am, you would see the new set
of equations as a linear transform of the old ones, and you would express it
as matrix multiplication.

A second problem you will encounter with long measurements is the repeated
gain and loss of satellites. One solution is to assign a separate ambiguity
variable to each period of time you track a satellite, but over time you
will create an unlimited number of variables.  To prevent unlimited growth,
you will need to "eliminate"  lost satellites from the equations.

- John

-----Original Message-----
From: foss-gps-bounces at lists.osgeo.org
[mailto:foss-gps-bounces at lists.osgeo.org] On Behalf Of Michael Tandy
Sent: Monday, March 15, 2010 4:06 AM
To: Open Source GPS-related discussion and support
Subject: Re: [FOSS-GPS] Question of reference satellite selection

Well, you have the almanac and ephemeris for all the satellites you can see,
so you can calculate each satellite's future elevations, right? So you could
do something along these lines:

for x = each satellite visible
for time = now to (now+6 hours)
calculate satellite x's elevation at time
if elevation < 10 degrees
print "Satellite x visible until time"
break
end if
end for
end for

Let's say you started your survey today, at midnight UTC time, that you were
at my location, and that you apply an elevation mask of 10 degrees.

You would see the following satellites, at that time:
SV 2, elevation 28.76
SV 4, elevation 13.53
SV 12, elevation 49.46
SV 14, elevation 36.90
SV 29, elevation 51.25
SV 30, elevation 84.05
SV 31, elevation 38.94

Those satellites would be above the 10 degree elevation cutoff for:
SV 2: 1 hour 57 mins
SV 4: 16 mins
SV 12: 1 hour 40 mins
SV 14: 1 hour 7 mins
SV 29: 4 hours 11 mins
SV 30: 2 hours 52 mins
SV 31: 3 hours 53 mins

Hence, if you simply chose the highest elevation satellite (SV 30) it would
be visible for over two and a half hours, but if you select the right
satellite it can be visible for longer.

I use the highest elevation satellite because my initializations never take
anything like two and a half hours!

Hope this helps!

On 15 March 2010 09:26, Shaocheng Zhang <gnss.zhangsc at gmail.com> wrote:
> Dear GPS Developers
> I am a Ph.D student working on real-time GPS algorithms. Currently I
> have a problem about the reference satellite selection.
> As we know, most of the RTK algorithm choose the highest elevation
> satellite as reference satellite, but when the baseline is quite long(eg.
> network-rtk), it may take quite long time (may be more than half
> hours) to get the ambiguity initialized, and during the initialization
> we don't want the reference satellite changes, otherwise we may need
> to restart the initialization.
> So if at the very beginning, we could find the longest session
> satellite as the reference satellite, it will help us to guarantee the
> reference satellite will not change before the initialization
> finished. I read GPStk's source code of "vecsol", it give a solution
> of project the satellite's velocity "V" to the U direction of the
> local NEU coordinate "Vu", and take the biggest "Vu" satellite as the
> reference satellite. I check this method and find it indeed give us a
> longer session satellite, however, when I check this method for all
> the available satellite at that epoch, It doesn't conclude that "the
> bigger the Vu, the longer the following observed session".
> I am very interested in this method because It's easy to implement and
> can be use in real-time algorithm. So I am wondering if someone can
> explain this method in a mathematical way, or give a better solution.
> Regards.
> Shaocheng Zhang
> School of Geodesy and Geomatics, Wuhan University, P.R.China
> Email: gnss.zhangsc at gmail.com
> _______________________________________________
> This message is sent to you from FOSS-GPS at lists.osgeo.org mailing list.
> Visit http://lists.osgeo.org/mailman/listinfo/foss-gps to manage your