0% found this document useful (0 votes)
302 views458 pages

GNSS Data Processing Laboratory Slides

This document provides a tutorial on using the UNIX environment, tools, and skills needed for GNSS data processing laboratory exercises. It covers basic UNIX commands for file and directory management, introduces the gawk programming language for parsing GNSS data files, and discusses the graphical plotting tool graph.py. The goal is to provide students with basic proficiency in these areas to complete upcoming practical sessions on GNSS data analysis.

Uploaded by

Jesus Diaz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
302 views458 pages

GNSS Data Processing Laboratory Slides

This document provides a tutorial on using the UNIX environment, tools, and skills needed for GNSS data processing laboratory exercises. It covers basic UNIX commands for file and directory management, introduces the gawk programming language for parsing GNSS data files, and discusses the graphical plotting tool graph.py. The goal is to provide students with basic proficiency in these areas to complete upcoming practical sessions on GNSS data analysis.

Uploaded by

Jesus Diaz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 458

gAGE

GNSS Data Processing


research group of Astronomy and Geomatics

Laboratory

Slides
http://www.gage.upc.edu
Barcelona, Spain
gAGE

@ J. Sanz Subirana & J.M. Juan Zornoza


Authorship statement

The authorship of this material and the Intellectual Property Rights are owned
by J. Sanz Subirana and J.M. Juan Zornoza.

These slides can be obtained either from the server http://www.gage.upc.edu,


or [email protected]. Any partial reproduction should be previously
authorized by the authors, clearly referring to the slides used.

This authorship statement must be kept intact and unchanged at all times.

5 March 2017
Contents

Tutorial 0: UNIX environment, tools and skills. GNSS standard files formats.

Tutorial 1: GNSS data processing laboratory exercises.

Tutorial 2: Measurements analysis and error budget.

Tutorial 3: Differential positioning with code measurements.

Tutorial 4: Carrier ambiguity fixing.

Tutorial 5: Analysis of propagation effects from GNSS observables based on


laboratory exercises.

Tutorial 6: Differential positioning and carrier ambiguity fixing.

List of Acronyms.
Tutorial 0
UNIX enviroment, Tools and Skills.
GNSS Standard File Formats

J. Sanz Subirana and J.M. Juan Zornoza

November 27, 2013


Tutorial 0.1. UNIX Environment, Tools and Skills

Tutorial 0.1. UNIX Environment, Tools and Skills

Objectives

To present a (very limited) set of UNIX instructions in order to


manage files and directories, as well as some basic elements of
awk/gawk programming and the graphical plotting environment
graph.py. The aim is not to teach UNIX or programming lan-
guages, but to provide some basic tools needed to develop the
practical sessions.
Note: The following exercises are very elementary and can be
omitted if the reader already has some basic knowledge of UNIX
and gawk.

Files to use
sxyz.eci

Programs to use
graph.py

Development

This session has been organised as a series of guided exercises to be done in


the established order, which introduces the main instructions for use in the
following sessions.

1. First instructions

(a) Show the name of the directory where you are located.
Execute: pwd
(b) Examine the directory content.
Execute: ls -lt
(c) Go to the personal directory or home directory (‘∼’).
Execute: cd or cd ∼
(d) Go to the GNSS directory (inside the home directory)1
Execute: cd GNSS
(e) Access the HTML directory and view its contents.
Execute:
cd HTML
ls -lt
(f) Go back to the home directory.
Execute: cd ∼

1
If the installation has been done properly according to instructions in the installation
guide, the following three directories will be found: FILES, PROG and HTML. These directories,
together with the Notepad files, will appear in the home/GNSS directory.

1
gAGE/UPC

(g) Show a text line on the screen:


Execute:
echo "Have a nice day"
(h) Direct the contents to a file:
Execute:
echo "Have a nice day" > test
ls -ltr
echo "you too" >> test
(i) Show the contents of the file on the screen:
Execute:
cat test
Try to execute this too: echo test. What happens?
(j) Edit a file
Execute:2
textedit test

2. Directory management

(a) From any directory where you are located, go to the GNSS directory
and check that you are in it. Create the directory working inside
the GNSS directory. Access it. Go back to the directory immediately
above (in this case the GNSS directory) by executing ‘..’).
Execute:
cd ∼/GNSS
pwd
mkdir working
cd working
pwd
cd ..
pwd

3. File management

(a) Go to the working directory (which is inside the GNSS directory).


Copy the file test from the home directory (‘∼’) to your current
directory (symbolised by ‘.’).
Execute:
cd ∼/GNSS/working
cp ∼/test .
ls -lt
(b) Copy the file test to the file file1.3 Check the contents of file1.
Execute:
cp test file1
ls -lt
more file1

2
Any text editor can also be used.
3
As file file1 does not exist, a new file will be created with this name and with the
same contents as file test.

2
Tutorial 0.1. UNIX Environment, Tools and Skills

(c) Create a ‘link’4 from file file2 to file test. Check the file contents.
Check the contents of file2.
Execute:
ln -s test file2
ls -lt
more file2
(d) Using a text editor (e.g. gedit or similar), edit file2 and change the
word day to the word YEAR. Save the changes and exit gedit. Next,
check the contents of file test and its link file2. Have the contents
of the original file test been modified through its link file2?
Execute:
gedit file2
more test
more file1
(e) Remove file file1 and its link file2. Check if they have been
deleted. Create the directory other. Remove the directory other.
Execute:
ls -lt
rm file1 file2
ls -lt
mkdir other
ls -lt
rm -r other
ls -lt
(f) Find information on the ‘mkdir’ and ‘rm’ commands in the help pages
(i.e. in the UNIX manual).
Execute:
man mkdir
man rm

4. Programming environment gawk5


(a) From within the working directory, create a link from file sxyz.eci
(which is placed in the directory GNSS/FILES/TUT0) to a file with
the same name in the working directory.
Execute:
cd ∼/GNSS/working
ln -s ∼/GNSS/FILES/TUT0/sxyz.eci .
ls -lt
The file sxyz.eci contains three columns of coordinates, in a geo-
centric inertial system, of a set of satellites at different epochs. It
contains the following fields:
SATELLITE time(sec) X(km) Y(km) Z(km)

4
This differs from the previous case because file2 is not a new file, just a pointer to
file test. Thus, the ‘link’ file2 represents the minimum space expense, independent of
the file test size. Execute man ln to see the meaning of different types of links.
5
gawk is the GNU implementation of awk (from the Free Software Foundation).

3
gAGE/UPC

(b) Execute the instructions cat, more and less in order to display the
file contents sxyz.eci. What differences can be seen among these
instructions?6
Execute:
cat sxyz.eci
more sxyz.eci
less sxyz.eci
cat sxyz.eci | less
(c) Using the programming language gawk, print (on screen) the first
and third fields of file sxyz.eci.
Execute:
gawk ’{print $1,$3}’ sxyz.eci |more
or
cat sxyz.eci |gawk ’{print $1,$3}’ |more
(d) Now print all the fields at the same time.
Execute:
cat sxyz.eci | gawk ’{print $0}’ | more
(e) The following instruction generates the file prb1 which contains data
from a single satellite. Which satellite is selected?
Execute:
cat sxyz.eci | gawk ’{if ($1==5) print $0 }’ > prb1
more prb1
(f) What is the meaning of the values in the second column of file prb2
generated by the next instruction?
Execute (in a single line):7
cat sxyz.eci | gawk ’{if ($1==5)
print $2,sqrt($3**2+$4**2+$5**2)}’> prb2
more prb2
(g) Discuss the structure of the following instruction that makes a ‘print’
with a particular format (where %i=integer, %f= float, %s= string).
Execute:
cat sxyz.eci |gawk ’{printf
"%2i %02i %11.3f %i %s \n",$1,$1,$3,$3, $1}’|more
(h) Access the manual pages of gawk.
Execute:
man gawk

6
The command ‘|’ allows us to connect the output of a process with the input of another.
For example, the output of cat can be sent to more.
7
The sentence line is a single line, although it may appear as two lines because of
typesetting constraints.

4
Tutorial 0.1. UNIX Environment, Tools and Skills

5. Graphics environment graph.py

(a) Program graph.py is in directory ∼/GNSS/PROG/src/gLAB src. Link


this program to the current directory "." (i.e. directory working).
Execute:
ln -s ∼/GNSS/PROG/src/gLAB src/graph.py .

(b) For the previously generated file prb1, plot the third field (x coordi-
nate) as a function of the second one (time in seconds).
Execute:8
graph.py -f prb1 -x2 -y3

(c) Using file sxyz.eci, plot satellites #5 and #9.


Execute:9
graph.py -f sxyz.eci -x2 -y3 -c ’($1 == 5)’
-f sxyz.eci -x2 -y3 -c ’($1 == 9)’
(d) Repeat the previous plot for the interval [20 000 : 30 000] on the x-
axis.
Execute:
graph.py -f sxyz.eci -x2 -y3 -c ’($1 == 5)’
-f sxyz.eci -x2 -y3 -c ’($1 == 9)’
--xn 20000 --xx 30000
(e) Using file prb1, plot on the same graph the x (third field), y (fourth
field) and z (fifth field) coordinate as a function of time (second field).
Execute:
graph.py -f prb1 -x2 -y3 -f prb1 -x2 -y4 -f prb1 -x2 -y5

(f) Using file prb1, plot on the same


p graph the distance of the satellites
from Earth’s mass centre (r = x2 + y 2 + z 2 ) as a function of time.
Execute:
graph.py -f prb1 -x2 -y’math.sqrt($3*$3+$4*$4+$5*$5)’

(g) For the same file used in the previous cases (prb1), write the title
"orbit", x label "sec" and y label "m".
Execute:
graph.py -f prb1 -x2 -y3 -t "orbit" --xl "sec" --yl "m"

8
Depending on the PATH configuration, it would be necessary to execute ‘./graph.py’
instead of ‘graph.py’. Another possibility is to include the current directory ‘.’ in the PATH
variable of the current terminal. This is done in the bash environment by executing export
PATH="./:$PATH". On the other hand, if we want to make this PATH update permanent,
then the sentence export PATH="./:$PATH" must be included at the end of file ‘.bashrc’
in the home directory. When working in tcsh instead of bash, the equivalent sentences are
as follows: execute set PATH=./:${PATH} in the current directory (for a non-permanent
change), or add the sentence set path=(./ $path) to the end of file /etc/csh.cshrc to
make the PATH update permanent. Note that, in this last case, administrator privileges are
needed to edit the /etc/csh.cshrc file.
9
Note that, in the Windows OS, instructions like ’($1=="5")’ must be written as
"($1==’5’)"; that is, replacing (") by (’).

5
gAGE/UPC

(h) Visualise the different forms of graphic representations in the follow-


ing instructions (with points, lines and other symbols or colours).

Execute:
graph.py -f prb1 -x2 -y3 -s.
graph.py -f prb1 -x2 -y3 -s-
graph.py -f prb1 -x2 -y3 -s-.
graph.py -f prb1 -x2 -y3 -s--
graph.py -f prb1 -x2 -y3 -so
graph.py -f prb1 -x2 -y3 -s+
graph.py -f prb1 -x2 -y3 -sp
graph.py -f prb1 -x2 -y3 -so --cl r
graph.py -f prb1 -x2 -y3 -s. --cl g
(i) Save the plot in a POSTSCRIPT file "orbit.ps" and in a PNG! (PNG!)
file "orbit.png".
Execute:
graph.py -f prb1 -x2 -y3 --sv orbit.ps
graph.py -f prb1 -x2 -y3 --sv orbit.png
(j) Check "help" in graph.py.
Execute:
graph.py -help

6
Tutorial 0.2. GNSS Standard File Format

Tutorial 0.2. GNSS Standard File Format


By Adrià Rovira Garcı́a
gAGE/UPC & gAGE-NAV, S.L.

Objectives

To become familiar with the different format standard(s) involved


in the GNSS data sets. To provide the user with a reliable and
powerful tool to learn the standard formats in a very easy and
friendly way, aided by explanatory tool tips. These tips will be
triggered automatically when the mouse is hovered over a field.
The explanations include a description of the field, the format in
which it is written and, if applicable, its units.

Files to use
LaunchHTML.html, GLONASS Navigation Rinex v2.11.html,
SP3 Version C.html, Observation Rinex v3.01.html,
ANTEX v1.3.html, Observation Rinex v2.11.html,
IONEX v1.0.html, Observation Rinex v2.10.html,
SP3 Version C.html, RINEX CLOCKS v3.00.html,
SBAS Navigation Rinex v3.01.html,
GPS Navigation Rinex v2.11.html

Programs to use
Any Web browser (Firefox can be used, as well).

Development

1. RINEX measurement files: v2.10


This standard gathers the GNSS observations collected by a receiver. The
file is divided clearly into two different sections: the header section and
the observables section. While in the header global information is given
for the entire file, the observables section contains the code and carrier
measurements, among others, stored by epoch.
Open file Observation Rinex v2.10.html with a Web browser and an-
swer the following questions (the answer is provided at the end of each
question).

(a) Hover the mouse over the title ‘Observation RINEX 2.10 Format’,
where some general information is given. Which was the first insti-
tution to develop this format?
→ The Astronomical Institute of the University of Berne.
(b) What was the reason for developing such a standard?
→ The exchange of GPS data from several different GPS receivers.

7
gAGE/UPC

(c) Which type of optimisation has been applied to this standard?


→ Minimum space requirements, keeping the observation records as short
as possible.
(d) What is the maximum record (i.e. line) length?
→ Files are kept to 81-character lines.
(e) The header section contains a set of labels. Where are they located?
→ The header labels are located between the 61st and the 80st column
of each line.
(f) Where can a collection of currently used formats be found?
→ On the IGS website:
http://igscb.jpl.nasa.gov/components/formats.html .
(g) The header section of this file is dual coloured in order to distinguish
header information from header labels. What is the first and the last
header label of the header section?
→ The first label is ‘RINEX VERSION / TYPE’ while the last label is ‘END
OF HEADER’.
(h) What is the difference between the ‘RINEX VERSION / TYPE’ and the
‘COMMENT ’ labels?
→ While the first one is a mandatory label, the second is optional and
may not appear in some RINEX files.
(i) Hover over the first field in the ‘RINEX VERSION / TYPE’ line; what
is the main advance in this RINEX version?
→ Version 2 has been prepared to contain GLONASS or other satellite
system observations apart from GPS satellites.
(j) Where is the antenna located approximately? In which reference
system?
→ The approximate antenna position is (478 902 8.4701, 176 610.0133,
419 501 7.0310) in the WGS-84 system.
(k) Hover over the first field in the ‘LEAP SECONDS’ line; what is the
difference between the various satellite systems, when counting leap
seconds?
→ The Glonass time system is tied to UTC, so leap seconds are needed,
for instance, to mix Galileo or GPS with Glonass data.
(l) How many satellites are present in the current file? To which satellite
system do they belong?
→ There are 14 different satellites:
14 GNSS satellites = 10 GPS + 3 Glonass + 1 SBAS.

8
Tutorial 0.2. GNSS Standard File Format

(m) Line ‘PRN / # OF OBS ’ has to be consistent with the observables


listed in line ‘# / TYPES OF OBSERV’. What are these observations?
Do all satellites contain the same observables in this example?
→ The observables are: L1, L2, P1, P2, C1, S1, S2.
Glonass and SBAS satellites only have: L1, C1, S1.
(n) How does the standard indicate the end of the header?
→ The last field of the header is a record of 60 empty characters.
(o) The data section of this file is again dual coloured in order to distin-
guish blocks of data. According two the different colours used, how
many epochs are included in this file?
→ There are two different epochs, each with a different colour.
(p) The first line of an epoch contains information on a whole block of
measurements. When is the first epoch of the file?
→ The first epoch corresponds to 5/3/2010 at 00:00:00.
(q) How many satellites are present in the first epoch? Is there any
particular feature occurring due to this number?
→ The first epoch contains 14 different satellites. Because there are
more than 12 satellites, the list of epoch satellites is divided into two
different lines.
(r) Measurements follow the order stated in line ‘# / TYPES OF OBSERV’
line. The satellite order is given in the first line of the epoch. What
are the units for the observables?
→ L1, L2: cycles of the carrier.
P1, P2, C1: metres.
S1, S2: receiver dependent.
(s) Hover over the first L1 measure of satellite G13. The measure is given
together with two indicators. What are these indicators? What do
they represent?
→ Loss of Lock Indicator: Depending on its value, it can show a cycle
slip, an opposite wavelength factor, or an anti-spoofing measurement.
Signal Strength: Projected into the [1-9] interval.

2. RINEX measurement files: v2.11


Open file Observation Rinex v2.11.html with a Web browser.

(a) Hover over the ‘WAVELENGTH FACT L1/2’ line records. The first line
states the default values for the wavelength measures for the L1
and L2 frequencies. Which satellite system do the default values
apply to? Interpret the second line of the ‘WAVELENGTH FACT L1/2’
records.
→ The Default Wavelength Factor applies for GPS only.
Three satellites (G14, G18, G19) have a full cycle factor in the first
frequency (L1) and half a cycle factor in the second frequency (L2).
(b) Hover over the first record of line ‘# / TYPES OF OBSERV’. What
observation types are defined in RINEX version 2.11? In what units
are these observations measured?

9
gAGE/UPC

→ Pseudorange measures: C and P code [m]


Carrier phase: L [cycles of the carrier]
Doppler frequency: D [Hz]
Signal-to-noise ratio: S [receiver-dependent].
(c) What value is set in the ‘RCV CLOCK OFFS APPL’ record? Where can
the Receiver Clock Offset be found later in the RINEX file?
→ It has a value of 1, which means that an offset is applied in the
receiver clock. The value of this offset is reported in the last record
of the first line of each epoch.

3. RINEX Measurement files: v3.01


Open file Observation Rinex v3.01.html with a Web browser.

(a) This RINEX version is newer than version 2. At first glance the
header section is larger and the observation data records are reor-
ganised to be column readable. Which satellite system does this file
belong to? What type of file is it?
→ This file contains GPS, Glonass and SBAS observations, so it is a
mixed file. It is an observation data file. Note that the possible values
may have changed from the previous version.
(b) The date record in ’PGM / RUN BY / DATE’ also has been redesigned.
What is the date format now? What has changed in the versions?
→ In version 2.11, there was no a strict rule stating date file creation.
In version 3.01, the date has to follow the structure Year/Month/Day
- Hour/Minute/Second - Time zone.
(c) A ‘MARKER TYPE ’ record has been added to the header. What type
of marker type would report a station at the North Pole?
→ The North Pole is located in the middle of the Arctic Ocean, almost
permanently covered with constantly shifting sea ice. It suits the
‘FLOATING ICE’ marker type.
(d) An extensive description of the ANTENNA can now be obtained
from this new standard. What type of antenna information is avail-
able?
→ Antenna Number. Antenna Type + Radome Identifier.
ARP: (Height, East Eccentricity, North Eccentricity).
ARP: (X,Y,Z) when mounted on a vehicle.
Antenna Phase Centre: (North, East, North) w.r.t. the ARP.
Antenna Bore-sight: (North, East, North) or (X,Y,Z).
Antenna Zero Direction: Azimuth or Vector.
(e) A new ‘SYS / # / OBS TYPES’ record has been added in this file.
What observations are present for the SBAS satellites?
Hover over the observation descriptors. How many pseudorange code
descriptors are present for the sixth Beidou (Compass) frequency?
→ Glonass and SBAS satellites have the same four observation types:
L1C S1C C1C S1C. RINEX v3.01 defines C6I, C6Q, C6X pseudor-
ange code descriptors for Beidou.
(f) A new ‘SIGNAL STRENGTH UNIT ’ record has been added to stan-
dardise RINEX SSI. What indicator would have a signal-to-noise
ratio of 33 dBHz at the output of the correlator?

10
Tutorial 0.2. GNSS Standard File Format

→ From the RINEX table, it would present a 5 SSI value.


(g) Records ‘SYS / DCBS APPLIED’ and ‘SYS / PCVS APPLIED’ inform
if DCB or PCV has been applied. What programs/files have been
used in these files?
→ DCBs are corrected using the CC2NONCC program10 with the input file
p1c1bias.hist. PCVs are corrected using the PAGES program with
input file igs05.atx.
(h) Hover over the ‘SYS / SCALE FACTOR’ data records. What is the
purpose of implementing such a scale factor?
→ The purpose of the scale factor is to increase resolution of the phase
observations.
(i) Find the week number in the ‘LEAP SECONDS’ line. What is the
reason for the week roll-over? When it did happen first?
→ Because it is a 10-bit number.
It happened on 22/08/1999 at 00:00:00 GPS time.
(j) Hover over any observation data record. Why are there lines of 80
characters, and lines that are longer?
→ While the epoch headers retain a record length of 80 characters, the
observation record length limitation of RINEX versions 1 and 2 has
been removed.

4. RINEX navigation files: v2.11 (GPS)


The standard navigation messages broadcast by the GNSS satellites dis-
cussed here can vary slightly from one satellite system to another. For
example, while the GPS navigation RINEX contains pseudo-Keplerian el-
ements that permit the calculation of the satellite’s position, Glonass navi-
gation RINEX contains the satellite’s position, velocity and Sun and Moon
acceleration in order to integrate the satellite orbits using the Runge–
Kutta numerical method.
Open file GPS Navigation Rinex v2.11.html with a Web browser.

(a) As usual, this file is divided into a header section and a data record
section. The header section is shorter than in the observation RINEX.
How short can a GPS navigation message RINEX header be?
→ The shortest header contains just three lines: ‘RINEX VERSION /
TYPE’, ‘PGM / RUN BY / DATE’ and ‘END OF HEADER’.
(b) What ionospheric corrections are given?
The alpha0, alpha1, alpha2, alpha3 and the beta0, beta1, beta2,
beta3 coefficients for the Klobuchar model.
(c) How many leap seconds are used in the file? When is it recommended
to state the number of leap seconds?
→ Fifteen leap seconds. It is recommended for mixed GPS/Glonass files.
(d) This file contains the ephemerides for two different satellites, each
block of ephemeris having a separate colour. Where is the satellite
identifier found? What satellites are present in the file?

10
Program CC2NONCC is available from https://goby.nrl.navy.mil/IGStime/cc2noncc/ .

11
gAGE/UPC

→ The satellite identifier is found in the first record of the ephemeris


block. The PRN identifiers present in the file are PRN 6 and PRN 13.
(e) The first line of each ephemeris block contains three records to com-
pute the satellite clock offset to the GPS time. What are these three
coefficients?
→ They are the polynomial coefficients to compute the satellite clock
offset from the GPS system time. These coefficients are: bias, drift
and drift rate from the GPS time.
(f) GPS orbits are nearly circular. In the third line can be found the
broadcast orbit eccentricity. What are the orbit eccentricities for the
file satellites?
→ PRN 6 has an eccentricity of 0.006 267 404 183 75.
PRN 13 has an eccentricity of 0.002 002 393 477 60.
(g) The last non-blank field (second record in the eighth row) states the
validity period for each ephemeris block. What is the value if it is
not known? In this case, what is the fitting interval?
→ The value is zero when the fitting interval is unknown. In this case,
the fitting interval is [t0 − 2 h, t0 + 2 h].

5. RINEX navigation files: v2.11 (Glonass)


Open file GLONASS Navigation RINEX v2.11.html with a Web browser.

(a) How do you identify this file as a Glonass navigation message?


→ The RINEX file type value is a ‘G’.
(b) Does this file include any ionospheric information?
→ The Glonass navigation message does not broadcast ionospheric cor-
rections.
(c) What correction has to be applied to correct Glonass system time to
UTC for the SU time zone?
→ Tutc = Tsv + TauN - GammaN*(Tsv-Tb) + TauC.
(d) Each of the other lines of Glonass navigation files contain three
records with satellite position, velocity and Sun–Moon acceleration.
In which units are they given? What information gives the fourth
record of each line?
→ Units are: km, km/s and km/s2 .
Message Frame Time, Satellite Health, Frequency Number, Informa-
tion Age.
(e) Frequency information is found in the third row of each ephemeris
block. What are the channel numbers of the two satellites present in
the file? Which are the associated frequencies?

12
Tutorial 0.2. GNSS Standard File Format

→ R3 used the 21st frequency slot, so


1602 + 0.5625 ∗ 21 = 1613.8125 MHz.
R11 used the 4th frequency slot, so
1602 + 0.5625 ∗ 4 = 1604.2500 MHz.

6. RINEX navigation files: v3.01 (SBAS)


Open file SBAS Navigation RINEX v3.01.html with a Web browser.

(a) The SBAS broadcast navigation message is given in a new version


(v3.01). The first change is observed in the first header line, where
the file type and the satellite system are now clearly divided. What
is the difference between the older version 2.11 in representing the
navigation messages?
→ In the older navigation message version, the satellite system record
was unused. In version 2.11, file type N or G would directly represent
a GPS or Glonass navigation message.
In version 3.01, file type N represents a navigation message, where
the satellite system record specifies which of the G, R, S, E, M satellite
system(s) is involved.
(b) The ‘TIME SYSTEM CORR’ line allows the satellite system time to be
transformed to UTC time through a correction. What are the coef-
ficients of the formula? Which is the augmentation system of this
navigation message?
→ The formula is: CORR(t) = a0 + a1*DELTAT
Particularised:
CORR(t)= 0.1331791282E-06 + 0.107469589E-12*(t-552960)
The augmentation system is EGNOS.
(c) This file contains ephemerides for a geostationary satellite. What
is the difference in time between the two records? Where can it be
found?
→ The epoch time is located in the first line of each data epoch.
The first epoch corresponds to 18/12/2010 at 00:01:04.
The second epoch corresponds to 18/12/2010 at 00:05:20.
So, between them, the elapsed time is 4 minutes and 16 seconds.
(d) SBAS navigation files are similar to Glonass ones, in that both con-
tain records of satellite position, velocity and accelerations. What
is the flag for a healthy satellite? Which IODN corresponds to the
ephemeris present in the file?
→ A healthy satellite contains a 0.0 Health flag.
The first ephemeris block has IODN: 23.
The second ephemeris block has IODN: 24.

13
gAGE/UPC

7. Global Ionospheric Map files: IONEX v1.0


Using a GNSS tracking network it is possible to extract information about
the TEC of the ionosphere on a global scale. The IONEX format is a well-
defined standard used to exchange ionospheric maps. It follows the same
philosophy as the RINEX format, even when the files are organised into
a header and a data section where the maps are allocated.
Open file IONEX v1.0.html with a Web browser.

(a) Hover over the third record of the first line. How many sources can
contribute to produce an IONEX map? And how many models?
→ Several satellite sources can be used: Envisat, Geostationary,
Glonass, GPS, TOPEX/POSEIDON, Navy Navigation Satellite
(NNS) or IRI. Two different models are possible: BENt or ERS.
(b) This file contain two types of information lines: COMMENT lines
and DESCRIPTION lines. What is the difference between the two
records? Which model is used in this IONEX map? When is this
map valid?
→ Description lines give a brief description of the technique and model
used, while comment lines can contain any kind of information. The
IONEX map model of this file is based on spherical harmonics. The
ionospheric map is for Day of Year (DoY) 288 of 1995.
(c) What information would you expect to appear in the ‘OBSERVABLES
USED’ line when using a theoretical model?
→ A blank line is given when a theoretical model is used.
(d) After COMMENT line(s) the IONEX Map Grid is described. Give
details about: the number and dimension of the maps present in
the current file with its mapping function; the number of stations
and satellites used for the TEC computations; the grid size and the
satellite elevation cut-off.
→ The IONEX file contains five 3D TEC/RMS/HGT maps with a 1/ cos(z)
mapping function.
80 stations and 24 satellites have been used to produce this map.
The grid extends from 200 to 800 km in height with an equidistant
increment of 50 km.
The grid extends from 85◦ to −85◦ in latitude and from 0◦ to 355◦
in longitude in increments of 5◦ .
(e) There are some auxiliary data in this file. What type of information
is given, and in which units?
→ The IONEX map gives the DCBs and their RMS for the satellites
used in the map.
The DCBs are given between the GPS P1 and P2 codes in units of
nanoseconds (of L1−L2 delay).
(f) Once the header section ends, the ionospheric maps are detailed.
How many ionospheric maps are presented in the current file?
→ There are three different maps: a TEC; an RMS error map of the
associated TEC map; and a final map containing the heights at which
the TEC values are obtained.
(g) Hover over the first TEC values. What is the time for this map?

14
Tutorial 0.2. GNSS Standard File Format

→ The first map corresponds to 15/10/1995 at 00:00:00.


(h) How can the exponent values be interpreted?
→ The exponent values indicate the 10 exponent to apply to the TEC
values:
Exponent: -3 TEC field; 1000 TEC value: 1000 · 10−3 = 1 TECU.
TECU is the given unit for TEC, where 1 TECU corresponds to
1016 e− /m2 .
(i) How would an non-available TEC value be seen?
→ Non-available TEC values are given as 99999 values.
(j) How many TEC values fit in a single line and in which units are
these values given?
→ TEC rows are given in 16 fields per line, up to the grid limits.
(k) Hover over any of the RMS values. What is the default exponent for
stating the RMS values of the TEC maps?
→ The default exponent is -1: 10−1 = 0.1 TECU, where 1 TECU cor-
responds to 1016 e− /m2 .

8. RINEX clock files: v3.00


The standard files provide station and satellite clock data. Four types
of information are given in this format: data analysis results for receiver
and satellite clocks derived from a set of network receivers and satellites
with respect to a reference clock; broadcast satellite clock monitoring;,
discontinuity measurements; and calibration(s) of single GNSS receivers.
Open file RINEX CLOCKS v3.00.html with a Web browser.

(a) This clock data file starts with a header section as usual. Hover
over the first and second comment records. What is the difference
between the comments? What kind of information does the second
comment give?
→ The first comment is generic, while the second is a Timescale Re-
Alignment comment. This comment is required if ‘Ax’ data are given
(AR or AS). In case clock values have been time-scale shifted, the
method applied to all receiver and satellite clocks should be noted.
(b) Hover over the ‘SYS / # / OBS TYPES’ records. Which observation
descriptors are present in this RINEX clock file?
→ This file contains four different descriptors from the GPS system:
C1W, L1W, C2W, L2W.
(c) Records ‘SYS / DCBS APPLIED’ and ‘SYS / PCVS APPLIED’ describe
the DCB and PCV. What programs are used to apply different cor-
rections?
→ DCB corrections are applied using the CC2NONCC program, while PCV
corrections are applied using the PAGES program.
(d) Records ‘STATION NAME / NUM’ and ‘STATION CLK REF’ give infor-
mation about the station. Which receiver identifier is present in the
file? What external clock of this station is used for calibration?
→ The station name is the USNO with a receiver identifier 40451S003.
The external clock is the USNO, connected via a continuous cable.

15
gAGE/UPC

(e) What is the analysis centre of this file?


→ The analysis centre is the USNO, using the GIPSY/OASIS software.
(f) This file uses two different groups of ‘# OF CLK REF’ and ‘ANALYSIS
CLK REF’. When does each clock reference apply?
→ The data set is for the date 14/07/1994. USNO clock reference
applies from 00:00:00 to 20:59:59. Afterwards, the clock reference
used is TIDB from 21:00:00 to 23:59:59.
(g) How many receivers are included in the data file? Which reference
frame is used to give station coordinates?
→ Five different stations are used in the file: GOLD (USA), AREQ (Peru),
TIDB (Australia), HARK (South Africa), USNO (USA).
(h) The data record section of this file comes right after the ‘END OF
HEADER’ record. Each clock data record starts with a data type
identifier. Which ones are present?
→ The following clock data records are present: AR (Receiver Analysis),
AS (Satellite Analysis), CR (Receiver Calibration), DR (Receiver Dis-
continuities). The only missing record is the MS (Satellite Monitor)
record.
(i) What data records are present for all clock data types? Which data
records are sometimes present?
→ Records ‘Clock Bias’ and ‘Clock Bias Sigma’ are always present.
The ‘Clock Rate’, ‘Clock Rate Sigma’, ‘Clock Acceleration’ and
‘Clock Acceleration Sigma’ are only present for the AR clock data
type.
9. APC files: ANTEX v1.3
These standard files in ANTEX contain satellite and receiver antenna cor-
rections. Satellite data include satellite and block-specific PCO. Receiver
data include elevation and azimuth-dependent corrections for combina-
tions of antennas and radomes.
Open file ANTEX v1.3.html with a Web browser.
(a) As usual, this file contains a header section. Hover over the record
present in line ‘PCV TYPE / REFANT’. Which PCV is used in this file?
Which antenna is used as a reference?
→ PCVs are relative (i.e. not absolute, see section 5.6.1, Volume I).
This ANTEX file uses the AOAD/M T antenna as a reference.
(b) The different blocks of information are clearly identified using colours.
What are the opening and closing records of each block? Which an-
tennas are described in the file?
→ The antenna blocks start with record ‘START OF ANTENNA’ and end
with ‘END OF ANTENNA’. This ANTEX file contains three different
antenna descriptions. The first one is from the GLONASS R08 satel-
lite, the second from the GPS satellite G12 (modernised block 2) and
the third corresponds to the AOAD/M B antenna.
(c) Analyse Glonass antenna record ‘TYPE / SERIAL NO’. How is the
satellite code (CNNN) interpreted? When was the satellite launched?
How many satellites were launched that year before this one? Repeat
the exercise with the GPS satellite.

16
Tutorial 0.2. GNSS Standard File Format

→ The Glonass antenna corresponds to a GLONASS (R) satellite, num-


bered 729. It was launched during the year 2008. According to the
ANTEX record, it is the 67th launched satellite. The GPS antenna
is onboard the 58th GPS SV. It is the 52nd satellite launched during
2006.
(d) Line ‘DAZI’ shows the azimuth increment used to characterise the
antenna’s azimuth phase pattern. For satellite R08, is the PCV
azimuth dependent? What about the GPS one?
→ Because a DAZI value of 0.0 is given, the PCVs of R08 and G12 are
not azimuth dependent.
(e) ‘ZEN1 / ZEN2 / DZEN’ gives information on both AZI and NOAZI
phase patterns. What satellite grids are used to study the anten-
nas? Is there any difference between receiver and satellite antennas?
→ Both satellite grids start at 0.0◦ and end at 14.0◦ in 1◦ steps. Receiver
antennas use zenith degrees, satellite ones use nadir degrees.
(f) ‘# OF FREQUENCIES’ determines the number of frequencies for each
antenna block. What frequencies are described in the block for each
satellite phase pattern?
→ Two different frequencies are described. The Glonass satellite de-
scribes G1 and G2 frequencies, while the GPS satellites describe L1
and L2.
(g) The frequency section extends from ‘START OF FREQUENCY’ to ‘END
OF FREQUENCY’ records. What information is given? Give the eccen-
tricity vector for both satellites. What is the origin of this vector?
→ The eccentricities of the APC and the phase pattern values are
R08=(-545.00,0.00,2300.00) and G12=(-10.16,5.87,-93.55).
The vector points from the satellite centre of mass to the satellite
APC.
(h) How many non-azimuth-dependent (NOAZI) phase pattern values
are specified? Why?
→ Fourteen different NOAZI values are specified, due to the ‘ZEN1 /
ZEN2 / DZEN’ definition. Because DAZI is set to 0, NOAZI-dependent
phase patterns are specified.
(i) The third antenna corresponds to a receiver antenna. What is the
calibration method? Which agency has created such corrections?
→ Calibrations have been converted from file igs 01.pcv. TUM is the
creator of the file.

17
gAGE/UPC

(j) This antenna has a non-zero DAZI record for the PCVs. What is
the value of this increment? Where else can we see this DAZI?
→ This antenna block has a 30◦ azimuth increment for the PCVs. So,
this value will be given from 0 to 360 in increments of 30◦ .
Apart from giving the NOAZI values, this data set includes the DAZI
values, both of them using a 0.0 to 90 grid with a 5◦ step.

10. Precise orbit and clock files: SP3 version C


Precise orbital data (satellite position and velocity), the associated satel-
lite clock corrections, orbit accuracy exponents, correlation information
between satellite coordinates and satellite clock are available in this for-
mat.
Open file SP3 Version C.html with a Web browser.

(a) The structure of this file is different from the RINEX ones seen up
to now. Hover the mouse over the ‘Extended Standard Product 3
Orbit Format’ title, where some general information is given. What
additional information is included regarding to the SP3-c version?
→ Satellite clock corrections, orbit accuracy exponents, comment lines,
the GPS week and the first epoch seconds of a week.
(b) What was the main advance in the SP3-b version? Did this change
some previous characteristics?
→ Version B of the SP3 files accommodated Glonass orbits. SP3-b modi-
fications were backwards compatible with SP3-a, with the exception
of the satellite identification records, from an I3 field to an A1,I2
one.
(c) What is the main advance in the SP3-c version? How is this achieved?
→ Files now include not only clock accuracy information, but also infor-
mation on the accuracy of (X, Y, Z) satellite coordinates, which is
added using columns 61 to 80 in each position and clock record.
(d) How is this format organised? Is there any optional record?
→ The format of an SP3 file is a header, followed by a series of epoch
times, each with a set of position and clock records listed for each
satellite. Optional records are: satellite velocities, clock correction
rate of change, position and clock correlation record (EP record)
and velocity and clock rate-of-change correlation record (EV record).
(e) The first line of the SP3 file contains information about the entire
file. What is the version of the current file? What might be the next
SP3 version? Which flag mode is set in this file? What time is the
first epoch? How many epochs are included in this file? What type
of orbit is used in the file? Which agency has created the file?
→ The version of the file is C-version. SP3 versions follow the alpha-
bet, so next one might be the SP3-D version. The velocity mode flag
is set. This means the records will follow the order P,V, P,V, ...
in case there are additional records, (EP or EV), which would be in
the middle.
The first epoch dates from 08/08/2001 at 00:00:00.
There are 192 epochs up to a maximum of 10 million.

18
Tutorial 0.2. GNSS Standard File Format

The orbit type is HLM, which means it has been fitted by applying a
Helmert transformation.
IGS is the agency that created the file.
(f) What is the symbol identifying the start of the second line? Which
GPS week number corresponds to this file? Which interval is used
in this file?
→ The ## symbols.
This file corresponds to the GPS week 1126.
A 900 s interval is used.
(g) The next block (lines 3–7) states the satellites used in the file. How
many have contributed? What does a zero value mean? How many
different satellites from different satellite systems are identified?
→ There are 31 different satellites.
The 0 value indicates that all identifiers have been listed.
Each identifier consists of the satellite system indicator followed by
a two-digit integer.
(h) From lines 8 to 12, orbit accuracy of the satellites is listed following
the previous block order (lines 3–7). How is this accuracy exponent
interpreted?
→ For example, if the accuracy exponent is 13 → 213 mm ' 8 m. This
accuracy represents one standard deviation of the entire file (per
satellite).
(i) The next block comprises lines 13 and 14. Although it is mainly
unused, what information is given in the file?
→ This block states the file type and the system time used in the file.
(j) The next block comprises lines 15 and 16. What information is given
in the file? What is the reason for using such base numbers?
→ This block contains the floating-point base number used for computing
the standard deviations of satellite position, velocity, clock correction
and rate of change of the clock correction. Better resolution can be
obtained using a floating-point number different from 2.
(k) After the ’comment’ section, the data records start with the pre-
viously seen time of first epoch. What symbols mark the start of
comments and the new epoch?
→ Comments start with symbols ‘/*’, while the new epoch starts with
symbol ‘*’.
(l) The second epoch line contains the position and clock data record.
What parameters are given? Which units are used? Explain the
different flags applied to the first satellite.
→ Satellite (X,Y,Z) positions, the clock correction with its correspond-
ing standard deviation exponents. There are four final flags.
Satellite positions are given in kilometres, clock correction in mil-
liseconds. The exponents generate corrections in millimetres and pi-
coseconds.
The first satellite has set: a discontinuity flag between the previous
epoch and the current epoch; an orbit position and clock prediction
flag; and a manoeuvre flag.

19
gAGE/UPC

(m) The third epoch line contains the extended position and clock cor-
relation record. What information is given in the first four records?
What is the difference with the previous line? Which correlation
coefficients are given next?
→ The standard deviations of the satellite position and clock correction
are given with greater resolution than the approximate values given
in the position and clock record.
The correlations between the X/Y, X/Z, Y/Z satellite coordinates, and
the correlations between the X/C, Y/C, Z/C satellite coordinates and
clock.
(n) The fourth epoch line contains the velocity and clock rate-of-change
record. In which units are satellite velocities, clock rate of change
and their deviations expressed? What happens if the deviations are
unknown or too big to represent?
→ Velocities are given in decimetres/second and clock rate of change
in microseconds/second. Velocity deviation is in millimetres/second
and clock rate-of-change deviation in picoseconds/second.
A value of 99 means the standard deviation was too large to represent,
while a blank means it is unknown.
(o) The fourth epoch line contains the extended velocity and clock rate-
of-change record. What correlation coefficients are given? Why are
the values given greater than one?
→ The correlations between the Vx/Vy, Vx/Vz, Vy/Vz satellite velocities,
and correlations between the Vx/Clock, Vy/Clock, Vz/Clock satellite
velocities and clock.
Because they have to be divided by 107 .

20
Tutorial 1
GNSS Data Processing Lab Exercises

Prof. Dr. Jaume Sanz Subirana and Prof. Dr. J. M. Juan Zornoza
assisted by Dr. Adrià Rovira Garcia

Research group of Astronomy & Geomatics (gAGE)


Universitat Politècnica de Catalunya (UPC)
Barcelona, Spain

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia

©gAGE/UPC Su
http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
• Introduction
• The gLAB tool suite
• Examples of GNSS Positioning using gLAB
• Laboratory session organization
LABORATORY Session
• Starting-up your laptop
• Basic: Introductory lab exercises
• Medium: Laboratory Work Project:
Kinematic positioning of a LEO sat.
• Advanced: Homework

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 3
Technical University of Catalonia
Introduction
• This practical lecture is devoted to analyze and assess different issues
associated with Standard and Precise Point Positioning with GPS data.
• The laboratory exercises will be developed with actual GPS
measurements, and processed with the ESA/UPC GNSS-Lab Tool suite
(gLAB), which is an interactive software package for GNSS data
processing and analysis.
• Some examples of gLAB capabilities and usage will be shown before
starting the laboratory session.
• All software tools (including gLAB) and associated files for the laboratory
session are included in the USB stick delivered to lecture attendants.
• The laboratory session will consist in a set of exercises organized in
three different levels of difficulty (Basic, Medium and Advanced). Its
content ranges from a first glance assessment of the different model components
involved on a Standard or Precise Positioning, to the kinematic positioning of a
LEO satellite, as well as an in-depth analysis of the GPS measurements and
associated error sources.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 4
Technical University of Catalonia

OVERVIEW
• Introduction
¾ The gLAB tool suite
• Examples of GNSS Positioning using gLAB
• Laboratory session organization
LABORATORY Session
• Starting-up your laptop
• Basic: Introductory lab exercises
• Medium: Laboratory Work Project:
Kinematic positioning of a LEO sat.
• Advanced: Homework

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 5
Technical University of Catalonia
The gLAB Tool suite
Ž The GNSS-Lab Tool suite (gLAB) is an interactive
multipurpose educational and professional package for
GNSS Data Processing and Analysis.
• gLAB has been developed under the ESA Education
Office contract N. P1081434.

ŽMain features:
• High Accuracy Positioning
capability.
• Fully configurable.
• Easy to use.
• Access to internal computations.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 6
Technical University of Catalonia

The gLAB Tool suite

• gLAB has been designed to cope with the


needs of two main target groups:
– Students/Newcomers: User-friendly tool, with a
lot of explanations and some guidelines.

– Professionals/Experts: Powerful Data


Processing and Analysis tool, fast to configure
and use, and able to be included in massive
batch processing.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 7
Technical University of Catalonia
The gLAB Tool suite
• Students/Newcomers:
– Easiness of use: Intuitive GUI.
– Explanations: Tooltips over the different options of the GUI.
– Guidelines: Several error and warning messages. Templates for
pre-configured processing.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 8
Technical University of Catalonia

The gLAB Tool suite


• Students/Newcomers:
– Easiness of use: Intuitive GUI.
– Explanations: Tooltips over the different GUI options..
– Guidelines: Several error and warning messages.
Templates for pre-configured processing.

• Professionals/Experts:
– Powerful tool with High Accuracy Positioning capability.
– Fast to configure and use: Templates and carefully chosen defaults.
– Able to be executed in command-line and to be included in batch
processing.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 9
Technical University of Catalonia
The gLAB Tool suite
• In order to broad the tool availability, gLAB
Software has been designed to work in both
Windows and Linux environments.

• The package contains:


– Windows binaries (with an installable file).
– Linux .tgz file.
– Source code (to compile it in both Linux and Windows
OS) under an Apache 2.0 license.
– Example data files.
– Software User Manual.
– HTML files describing the standard formats.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 10
Technical University of Catalonia

The gLAB Tool suite


Ž Read files capability: Ž Modelling module:
• RINEX observation v2.11 & v3.00
• RINEX navigation message. • Fully configurable model.
• SP3 precise satellite clocks and orbits files • Satellite positions.
• ANTEX Antenna information files. • Satellite clock error correction.
• Constellation status. • Satellite movement during signal flight
• DCBs files. time.
• GPS_Receiver_Type files.
• SINEX position files.
• Earth rotation during signal flight time.
• Satellite phase center correction.
Ž Pre-processing module: • Receiver phase center correction.
• Carrier-phase prealignment. (frequency dependent).
• Carrier-phase / pseudorange consistency • Relativistic clock correction.
check.
• Cycle-slip detection (customizable • Relativistic path range correction.
parameters) • Ionospheric correction (Klobuchar,
- Melbourne-Wübbena. NeQuick, IONEX).
- Geometry-free CP combination. • Tropospheric correction
- L1-C1 difference (single frequency).
- Simple and Niell mappings.
• Pseudorange smoothing.
- Simple and UNB-3 nominals.
• Decimation capability.
• On demand satellite enable/disable. • Differential Code Bias corrections.
• Elevation mask. • Wind up correction.
• Frequency selection. • Solid tides correction (up to 2nd
• Discard eclipsed satellites. degree).

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 11
Technical University of Catalonia
The gLAB Tool suite
Ž Filtering module: Ž Output module:
• Cartesian / NEU coordinates.
• Able to chose different • Configurable message output.
measurements to process (1 or
more), with different weights. This
design could be useful in future Ž Other functionalities:
Galileo processing, where processing • Computation of satellite coordinates
with different measurements may be and clocks from RINEX and SP3 files.
desired. • Satellite coordinates comparison
• Fixed or elevation-dependant mode. For instance RINEX navigation
weights per observation. vs. SP3, or SP3 vs. SP3 (along-track,
• Troposphere estimation on/off. cross-track and radial orbit errors,
clock errors, SISRE).
• Carrier-Phase or Pseudorange
positioning. • Show input mode. No processing, only
parsing RINEX observation files.
• Static/Kinematic positioning (full
Q/Phi/P0 customization).
• Able to do a forward/backward • Current version allows full GPS data
processing. processing, and partial handling of
• Able to compute trajectories (no Galileo and GLONASS data.
need for a priori position). • Future updates may include full GNSS
data processing.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 12
Technical University of Catalonia

GNSS learning material package


Includes three different parts, allowing to follow
either a guided or a self-learning GNSS course:

– GNSS Book: Complete book with theory and


algorithms (Volume 1), and with a Lab. course on
GNSS Data Processing & Analysis (Volume 2).

– gLAB tool suite: Source code and binary software


files, plus configuration files, allowing processing
GNSS data from standard formats. The options
are fully configurable through a GUI.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 13
Technical University of Catalonia
OVERVIEW

9 Introduction
9 The gLAB tool suite
¾ Examples of GNSS Positioning using gLAB
• Laboratory session organization
LABORATORY Session
• Starting-up your laptop
• Basic: Introductory laboratory exercises (Ex1, Ex2)
• Medium: Laboratory Work Project (LWP):
Kinematic positioning of a LEO satellite
• Advanced: Homework
©gAGE/UPC http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics 14
Technical University of Catalonia

Basic: Introductory Lab. Exercises


• Standard and Precise Point Positioning

– To Illustrate how easy to process GNSS data using


gLAB, a GPS receiver will be positioned in the next
examples using:
• Example 1: Broadcast orbits and clocks (SPP, kinematic).
• Example 2: Precise Orbits and clocks (PPP, static).
• Example 3: Precise Orbits and clocks (PPP, kinematic).

– Solutions will be compared with an accurate reference value


of receiver coordinates to asses the positioning error.
Note: the receiver coordinates were keep fixed during the data collection.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 15
Technical University of Catalonia
We will work after the correlator: Our input data are code
and carrier measurements and satellite orbits and clocks.

RINEX FILES

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC 16


Research group off Astronomy
A t & Geomatics
G tics 16
Technical
Technic al University
University
y of Catalonia
Catalonia

GNSS Format Descriptions


• GNSS data files follow a well defined set of standards
formats: RINEX, ANTEX, SINEX…
• Understanding a format description is a tough task.
• These standards are explained in a very easy and
friendly way through a set of html files.
• Described formats:
– Observation RINEX
– Navigation RINEX
– RINEX CLOCKS
– SP3 Version C
– ANTEX

Open GNSS Formats


with Firefox internet browser

More details at: http://www.gage.es/gLAB

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 17
Technical University of Catalonia
Example 1: Standard Point Positioning (SPP)
SPP Template: Kinematic positioning with single freq. C1
code + broadcast orbits and clocks.

1. Select the SPP Template


2. Upload the RINEX files:
2 - Measurement: roap1810.09o
- Navigation: brdc1810.09n
3. RUN gLAB

1 3 Default output file:


gLAB.out
Note: Reference coordinates are from RINEX

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 18
Technical University of Catalonia

Example 1: Standard Point Positioning (SPP)


• Plotting Results

Positioning with few meters of error is


achieved in kinematic SPP mode.
• Receiver navigated as a rover in pure
kinematic mode.
• Single frequency C1 code is used.
• Broadcast orbits and clocks.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 19
Technical University of Catalonia
Example 2: Static Precise Point Positioning (PPP)
PPP Template: Static positioning with dual freq. code & carrier (ionosphere-free
combination PC,LC) + post-processed precise orbits & clocks.

1. Select the PPP Template


2. Upload data files:
-Measurement: roap1810.09o
- ANTEX: igs05_1525.atx
- Orbits & clocks: igs15382.sp3
2 - SINEX: igs09P1538.snx
3. RUN gLAB

Default output file:


1 3 gLAB.out

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 20
Technical University of Catalonia

Example 2: Static Precise Point Positioning (PPP)


• Plotting Results
•Coordinates are taken as
constants in nav. filter.
•Dual frequency Code and
Carrier measurements.
•Precise orbits and clocks.
•Measurements modelling
at the
centimetre Centimetre level accuracy
over 24h data is achieved in
level. PPP static mode

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 21
Technical University of Catalonia
Example 3: Kinematic Precise Point Positioning
From default configuration of [PPP Template],
• Select kinematics in the [Filter] panel. Run gLAB and plot results.

Decimetre error level


navigation after the best
part of an hour
Receiver navigated as a rover
in a pure kinematic mode.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 22
Technical University of Catalonia

OVERVIEW
9 Introduction
9 The gLAB tool suite
9 Examples of GNSS Positioning using gLAB
¾ Laboratory session organization
LABORATORY Session
• Starting-up your laptop
• Basic: Introductory laboratory exercises (Ex1, Ex2)
• Medium: Laboratory Work Project (LWP):
Kinematic positioning of a LEO satellite
• Advanced: Homework

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 23
Technical University of Catalonia
Laboratory session organization
• The laboratory session is organized as an assisted
activity were a set of exercises must be developed
individually or in groups of two.

• As they are conceived as self-learning work, a detailed


guide is provided in the slides (pdf file) to develop the
exercises.

• A set of questions is presented, and the answers are


also included in the slides.

• Teachers will attend individual (or collective) questions


that could arise during exercise resolution.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 24
Technical University of Catalonia

Laboratory session organization


• The exercises are organized in three different levels of difficulty.
The student can choose the level of exercises to do, although at
least an introductory exercise is recommended to learn basic
gLAB usage.
• 1. Basic: Introductory exercises 1 & 2.
They consist of simple exercises to assess the model components
for Standard and Precise Point Positioning.
“Background information" slides are provided, summarizing the
main concepts associated with these exercises.

Brief summaries of
fundamentals in backup slides

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 25
Technical University of Catalonia
Laboratory session organization
• 2. Medium: Laboratory work project.
It consists of the kinematic positioning of a Low Earth Orbit satellite.
Different positioning modes are analyzed and different modeling
options will be discussed.

Given that session time is limited to


3h, students who feel comfortable
using gLAB, can skip part of the
previous basic exercises (Ex1, Ex2) and
jump to the Lab. Work Project.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 26
Technical University of Catalonia

Laboratory session organization


• 3 . Advanced: Labeled as “Homework exercises”
A set of additional exercises addressed to those students that already
have a solid background on GPS data processing.
These exercises are out of the scope of this 3h laboratory
session, and are posed for a possible further discussion…
As in the previous cases, the answers to the posed questions are also
included as BACKUP slides.

A minimum
knowledge of
UNIX (e.g.,
awk) is
required for
these homework
exercises.

gawk 'BEGIN{g=(77/60)^2}{print $6, $4, (g*($13-$14)-($15-$16))/(g-1)}' meas.txt > PC.txt

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 27
Technical University of Catalonia
OVERVIEW
9 Introduction
9 The gLAB tool suite
9 Examples of Positioning with gLAB
9 Laboratory session organization
LABORATORY Session
¾ Starting-up your laptop
• Basic: Introductory laboratory exercises (Ex1, Ex2)
• Medium: Laboratory Work Project (LWP):
Kinematic positioning of a LEO satellite
• Advanced: Homework

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 28
Technical University of Catalonia

Installing the software


This tutorial has been designed to be executed under UNIX (Linux) Operative
System (OS). Which is a very powerful and robust environment.

Nevertheless, the necessary tools are provided for Windows or Macintosh


users to install this software and to emulate a UNIX command line shell over
Windows.

Linux users Windows users can install Macintosh users can


can install the the windows version of gLAB and install the software through
native version the Cygwin emulator of a Linux the Virtual Machine.
of the software command shell.
©gAGE/UPC http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics 29
Technical University of Catalonia
Inside the “Windows” folder, there is the installable gLAB program.
Follow the instructions of Software Installation
file.

Inside the “Virtual Machine” folder, there are two folders and one file.
Select the OSX Installers folder and follow the instructions of document
“VirtualBoxInstaller_OSX.pdf”

Backup solution
for Macintosh users:
8GB of free space
in disk are required
to install this SW.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 30
Technical University of Catalonia

Installing the software


Windows users

The Medium and Advanced exercises of this tutorial have been


designed to be executed under UNIX (Linux) Operative System
(OS). Which is a very powerful and robust environment.

Nevertheless, Windows OS users can do the laboratory session


by using Cygwin, which is a tool that allows to emulate a UNIX
command line shell over Windows.

Indeed, after installing Cygwin, users can develop the laboratory


session as if they were working on a UNIX system (as this
tutorial was designed).

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 31
Technical University of Catalonia
Installing gLAB + Cygwin
1.- First step: Click over the icon

Check the folder:


C:\gLAB

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 32
Technical University of Catalonia

2.- Second Step: Completing the gLAB Setup Wizard

Cygwin and gLAB


installation must
be selected.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 33
Technical University of Catalonia
Once the
installation
finish, the
icons of
gLAB,
Cygwin
Terminal
and the
GNSS Data
Processing
folder will
appear.
Tutorial slides /cygdrive/c/gLAB/win/SUMMER_SCHOOL/WORK_FILES

UNIX (Linux) console to execute


“command line” sentences

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 34
Technical University of Catalonia
Suggested desk configuration to start working

Barcelona, Spain, 31 August - 10 September 2015

Local Organiser: Su
Supported by: gAGE/UPC
ESA/ JRC INTERNATIONAL SUMMER SCHOOL ON GNSS 2015 Research group of Astronomy & Geomatics
Technical University of Catalonia

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 35
Technical University of Catalonia
NOTE:
Data files are available at the folder:
C:\gLAB\win\
SUMMER_SCHOOL\WORK_FILES

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 36
Technical University of Catalonia

Windows Troubleshooting: Execute only if gLAB doesn’t run


Some distributions of windows (e.g. Windows XP) do not install some dlls
required to run gLAB_GUI. This problem is fixed by installing the "Microsoft
Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update“.

To install this package:


1) Go to the DLL_fix folder, inside C:\gLAB directory.
2) Execute vcredist_x64
or vcredist_x86

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
37
OVERVIEW
9 Introduction
9 The gLAB tool suite
9 Examples of GNSS Positioning using gLAB
9 Laboratory session organization
LABORATORY Session
9 Starting-up your laptop
¾ Basic: Introductory laboratory exercises (Ex1, Ex2)
• Medium: Laboratory Work Project (LWP):
Kinematic positioning of a LEO satellite
• Advanced: Homework

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 38
Technical University of Catalonia

Basic: Introductory laboratory exercises

Exercise 1: Model components analysis for SPP

– This exercise is devoted to analyze the different model


components of measurements (ionosphere,
troposphere, relativity, etc.). This is done both in the
Signal-In-Space (SIS) and User Domains.

Given that session time is limited to 3h, students who feel comfortable
using gLAB, can skip part of the basic exercises (Ex1, Ex2) and jump to
the Lab. Work Project.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 39
Technical University of Catalonia
Exercise 1: SPP Model components analysis
1. Compute SPP using files: chpi0010.04o,brdc0010.04n
Cachoeira Paulista station (in the south of Brazil: O=-22.7º, I=-45.0º). January 1st 2004.

4
2

1 3 5
gLAB.out

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 40
Technical University of Catalonia

NEU Position Error plot from gLAB.out

NEU plot template configuration

FULL SPP model

North East Up

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 41
Technical University of Catalonia
Exercise 1: SPP Model components analysis
The different model
components will be
analyzed with gLAB:
• Using the previous data
file, the impact of
neglecting each model
component will be
evaluated in the Range
The modeling options and Position domains
set in this panel are
applied by default to • A baseline example of
the SPP solution. this analysis procedure
for the ionospheric
correction is provided as
follows.
• The same scheme must
be applied for all model
terms.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 42
Technical University of Catalonia

Example of model component analysis: IONO.


The procedure
explained here is
applicable for all the
cases: iono, tropo…
Default 1. In Modeling panel,
disable the model
1 Disable
Ionospheric
configuration
for SPP component to correction
analyze.
(in this example: disable
Ionospheric correction)

2. Save as gLAB1.out
the associated

In the Default
output file.
Notice that the gLAB.out
2Set output file
file contains the
configuration the processing results with as
output file was the FULL model, as it gLAB1.out
gLAB.out was set in the default
configuration. 3
©gAGE/UPC http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics 43
Technical University of Catalonia
NEU Position Error plot from gLAB1.out

NEU plot template configuration

No Iono. correction
gLAB1.out

North East Up

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 44
Technical University of Catalonia

Vertical Position Error plot from gLAB.out, gLAB1.out

Click Clear to
1 restart plots

Y-min, Y-max

2 3
gLAB1.out
gLAB.out
Time (sec) Vertical
©gAGE/UPC http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics 45
Technical University of Catalonia
Horizontal Position Error plot: gLAB.out, gLAB1.out

Click Clear to
1 restart plots

X-min, Y-min, Y-max

2 3
gLAB1.out
gLAB.out East: 19 North: 18

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 46
Technical University of Catalonia

Ionospheric model component plot: gLAB.out

Code
delay

Carrier
advance

Ionosphere delays code and


advances carrier measurements.

Note: Use the gLAB.out file.


In gLAB1.out file this model
component was switched off.
Select IONO
gLAB.out
©gAGE/UPC http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics 47
Technical University of Catalonia
Summary: Iono. model component analysis

gLAB1.out gLAB1.out

gLAB.out gLAB.out gLAB.out

Ionospheric correction
gLAB.out
(broadcast Klobuchar )
Ionospheric delays are larger
at noon due to the higher
insulation.

Code delay Large positioning errors


gLAB1.out (mainly in vertical) appear
Plot only
when neglecting iono. corr.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 48
Technical University of Catalonia

Exercise 1: SPP Model components analysis


Ionospheric delay
The ionosphere extends from about 60 km over the Earth surface
until more than 2000 km, with a sharp electron density
maximum at around 350 km. The ionospheric refraction
depends, among other things, of the location, local time and
solar cycle (11 years).
40.3
• First order (~99.9%) ionospheric delay G ion depends G ion I
on the inverse of squared frequency: f2
where I is the number of electrons per area unit
along ray path (STEC: Slant Total Electron Content). I ³ N ds
e

• Two-frequency receivers can remove this error source


(up to 99.9%) using ionosphere-free combination f 2 L1  f 2 L 2
of pseudoranges (PC) or carriers (LC). LC 1 2 22
f1  f 2
• Single-frequency users can remove about a 50% of the
ionospheric delay using the Klobuchar model, whose
parameters are broadcast in the GPS navigation message.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
49
Example of model component analysis: TROPO.
The gLAB configuration can be set-up as follows, to repeat the processing without
applying the tropospheric correction (but using the ionosphere again!):

keep
Set again: Iono gLAB1.out
Disable: Tropo as output file

• The same scheme must be applied for all other model terms (TGDs, relat...)

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 50
Technical University of Catalonia

Exercise 1: SPP Model components analysis

gLAB1.out gLAB1.out

gLAB.out gLAB.out gLAB.out

Tropospheric correction
gLAB.out (blind model)
Tropospheric and vertical
error are highly correlated.
A displacement of vertical
component appears when
gLAB1.out neglecting tropospheric
corrections.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 51
Technical University of Catalonia
Exercise 1: SPP Model components analysis
Tropospheric delay
The troposphere is the atmospheric layer placed between Earth’s surface and an
altitude of about 60 km.
The effect of troposphere on GNSS signals appears as an extra delay in the
measurement of the signal travelling from satellite to receiver.
The tropospheric delay does not depend on frequency and affects both the
pseudorange (code) and carrier phases in the same way. It can be modeled by:
– An hydrostatic component, composed of dry gases (mainly nitrogen and oxygen)
in hydrostatic equilibrium. This component can be treated as an ideal gas. Its
effects vary with the temperature and atmospheric pressure in a quite predictable
manner, and it is the responsible of about 90% of the delay.
– A wet component caused by the water vapor condensed in the form of clouds. It
depends on the weather conditions and varies faster than the hydrostatic
component and in a quite random way. For high accuracy positioning, this
component must be estimated together with the coordinates and other parameters
in the navigation filter.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
52

Exercise 1: SPP Model components analysis

gLAB1.out gLAB1.out

gLAB.out gLAB.out gLAB.out

Relativistic correction
on satellite clock due to
orbit eccentricity.
This is an additional
correction to apply at the
receiver level. The satellite
gLAB1.out gLAB.out
clock oscillator is modified
on factory to compensate
the main effect (~40Ps/day).

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 53
Technical University of Catalonia
Exercise 1: SPP Model components analysis

Relativistic clock correction


1) A constant component, depending only on nominal value of satellite’s orbit major semi-axis. It
is corrected modifying satellite’s clock oscillator frequency:
2
f 0'  f 0 1 § v · 'U
¨ ¸  2 4.464 ˜1010
f0 2©c¹ c

being f0 = 10.23 MHz, we have 'f=4.464 10-10 f0= 4.57 10-3 Hz. So, satellite should use f’0=10.22999999543 MHz.

2) A periodic component due to orbit eccentricity must be corrected by user receiver:

Pa r˜v
rel 2 e sin( E ) 2 (meters)
c c
Being P=G ME =3.986005 1014 (m3/s2) the gravitational constant, c =299792458 (m/s) light speed in vacuum,
a is orbit’s major semi-axis, e is its eccentricity, E is satellite’s eccentric anomaly, and r and v are
satellite’s geocentric position and speed in an inertial system.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
54

Exercise 1: SPP Model components analysis

gLAB1.out gLAB1.out

gLAB.out gLAB.out gLAB.out

P2-P1 Differential Code Bias


(Total Group Delay [TGD])
correction.
These instrumental delays
can affect up to few
meters, being the satellite
gLAB1.out gLAB.out TGDs broadcast in the
navigation message for
single frequency users.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 55
Technical University of Catalonia
Exercise 1: SPP Model components analysis
Total Group Delay correction (TGD)
(P2-P1 Differential Code Bias [DCB])

• Instrumental delays are associated to antennas, cables, as well as different filters


used in receivers and satellites. They affect both code and carrier measurements.
• Code instrumental delays depend on the frequency and the codes used, and are
different for the receiver and the satellites.
• Dual frequency users cancel such delays when using the ionosphere free
combination of codes and carrier phases.
• For single frequency users, the satellite instrumental delays (TGDs) are broadcast
in the navigation message. The receiver instrumental delay, on the other hand, is
assimilated into the receiver clock estimation. That is, being common for all
satellites, it is assumed as zero and it is included in the receiver clock offset
estimation.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
56

Exercise 1: SPP Model components analysis

gLAB1.out gLAB1.out

gLAB.out gLAB.out gLAB.out

Satellite clock offsets


This is the largest error
source, and it may
introduce errors up to a
thousand kilometers.
gLAB1.out gLAB.out

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 57
Technical University of Catalonia
Exercise 1: SPP Model components analysis

Satellite clock offsets


– They are time-offsets between satellite/receiver clocks time and
GPS system time (provided by the ground control segment).

– The receiver clock offset is estimated together with receiver


coordinates.

– Satellite clock offset values are provided:


• In real-time, within the broadcast navigation message with a
few meters of error
or,
• In post-process mode, by IGS precise products with
centimeter-level accuracy.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
58

Basic: Introductory laboratory exercises


Exercise 2: Model components analysis for PPP

– This exercise is devoted to analyse the additional model


components used in Precise Point Positioning (the ones
which are not required by SPP). This is done in Range
and Position Domains.

Given that session time is limited to 3h, students who feel comfortable
using gLAB, can skip part of the basic exercises (Ex1, Ex2) and jump to
the Lab. Work Project.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 59
Technical University of Catalonia
Exercise 2: PPP Model components analysis
• Compute the kinematic PPP solution using files:
chpi0010.04o, igs_pre1400.atx, igs12514.sp3

2 Set Kinematic

3
1
Note: The igs_pre1400.atx file contains the APC
used by IGS before GPS week 1400.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 60
Technical University of Catalonia

Exercise 2: PPP Model components analysis


Kinematic PPP solution using files chpi0010.04o,
igs_pre1400.atx, igs12514.sp3

4 Set output file


gLAB.out
for the FULL model,
as in previous case. gLAB.out
5

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 61
Technical University of Catalonia
Exercise 2: PPP Model components analysis
• Additional model
components are used
now in the FULL
model to assure a
centimeter level
modeling.
• Precise orbits and clocks
instead of broadcast ones.
• Dual frequency Code and
Carrier data instead of only
single frequency code.
• Iono-free combination of
codes and carriers to
remove ionospheric error
and P1-P2 DCBs.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 62
Technical University of Catalonia

Exercise 2: PPP Model components analysis


Code and carrier Measurement noise
• Code measurements are unambiguous
but noisy (meter level measurement
Carrier is ambiguous, but precise noise).
• Carrier measurements are precise but
Cycle-slip ambiguous, meaning that they have
some millimetres of noise, but also have
unknown biases that could reach
thousands of km.
• Carrier phase biases are estimated in the
Code is
navigation filter along with the other
Zoom of unambiguous,
parameters (coordinates, clock offsets,
carrier noise but noisy
etc.). If these biases were fixed,
measurements accurate to the level of
few millimetres would be available for
positioning. However, some time is
Note: Figure shows the noise of code and carrier prefit- needed to decorrelate such biases from
residuals, which are the input data for navigation equations. the other parameters in the filter, and
the estimated values are not fully
unbiased.
gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
63
Exercise 2: PPP Model components analysis
Orbits & clocks accuracies

Broadcast:
• Few metres of
accuracy for
broadcast orbits
and clocks

Precise:
• Few centimetres
of accuracy for
broadcast orbits
and clocks

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
64

Example of model component analysis: Solid Tides

Proceed as in the
previous exercise:
1. In Modeling panel,
disable the model
Default component to
analyze.
1 Disable
Solid Tides
configuration for
PPP 2. Save as correction
gLAB1.out the
associated output
file.
Notice that the gLAB.out

In the Default
file contains the
processing results with
2 Set output file
the FULL model, as it
configuration the
was set in the default as
output file was configuration. gLAB1.out
gLAB.out Make plots as in previous
exercises (see slides 38-40).
3
©gAGE/UPC http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics 65
Technical University of Catalonia
Vertical Position Error plot from gLAB.out, gLAB1.out

1 Click Clear to
restart plots

Y-min, Y-max

-0.4
-0.4 0.4

2 3
gLAB1.out gLAB.out Time (sec) Vertical

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 66
Technical University of Catalonia

Horizontal Position Error plot: gLAB.out, gLAB1.out

1 Click Clear to
restart plots

X-min, Y-min, Y-max

-0.4 0.4 -0.4


-0.4 0.4 -0.4 0.4

2 3
gLAB1.out East: 19
($1==“OUTPUT”)
gLAB.out North: 18

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 67
Technical University of Catalonia
Solid Tides model component plot: gLAB.out

Solid Tides plot


SOLIDTIDES 28
Note: Use the gLAB.out file.
gLAB.out Select
In gLAB1.out file this model
component was switched off.
SOLIDTIDES

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 68
Technical University of Catalonia

Exercise 2: PPP Model components analysis


Solid Tides
It comprises the Earth’s gLAB1.out
crust movement (and gLAB1.out
thence receiver coordinates
variations) due to the
gravitational attraction
forces produced by external
bodies, mainly the Sun and gLAB.out gLAB.out
the Moon.

Solid Tides:
These effects do not affect the
Sun GNSS signals, but if they were
not considered, the station
coordinates would oscillate
with relation to a mean value.
gLAB.out They produce vertical (mainly)
and horizontal displacements.
Moon

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 69
Technical University of Catalonia
Exercise 2: PPP Model components analysis
Receiver Antenna Phase
center (APC) gLAB1.out
gLAB1.out
L2 Antenna Phase center
APC L1 Antenna Phase center

Antenna Reference Point


ARP (ARP)
gLAB.out gLAB.out
(ARP)

GNSS measurements are


referred to the APC. This is not Receiver APC:
necessarily the geometric The antenna used for this
center of the antenna, and it experiment, has the APC
depends on the signal position vertically shifted
frequency and the incoming regarding ARP.
radio signal direction. Thence, neglecting this
For geodetic positioning a gLAB.out correction, an error on the
reference tied to the antenna vertical component occurs,
but not in the horizontal one.
(ARP) or to monument is used.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 70
Technical University of Catalonia

Exercise 2: PPP Model components analysis


Satellite Mass Center to
Antenna Phase Center gLAB1.out
gLAB1.out
Satellite
Antenna
Phase Center
(APC)

gLAB.out gLAB.out
Satellite
Mass
Center
(MC) Satellite MC to APC:
gLAB.out The satellite MC to APC
eccentricity vector depends on
Broadcast orbits are the satellite. The APC values
referred to the antenna used in the IGS orbits and
phase center, but IGS clocks products are referred to
precise orbits are referred the iono-free combination (LC,
PC) . They are given in the IGS
to the satellite mass center. ANTEX files (e.g., igs05.atx).

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 71
Technical University of Catalonia
Exercise 2: PPP Model components analysis
Wind-up affects only carrier
phase. It is due to the
gLAB1.out
electromagnetic nature of gLAB1.out
circularly polarized waves of
GNSS signals.
As the satellite moves along its
orbital path, it performs a
rotation to keep its solar panels gLAB.out gLAB.out
pointing to the Sun direction.
This rotation causes a carrier
variation, and thence, a range
measurement variation. Wind-Up
Wind-up changes smoothly along
Satellite rotation continuous carrier phase arcs.
Phase
In the position domain, wind-up
variation
affects both vertical and
gLAB.out horizontal components.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 72
Technical University of Catalonia

OVERVIEW
9 Introduction
9 The gLAB tool suite
9 Examples of GNSS Positioning using gLAB
9 Laboratory session organization
LABORATORY Session
9 Starting-up your laptop
9 Basic: Introductory laboratory exercises (Ex1, Ex2)
¾ Medium: Laboratory Work Project (LWP):
Kinematic positioning of a LEO satellite
• Advanced: Homework

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 73
Technical University of Catalonia
LWP: Kinematic positioning of a LEO satellite

• A kinematic positioning of GRACE-A satellite is proposed in this


exercise as a driven example to study and discuss the different
navigation modes and modelling options for code or code & carrier
positioning of a rover receiver.
GPS Omnidirectional
Antenna: Satellite Attitude
and Orbit Control System

GPS 45º FOV Antenna: Radio


GPS Backup
Occultation Data
Omnidirectional
Antenna: AOCS

More details at: http://op.gfz-potsdam.de/grace/index_GRACE.html

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 74
Technical University of Catalonia

LWP: Kinematic positioning of a LEO satellite

• The following “preliminary” questions are posed:


– Could a LEO satellite like GRACE-A be kinematically positioned as a
rover receiver (i.e., car, aircraft...)? Why?
– Would both Standard and Precise Positioning be achievable?
Note: The RINEX file graa0800.07o contains GPS dual freq.
Measurements.
– Which model components should be set for each positioning mode?
• Relativistic correction?
• Tropospheric correction?
• Ionospheric correction?
• Instrumental delays (TGDs)?
• Solid Tides correction?
• Antenna phase centre corrections?
• Others ???
– In case of successful positioning, which accuracy is expected?

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 75
Technical University of Catalonia
LWP: Kinematic positioning of a LEO satellite
Ž The following positioning modes are proposed to be explored:

– Code positioning + broadcast orbits:


1. Single frequency: C1 code (and no ionospheric corrections).
2. Dual frequency: PC code combination (i.e., ionosphere-free
combination).
– Code and carrier positioning + precise orbits and clocks:
3. Dual frequency: PC, LC combinations (i.e., ionosphere-free
combinations).
4. GRAPHIC combination of C1 code and L1 carrier phase.
5. Single frequency: C1 code and L1 carrier (and no ionospheric
corrections).

Ž Data files:
Ž Measurements file: graa0800.07o
Ž GPS orbits and clocks:
Ž Broadcast: brdc0800.07n
Ž Precise: cod14193.sp3, cod14193.clk, igs05_1402.atx
Ž GRACE-A Precise Reference Orbit file: GRAA_07_080.sp3

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 76
Technical University of Catalonia

Mode1: Single frequency C1 code with broadcast orbits & clocks


Example of computation with gLAB:
Code positioning + broadcast orbits: Single frequency: C1 code.

2
3
Select files Set calculate Set data decimation to 30
graa0800.07o seconds instead of 300 to
Set SPP Set SPP
brdc0800.07n have a higher number of
output samples
1

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 77
Technical University of Catalonia
Mode1: Single frequency C1 code with broadcast orbits & clocks

Example of computation with gLAB:


Code positioning + broadcast orbits: Single frequency: C1 code.

Set output file as


gLAB.out
Disable all messages except:
From SPP template
disable: • Print INFO Messages
• Ionospheric • Print OUTPUT Messages
• Tropospheric to avoid big output files

Run gLAB

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 78
Technical University of Catalonia

Mode1: Single frequency C1 code with broadcast orbits & clocks

• Accuracy assessment of the computed solution:


Complete the following steps to compare the output solution (from gLAB.out file)
with the reference coordinates of file GRAA_07_080.sp3::
1. Convert the output gLAB.out file to sp3 format:
Execute (in Console): out2sp3 gLAB.out
Note: this sentence generates the file: orb.sp3
out2sp3 gLAB.out
(see file content with: less orb.sp3)

2. Compare the computed coordinates orb.sp3 with reference GRAA_07_080.sp3.


Note: Use the configuration file dif.cfg.
gLAB_linux –input:cfg dif.cfg –input:SP3 GRAA_07_080.sp3 –input:SP3 orb.sp3

Note: this sentence generates the file: dif.out

3. Plot dif.out file:


The Graphic User Interface can be used for plotting

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 79
Technical University of Catalonia
Mode1: Single frequency C1 code with broadcast orbits & clocks

3
Plotting
Set plotting ranges
[Xmin, Xmax] [Ymin,Ymax] dif.out
1 with the GUI

4
2 Upload file dif.out in
Plot 1, Plot 2 & Plot 3

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 80
Technical University of Catalonia

Mode1: Single frequency C1 code with broadcast orbits & clocks

Questions
1. Is it reasonable to disable
the tropospheric and
ionospheric corrections?

2. Like GPS satellites, LEOs


are also affected by
relativistic effects. Is it
necessary to introduce an
Zoom additional model term to
account for this effect?

3. What could be the reason


for the large error peaks
seen in the plots?

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 81
Technical University of Catalonia
Mode1: Single frequency C1 code with broadcast orbits & clocks

Ž Answer to Question 1:
Is it reasonable to disable the tropospheric and ionospheric corrections?
– Troposphere:
The troposphere is the atmospheric layer placed between Earth’s surface and an
altitude of about 60 km.
GRACE-A satellite is orbiting at about 450 km altitude, thence no tropospheric error
is affecting the measurements.
– Ionosphere:
The ionosphere extends from about 60 km over the Earth surface until more than
2000 km, with a sharp electron density maximum at around 350 km.
GRACE-A satellite, orbiting at about 450 km altitude, is less affected by the
ionosphere than on the ground, but nonetheless a few meters of slant delay
could be experienced. On the other hand, as the correction from Klobuchar
model is tuned for ground receivers, its usage could produce more harm than
benefit (see HW1).

Ž Homework:
Ž HW1: Assess the ionospheric delay on the GRACE-A satellite measurements.
Compare with the Klobuchar model corrections.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
82

Mode1: Single frequency C1 code with broadcast orbits & clocks

Ž Answer to Question 2:
In this approach, is it necessary to introduce an additional model term to
account for the relativity effect on LEO satellite?
– GRACE-A clock is affected by general and special relativistic effects (due to the
gravitational potential and satellite speed). But this is not a problem, because the
receiver clock is estimated along with the coordinates.
Notice that this relativistic effect will affect all measurements in the same way, and
thence, it will be absorbed into the receiver clock offset estimation.

Ž Answer to Question 3:
What could be the reason for the large error peaks seen in the plots?
– The large error peaks are associated to bad GPS-LEO satellite geometries and
mismodelling. Notice that the satellite is moving at about 8 km/s and therefore the
geometry changes quickly (see HW2). Also, the geometry is particularly poor when
GRACE-A satellite is over poles.

Ž Homework:
Ž HW2: Plot in the same graph the “True 3D error”, the “Formal 3D error” (i.e, the 3D-
sigma) and the number of satellites used. Analyze the evolution of the error.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
83
Mode 2. Dual frequency PC code with broadcast orbits & clocks
Example of computation with gLAB:
Code positioning + broadcast orbits: Dual frequency: PC
code combination.
Complete the steps
(from previous configuration):
1. [Modeling]:
1 • Disable P1-P2 correction
From previous 2. [Filter]:
configuration, disable From previous
• Dual Frequency
2
(TGD): configuration, set:
• P1 – P2 Correction • Dual Frequency • PC measurement
• PC Measurement
3. Run gLAB
1. Convert the output gLAB.out file to sp3 format: 4. In console mode:
Execute (in Console): out2sp3 gLAB.out
Î orb.sp3

2. Compare the computed coordinates orb.sp3 with reference GRAA_07_080.sp3.


3 • Convert the gLAB.out
to orb.sp3 format file.
Note: Use the configuration file dif.cfg.
gLAB_linux –input:cfg dif.cfg –input:SP3 GRAA_07_080.sp3 –input:SP3 orb.sp3 • Compute differences
Î dif.out with reference file
3. Plot dif.out file:
GRAA_07_080.sp3

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 84
Technical University of Catalonia

Mode 2. Dual frequency PC code with broadcast orbits & clocks

Plotting
• Make the same plots as in
the previous case.

Questions
4. Why is the solution noisier
than the previous one with
Zoom C1 code?
5. Discuss the pros and cons
of the ionosphere-free
combination of codes (PC),
compared with C1 code.
6. How could the
performance be improved?

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 85
Technical University of Catalonia
Mode 2. Dual frequency PC code with broadcast orbits & clocks

Plotting
• Make the same plots as in
the previous case.

Questions
4. Why is the solution noisier
than the previous one with
Zoom C1 code?
5. Discuss the pros and cons
of the ionosphere-free
combination of codes (PC),
compared with C1 code.
6. How could the
performance be improved?

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 86
Technical University of Catalonia

Mode 2. Dual frequency PC code with broadcast orbits & clocks

Ž Answer to Question 4:
Why the solution is noisier than the previous one with C1 code?
f12 P1  f 22 P2 J P1  P2 § 77 ·
2

The iono-free combination of codes P1 and P2 is computed as: Pc ; J ¨ ¸


f12  f 22 J 1 © 60 ¹

Thence, assuming uncorrelated P1, P2 measurements with equal noise V, it follows: V Pc 3 V

Ž Answer to Question 5:
Discuss the pros and cons of the ionosphere-free combination of codes (PC).
– Combination PC removes about the 99.9% of ionospheric delay, one of the most difficult error
sources to model, but two frequency signals are needed. On the other hand, PC is noisier than the
individual codes C1, P1 or P2 (see HW3).

Ž Answer to Question 6:
How could the performance be improved?
– Smoothing the code with the carrier and/or using precise orbits and clock products as well.

Ž Homework:
Ž HW3: Assess the measurement noise on the C1, P1, P2 and PC code measurements.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
87
Mode 3. Dual freq. LC, PC carrier and code with precise orbits & clocks

Example of computation with gLAB:


Code & Carrier + precise orbits & clocks: Dual frequency (LC, PC)

Set Precise (2 files)

2
Set calculate Set data decimation to 30
Select files seconds instead of 300 to
Set SPPof
have a higher number
graa0800.07o
cod14193.sp3
Set PPP
1 3 output samples

cod14193.clk
igs05_1402.atx

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 88
Technical University of Catalonia

Mode 3. Dual freq. LC, PC carrier and code with precise orbits & clocks

Example of computation with gLAB:


Code & Carrier + precise orbits & clocks: Dual frequency (LC, PC)

Disable Estimate
Troposphere
From PPP configuration, disable:
• Receiver Antenna Phase Center
• Receiver Antenna Ref. Point
• Ionospheric (already disabled)
• P1 – P2 (already disabled)
• Tropospheric Switch to
• Solid Tides correction Kinematic

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 89
Technical University of Catalonia
Mode 3. Dual freq. LC, PC carrier and code with precise orbits & clocks

Example of computation with gLAB:


Code & Carrier + precise orbits & clocks: Dual frequency (LC, PC)
1. Convert the output gLAB.out file to sp3 format:
Execute (in Console): out2sp3 gLAB.out
Î orb.sp3 2
2. Compare the computed coordinates orb.sp3 with reference GRAA_07_080.sp3.
Note: Use the configuration file dif.cfg.
gLAB_linux –input:cfg dif.cfg –input:SP3 GRAA_07_080.sp3 –input:SP3 orb.sp3

Î dif.out
3. Plot dif.out file:

Disable all messages except:


• Print INFO Messages 3 3 Set plotting ranges
[Xmin, Xmax] [Ymin,Ymax]
1. Run gLAB

• Print OUTPUT Messages 1 2. Generate


to avoid big output files dif.out file

1 4
3. Make plots
as before
Run gLAB 2 Upload file dif.out in
Plot 1, Plot 2 & Plot 3

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 90
Technical University of Catalonia

Mode 3. Dual freq. LC, PC carrier and code with precise orbits & clocks

Questions
7. Which is the improvement
in precise orbits and clocks
accuracy, regarding the
broadcast case?
8. How do carrier phase
measurements allow to
improve the accuracy?
9. Why do large peaks appear?
Zoom 10. Why does a 40-50 cm bias
appear in the radial
component?
11. Why do wind-up and
satellite antenna phase
center offset corrections
have to be applied? What
about the solid tides
correction?

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 91
Technical University of Catalonia
Mode 3. Dual freq. LC, PC carrier and code with precise orbits & clocks

Ž Answer to Question 7:
Which is the improvement in precise orbits and clocks accuracy, regarding
the broadcast case?
– Broadcast orbits and clocks are accurate at the level of few meters.
– Precise orbits and clocks IGS products are accurate at few centimeter level (see HW4).

Ž Answer to Question 8:
How do carrier phase measurements allow to improve the accuracy?
– Code measurements are unambiguous but noisy (meter-level measurement noise).
– Carrier measurements are precise but ambiguous (few millimetres of noise, but with
an unknown bias that can reach thousands of kilometres).
– The carrier phase biases are estimated in the navigation filter along with the other
parameters (coordinates, clock offsets, etc.). If these biases were fixed, then
measurements accurate at the level of few millimetres, would be available for
positioning. However, some time is needed to decorrelate such biases from the other
parameters in the filter, and the estimated values are not fully unbiased.

• Homework:
Ž HW4: Assess the broadcast orbits and clock accuracy using the precise products as
the truth.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
92

Mode 3. Dual freq. LC, PC carrier and code with precise orbits & clocks

Ž Answer to Question 9:
Why do large peaks appear?
– The peaks are related to massive cycle-slips experienced after each revolution (about
1.5 h).
– After a cycle-slip happens, the filter has to restart the carrier ambiguity. This is not a
problem when it occurs on a single satellite (being the others well determined), as its
ambiguity is estimated quickly. But when a massive cycle-slip occurs, the filter needs
more time to converge (see HW5).

Ž Answer to Question 10:


Why does a 40-50 cm bias appear in the radial component?
– This is the GRACE-A antenna phase centre offset. Please notice that we are
positioning the Antenna Phase Centre (APC), while the coordinates in the SP3
reference file (GRAA_07_080.sp3) are referred to the satellite Mass Centre (MC).

• Homework:
Ž HW5: Analyze the carrier phase biases convergence in this kinematic PPP
positioning.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
93
Mode 3. Dual freq. LC, PC carrier and code with precise orbits & clocks

Ž Answer to Question 11:


Why do wind-up and GPS satellite antenna phase center offset corrections
have to be applied? What about the solid tides correction?

– Wind-up correction: Wind-up only affects the carrier phase measurements, but not
the code ones. This is due to the electromagnetic nature of circularly polarised waves
of GPS signals.
The correction implemented in gLAB only accounts for the satellite movement relative
to a receiver with fixed coordinates. An additional correction to account for the
GRACE-A motion along its orbital path could also be included, but since most part of
this effect will be common for all satellites, it will be absorbed by the receiver clock
offset estimation.

– GPS satellite antenna phase center: Precise orbits and clocks of IGS products are
relative to the GPS satellite mass centre (unlike the broadcast ones, which are
relative to the satellite antenna phase centre [APC]). Thence an APC offset vector
must be applied.

– Solid tides correction: No Earth’s Solid Tides corrections are needed because the
rover is not on the ground.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
94

Mode 4. Single freq. with L1, C1 GRAPHIC comb. and precise orbits & clocks

Example of computation with gLAB: Code and Carrier + precise


orbits & clocks: Single frequency (GRAPHIC)
Complete the steps
Single frequency (from PPP configuration mode):
1. [Model]:
1 1 [*] Note: C1C must be set due
to gLAB architecture, but it
is assigned a large sigma to
• Disable P1 – P2 Corr.
2. [Filter]:
C1C
avoid the C1 code noise
G1C
From
Fro
Fr
F r mp
con
config
previous
rrev
onfigura
e io
uratio
iou
ous
o
tio
configuration,onn,, un
uns
u ns
n set
ett::
et:
unset: and ionospheric error. • Single Frequency
• TGD
TG
T GD
GD co
c rrecti
ctti
tio
correction on
n VC1=100 • C1C (C1 code [*])
Kinematic • G1C (GRAPHIC)
meters
VG1=0.5 meters • Set Kinematic Mode
Skip the 3. Run gLAB
warning 1. Convert the output gLAB.out file to sp3 format: 4. In console mode:
Execute (in Console): out2sp3 gLAB.out
Î orb.sp3
2 • Convert the glab.out
to orb.sp3 format file.
2. Compare the computed coordinates orb.sp3 with reference GRAA_07_080.sp3.
Note: Use the configuration file dif.cfg.
• Compute differences
gLAB_linux –input:cfg dif.cfg –input:SP3 GRAA_07_080.sp3 –input:SP3 orb.sp3
with reference file
Î dif.out
3. Plot dif.out file: GRAA_07_080.sp3
Make plots as before.
©gAGE/UPC http://www.gage.upc.edu gAGE/UPC
Research group of Astronomy & Geomatics 95
Technical University of Catalonia
Mode 4. Single freq. with L1, C1 GRAPHIC comb. and precise orbits & clocks

Questions
12. Which is the main benefit
of the GRAPHIC
combination?

Zoom 13. Why is the solution noisier


than the previous one with
LC, PC?

14. Would the performance be


improved directly using the
L1, P1 measurements (like
in the LC, PC case)?

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 96
Technical University of Catalonia

Mode 4. Single freq. with L1, C1 GRAPHIC comb. and precise orbits & clocks

Ž Answer to Question 12:


Which is the main benefit of the GRAPHIC combination?
1
– The GRAPHIC combination is defined as: G P1  L1
2
– Thence, since the ionospheric refraction has opposite sign in code P1 and carrier L1,
GRAPHIC removes the ionospheric error.
– On the other hand the code noise is reduced by a factor 2 (i.e., V G 1/ 2 V ).
– However, this is an ambiguous measurement due to the unknown carrier phase bias.
– Note: Due to the gLAB filter design, a code measurement must also be provided to the
filter along with the GRAPHIC one. Nevertheless, a large sigma noise is set to this code
in order to downweight this measurement in the filter (in this way the solution will be
driven by the GRAPHIC combination).
Ž Answer to Question 13:
Why is the solution noisier than the previous one with LC, PC?
– Unlike the previous case (where carrier phase data with few millimetres of error were
provided), now the most accurate measure provided to the filter is the GRAPHIC
combination with tens of centimetres of error.
Ž Answer to Question 14: Let’s see the next two exercises.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
97
Mode 5. Single freq. L1, C1 carrier and code with precise orbits & clocks

Example of computation with gLAB:


Code and Carrier + precise orbits & clocks: Single frequency (L1, C1)
From previous configuration, complete
the following steps:
1. [Input]: Upload the brdc0800.07n
file in the P1-P2 correction.
2. [Model]: Set P1-P2 correction, select
RINEX Navigation File as DCB source.

1
Note:
2
TGDs (i.e, P1-P2
DCBs) are needed
for single-
frequency
positioning.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 98
Technical University of Catalonia

Mode 5. Single freq. L1, C1 carrier and code with precise orbits & clocks

Example of computation with gLAB:


Code and Carrier + precise orbits & clocks: Single frequency (L1, C1)
Complete the steps
Single frequency
C1P 3. [Filter]:
L1P • Single Frequency
3 Set measurements
• L1P (L1 carrier)
VC1P=1 meter • C1P (P1 code)
VL1P=0.01 meters 4. Run gLAB
5. In console mode:
1. Convert the output gLAB.out file to sp3 format: • Convert the gLAB.out
Skip the
Execute (in Console): out2sp3 gLAB.out
Î orb.sp3 4 to orb.sp3 format file.
• Compute differences
warning 2. Compare the computed coordinates orb.sp3 with reference GRAA_07_080.sp3.
Note: Use the configuration file dif.cfg. with reference file
gLAB_linux –input:cfg dif.cfg –input:SP3 GRAA_07_080.sp3 –input:SP3 orb.sp3 GRAA_07_080.sp3
Î dif.out
3. Plot dif.out file: Make plots as before.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 99
Technical University of Catalonia
Mode 5. Single freq. L1, C1 carrier and code with precise orbits & clocks

Questions
15. Explain why the solution
has a more defined
pattern, with large
oscillations.

16. No ionospheric corrections


have been applied in this
run. What would happen if
the Klobuchar model is
applied?

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 100
Technical University of Catalonia

Mode 5. Single freq. L1, C1 carrier and code with precise orbits & clocks

Ž Answer to Question 15:


Explain why the solution has a more defined pattern, with large
oscillations.
– This effect is due to the error introduced by the ionosphere and the broadcast
differential code biases inaccuracy.

Ž Answer to Question 16:


No ionospheric corrections have been applied in this run. What would
happen if the Klobuchar model is applied?
– In general, the performance will degrade. As commented before, the correction from
Klobuchar model is tuned for ground receivers, only removes about the 50% of
ionospheric delay, and its usage can produce more harm than benefit. (see HW6).

Ž Homework:
Ž HW6: Apply the Klobuchar model and discuss the results.
Ž HW7: Generate a file with the satellite track (in a Earth-Fixed Earth-Centered
reference frame) to be viewed with .

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
101
OVERVIEW
9 Introduction
9 The gLAB tool suite
9 Examples of GNSS Positioning using gLAB
9 Laboratory session organization
LABORATORY Session
9 Starting-up your laptop
9 Basic: Introductory laboratory exercises (Ex1, Ex2)
9 Medium: Laboratory Work Project (LWP):
Kinematic positioning of a LEO satellite
¾ Advanced: Homework

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 102
Technical University of Catalonia

Proposed Homework exercises

Ž HW1: Assess the ionospheric delay on the GRACE-A satellite measurements.


Compare with the Klobuchar model corrections.

Ž HW2: Plot in the same graph the “True 3D error”, the “Formal 3D error” (i.e,
the 3D-sigma) and the number of satellites used. Analyze the evolution of
the error.

Ž HW3: Assess the measurement noise on the C1, P1, P2 measurements and
the PC code combination.

Ž HW4: Assess the broadcast orbits and clocks accuracy using the precise
products as the truth.

Ž HW5: Analyze the carrier phase biases convergence in this kinematic PPP
positioning.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 103
Technical University of Catalonia
Proposed Homework exercises

Ž HW6: Apply the Klobuchar model to the L1, P1 positioning with precise
orbits and clocks and discuss the results.

Ž HW7: Generate a file with the satellite track ((in a Earth-Fixed Earth-Centered
reference frame) to be viewed with .

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 104
Technical University of Catalonia

Backup slides

Homework help and answers

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 105
Technical University of Catalonia
HW1: Assessing the ionospheric delay on the GRACE-A satellite

Configure gLAB as in Mode 1 and


complete the following steps:

1. [Output]: set
• Print INPUT Message
• Print MODEL Message
(see message content in the Tooltips)
2. Run gLAB.

3. Make plots:
[Analysis] section:
• Click on the preconfigured Ionospheric
combinations option.
• Complete the [Plot1, Plot2, Plot3] panels
configuration as indicated in the next
slide.
Note: This configuration will provide:
Plot 1: L1-L2 as a function of time for ALL sat.
Plot 2: L1-L2 as a function of time for PRN16.
Plot 3: P2-P1 as a function of time for PRN16

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
106

HW1: Assessing the ionospheric delay on the GRACE-A satellite

Plot 1
Plot 3

$11-$12 ÍL1-L2

Plot 2

Note: This plot take


$10-$9 ÍP2-P1 some time to rise ! $11-$12 ÍL1-L2

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
107
HW1: Assessing the ionospheric delay on the GRACE-A satellite

Plot HW1-a Comments:


1mL1-L2 delay=1.55 mL1 delay
• The ionospheric delay (STEC) computed from L1-L2 (aligned)
carriers is shown in blue for all satellites.
• The red circles show the L1-L2 delay for sat. PRN16
• The green circles show the ionospheric delay on PRN16
computed from P2-P1 code measurements.
As it is shown in the plot, the STEC variations are typically at
the meter level, but in some cases they increase up to
several meters.
The code measurement noise and multipath in the P2-P1
combination is typically at the meter level, but in the ends of
data arcs (low elevation rays) can reach up to a few meters.

The previous plot can be also generated in console mode as follows (see graph.py –help):
graph.py -f gLAB.out -c '($1=="INPUT")' -x4 -y'($11-$12)' --l "ALL"
-f gLAB.out -c '($1=="INPUT")&($6==16)' -x4 –y '($10-$9)' -so --l "PRN16 P2-P1"
-f gLAB.out -c '($1=="INPUT")&($6==16)' -x4 –y '($11-$12)' -so --l "PRN16 L1-L2"
--xn 43000 --xx 67000 --yn -10 --yx 15

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
108

HW1: Assessing the ionospheric delay on the GRACE-A satellite

Ž Working in console mode


The next commands compute the ionospheric delay from C1, L1 measurements:
1. Using the configuration file meas.cfg, read the RINEX and generate the MEAS message with
data format: [Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 x x 9 10 11 xx 13 14 15 16 ]
Execute:
gLAB_linux -input:cfg meas.cfg -input:obs graa0800.07o > meas.txt

2. From file meas.txt, compute the ionospheric delay as I1 1 2 C1  L1  bias

gawk '{print $6,$4,($11-$14)/2}' meas.txt > I1.txt

3. From previous file, plot the ionospheric delay for the time interval [43000:67000]. Show in the
same plot: 1) ALL satellites, 2) PRN16 and 3) PRN21 (see Plot HW1-b in next slide).
graph.py -f I1.txt -x2 -y3 -s. --cl y --l "ALL"
-f I1.txt -c '($1==16)' -x2 -y3 -so --cl r --l "PRN16"
-f I1.txt -c '($1==21)' -x2 -y3 -so --cl g --l "PRN21"
--xn 43000 --xx 67000 --yn -10 --yx 10

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
109
HW1: Assessing the ionospheric delay on the GRACE-A satellite

Large discrepancies with Klobuchar appear

Plot HW1-b: Plot HW1-c:


STEC variations of few meters are typically L1-C1 iono estimate is less noisier than the P2-P1. On
experienced , but in some cases they reach the other hand, large discrepancies appear when
up to 8 meters of L1 delay. comparing with Klobuchar corrections

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 110
Technical University of Catalonia

HW1: Assessing the ionospheric delay on the GRACE-A satellite

Ž Plot HW1-c generation (working with the GUI and in console mode):
1. Using the gLAB configuration of exercise 1, activate the “Ionospheric Correction” option in the
[Modelling] panel and run again gLAB. The program will output the file gLAB.out.
(see help and file format executing: gLAB_linux –messages, or gLAB_linux –help).

2. “grep” the MODEL messages of file gLAB.out, selecting the C1P [PRN, time Klob_iono] data:

grep MODEL gLAB.out |grep C1P|gawk '{print $6,$4,$25-3}' > klob.txt


Note: the Klob_data is shifted by “-3” meters to align the curves in the plot

3. Plot in the same graph the ionospheric delays of satellites PRN16 and PRN21 from I1.txt and
klob.txt file (see Plot HW1-c in the previous slide).
Note: Both the Graphic User Interface (GUI) panel or the graph.py tool (in console mode) can be
used for plotting.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
111
HW2: Plot in the same graph the “True 3D error”, the “Formal 3D
error” and the number of satellites used. Analyze the result.
Ž Complete the following steps
1. Configure gLAB as in Mode1 and set Print EPOCHSAT Messages in Output panel.
(see message content in the Tooltip, or executing gLAB_linux –messages).
Remember that IONO corrections were unable in Mode 1.
2. Run gLAB.
The program will output the file gLAB.out.
3. Generate the dif.out file from gLAB.out as in the previous exercises.

Plot the results:


In the same graph, plot the “3D error” [from file dif.out], the formal error (the 3-D sigma) and
the number of satellites used in the computation [from file gLAB.out].
graph.py -f dif.out -x4 -y9 -s- --l "3D error"
-f gLAB.out -c '($1=="OUTPUT")' -x4 -y'($5*5)' -s- --cl r --l "5*sigma"
-f gLAB.out -c '($1=="EPOCHSAT")' -x4 -y6 -s- --cl g --l "N. sat. used"
--xn 43000 --xx 67000 --yn 0 --yx 20

Note: 3D-sigma | V PDOP


In the previous plot, the 3-D sigma is multiplied by 5 to enlarge the image.

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
112

HW2: Plot in the same graph the “True 3D error”, the “Formal 3D
error” and the number of satellites used. Analyze the result.

STEC variations of few meters, but in some


cases, reaching up to 8 meters of L1 delay. Large discrepancies with Klobuchar appear

Plot HW2-a Plot HW2-b: Zoom of Plot HW2-a.


Periodic error peaks appear, mostly Along the peaks associated to bad geometries,
associated with losing a satellite and/or mismodelling is also producing some error
with bad geometries. trends.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 113
Technical University of Catalonia
HW3: Code measurements noise assessment: C1, P1, P2 and PC

A) The next commands compute the C1 code noise and multipath:


1. Using the configuration file meas.cfg, READ the RINEX and generate the MEAS message with
data format:
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 x x 9 10 11 xx 13 14 15 16 ]
Execute:
gLAB_linux -input:cfg meas.cfg -input:obs graa0800.07o > meas.txt

2. From meas.txt file, 2


§ 77 ·
C1  L1  2 J ¨ ¸
Compute C1 code noise and multipath as: M C1 J  1( L1  L 2) © 60 ¹

gawk 'BEGIN{g=(77/60)^2}{print $6, $4 , $11-$14-2*($14-$16)/(g-1)}' meas.txt > C1.txt

3. From C1.txt file,


Plot the C1 code noise and multipath for time interval [43000:67000]. Show in the same graph: 1)
ALL satellites, 2) PRN16 and 3) PRN21 (see Plot HW3-a)
graph.py -f C1.txt -x2 -y3 -s. --cl y --l "ALL"
-f C1.txt -c '($1==16)' -x2 -y3 -so --cl r --l "PRN16"
-f C1.txt -c '($1==21)' -x2 -y3 -so --cl g --l "PRN21"
--xn 43000 --xx 67000 --yn 8 --yx 28

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
114

HW3: Code measurements noise assessment: C1, P1, P2 and PC

B) The next commands compute the P1 code noise and multipath:


1. Using the meas.txt file generated before, with the MEAS message data format:

[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 x x 9 10 11 xx 13 14 15 16 ]

2
§ 77 ·
Compute P1 code noise and multipath as: M P1 P1  L1  2 J  1( L1  L 2) J ¨ ¸
© 60 ¹

gawk 'BEGIN{g=(77/60)^2}{print $6, $4 , $13-$14-2*($14-$16)/(g-1)}' meas.txt > P1.txt

2. From previous P1.txt file,


Plot the P1 code noise and multipath for time interval [43000:67000]. Show in the same graph:
1) ALL satellites, 2) PRN16 and 3) PRN21 (see Plot HW3-b)
graph.py -f P1.txt -x2 -y3 -s. --cl y --l "ALL"
-f P1.txt -c '($1==16)' -x2 -y3 -so --cl r --l "PRN16"
-f P1.txt -c '($1==21)' -x2 -y3 -so --cl g --l "PRN21"
--xn 43000 --xx 67000 --yn 8 --yx 28

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
115
HW3: Code measurements noise assessment: C1, P1, P2 and PC

C) The next commands compute the P2 code noise and multipath:


1. Using the meas.txt file generated before, with the MEAS message data format:

[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 x x 9 10 11 xx 13 14 15 16 ]

2
§ 77 ·
P2  L2  2J J
J  1( L1  L2) ¨ ¸
Compute P2 code noise and multipath as: M P2
© 60 ¹

gawk 'BEGIN{g=(77/60)^2}{print $6, $4 , $15-$16-2*g*($14-$16)/(g-1)}' meas.txt > P2.txt

2. From previous P2.txt file,


Plot the P2 code noise and multipath for time interval [43000:67000]. Show in the same
graph: 1) ALL satellites, 2) PRN16 and 3) PRN21 (see Plot HW3-c)
graph.py -f P2.txt -x2 -y3 -s. --cl y --l "ALL"
-f P2.txt -c '($1==16)' -x2 -y3 -so --cl r --l "PRN16"
-f P2.txt -c '($1==21)' -x2 -y3 -so --cl g --l "PRN21"
--xn 43000 --xx 67000 --yn 8 --yx 28

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
116

HW3: Code measurements noise assessment: C1, P1, P2 and PC

D) The next commands compute the PC combination noise and multipath:


1. Using the meas.txt file generated before, with the MEAS message data format:

[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 x x 9 10 11 xx 13 14 15 16 ]
f12 P1  f 22 P2 J P1  P2
Pc
P ;
f12  f 22 J 1
Compute PC noise and multipath as: M Pc Pc  Lc
f12 L1  f 22 L2 J L1  L2
Lc
L
f12  f 22 J 1

gawk 'BEGIN{g=(77/60)^2}{print $6, $4, (g*($13-$14)-($15-$16))/(g-1)}' meas.txt > PC.txt

2. From previous PC.txt file,


Plot the PC combination noise and multipath for time interval [43000:67000]. Show in the
same graph: 1) ALL satellites, 2) PRN16 and 3) PRN21 (see Plot HW3-d)
graph.py -f PC.txt -x2 -y3 -s. --cl y --l "ALL"
-f PC.txt -c '($1==16)' -x2 -y3 -so --cl r --l "PRN16"
-f PC.txt -c '($1==21)' -x2 -y3 -so --cl g --l "PRN21"
--xn 43000 --xx 67000 --yn 8 --yx 28

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
117
HW3: Code measurements noise assessment: C1, P1, P2 and PC

Comments
• Large noise patterns appear at the end
of each data arc. This is due to
interference cross-talk with other
components. The figure at bottom shows
the multipath map for the GRACE-A .
• P2 code is noisier than P1 or C1.
Plot HW3-a Plot HW3-b • PC code combination is the noisiest one,
as expected.

C1 multipath
map of sat.
GRACE_A.
A GPS satellite
track is
shown in
blue
Plot HW3-c Plot HW3-d This figure is from
P. Ramos-Bosch
PhD dissertation,
gAGE/UPC 2008].

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 118
Technical University of Catalonia

HW4: Broadcast orbits and clocks accuracy assessment using the IGS
precise products as the accurate reference (i.e, the truth).
Complete the following steps:
File brdc0800.07n contains the orbit and clocks data broadcast in the GPS navigation message.
Files cod14193.sp3, cod14193.clk contain the precise orbits and clocks computed in post-
process by “CODE” center (IGS precise orbits and clocks products program).
1. Execute the following sentence to compute the difference of satellite coordinates and clock
offsets between both orbits and clocks sources:
gLAB_linux -input:nav brdc0800.07n -input:SP3 cod14193.sp3 -input:ant igs05_1402.atx > dif.tmp

2. Select the SATDIFF message of dif.tmp file:


grep SATDIFF dif.tmp > dif.out
SATDIFF message content is shown in the table beside.
(see gLAB_linux –messages).
The IGS post-processed products are accurate at few cm
level, thence they can be taken as the truth.
3. Plot dif.out file as in the first exercise.

Note: SISRE ('Rad  'Clk)2  1 ('Alon 2  'Cross 2 )


49

gAGE/UPC
©gAGE/UPC http://www.gage.upc.edu
Backup Research group of Astronomy & Geomatics
Technical University of Catalonia
119
HW4: Broadcast orbits and clocks accuracy assessment using the IGS
precise products as the accurate reference (i.e, the truth).

Comments
• Meter level errors are found on
broadcast orbits and clocks.
• The bias seen in the radial component is
due to the different APC’s used by the
GPS ground segment (i.e, in broadcast
orbits) and by IGS (precise products).
• This bias is compensated by a similar
Plot HW4-a1 Plot HW4-b1 shift in clocks.
• For the Signal-In-Space-Range-Error
(SISRE), please see the plot below.

Plot HW4-e1

Plot HW4-c1 Plot HW4-d1

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 120
Technical University of Catalonia

HW4: Broadcast orbits and clocks accuracy assessment using the IGS
precise products as the accurate reference (i.e, the truth).

Comments
The previous computations have been
repeated, but using the ANTEX file
gps_brd.atx, instead of
igs05_1402.atx.
This new ANTEX file contains the GPS
antenna phase center offsets used by the
Plot HW4-a2 Plot HW4-b2 GPS ground segment, not the IGS ones.
• Notice that the biases in the radial
component have disappeared.

Plot HW4-e2

Plot HW4-c2 Plot HW4-d2

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 121
Technical University of Catalonia
HW5: Analyze the carrier phase biases convergence in the kinematic
PPP positioning.

Ž Complete the following steps


1. Configure gLAB as in Mode 2 for the Kinematic PPP positioning. Activate the “Print POSTFIT
messages” in the OUPUT panel
(see message content in the Tooltip, or executing gLAB_linux –messages).

2. Run gLAB.
The program will output the file gLAB.out.

3. From gLAB.out, “grep” the POSTFIT message and generate the file amb.out, containing
the estimates of ambiguities for each epoch. Take the last estimated value of the ambiguities
for each epoch. This can be done by executing:
grep POSTFIT gLAB.out| gawk '{i=$6" "$4;a[i]=$13}END{for (i in a) print i,a[i]}' |sort -n > amb.out

Plot the results: Plot the ionosphere-free bias estimates as a function of time for the time interval
[40000:70000]. Show in the same graph: 1) ALL satellites, 2) PRN16 and 3) PRN21 (see
Plot HW5-d).
Note: The GUI can be graph.py -f amb.out -x2 -y3
used instead of the -f amb.out -x2 -y3 -c '($1==16)' --l "PRN16"
“graph.py” command. -f amb.out -x2 -y3 -c '($1==21)' --l "PRN21"
--xn 40000 --xx 70000 --yn -10 --yx 10

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 122
Technical University of Catalonia

HW5: Analyze the carrier phase biases convergence in the kinematic


PPP positioning.

Zoom Comments
• Large peaks appear in the carrier phase
biases due to massive cycle-slips:
– Satellite tracking loses happen
periodically after each revolution.
– These satellite loses produce massive
Plot HW5-a Plot HW5-b cycle slips which leads to a global
reinitialization of carrier-phase biases
in the navigation (Kalman) filter .
– After such ambiguities reinitialization,
Zoom Zoom the filter needs some time to
converge.

• Carrier phase ambiguities converge


quickly thanks to the rapid variation of
geometry due to the LEO movement
along its orbital path.
Plot HW5-c Plot HW5-d

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 123
Technical University of Catalonia
HW6: Single freq. L1, C1 carrier and code with precise orbits & clocks
using Klobuchar ionospheric corrections

Code and Carrier + precise orbits & clocks: Single frequency (L1, C1)
+ Klobuchar ionosphere
Configure gLAB as in Mode 5 and
complete the following steps:
1. [Input]: Upload the
• brdc0800.07n file to IONO
• brdc0800.07n file to DCBs

2. [Model]: set
• P1 – P2 corr.
• IONO corr.
1
2

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 124
Technical University of Catalonia

HW6: Single freq. L1, C1 carrier and code with precise orbits & clocks
using Klobuchar ionospheric corrections

Code and Carrier + precise orbits & clocks: Single frequency (L1, C1) +
Klobuchar ionosphere
Complete the steps
Single frequency
C1P 3. [Filter]:
L1P 3 • Single Frequency
Set measurements:
• L1P (L1 carrier)
VC1P= 1 meter
• C1P (P1 code)
VL1P = 0.01 meters 4. In console mode:
• Convert the gLAB.out
to orb.sp3 format file.
1. Convert the output gLAB.out file to sp3 format: 4
Execute (in Console): out2sp3 gLAB.out
• Compute differences
Î orb.sp3
with reference file
2. Compare the computed coordinates orb.sp3 with reference GRAA_07_080.sp3.
GRAA_07_080.sp3
Note: Use the configuration file dif.cfg.
gLAB_linux –input:cfg dif.cfg –input:SP3 GRAA_07_080.sp3 –input:SP3 orb.sp3
Make plots as before.
Î dif.out
3. Plot dif.out file:

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 125
Technical University of Catalonia
HW6: Single freq. L1, C1 carrier and code with precise orbits & clocks
using Klobuchar ionospheric corrections

Comments
• A clear degradation is seen when
applying the Klobuchar model to the LEO.
• This is due to the large error introduced
by this model which was designed for
ground receivers, not for LEO’s.
• Next plot compares the L1 delay
computed from Klobuchar with the STEC
experienced by the GPS signal.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 126
Technical University of Catalonia

HW7: Generate a file with the satellite track (in a Earth-Fixed Earth-
Centered reference frame) to be viewed with Google Earth

Ž Complete the following steps


1. Select the satellite [longitude, latitude, height] coordinates of message OUTPUT in the gLAB.out
file. Generate a file with these coordinates (comma-separated).

grep OUTPUT gLAB.out |gawk 'BEGIN{OFS=","} {print $16,$15,$17}' > track.tmp

2. Add the header (Prefix.kml) and the tail


(Postfix.kml) files to the previous track.tmp
data file:

cat Prefix.kml > grace_track.kml


cat track.tmp >> grace_track.kml
cat Postfix.kml >> grace_track.kml

3. View the file with:

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 127
Technical University of Catalonia
Thanks for your
attention

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 128
Technical University of Catalonia
Other Tutorials are available at
http://www.gage.upc.edu

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 129
Technical University of Catalonia
Acknowledgements

• The ESA/UPC GNSS-Lab Tool suit (gLAB) has been developed under the ESA
Education Office contract N. P1081434.
• The data set of GRACE-A LEO satellite was obtained from the NASA Physical
Oceanography Distributed Active Archive Center at the Jet Propulsion
Laboratory, California Institute of Technology.
• The other data files used in this study were acquired as part of NASA's Earth
Science Data Systems and archived and distributed by the Crustal Dynamics
Data Information System (CDDIS).
• To Pere Ramos-Bosch for his fully and generous disposition to perform gLAB
updates in his afterhours.
• To Adrià Rovira-Garcia for his contribution to the edition of this material and
gLAB updating.
• To Deimos Ibáñez for his contribution to gLAB updating and making the
Windows installable version for this tutorial.

©gAGE/UPC http://www.gage.upc.edu gAGE/UPC


Research group of Astronomy & Geomatics 130
Technical University of Catalonia
Tutorial 2
Measurements analysis
and error budget

Contact: [email protected]
Web site: http://www.gage.upc.edu
Slides associated to
gLAB version 2.0.0

gAGE/UPC @ J. Sanz & J.M. Juan 1


Research group of Astronomy & Geomatics
Technical University of Catalonia

Authorship statement

The authorship of this material and the Intellectual Property Rights are owned by
J. Sanz Subirana and J.M. Juan Zornoza.

These slides can be obtained either from the server http://www.gage.upc.edu,


or [email protected]. Any partial reproduction should be previously
authorized by the authors, clearly referring to the slides used.

This authorship statement must be kept intact and unchanged at all times.

gAGE/UPC @ J. Sanz & J.M. Juan 2


Research group of Astronomy & Geomatics
Technical University of Catalonia
Aim of this tutorial
Ž This tutorial is devoted to analysing and assessing the GNSS measurements and their
associated errors.
This is done over four groups of test cases:
1.- Atmospheric propagation effects on GNSS signals. Analysis of the errors due to the
troposphere and the ionosphere.
2.- Code measurement noise and multipath on C1, ionsphere-free and Melbourne-
Wübbena combinations.
3.- Carrier smoothed code. Analysis of the code-carrier divergence of the ionosphere.
4.- Broadcast orbits and clocks accuracy versus the IGS precise products.

Ž The laboratory exercises will be developed with actual GPS measurements, and processed
with the ESA/UPC GNSS-Lab Tool suite (gLAB), which is an interactive software package
for GNSS data processing and analysis.
Ž All software tools (including gLAB) and associated files for the laboratory session are
included in the CD-ROM or USB stick associated with this tutorial.

gAGE/UPC @ J. Sanz & J.M. Juan 3


Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
¾ Introduction: gLAB processing in command line.
Ž Test cases on Atmospheric Propagation Effects:
Troposphere, Ionosphere.
Ž Test cases on Measurement Noise and Multipath: C1,
Ionosphere-free and Melbourne Wübbena combinations.
Ž Test cases on Carrier Smoothed Code: Code-carrier
divergence.
Ž Test cases on Broadcast Orbits and Clocks Accuracy

gAGE/UPC @ J. Sanz & J.M. Juan 4


Research group of Astronomy & Geomatics
Technical University of Catalonia
gLAB processing in command line

A “notepad”
with the
command
line sentence
is provided to
facilitate the
sentence
writing: just
“copy” and
“ paste”
Console to execute
from
“command line” notepad to
sentences the working
terminal.

gAGE/UPC @ J. Sanz & J.M. Juan 5


Research group of Astronomy & Geomatics
Technical University of Catalonia

gLAB processing in command line


The different messages provided
by gLAB and its content can be
found in the [OUTPUT] section.

By placing the mouse on a given


message name, a tooltip appears
describing the different fields.

In console mode: execute

gLAB_linux -messages

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 6
OVERVIEW
Ž Introduction: gLAB processing in command line.
¾ Test cases on Atmospheric Propagation Effects:
Troposphere, Ionosphere.
Ž Test cases on Measurement Noise and Multipath: C1,
Ionosphere-free and Melbourne Wübbena combinations.
Ž Test cases on Carrier Smoothed Code: Code-carrier
divergence.
Ž Test cases on Broadcast Orbits and Clocks Accuracy

gAGE/UPC @ J. Sanz & J.M. Juan 7


Research group of Astronomy & Geomatics
Technical University of Catalonia

Test cases on Atmospheric


Propagation Effects:
Troposphere, Ionosphere

gAGE/UPC @ J. Sanz & J.M. Juan 8


Research group of Astronomy & Geomatics
Technical University of Catalonia
Troposphere
Tropospheric delay
The troposphere is the atmospheric layer situated between the Earth’s surface and an
altitude of about 50 km.
The effect of the troposphere on GNSS signals appears as an extra delay in the
measurement of the signal travelling from satellite to receiver.
The tropospheric delay does not depend on frequency and affects both the pseudo-range
(code) and carrier phases in the same way. It can be modeled by:
• A hydrostatic component, composed of dry gases (mainly nitrogen and oxygen) in
hydrostatic equilibrium. This component can be treated as an ideal gas. Its effects vary
with the temperature and atmospheric pressure in a reasonably predictable manner, and it
is responsible for about 90% of the delay.
• A wet component caused by the water vapor condensed in the form of clouds. It depends
on the weather conditions and varies faster than the hydrostatic component and in a totally
random way. For high accuracy positioning, this component must be estimated together
with the coordinates and other parameters in the navigation filter.

gAGE/UPC @ J. Sanz & J.M. Juan 9


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 1: Zenith Troposphere Delay estimation


PPP Template: Static positioning with dual freq. code & carrier (ionosphere-
free combination PC,LC) + post-processed precise orbits & clocks.

1. Select the PPP Template


2. Upload data files:
-Measurement : roap1810.09o
- ANTEX: igs05_1525.atx
- Orbits & clocks: igs15382.sp3
2 - SINEX: igs09P1538.snx
3. RUN gLAB

3 Default output file:


1 gLAB.out

gAGE/UPC @ J. Sanz & J.M. Juan 10


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 1: Zenith Troposphere Delay estimation
Plotting Results
• Coordinates are taken as
constants in nav. filter.
• Dual frequency Code and
Carrier measurements.
• Precise orbits and clocks.
• Measurements modelling
at the
centimetre Centimetre level accuracy
over 24h data is achieved
level. in PPP static mode

gAGE/UPC @ J. Sanz & J.M. Juan 11


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 1: Zenith Troposphere Delay estimation

The troposphere is
estimated as a Random
Walk process in the Kalman
Filter. A process noise of
1cm/sqrt(h) has been taken.

1 2
ftp://cddis.gsfc.nasa.gov/pub/gps/products/troposphere/new/2009/181/roap1810.09zpd.gz
The ZTD in this file is given in mm of delay. Thus, it is converted to m to compare with gLAB results
grep ROAP roap1810.09zpd | gawk -F\: '{print $3} ' | gawk '{print $1,$2/1000}' > roap_igs.trp

gAGE/UPC @ J. Sanz & J.M. Juan 12


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 1: Zenith Troposphere Delay estimation

Equivalent command line sentences:


gLAB_linux -input:cfg gLAB_p51_ex6S.cfg
-input:obs roap1810.09o
-input:SP3 igs15382.sp3
-input:ant igs05_1525.atx
-input:snx igs09P1538.snx

graph.py -f gLAB.outK -x4 -y9 -s.- -c '($1=="FILTER")'


-l "PPP Kinematic" -f gLAB.outS -x4 -y9 -s.-
-c '($1=="FILTER")' -l "PPP Static"
-f roap_igs.trp -s.- -l "IGS" --xl "time (s)"
--yl "metres" --yn 2.40 --yx 2.55
-t "Session 5.1, Ex6b: Zenith tropospheric delay Estimation"

gAGE/UPC @ J. Sanz & J.M. Juan 13


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 1: Zenith Troposphere Delay estimation

Questions:
• What is the level of discrepancy between the estimated ZTD and the
accurate IGS determination?
• What is the variation of ZTD in 24 hours due to the wet content?
• What is the proportion of wet component compared with the dry (or
hydrostatic) component?

gAGE/UPC @ J. Sanz & J.M. Juan 14


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ionosphere
Ionospheric delay
The ionosphere extends from about 60 km over the Earth’s
surface up to more than 2000 km, with a sharp electron density
maximum at around 350 km. The ionospheric refraction depends,
among other things, on the location, local time and solar cycle (11
years).
• First order (~99.9%) ionospheric delay I1 depends I1
40.3
STEC
on the inverse of squared frequency: f2
where STEC is the number of electrons per area unit
along ray path (STEC: Slant Total Electron Content). STEC ³ N dse

• Two-frequency receivers can remove this error source


(up to 99.9%) using ionosphere-free combination f12 P1  f 22 P 2
PC
of pseudo-ranges (PC) or carriers (LC). f12  f 22
• Single-frequency users can remove about 50-70% of the
ionospheric delay using the Klobuchar model, whose parameters
are broadcast in the GPS navigation message.

gAGE/UPC @ J. Sanz & J.M. Juan 15


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 2: Ionospheric delay analysis


Depict the ionospheric delays for the different
satellites in view from station amc2
• This is a simple exercise aimed to illustrate how to use gLAB
to easily analyze GNSS measurements and their
combinations.
• gLAB will used to read the RINEX measurements file and to
generate a “text” with the measurements provided in a
columnar format (more suitable for making plots).
• From “text” file, compute PI { P2  P1 I  K 21
and plot the Ionospheric
LI { L1  L2 I  Ambiguity
delay for a given satellite,
by using code and carrier P1  L1 2D1 I  ambiguity1
measurements at f1, f2: P2  L2 2D 2 I  ambiguity 2

gAGE/UPC @ J. Sanz & J.M. Juan 16


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 2: Ionospheric delay analysis
The target is to generate
this plot to depict the
ionospheric delay from
Ionospheric combination (meters)

code & carrier data


Code P2-P1 (unambiguous but noisier)

PI { P2  P1 I  K 21
LI { L1  L2 I  Ambiguity

P1  L1 2D1 I  ambiguity1
Ambiguity= P  L
P2  L2 2D 2 I  ambiguity 2

1
D1 1.546 ; D 2 1  D1
Carrier Phase L1-L2 (ambiguous but precise) J 21  1
f1 / f2
2
J 21 (154 / 120) 2

gAGE/UPC @ J. Sanz & J.M. Juan 17


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 2: Ionospheric delay analysis


Code measurement content Carrier measurement content
D 2  D1
U  D1 I  K 21  H1
1
P1 L1 U  D1 I  B1  9 1 D1
1
1.546
J 21  1
P2 U  D 2 I  K 21  H 2 L2 U  D 2 I  B2  9 2 J 21 f1 / f2
2

U Refers to all non-dispersive terms: geometric range, clocks, tropo. delay… (see [R-1]).
Ionospheric delay
STEC is in TECUs
sat

40.3 f12  f 22
STEC ³
rec
N e dl ,
I 2 2
1016 STEC ; ( I is in m of L1  L2 delay) 1 TECU 1016 e  / m 2 0.10m of L1- L 2 delay
f f
1 2

Inter-frequency bias As the satellite clocks are referred to the ionosphere-free combination
of codes (PC), the K 21sat cancels in such combination. f12 P1  f 22 P2
K 21 K 21,rec  K 21sat Note: TGD D1 K 21sat is broadcast in GPS nav. Message. C
P
f12  f 22

Carrier ambiguities
Bi Oi N i  bi Ni is an integer number. bi is a real number (fractional part of ambiguity)

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 18
Exercise 2: Ionospheric delay analysis
1.- Read RINEX file with gLAB and generate a “measurements file” in
a columnar format (the easiest to manipulate and plot content):

Æ Using the configuration file meas.cfg, READ the RINEX and generate the MEAS file:
gLAB_linux -input:cfg meas.cfg -input:obs coco0090.97o -input:nav brdc0090.97n > coco.meas

gLAB configuration file


-pre:dec 1 RINEX RINEX
-print:none Measurement Navigation
-print:meas file file
--model:satphasecenter
--model:recphasecenter
--model:satclocks
--pre:cs:li OUTPUT: measurement file in columnar format
--pre:cs:bw
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 7 8 9 10 11 xx xx 14 15 16 ]

gAGE/UPC @ J. Sanz & J.M. Juan


Research group of Astronomy & Geomatics
Technical University of Catalonia
19

Exercise 2: Ionospheric delay analysis


gLAB_linux -input:cfg meas.cfg -input:obs coco0090.97o -input:nav brdc0090.97n > coco.meas

-pre:dec 1
-print:none
-print:meas RINEX RINEX
--model:satphasecenter Measurement Navigation
--model:recphasecenter file file
--model:satclocks
--pre:cs:li
Input Files:
--pre:cs:bw
coco0090.97o
brdc0090.97n

Set default
SPP config.

MEAS
Set data decimation to 1s file
-pre: dec 1

Disable:
--model:satphasecenter
--model:recphasecenter
Disable cycle-slip detectors: --model:satclocks
--pre:cs:li
--pre:cs:bw

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan
Exercise 2: Ionospheric delay analysis
2.- Manipulate the file with the easy & powerful awk (or gawk)
programming language (to compute the combinations of measurements):
P1 L1 P2 L2 ]
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
Æ From coco.meas file: 1 2 3 4 5 6 7 8 9 10 11 xx xx 14 15 16

Compute different ionospheric combination of codes and carriers, and generate the
obs.txt file containing the fields: [PRN,sec, P2-P1, (P2-L2)/5.09, (P1-L1)/3.09, L1-L2, Elev/10]

gawk '{print $6,$4,$15-$11,($15-$16)/5.09,($11-$14)/3.09,$14-$16,$7/10}' coco.meas >


obs.txt
(P2-P1) (L1-L2)
PRN
#6 #15 -- #11 #14 -- #16
(P2-L2)/5.09 (P1-L1)/3.09
sec Elev/10
#4 #15 -- #16 #11-- #14 #7

gAGE/UPC @ J. Sanz & J.M. Juan 21


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 2: Ionospheric delay analysis


3.-Plot results with “graph.py” (you can use the gnuplot as well)
[PRN, sec, P2-P1, (P2-L2)/5.09, (P1-L1)/3.09, L1-L2, Elev/10]
ÆFrom obs.txt file: 1 2 3 4 5 6 7

Show in the same plot the following iono. delays for satellite PRN01:
P2-P1, (P2-L2)/5.09, (P1-L1)/3.09, L1-L2, Elev./10

Condition: Fields to plot:


Select PRN01 #2 (x-axis)
(from 1-st field) versus Label:
#3 (y-axis) P2-P1
File to plot

graph.py -f obs.txt -c'($1==01)' -x2 -y3 --l "P2-P1"


-f obs.txt -c'($1==01)' -x2 –y4 --l "(P2-L2)/5.09"
-f obs.txt -c'($1==01)' -x2 -y5 --l "(P1-L1)/3.09"
-f obs.txt -c'($1==01)' -x2 –y6 --l "L1-L2"
-f obs.txt -c'($1==01)' -x2 –y7 --l "Elev/10"
--yn -10 --yx 15 --xl "time (s)" --yl "meters of L1-L2 delay"

gAGE/UPC @ J. Sanz & J.M. Juan 22


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 2: Ionospheric delay analysis

PI { P2  P1 I  K 21
LI { L1  L2 I  Ambiguity

P1  L1 2D1 I  ambiguity1

zoom P2  L2 2D 2 I  ambiguity 2

1
D1 1.546 ; D 2 1  D1
J 21  1
f1 / f2
2
J 21 (154 / 120) 2

gAGE/UPC @ J. Sanz & J.M. Juan 23


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 2: Ionospheric delay analysis

Questions:
• Justify the expressions used to depict the Ionospheric delay (see
slides #16 to #18).
• Justify the factors of 5.09 and 3.09 used in the P2-L2 and P1-L1
combinations to give the results of L1-L2 delay in metres.
• Why is the STEC larger at low elevations?

gAGE/UPC @ J. Sanz & J.M. Juan 24


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 2: Ionospheric delay analysis

)=40º
)=90º

Sky plots at
)=0º different
coco
latitudes
PRN01
gAGE/UPC @ J. Sanz & J.M. Juan 25
Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3. Halloween storm: October 2003


A severe ionospheric storm was experienced on October 29-31,
2003 producing an increase of the electron density which led to
large ionospheric refraction values on the GPS signals. Such
conditions were beyond the capability of the GPS Klobuchar
model broadcast for single frequency users, producing large
errors in the SPS (see details in [R-3])..
Dual frequency users, navigating with
the ionospheric-free combination of
GPS signals were not affected by
such ionospheric errors, as the
ionospheric refraction can be
removed up to 99:9% using dual-
frequency signals.
gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 26
Ex. 3.1: Solar Flare October 28, 2003
Before the storm, on October 28, 2003, an intense solar eruption
(a Solar Flare) was detected around 11h UT in an active region
which had grown one of the largest sunspots ever seen by the
SOlar Helioscopic Observatory (SOHO). It appeared as a bright
spike in the SOHO ultraviolet images.

This sudden enhancement of the solar


radiation in the X-ray and extreme
ultra-violet band produced a sudden
increase in the ionospheric electron
density on the daylight hemisphere,
(see [R-3]).

gAGE/UPC @ J. Sanz & J.M. Juan 27


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.1: Solar Flare October 28, 2003

Exercise: Analyze the effect of the Solar Flare on the Slant Total
Electron Content (STEC) measurements of four permanent IGS
receivers ankr, asc1, kour and qaq1, covering a wide range of
longitude and latitude.
qaq1

Data sets:
ankr
ankr3010.03o, asc13010.03o,
kour3010.03o, qaq13010.03o kour

asc1

gAGE/UPC @ J. Sanz & J.M. Juan 28


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.1: Solar Flare October 28, 2003
Execute: [Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 7 8 9 10 11 xx 13 14 15 16 ]

gLAB_linux -input:cfg meas.cfg -input:obs ankr3010.03o > ankr3010.03.meas


gLAB_linux -input:cfg meas.cfg -input:obs asc13010.03o > asc13010.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs kour3010.03o > kour3010.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs qaq13010.03o > qaq13010.03.meas

graph.py -f ankr3010.03.meas -x4 -y'($14-$16)' --l "ankr" qaq1


-f asc13010.03.meas -x4 -y'($14-$16)' --l "asc1"
-f kour3010.03.meas -x4 -y'($14-$16)' --l "kour" ankr

-f qaq13010.03.meas -x4 -y'($14-$16)' --l "qaq1" kour


--xl "time (s)" --yl "meters of L1-L2"
--xn 38500 --xx 40500 --yn -20 --yx 20 asc1

-t "28 Oct 2003 Solar flare"

gAGE/UPC @ J. Sanz & J.M. Juan 29


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.1: Solar Flare October 28, 2003

qaq1

ankr

kour

asc1

gAGE/UPC @ J. Sanz & J.M. Juan 30


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.1: Solar Flare October 28, 2003

Questions:
• Why can we associate the sudden increase of TEC seen in the
plots with a Solar Flare?
• What is the STEC variation rate due to the Solar Flare?
• Can all solar flares be seen in this way?

gAGE/UPC @ J. Sanz & J.M. Juan 31


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.2: Halloween storm analysis


Associated with the Solar Flare analysed in the previous exercise, a Coronal
Mass Ejection occurred, which sent a large particle cloud impacting the
Earth's magnetosphere about 19 hours later, on October 29.
Subsequent impacts were still occurring several hours later. This material
interacted with the Earth's magnetosphere, and a Storm Enhancement
Density (SED) appeared in North America and this later affected the northern
latitudes in Europe. Extra large gradients of
TEC associated with this phenomenon were
also produced, degrading the GPS
positioning performance.

The TEC evolution on October 30, 2003 (i.e.,


Day 303 of year 2003) can be seen in the
movie TEC 2003oct30 anim.gif.

gAGE/UPC @ J. Sanz & J.M. Juan 32


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.2: Halloween storm analysis
The measurement files garl3010.03o, garl3020.03o, garl3030.03o,
garl3040.03o, garl3050.03o, garl3060.03o were collected by the
permanent receiver garl in Empire, Nevada, USA ( I= 40.42 deg
O =-119:36 deg) from October 28 to November 2, 2003.

Using these files, plot the STEC for all satellites in view and discuss
the range of such variations. Analyse, in particular, the satellite
PRN 04 and calculate the maximum rate of STEC variation in
mm=s of L1 delay. Add the elevation of satellite PRN 04 in the plot.
The associated broadcast navigation files are brdc3010.03n,
brdc3020.03n, brdc3030.03n, brdc3040.03n, brdc3050.03n,
brdc3060.03n.

gAGE/UPC @ J. Sanz & J.M. Juan 33


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.2: Halloween storm analysis


The next commands read a RINEX file and generate a text file (in columnar format)
that enables easy plotting of the measurements and their combinations:
1. Using the configuration file meas.cfg, READ the RINEX and generate the MEAS message with
data format:
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 7 8 9 10 11 xx 13 14 15 16 ]
Execute:
gLAB_linux -input:cfg meas.cfg -input:obs amc23030.03o -input:nav brdc3030.03n > amc23030.03.meas

2. From meas.txt file,


Compute the ionospheric combination of codes: PI=P2-P1.
Generate the file PI.txt with the following content: [PRN, hour, PI, elevation]

gawk '{print $6, $4/3600, $15-$13, $7}' amc23030.03.meas > PI.txt

3. From PI.txt file,


Plot the PI=P2-P1 for time interval [15 to 24].hours. Show in the same graph: 1) ALL satellites,
2) PRN 13, 28 and 29, and 3) The elevation of each satellite.(13, 28 and 29)
graph.py -f PI.txt -x2 -y3 --l "ALL"
-f PI.txt -c'($1==28)' -x2 -y3 -so --l "28:P2-P1" -f PI.txt -c'($1==28)' -x2 -y4 --l "29:ELEV"
-f PI.txt -c'($1==29)' -x2 -y3 -so --l "29:P2-P1" -f PI.txt -c'($1==29)' -x2 -y4 --l "13:ELEV"
gAGE/UPC
-f PI.txt -c'($1==13)' -x2 -y3 -so --l "13:P2-P1" -f PI.txt -c'($1==13)' -x2 -y4 --l "13:ELEV"
--xn 15 --xx Backup
25 --yn 0 --yx 85 --xl "time (s)" --yl "meters
Research group of Astronomy & Geomatics
Technical University of Catalonia
of L1-L2 delay" @ J. Sanz & J.M. Juan
34
34
Ex. 3.2: Halloween storm analysis

Questions:
• What is the maximum STEC
variation rate seen in the plots?
• How could we explain the
shape of the STECs seen for
satellites PRN28 and PRN29?

amc2 station location

October 30, 2003

gAGE/UPC @ J. Sanz & J.M. Juan 35


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.3: Halloween storm evolution


Exercise: Analyze the ionospheric delays for 6
consecutive days including the Halloween storm
• This is a simple exercise aimed to illustrate the ionospheric
delay variation during the Halloween storm. A period of 6
consecutive days (from October 28 to November 2, 2003)
are analyzed using measurements collected in the “garl”
station in North America.

• The STEC variations are depicted from the geometry-free


combination of codes P2-P1.
Note: P2  P1 I  K 21

gAGE/UPC @ J. Sanz & J.M. Juan 36


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.3: Halloween storm evolution
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1.- Read RINEX file: 1 2 3 4 5 6 7 8 9 10 11 xx 13 14 15 16 ]

gLAB_linux -input:cfg meas.cfg -input:obs garl3010.03o -input:nav brdc3010.03n > garl3010.03.meas


gLAB_linux -input:cfg meas.cfg -input:obs garl3020.03o -input:nav brdc3020.03n > garl3020.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3030.03o -input:nav brdc3030.03n > garl3030.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3040.03o -input:nav brdc3040.03n > garl3040.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3050.03o -input:nav brdc3050.03n > garl3050.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3060.03o -input:nav brdc3060.03n > garl3060.03.meas

2.- Merge files and refer all the data to 0h of October 28th: Doy0301:
cat garl30?0.03.meas |gawk '{d=($3-301)*86400;$4=$4+d; print $6, $4/3600, $15-$13, $7}' > PI.txt

3.- Plot results:


graph.py -f PI.txt –x2 –y3 --l "ALL P2-P1"
-f PI.txt -c'($1==04)' –x2 –y4 --l "PRN04: ELEV"
-f PI.txt -c'($1==04)' –x2 –y3 –so --l "PRN04: P2-P1"
--xn 0 --xx 144

gAGE/UPC @ J.
J. Sanz
San
nz & J.M.
J.M
M. Juan
Jua
Jua
uan 37
Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.3: Halloween storm evolution


Zoom at time interval: 70 to 78 h
graph.py -f PI.txt –x2 –y3 --l "ALL P2-P1" graph.py -f PI.txt –x2 –y3 --l "ALL P2-P1"
-f PI.txt -c'($1==04)' –x2 –y4 --l “04: EL" -f PI.txt -c'($1==04)' –x2 –y4 --l “04: EL"
-f PI.txt -c'($1==04)' –x2 –y3 –so --l “04" -f PI.txt -c'($1==04)' –x2 –y3 –so --l “04"
--xn 0 --xx 144 --xn 70 --xx 78

gAGE/UPC @ J. Sanz & J.M. Juan 38


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.3: Halloween storm evolution

Questions:
• What is the maximum STEC seen before and after the storm?
And during the storm?
• The STEC of satellite PRN04 shows a flat pattern after time 74
hours which does not change with the elevation. Try to explain
this phenomenon.

gAGE/UPC @ J. Sanz & J.M. Juan 39


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.4: Single frequency pos. effects


Exercise: Analyze the single frequency positioning
solution under the Halloween storm.
The following steps are recommended:
1. Using files amc23020.03o,brdc3030.03n compute with gLAB
the following solutions:
1. Solution with full SPS modeling. Name output file as: gLAB.out
2. Solution with the ionospheric corrections disabled Î gLAB1.out
3. Solution with the 2-freq. Ionosphere-free code (PC) Î gLAB2.out
2. Plot results

Note: The gLAB GUI or the command line sentences can also be used .
A “notepad” with the command line sentence is provided to facilitate the
sentence writing: just “copy” and “paste” from notepad to the working terminal

gAGE/UPC @ J. Sanz & J.M. Juan 40


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.4: Full processing Î gLAB.out

1. Compute SPP using files: amc23020.03o,brdc3030.03n

2
By default, the output
file name is gLAB.out

1 3

Equivalent command line sentence:


gLAB_linux -input:cfg gLAB_p1_Full.cfg
gAGE/UPC -input:obs amc3030.03o
@ J. Sanz & J.M. Juan 41
Research group of Astronomy &-input:nav
R Geomatics brdc3030.03n
Technical University
Technical y of Catalonia
University Catalonia

Ex. 3.4: Iono. Disabled Î gLAB1.out

2. Reprocess the same files, with the iono. corrections disabled

2
Disable Ionospheric
Change output file
corrections
name to gLAB1.out
1 3
Equivalent command line sentence:
gLAB_linux -input:cfg gLAB_p1_NoIono.cfg
gAGE/UPC -input:obs amc3030.03o
@ J. Sanz & J.M. Juan 42
Research group of Astronomy &-input:nav
R Geomatics brdc3030.03n
Technical University
Technical y of Catalonia
University Catalonia
Ex. 3.4: Processing with PCÎ gLAB2.out

3. Reprocess the same files, but with 2-frequency ionosphere-free (PC)

1 2
Disable Ionospheric
corrections and P1- Select Dual Frequency
P2 corrections

Change output
Equivalent command line sentence:
gLAB_linux -input:cfg gLAB_p1_IFree.cfg
3 file name to
gLAB2.out

gAGE/UPC -input:obs amc3030.03o


Research group of Astronomy &-input:nav
R
Technical
Techn ical University
Geomatics
y of Catalonia
University Catalonia
brdc3030.03n @ J.
J. Sanz
4
Sanz & J.M. Juan
Juan
Juan
43
43

Ex. 3.4: Single freq. positioning effects


Execute in a single line: (or use the gLAB GUI)

graph.py -f gLAB.out -x4 -y18 -s.- -c '($1=="OUTPUT")' -l "North error"


-f gLAB.out -x4 -y19 -s.- -c '($1=="OUTPUT")' -l "East error"
-f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' -l "UP error"
--yn -40 --yx 70 --xl "time (s)" --yl "error (m)"
-t "NEU positioning error [SPP]: Full model"

graph.py -f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' --l "Full model"


-f gLAB1.out -x4 -y20 -s.- -c '($1=="OUTPUT")' --l "No Iono." --cl r
--yn -40 --yx 90 --xl "Time (s)" --yl "Up error (m)"
-t "Vertical positioning error [SPP]"

graph.py -f gLAB1.out -x19 -y18 -so -c '($1=="OUTPUT")' --l "No Iono." --cl r
-f gLAB.out -x19 -y18 -so -c '($1=="OUTPUT")' --l "Full mod" --cl b
--xl "East error (m)" --yl "North error (m)"
--xn -40 --xx 40 --yn -40 --yx 40
-t "Horizontal pos. error [SPP]"

P2-P1 shifted +4 m

graph.py -f gLAB.out -x4 -y'($10-$9+4)' -s. -c '($1=="INPUT")'


-f gLAB.out -x4 -y25 -s. -c '($1=="MODEL")' --cl r
--xl "time (s)" --yl "meters"
gAGE/UPC --yn -5 --yx 80 -t "Ionospheric Combination"
@ J.
J. Sanz
Sa
San
San
anz & J.M.
J.M. Juan
Ju
Jua
Ju
ua
an 44
44 44
Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.4: Single freq. positioning effects
gLAB1.out gLAB1.out

gLAB.out
gLAB.out

gLAB.out Ionospheric correction (broadcast Klobuchar )


Ionospheric delays are larger at noon due to the higher
insulation.
Code Klobuchar model is unable to mitigate the large
delay ionospheric errors during the storm. Position domain
errors reach up to 40 meters with Klobuchar corrections
used.

gAGE/UPC @ J. Sanz & J.M. Juan 45


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3.4: Single freq. positioning effects


Ionospheric correction
1-freq.[SPS]:
with Klobuchar
(broadcast Klobuchar )
•The ionosphere-free combination
(PC) of P1 and P2 codes is immune
to the ionospheric storm.
• Although PC is three-times noisier
than P1 or P2, it provides positioning
accurate at the level of a few meters
during the storm. f 2P  f 2P
1 1 2 2
PC
f12  f 22

2-freq.:
Iono-free amc2 station location

October 30, 2003

gAGE/UPC @ J. Sanz & J.M. Juan 46


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3.4: Single freq. positioning effects

Questions:
• Discuss the results seen in the previous plots. Is the Klobuchar
model able to remove the ionospheric error during the storm?
What was the level of the error?
• What is the position domain error level for single frequency
users?
• And for dual frequency users navigating with the ionosphere-free
combination?
• Discuss pros and cons of using the ionosphere-free combination
against the single-frequency code with Klobuchar (consider
nominal conditions and perturbed conditions).

gAGE/UPC @ J. Sanz & J.M. Juan 47


Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
Ž Introduction: gLAB processing in command line.
Ž Test cases on Atmospheric Propagation Effects:
Troposphere, Ionosphere.
¾ Test cases on Measurement Noise and Multipath: C1,
Ionosphere-free and Melbourne Wübbena combinations.
Ž Test cases on Carrier Smoothed Code: Code-carrier
divergence.
Ž Test cases on Broadcast Orbits and Clocks Accuracy

gAGE/UPC @ J. Sanz & J.M. Juan 48


Research group of Astronomy & Geomatics
Technical University of Catalonia
Test cases on Measurement
Noise and Multipath:
C1, Iono-free and Melbourne Wübbena
combinations.

gAGE/UPC @ J. Sanz & J.M. Juan 49


Research group of Astronomy & Geomatics
Technical University of Catalonia

Measurement noise and multipath


• Code measurements are unambiguous
Code and carrier Measurements but noisy (meter level measurement
noise).
Carrier is ambiguous, but precise • Carrier measurements are precise but
ambiguous, meaning that they have
few millimetres of noise, but also have
Cycle-slip unknown biases that could reach
thousands of km.
• Carrier phase biases are estimated in
the navigation filter along with the other
parameters (coordinates, clock offsets,
Code is etc.). If these biases were fixed,
Zoom of unambiguous, measurements accurate to the level of
carrier noise but noisy few millimetres would be available for
positioning. However, some time is
needed to decorrelate such biases
from the other parameters in the filter,
Note: Figure shows the noise of code and carrier prefit-
and the estimated values are not fully
residuals, which are the input data for navigation equations.
unbiased.

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 50
Exercise 4. Code multipath

The code multipath can be seen by plotting the difference of code and carrier
ionosphere-free combinations (PC-LC). The evolution of this difference can be
followed with a sampling rate of 1 Hz. Due to its geometric nature, the effect
of multipath repeats with the receiver-satellite geometry.

The RINEX files UPC33600.08N, UPC33610.08N, UPC33620.08N contain


observations at 1 Hz collected by a GPS receiver with fixed coordinates over
the same period of time on three consecutive days. The corresponding
navigation files are BRD3600.08N, BRD3610.08N, BRD3620.08N.

Using gLAB, read the RINEX files, plot the combination PC-LC and identify
the effect of multipath. Analyse the measurements of satellites PRN20 and
PRN25 in the time interval 67000 < t < 68000s. Include the satellite's
elevation in the plots.

gAGE/UPC @ J. Sanz & J.M. Juan 51


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 4.1. PC Code multipath


Complete the following steps to depict the noise and multipath in the PC combination:

1. Read the RINEX files, execute:


gLAB linux -input:cfg meas.cfg -input:obs UPC33600.08 -input:nav BRD3600.08N > upc3360.meas

2. Verify the following field contents in the generated file upc3360.meas and
others:
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 x x 9 10 11 xx 13 14 15 16 ]

3. Compute the difference of code and carrier ionosphere-free combinations:


(i.e. apply next equation) :
f12 P1  f 22 P2 J P1  P2
Pc ;
f12  f 22 J 1
M Pc Pc  Lc
f L f L
2
1 1
2
2 2 J L1  L2
Lc
f f
1
2
2
2
J 1

gAGE/UPC @ J. Sanz & J.M. Juan 52


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 4.1. PC Code multipath
gawk 'BEGIN{g12=(154/120)**2}{if ($4>66000 && $4<69000)
print $6,$4,(g12*$13-$15)/(g12-1)-(g12*$14-$16)/(g12-1),$7}' upc3360.meas >
upc3360.LcPc
(Similarly for the other two files upc3361.meas and upc3362.meas.)

2. Plot the results:


graph.py -f upc3360.LcPc -c '($1==20)' -x2 -y3 -s- -l "DoY 360"
-f upc3361.LcPc -c '($1==20)' -x2 -y3 -s- -l "DoY 361"
-f upc3362.LcPc -c '($1==20)' -x2 -y3 -s- -l "DoY 362"
-f upc3360.LcPc -c '($1==20)' -x2 -y4 -l "Elev (deg.)"

- Repeat the same plots, but shift the plot of the second day by 3m 56s = 236s
and the third day by 2x(3m 56s) = 472s.
graph.py -f upc3360.LcPc -c '($1==20)' -x2 -y3 -s- -l "DoY 360"
-f upc3361.LcPc -c '($1==20)' -x'($2+236)' -y3 -s- -l "DoY 361"
-f upc3362.LcPc -c '($1==20)' -x'($2+472)' -y3 -s- -l "DoY 362"
-f upc3360.LcPc -c '($1==20)' -x2 -y4 -l "Elev (deg.)"

gAGE/UPC @ J. Sanz & J.M. Juan 53


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 4.1. PC Code multipath

• What is the reason for the observed 3m 56s displacement between the
graphs for two consecutive days?

• Repeat the previous plot for the satellite PRN25 and compare results.

gAGE/UPC @ J. Sanz & J.M. Juan 54


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 4.1. PC Code multipath
OPTIONAL: Repeat the multipath analysis of the previous exercise using
files htv13450.04o, htv13460.04o, htv13470.04o collected by the
permanent receiver HTV1, and files galb3450.04o, galb13460.04o,
galb13470.04o collected by the permanent receiver GALB. The associated
broadcast orbit files are brdc3450.04n, brdc3460.04n, brdc3470.04n.

gAGE/UPC @ J. Sanz & J.M. Juan 55


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 4.2. Melbourne-Wübbena multipath


Complete the following steps to depict the noise and multipath in the Melbourne
Wübbena combination:
f1 P1  f 2 P2 J P1  P2
PN ;
f1  f 2 J 1
M MW PN  LW
f1 L1  f 2 L2 J L1  L2
LW
f1  f 2 J 1

Execute (in a single line):


gawk 'BEGIN{s12=154/120}{print $6,$4,(s12*$14-$16)/(s12-1)-(s12*$13+$15)/(s12+1),$7}'
galb3450.meas > galb3450.MW
(Similarly for the other files)

And plot results.

gAGE/UPC @ J. Sanz & J.M. Juan 56


Research group of Astronomy & Geomatics
Technical University of Catalonia
Exercise 4.2. Melbourne-Wübbena multipath

gAGE/UPC @ J. Sanz & J.M. Juan 57


Research group of Astronomy & Geomatics
Technical University of Catalonia

Exercise 4.3. C1 code multipath


The C1 code multipath and receiver noise can be depicted using the following
combination (that removes all frequency dependent and not dependent terms):
2
f 22 1 § 77 ·
M C1 C1  L1  2D ( L1  L2 ) D 1.545 ; J ¨ ¸
f12  f 22 J 1 © 60 ¹

a) Generate the “meas” file: [Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
Select, for instance, PRN03 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ]

gLAB_linux -input:cfg meas.cfg -input:obs UPC33510.08O|gawk '{if ($6==03)print $0}'>upc3.meas

b) Using previous expression, compute the C1 multipath and code noise:


gawk '{print $4,$11-$14-3.09*($14-$16)-21.3}' upc3.meas> upc3.C1
[*] results are Shifted by “-21.3” to remove the carrier ambiguity

c) Plot resuts for PRN03:


graph.py -f upc3.C1 -s- --l "C1 Raw" --xn 35000 --xx 40000
--yn -5 --yx 5 --xl "time (s)" --yl "meters"
-t "PRN03, C1 Raw measurement noise and multipath"

gAGE/UPC @ J. Sanz & J.M. Juan


58
Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
Ž Introduction: gLAB processing in command line.
Ž Test cases on Atmospheric Propagation Effects:
Troposphere, Ionosphere.
Ž Test cases on Measurement Noise and Multipath: C1,
Ionosphere-free and Melbourne Wübbena combinations.
¾ Test cases on Carrier Smoothed Code: Code-carrier
divergence.
Ž Test cases on Broadcast Orbits and Clocks Accuracy

gAGE/UPC @ J. Sanz & J.M. Juan 59


Research group of Astronomy & Geomatics
Technical University of Catalonia

Test cases on Carrier


Smoothed Code:
Code-carrier divergence

gAGE/UPC @ J. Sanz & J.M. Juan 60


Research group of Astronomy & Geomatics
Technical University of Catalonia
Carrier smoothed code
The noisy code P can be smoothed with the precise (but ambiguous) carrier L
measurements. This carrier smoothing can be done in real-time applying the
Hatch filter.
1 n 1
Pˆ (k ) P(k )  P(k  1)  L(k )  L(k  1)
n n

Ionospheric combination (meters)


where [n k if k  N ], and [n N if k t N ]. Code P (unambiguous but noisier)

The algorithm is initialised with: Pˆ (1) P (1).

The previous algorithm can be interpreted


as real-time alignment of carrier with code: Ambiguity= P  L

1 n 1
Pˆ (k ) P(k )  P(k  1)  L(k )  L(k  1) Carrier Phase L (ambiguous but precise)
n n
L(k )  P  L ( k )

where 1 n 1 1
PL (k )
n
P (k )  L(k ) 
n
PL ( k 1)

n
¦ P (k )  L(k )

gAGE/UPC @ J. Sanz & J.M. Juan 61


Research group of Astronomy & Geomatics
Technical University of Catalonia

Carrier smoothed code


The noisy code can be smoothed with the precise (but ambiguous) carrier
measurements. This carrier smoothing can be done in real-time applying the
Hatch filter.
The smoothing depends on the time smoothing constant or filter length. The more
the filter length is used, the more smoothed the code is, but (with single
frequency measurements) a higher code-carrier divergence error is induced by
the ionosphere.
This is because the ionospheric refraction has an opposite sign on code and
carrier, its effect being twice on the difference of code and carrier. This double
ionospheric refraction is propagated forward through the filter, producing a bias.

The error induced by the code-carrier divergence of the ionosphere on the


single frequency smoothed codes is assessed in this exercise for different filter
lengths.

gAGE/UPC @ J. Sanz & J.M. Juan 62


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex.5.: Iono. Divergence on Smoothing
The target of this exercise is to
analyze the error induced by
the divergence of the
ionosphere (between code
and carrier) into the Single-
Frequency (SF) carrier
smoothed code.
The Divergence Free (Dfree) This effect will be analyzed
analytically and tested with
and the Ionosphere Free
single and double frequency
(IFree) smoothed codes will be GPS measurements under
compared with the SF one. large ionospheric gradients.
gAGE/UPC @ J. Sanz & J.M. Juan 63
Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex.5.: Iono. Divergence on Smoothing


Time varying ionosphere induces a bias in the single frequency smoothed
code when it is averaged in the smoothing filter. This effect is analysed as follows:
Let: Where U includes all non dispersive terms (geometric range, clock
offsets, troposphere) and I1 represents the frequency dependent
P1 U  I1  H1 terms (ionosphere and DCBs). B1 is the carrier ambiguity, which is
L1 U  I1  B1  9 1 constant along continuous carrier phase arcs, and H1 , 9 1 account for
code and carrier multipath and thermal noise.
therefore,
Note: the carrier noise L1 is
P1  L1 2 I1  B  H1 Ÿ 2 I1 : Code-carrier divergence neglected against code noise H1 .

Substituting P1  L1 in Hatch filter equation (see slide #61):


Pˆ (k ) L(k )  P  L U (k )  I (k )  B  2 I  B
(k ) 1 1 1 1 (k )

U (k )  I1 (k )  2 I1  I (k )

(k ) 1 Ÿ Pˆ1 U  I1  biasI  X1
biasI
where X1 is the noise term after
where, being the ambiguity term B1 a constant bias, thence
smoothing
B1 B1 , and cancels in the previous expression

gAGE/UPC @ J. Sanz & J.M. Juan 64


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex.5.: Iono. Divergence on Smoothing
Raw assessment of the induced bias on P1 smoothed code by ionosphere:

• Let assume a simple model where the STEC vary linearly with time:

I1 (t ) I10  I1c ˜ t Ÿ biasI 2 I1 (k )


 I1 (k ) 2W I1c

where W is the Hatch filter smoothing time constant (i.e.,W N in previous eq.).

Exercise:
Prove the previous statement.
Solution:
Let be f (t ) { I (t ) and y (t ) { I (t )
. The averaging in the Hatch filter can be implemented as:
W  'T 'T y (t  'T )  y (t ) 1 1 1 1
y (t  'T ) y (t )  f (t  'T ) Ÿ  y (t ) f (t  'T )  o y ' y f (t )
W W 'T W W 'T o 0
W W
Thence:
I1 (t ) I10  I1c ˜ t Ÿ I1 (t )
I1 (t )  W I1c 1  e  t /W Ÿ biasI
2 I1 (t )
 I1 (t ) 
t of
o 2W I1c

gAGE/UPC @ J. Sanz & J.M. Juan 65


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex.5.: Iono. Divergence on Smoothing


• Divergence Free smoothing (DFree):
With 2-frequency measurements, the ionosphere can be removed from a
combination of two carriers: f2
D 2

P1  L1  2D ( L1  L2 ) B12  H1 Ÿ Pˆ1 U  I1  X12 f12  f 22


B12  B1  2D ( B1  B2 )
ÎDFree smoothed code is not affected by iono. temporal gradients,
being the ionospheric delay the same as in the original code P1 .

• Ionosphere Free smoothing (IFree):


Using both code and carrier 2-frequency measurements, it is possible to remove
the frequency dependent effects using the ionosphere-free combination PC , LC :
PC U  H C f12 P1  f12 P2
Ÿ PˆC U  XC PC
LC U  BC  9 C f12  f 22

ÎIFree smoothed code is not affected by either spatial or temporal gradients, f12 L1  f12 L2
LC
but is 3-times noisier than the DFree, or the in the Single Freq. smoothed code. f12  f 22

gAGE/UPC @ J. Sanz & J.M. Juan 66


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 5.1: Iono. Divergence on Smoothing
1.- Multipath and measurement noise assessment on raw code measurements:
The C1 code multipath and receiver noise can be depicted using the following
combination (that removes all frequency dependent and not dependent terms):
2
f 22 1 § 77 ·
M C1 C1  L1  2D ( L1  L2 ) D
f12  f 22 J 1
1.545 ; J ¨ ¸
© 60 ¹

[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
a) Generate the “meas” file for PRN03: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ]

gLAB_linux -input:cfg meas.cfg -input:obs UPC33510.08O|gawk '{if ($6==03)print $0}'>upc3.meas

b) Using previous expression, compute the C1 multipath and code noise: :


gawk '{print $4,$11-$14-3.09*($14-$16)-21.3}' upc3.meas> upc3.C1
[*] results are Shifted by “-21.3” to remove the carrier ambiguity

c) Plot the raw (unsmoothed) measurements for PRN03:


graph.py -f upc3.C1 -s- --l "C1 Raw" --xn 35000 --xx 40000
--yn -5 --yx 5 --xl "time (s)" --yl "meters"
-t "PRN03, C1 Raw measurement noise and multipath"

gAGE/UPC @ J. Sanz & J.M. Juan


67
Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 5.1: Iono. Divergence on Smoothing


2. Apply the Hatch filter to smooth the code using a filter length of N =100 sample
(as the measurements are at 1Hz,this means 100 seconds smoothing). Then, as
in the previous case, depict the multipath and noise of the smoothed code.
a) Smoothing code (T=100sec):

gawk 'BEGIN{Ts=100}{if (NR>Ts){n=Ts}else{n=NR};


C1s=$11/n+(n-1)/n*(C1s+($14-L1p));L1p=$14;
print $4,C1s-$14-3.09*($14-$16)-21.3}' upc3.meas > upc3.C1s100
b) Plotting results and compare with the row C1.

graph.py -f upc3.C1 -s- --l "C1 Raw"


-f upc3.C1s100 -s.- --cl r --l "C1 SF smoothed"
--xn 35000 --xx 40000 --yn -5 --yx 5
--xl "time (s)" --yl "meters"
-t "PRN03: C1 100s smoothing and iono div."

gAGE/UPC @ J. Sanz & J.M. Juan 68


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 5.1: Iono. Divergence on Smoothing
3 . Using 2-frequency carriers it is possible to generate a combination with the
same ionospheric delay (the same sign) as the code to avoid the code-carrier
divergence 2
f 22 1 § 77 ·
D 1.545 ; J
L1DFree L1  2D ( L1  L2 ) U  I1  B  ] f12  f 22 J  1
¨ ¸
© 60 ¹

a) Apply the Hatch filter to compute the DFree smoothed code


gawk 'BEGIN{Ts=100}{if (NR>Ts){n=Ts}else{n=NR};
C1f=$11;L1f=$14+2*1.545*($14-$16);
C1fs=C1f/n+(n-1)/n*(C1fs+(L1f-L1p));L1p=L1f;
print $4,C1fs-L1f-21.3}' upc3.meas > upc3.C1DFs100

b) Plot results and compare with the row C1 code:


graph.py -f upc3.C1 -s- --l "C1 Raw"
-f upc3.C1s100 -s.- --cl r --l "C1 SF smoothed (100s)"
-f upc3.C1DFs100 –s.- --cl g --l "C1 DFree smooth(100s)"
--xn 35000 --xx 40000 --yn -5 --yx 5
--xl "time (s)" --yl "meters"

gAGE/UPC @ J. Sanz & J.M. Juan 69


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 5.1: Iono. Divergence on Smoothing


4 . Generate the ionosphere-free combinations of code and carrier measurements
to compute the Ionosphere Free (IFree) smoothed code:
J P1  P2 J L1  L2 § 77 ·
2

CIFree { PC ; LIFree { LC J ¨ ¸
J 1 J 1 © 60 ¹

gawk 'BEGIN{g=(77/60)**2}{pc=(g*$13-$15)/(g-1); lc=(g*$14-$16)/(g-1);


print $4,pc-lc-3.5}' upc3.meas > upc3.PC
• Apply the Hatch filter to compute the IFree smoothed code
gawk 'BEGIN{g=(77/60)**2}{pc=(g*$13-$15)/(g-1);
lc=(g*$14-$16)/(g-1); if (NR>100){n=100}else{n=NR};
ps=1/n*pc+((n-1)/n*(ps+lc-lcp)); lcp=lc;
print $4,ps-lc-3.5}' upc3.meas > upc3.PCs100

• Plot results and compare with the unsmoothed PC:


graph.py -f upc3.PC -s- --l "IFree raw"
-f upc3.PCs100 -s.- --cl black --l "Ifree(100s)"
--xn 35000 --xx 40000 --yn -5 --yx 5
--xl "time (s)" --yl "meters"

gAGE/UPC @ J. Sanz & J.M. Juan 70


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 5.1: Iono. Divergence on Smoothing
5 . Repeat previous plots but using: N=360, N=3600 and compare results. Plot also
the ionospheric delay (from L1-L2) (see more details in [R-1]):
T=100s T=360s T=3600s

C1 C1 C1
STEC

Note that the


PC PC PC y-range in
bottom row
plots is 3 times
larger than in
top plots

gAGE/UPC @ J. Sanz & J.M. Juan 71


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 5.1: Iono. Divergence on Smoothing

Questions:
• Discuss a possible source of the large oscillations seen in the plots.
• Using the expressions of slide #65, estimate the expected accumulated
ionospheric bias with smoothing time constant T=3600s.
• Is the Divergence-Free smoothing immune to ionospheric temporal
gradients? And to spatial gradients? Why?
• Is the Ionosphere-Free smoothing immune to temporal gradients? And to
spatial gradients?

gAGE/UPC @ J. Sanz & J.M. Juan 72


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex.5.2.: Assessment on Halloween storm
Repeat the previous exercise using the RINEX file amc23030.03o_1Hz
collected for the station amc2 during the Halloween storm. Take N=100
(i.e. filter smoothing time constant W=100 sec).

gAGE/UPC @ J. Sanz & J.M. Juan 73


Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
Ž Introduction: gLAB processing in command line.
Ž Test cases on Atmospheric Propagation Effects:
Troposphere, Ionosphere.
Ž Test cases on Measurement Noise and Multipath: C1,
Ionosphere-free and Melbourne Wübbena combinations.
Ž Test cases on Carrier Smoothed Code: Code-carrier
divergence.
¾ Test cases on Broadcast Orbits and Clocks Accuracy

gAGE/UPC @ J. Sanz & J.M. Juan 74


Research group of Astronomy & Geomatics
Technical University of Catalonia
Test cases on Broadcast
Orbits and Clocks
Accuracy

gAGE/UPC @ J. Sanz & J.M. Juan 75


Research group of Astronomy & Geomatics
Technical University of Catalonia

Broadcast v.s. precise IGS Orbits and clocks


Satellite Mass Center to
Antenna Phase Center
Satellite
Antenna
Phase Center
(APC)

Satellite
Mass
Center
(MC) Satellite MC to APC:
The satellite MC to APC
eccentricity vector depends on
Broadcast orbits are the satellite. The APC values
referred to the antenna used in the IGS orbits and
phase center, but IGS clocks products are referred to
precise orbits are referred the iono-free combination (LC,
PC) . They are given in the IGS
to the satellite mass center. ANTEX files (e.g., igs05.atx).

gAGE/UPC
Research group of Astronomy & Geomatics
@ J. Sanz & J.M. Juan 76
Technical University of Catalonia
Ex.6.: Broadcast orbits and clocks accuracy assessment using the IGS
precise products as the accurate reference (i.e. the truth).

Complete the following steps:


File brdc0800.07n contains the orbits and clocks data broadcast in the GPS navigation message.
Files cod14193.sp3, cod14193.clk contain the precise orbits and clocks computed in post-
process by “CODE” center (IGS precise orbits and clocks products program).
1. Execute the following sentence to compute the difference of satellite coordinates and clock
offsets between both orbits and clocks sources:
gLAB_linux -input:nav brdc0800.07n -input:SP3 cod14193.sp3 -input:ant igs05_1402.atx >dif.tmp

2. Select the SATDIFF message of dif.tmp file:


grep SATDIFF dif.tmp > dif.out
SATDIFF message content is shown in the table beside.
(see gLAB_linux –messages).
The IGS post-processed products are accurate at few cm
level, therefore they can be taken as the truth.
3. Plot dif.out file as in the first exercise.

Note: SISRE ('Rad  'Clk) 2  1 ('Alon 2  'Cross 2 )


49

gAGE/UPC @ J. Sanz & J.M. Juan 77


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex.6.: Broadcast orbits and clocks accuracy assessment using the IGS
precise products as the accurate reference (i.e. the truth).

Comments
• Meter level errors are found on broadcast
orbits and clocks.
• The bias seen in the radial component is
due to the different APC’s used by the
GPS ground segment (i.e, in broadcast
orbits) and by IGS (precise products).
• This bias is compensated by a similar
shift in clocks.
• For the Signal-In-Space-Range-Error
(SISRE), please see the plot below.

gAGE/UPC @ J. Sanz & J.M. Juan


Research group of Astronomy & Geomatics 78
Technical University of Catalonia
Ex.6.: Broadcast orbits and clocks accuracy assessment using the IGS
precise products as the accurate reference (i.e. the truth).

Comments
The previous computations have been
repeated, but using the ANTEX file
gps_brd.atx, instead of igs05_1402.atx.
This new ANTEX file contains the GPS
antenna phase center offsets used by the
GPS ground segment, not the IGS ones.
• Notice that the biases in the radial
component have disappeared.

gAGE/UPC @ J. Sanz & J.M. Juan 79


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex.6.: Broadcast orbit and clock accuracy assessment using the IGS
precise products as the accurate reference (i.e. the truth).

Questions:
• What is the level of error of the broadcast orbits and clocks?
• Why do the results improve using the gps_brd.atx, instead of
igs05_1402.atx ANTEX file?
• Is there any correlation between radial orbit errors and clock errors?
• Which orbit errors are expected to affect the differential positioning more (radial,
cross track, along track)?

gAGE/UPC @ J. Sanz & J.M. Juan 80


Research group of Astronomy & Geomatics
Technical University of Catalonia
Thanks for your
attention

gAGE/UPC @ J. Sanz & J.M. Juan 81


Research group of Astronomy & Geomatics
Technical University of Catalonia

Bibliography
ƒ R-1: J. Sanz-Subirana, J.M. Jaun-Zoroza, M. Hernández-Pajares. GNSS Data processing.
Volume-I and Volume-II. ESA Publications Division, 2012.
ƒ R-2: J. Sanz-Subirana, J.M. Jaun-Zoroza, M. Hernández-Pajares. Tutorial on GNSS Data
Processing Laboratory Exercises. ESAInternational Summer School on GNSS, 2010.
ƒ R-3: Hernández-Pajares M., J.M. Juan, J. Sanz, "EGNOS Test Bed Ionospheric
Corrections Under the October and November 2003 Storms", IEEE Transactions on
Geoscience and Remote Sensing, Vol.43(10), pp.2283-2293, 2005.

gAGE/UPC @ J. Sanz & J.M. Juan 82


Research group of Astronomy & Geomatics
Technical University of Catalonia
Acknowledgements

Ž The ESA/UPC GNSS-Lab Tool suite (gLAB) has been


developed under the ESA Education Office contract N.
P1081434.
Ž The other data files used in this study were acquired as part of
NASA's Earth Science Data Systems and archived and
distributed by the Crustal Dynamics Data Information System
(CDDIS).
Ž To Adrià Rovira-Garcia for his contribution to the edition of this
material and gLAB updating.

gAGE/UPC @ J. Sanz & J.M. Juan 83


Research group of Astronomy & Geomatics
Technical University of Catalonia
Tutorial 3
Differential Positioning
with code measurements

Contact: [email protected]
Web site: http://www.gage.upc.edu

Slides associated to
gLAB version 2.0.0

gAGE/UPC @ J. Sanz & J.M. Juan 1


Research group of Astronomy & Geomatics
Technical University of Catalonia

Aim of this tutorial


Ž This tutorial is devoted to analysing and assessing the differential positioning with code
pseudorange measurements. Four different permanent receivers and two baselines
280km and 51km are considered.
Ž The atmospheric effects on differential positioning are the subject of the first session.
The differential tropospheric and ionospheric delays are analysed for the two baselines
considered and the absolute and differential user solution are computed and assessed.
Ž The ephemeris error on differential positioning is the subject of the second session. A
2000 metres of Along-Track error is simulated by manipulating the broadcast message,
and the impact of this error on range and user domains is assessed for absolute and
differential positioning. A theoretical expression to predict the range error on a given
baseline is also verified in the last part of this session.
Ž Detailed guidelines for self-learning students are provided in this tutorial and in its
associated notepad text file.

Ž All software tools (including gLAB) and associated files for the laboratory session are
included in the CD-ROM or USB stick associated with this tutorial.

gAGE/UPC @ J. Sanz & J.M. Juan 3


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
¾ Introduction: gLAB processing in command line

Ž Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

Ž Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 4


Research group of Astronomy & Geomatics
Technical University of Catalonia

gLAB processing in command line

A “notepad”
with the
command
line sentence
is provided to
facilitate the
sentence
writing: just
“copy” and
“ paste”
Console to execute
from
“command line” notepad to
sentences the working
terminal.

gAGE/UPC @ J. Sanz & J.M. Juan 5


Research group of Astronomy & Geomatics
Technical University of Catalonia
gLAB processing in command line
The different messages provided
by gLAB and its content can be
found in the [OUTPUT] section.

By placing the mouse on a given


message name, a tooltip appears
describing the different fields.

In console mode: execute

gLAB_linux -messages

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 6

OVERVIEW
Ž Introduction: gLAB processing in command line

¾ Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

Ž Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 7


Research group of Astronomy & Geomatics
Technical University of Catalonia
Session A
Atmospheric effects
on differential positioning
with code measurements

gAGE/UPC @ J. Sanz & J.M. Juan 8


Research group of Astronomy & Geomatics
Technical University of Catalonia

Session A: Atmospheric effects


Toulouse
MATA

MATA GARR
Barcelona

GARR-MATA: 51 km
EBRE-CREU: 288 km

gAGE/UPC @ J. Sanz & J.M. Juan 9


Research group of Astronomy & Geomatics
Technical University of Catalonia
Session A: Atmospheric effects
Data sets:
Measurement files:
CREU0770.10o, EBRE0770.10o, GARR0770.10o, MATA0770.10o
Orbit and clocks files: brdc0770.10n.
Receiver coordinates:

MATA 4776835.5870 202618.9947 4207574.6304 41.539929530 2.428858625 123.6209


GARR 4796983.5767 160309.1177 4187340.3773 41.292941528 1.914040080 634.6040
EBRE 4833520.1197 41537.2015 4147461.6263 40.820888849 0.492363266 107.8284
CREU 4715420.3054 273177.8809 4271946.7957 42.318843076 3.315603563 133.4780

Note: the receivers were not moving (static receivers) during the
data collection.

gAGE/UPC 10
Research group of Astronomy & Geomatics Data files and receiver coordinates @ J. Sanz & J.M. Juan

Technical University of Catalonia

OVERVIEW
Ž Introduction: gLAB processing in command line

¾ Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

Ž Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 11


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Model Components computation


• The script "ObsFile1.scr" generates a data file “STA.obs” with the following
content
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion Elev Azim Prefit]

• Run this script for EBRE and CREU receivers:

ObsFile1.scr EBRE0770.10o brdc0770.10n


ObsFile1.scr CREU0770.10o brdc0770.10n

• Generate the navigation equations system for absolute positioning for each
receiver and compute the user solution (see next two slides).

gAGE/UPC A.1.1 Model components computation @ J. Sanz & J.M. Juan 12


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)
Justify that the next sentence builds the navigation equations system
for absolute positioning:
See file content [Prefit]=[Los_k 1]*[dx]
in previous slide

cat EBRE.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;


printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> EBRE.mod

ª  ρˆ 1 T 1º
ª Pref º 1
« » time [Pref] [ Los_k 1]
« 2» « ˆ2 T »
« ρ
------ ------------------------
« Pref » 1»
dx 30.00 -3.3762 0.3398 -0.1028 0.0714 1
« » « »
« 30.00 -7.1131 0.1725 0.5972 0.0691 1
n» « »
¬ Pref ¼ «  ρˆ n T 1»¼
30.00 4.3881 -0.6374 0.0227 0.2725 1
¬

gAGE/UPC ρˆ k { > cos( Elk )sin( Azk ), cos( Elk ) cos( Azk ), sin( Elk ) @ @ J. Sanz & J.M. Juan 13
Research group of Astronomy & Geomatics
Technical University of Catalonia
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

The program kalman.f implements the kalman filter for code


positioning (see source code).
The INPUT file is the file EBRE.mod generated in the previous slide.
The OUTPUT is the user solution file: 1 2 3 4 5
[time dE dN dU, dt]

The filter configuration is done by the namelist kalman.nml.


• The namelist kalman_wn.nml configures the filter to process the coordinates
and clock as white nose (i.e. Kinematic solution).
• The namelist kalman_ct.nml configures the filter to process the coordinates
as constants and clock as white nose (i.e. static solution).
cp kalman.nml_wn kalman.nml
The program is executed as:
cat EBRE.mod | kalman > EBRE.pos

gAGE/UPC A.1.2. Absolute positioning @ J. Sanz & J.M. Juan 14


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

Using the files EBRE.obs and CREU.obs, follow the next


steps:
1. Build the navigation equations system for each
receiver, for absolute positioning.
2. Compute the user solutions in kinematic mode.
3. Plot the results and compare the positioning errors.

gAGE/UPC A.1.2. Absolute positioning @ J. Sanz & J.M. Juan 15


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

1.- Building the navigation equations system for absolute positioning:


cat EBRE.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> EBRE.mod

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat EBRE.mod | kalman > EBRE.pos

3.- Plotting results:


graph.py -f EBRE.pos -x1 -y2 -s.- -l "North error"
-f EBRE.pos -x1 -y3 -s.- -l "East error"
-f EBRE.pos -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "EBRE: Standard Point Positioning"

gAGE/UPC A.1.2. Absolute positioning @ J. Sanz & J.M. Juan 16


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

1.- Building the navigation equations system for absolute positioning:


cat CREU.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> CREU.mod

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat CREU.mod | kalman > CREU.pos

3.- Plotting results:


graph.py -f CREU.pos -x1 -y2 -s.- -l "North error"
-f CREU.pos -x1 -y3 -s.- -l "East error"
-f CREU.pos -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "CREU: Standard Point Positioning"

gAGE/UPC A.1.2. Absolute positioning @ J. Sanz & J.M. Juan 17


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Questions:
•What is the expected accuracy of the computed coordinates (in absolute positioning)?
•Why are the patterns seen for the receivers EBRE and CREU are so similar?

gAGE/UPC A.1.2. Absolute positioning @ J. Sanz & J.M. Juan 18


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

The script Dobs.scr computes the single difference of measurements


files sta1.obs (reference station) and sta2.obs (user).
It can be executed by the sentence: Dobs.scr sta1.obs sta2.obs

The output file (D_sta1_sta2.obs) has the following content:


1 2 3 4 5 6 7 8 9 10 11 12 13 14
[sta2 sat DoY sec DP1 DL1 DP2 DL2 DRho DTrop DIon El2 Az2 DPrefit]

Where: D(o)= (o)sta2 -- (o)sta1


EL2 and AZ2 are the satellite azimuth and elevation from sta2.

In our case, executing: Dobs.scr EBRE.obs CREU.obs


the OUTPUT file D_EBRE_CREU.obs is generated.

gAGE/UPC A.1.3. Differential positioning @ J. Sanz & J.M. Juan 19


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)
Justify that the next sentence builds the navigation equations system for differential
positioning of CREU (user) relative to EBRE (reference station):

Question: Is this combination [DPrefit]=[Los_k 1]*[dx]


equivalent to use $14? Why?

cat D_EBRE_CREU.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;


printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$10-$11 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> D_EBRE_CREU.mod

ª  ρˆ 1 T 1º
ª DPref º 1
« creu
» time [DPref] [ Los_k 1]
« 2» « ˆ2 T »
«  ρ creu
------ ------------------------
« DPref » 1»
dx 30.00 -3.3762 0.3398 -0.1028 0.0714 1
« » « »
« 30.00 -7.1131 0.1725 0.5972 0.0691 1
n» « »
¬ DPref ¼ «  ρˆ n T 1»¼
30.00 4.3881 -0.6374 0.0227 0.2725 1
¬ creu

gAGE/UPC ρˆ k { > cos( Elk )sin( Azk ), cos( Elk ) cos( Azk ), sin( Elk ) @ @ J. Sanz & J.M. Juan 20
Research group of Astronomy & Geomatics
Technical University of Catalonia

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

Using the files EBRE.obs and CREU.obs, follow the next steps:
1. Compute the single differences of measurements and model
components.
2. Build the navigation equations system for the differential
positioning of CREU receiver (user) relative to EBRE
(reference station).
3. Compute the user solution in kinematic mode and in static
mode.
4. Plot the results and discuss the positioning error found.

gAGE/UPC A.1.3.1. Differential positioning.


@ J. Sanz & J.M. Juan 21
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

1. Computing the single differences of measurements and model


components.
Dobs.scr EBRE.obs CREU.obs

2.- Building the navigation equations system for differential positioning:


cat D_EBRE_CREU.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$10-$11,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'> D_EBRE_CREU.mod

3.- Computing the user solution for differential positioning:


cp kalman.nml_wn kalman.nml
Kinematic:
cat D_EBRE_CREU.mod | kalman > EBRE_CREU.posK

cp kalman.nml_ct kalman.nml
Static:
cat D_EBRE_CREU.mod | kalman > EBRE_CREU.posS

gAGE/UPC A.1.3.1. Differential positioning.


@ J. Sanz & J.M. Juan 22
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

4.- Plotting results:


- kinematic mode:
graph.py -f EBRE_CREU.posK -x1 -y2 -s. -l "North error"
-f EBRE_CREU.posK -x1 -y3 -s. -l "East error"
-f EBRE_CREU.posK -x1 -y4 -s. -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "CREU-EBRE: 288 km: Differential Positioning"

- Static mode:
graph.py -f EBRE_CREU.posS -x1 -y2 -s. -l "North error"
-f EBRE_CREU.posS -x1 -y3 -s. -l "East error"
-f EBRE_CREU.posS -x1 -y4 -s. -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "CREU-EBRE: 288 km: Differential Positioning"

gAGE/UPC A.1.3.1. Differential positioning.


@ J. Sanz & J.M. Juan 23
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Questions:
•Looking at these results, justify intuitively why the errors are reduced in differential positioning.
•Why is the error lower in static than in kinematic mode?

gAGE/UPC A.1.3.1. Differential positioning.


@ J. Sanz & J.M. Juan 24
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

Analyze the effect of the differential ionosphere on the differential


positioning of CREU relative to EBRE station:

Follow the next steps:


1. Using file D_EBRE_CREU.obs plot the differential ionospheric
correction (from Klobuchar model) between EBRE and CREU.

2. Repeat the previous process, but without applying the


ionospheric correction. Compare the results

gAGE/UPC A.1.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 25
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Plotting the Klobuchar differential ionospheric correction:


graph.py -f D_EBRE_CREU.obs -x4 -y'11' --yn -0.8 --yx 0.8
-t "CREU-EBRE: 288 km: Nominal diff Iono (Klob)"

Question:
Justify the pattern seen in the
nominal (Klobuchar) ionospheric
corrections.

gAGE/UPC A.1.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 26
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

Computing the differential solution, but without using ionospheric


corrections:

1.- Building the navigation equations system for differential positioning,


but without using the ionospheric corrections:
cat D_EBRE_CREU.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$10,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'> D_EBRE_CREU.mod

2.- Computing the user solution for differential positioning:


cp kalman.nml_wn kalman.nml
Kinematic:
cat D_EBRE_CREU.mod | kalman > EBRE_CREU.posK

cp kalman.nml_ct kalman.nml
Static:
cat D_EBRE_CREU.mod | kalman > EBRE_CREU.posS

gAGE/UPC A.1.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 27
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Question:
Taking into account the previous plot of the differential ionospheric corrections (slide #26),
discuss the effect seen on the position domain.

gAGE/UPC A.1.3.1. Differential positioning.


@ J. Sanz & J.M. Juan 28
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

Question:
Discuss the pattern seen in the figure. Why is the effect of the differential ionospheric
error is higher in these static positioning results?

gAGE/UPC A.1.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 29
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Analyze the effect of the differential Troposphere on the differential


positioning of CREU relative to EBRE station:

Follow the next steps:


1. Using file D_EBRE_CREU.obs plot the differential trpospheric
correction (from nominal model) between EBRE and CREU.

2. Repeat the previous process, but without applying the


tropospheric correction. Compare the results

gAGE/UPC A.1.3.3. Differential positioning.


@ J. Sanz & J.M. Juan 30
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

Plotting the nominal differential tropospheric correction:


graph.py -f D_EBRE_CREU.obs -x4 -y'10' --yn -8 --yx 8
-t "CREU-EBRE: 288 km: Nominal diff Tropo"

Question:
Justify the pattern seen in the
nominal tropospheric corrections.

gAGE/UPC A.1.3.3. Differential positioning.


@ J. Sanz & J.M. Juan 31
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Computing the differential solution, but without using tropospheric


corrections:

1.- Building the navigation equations system for differential positioning,


but without using the tropospheric corrections:
cat D_EBRE_CREU.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$11,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'> D_EBRE_CREU.mod

2.- Computing the user solution for differential positioning:


cp kalman.nml_wn kalman.nml
Kinematic:
cat D_EBRE_CREU.mod | kalman > EBRE_CREU.posK

cp kalman.nml_ct kalman.nml
Static:
cat D_EBRE_CREU.mod | kalman > EBRE_CREU.posS

gAGE/UPC A.1.3.3. Differential positioning.


@ J. Sanz & J.M. Juan 32
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections

A.1. Differential positioning of EBRE-CREU receivers


(Long baseline: 288 km)

Questions:
• Which error source has the higher impact on the position domain higher the
ionosphere or the troposphere?
• Which is easier to model?

gAGE/UPC A.1.3.1. Differential positioning.


@ J. Sanz & J.M. Juan 33
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model
A.1. Differential positioning of EBRE-CREU receivers
(Long baseline: 288 km)

Question:
• Compare the results with those of the previous case, when not considering
the ionospheric error.

gAGE/UPC A.1.3.3. Differential positioning.


@ J. Sanz & J.M. Juan 34
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections

OVERVIEW
Ž Introduction: gLAB processing in command line

¾ Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

Ž Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 35


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Repeat the previous exercise, but using the permanent receivers GARR and MATA,
with only 51 km of baseline.

Model Components computation


• The script "ObsFile1.scr" generates a data file “STA.obs” with the following
content
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion Elev Azim Prefit]

• Run this script for GARR and MATA receivers:

ObsFile1.scr GARR0770.10o brdc0770.10n


ObsFile1.scr MATA0770.10o brdc0770.10n

• Generate the navigation equations system for absolute positioning for each
receiver and compute the user solution (see next two slides).

gAGE/UPC A.2.1 Model components computation @ J. Sanz & J.M. Juan 36


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

Using the files GARR.obs and MATA.obs, follow the next


steps:
1. Build the navigation equations system for each
receiver, for absolute positioning.
2. Compute the user solutions in kinematic mode.
3. Plot the results and compare the positioning errors.

gAGE/UPC A.2.2. Absolute positioning @ J. Sanz & J.M. Juan 37


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

1.- Building the navigation equations system for absolute positioning:


cat GARR.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> GARR.mod

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat GARR.mod | kalman > GARR.pos

3.- Plotting the results:


graph.py -f GARR.pos -x1 -y2 -s.- -l "North error"
-f GARR.pos -x1 -y3 -s.- -l "East error"
-f GARR.pos -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "GARR: Standard Point Positioning"

gAGE/UPC A.2.2. Absolute positioning @ J. Sanz & J.M. Juan 38


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

1.- Building the navigation equations system for absolute positioning:


cat MATA.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> MATA.mod

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat MATA.mod | kalman > MATA.pos

3.- Plotting the results:


graph.py -f MATA.pos -x1 -y2 -s.- -l "North error"
-f MATA.pos -x1 -y3 -s.- -l "East error"
-f MATA.pos -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "MATA: Standard Point Positioning"

gAGE/UPC A.2.2. Absolute positioning @ J. Sanz & J.M. Juan 39


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Questions:
• Compare the results with the previous case with a baseline of 280 km.
• Are the patterns even more similar now? Why?

gAGE/UPC A.2.2. Absolute positioning @ J. Sanz & J.M. Juan 40


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

Using the files GARR.obs and MATA.obs, follow the next steps:
1. Compute the single differences of measurements and model
components.
2. Build the navigation equations system for the differential
positioning of MATA receiver (user) relative to GARR
(reference station).
3. Compute the user solution in kinematic mode and in static
mode.
4. Plot the results and discuss the positioning error found.

gAGE/UPC A.2.3.1 Differential positioning.


@ J. Sanz & J.M. Juan 41
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

1. Computing the single differences of measurements and model


components.
Dobs.scr GARR.obs MATA.obs

2.- Building the navigation equations system for differential positioning:


cat D_GARR_MATA.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$10-$11,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'> D_GARR_MATA.mod

3.- Computing the user solution for differential positioning:


cp kalman.nml_wn kalman.nml
Kinematic:
cat D_GARR_MATAA.mod | kalman > GARR_MATA.posK

cp kalman.nml_ct kalman.nml
Static:
cat D_GARR_MATA.mod | kalman > GARR_MATA.posS

gAGE/UPC A.2.3.1 Differential positioning.


@ J. Sanz & J.M. Juan 42
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

4.- Plotting the results:


- Kinematic mode:
graph.py -f GARR_MATA.posK -x1 -y2 -s. -l "North error"
-f GARR_MATA.posK -x1 -y3 -s. -l "East error"
-f GARR_MATA.posK -x1 -y4 -s. -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "GARR_MATA: 51 km: Differential Positioning"

- Static mode:
graph.py -f GARR_MATA.posS -x1 -y2 -s. -l "North error"
-f GARR_MATA.posS -x1 -y3 -s. -l "East error"
-f GARR_MATA.posS -x1 -y4 -s. -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "GARR_MATA: 51 km: Differential Positioning"

gAGE/UPC A.2.3.1 Differential positioning.


@ J. Sanz & J.M. Juan 43
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Questions:
• Compare the results with the previous case with a baseline of 280 km.
• Are we reaching a similar level of accuracy? Why?

gAGE/UPC A.2.3.1 Differential positioning.


@ J. Sanz & J.M. Juan 44
Research group of Astronomy & Geomatics
Technical University of Catalonia
Full model

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

Analyze the effect of the differential ionosphere on the differential


positioning of MATA relative to GARR station:

Follow the next steps:


1. Using file D_GARR_MATA.obs plot the differential ionospheric
correction (from Klobuchar model) between EBRE and CREU.

2. Repeat the previous process, but without applying the


ionospheric correction. Compare the results

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 45
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Plotting the Klobuchar differential ionospheric correction:


graph.py -f D_GARR_MATA.obs -x4 -y'11' --yn -0.8 --yx 0.8
-t "GARR-MATA: 51km: Nominal diff Iono (Klob)"

Question:
Justify the pattern seen in the
nominal (Klobuchar) ionospheric
corrections.
Compare the plot with that of the
280km baseline (slide #26). Do the
results perform as expected?

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 46
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

Computing the differential solution, but without using ionospheric


corrections:

1.- Building the navigation equations system for differential positioning,


but without using the ionospheric corrections:
cat D_GARR_MATA.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$10,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'> D_GARR_MATA.mod

2.- Computing the user solution for differential positioning:


cp kalman.nml_wn kalman.nml
Kinematic:
cat D_GARR_MATA.mod | kalman > GARR_MATA.posK

cp kalman.nml_ct kalman.nml
Static:
cat D_GARR_MATA.mod | kalman > GARR_MATA.posS

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 47
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Question:
• Do the results confirm the expected effect of neglecting the ionospheric
corrections for this baseline (using code measurements ) at the user level?

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 48
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

Question:
• Do the results confirm the expected effect of neglecting the ionospheric
corrections for this baseline (using code measurements ) at the user level?

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 49
Research group of Astronomy & Geomatics
Technical University of Catalonia
No ionospheric corrections
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Analyze the effect of the differential Troposphere on the differential


positioning of MATA relative to GARR station:

Follow the next steps:


1. Using file D_GARR_MATA.obs plot the differential trpospheric
correction (from nominal model) between EBRE and CREU.

2. Repeat the previous process, but without applying the


tropospheric correction. Compare the results.

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 50
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

Plotting the nominal differential tropospheric correction:


graph.py -f D_GARR_MATA.obs -x4 -y'10' --yn -8 --yx 8
-t "GARR_MATA: 51km: Nominal diff Tropo"

Question:
Justify the pattern seen in the
nominal tropospheric corrections.
Compare the plot with that of the
280km baseline (slide #31). Do the
results perform as expected?

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 51
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Computing the differential solution, but without using tropospheric


corrections:

1.- Building the navigation equations system for differential positioning,


but without using the tropospheric corrections:
cat D_GARR_MATA.obs | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$11,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'> D_GARR_MATA.mod

2.- Computing the user solution for differential positioning:


cp kalman.nml_wn kalman.nml
Kinematic:
cat D_GARR_MATA.mod | kalman > GARR_MATA.posK

cp kalman.nml_ct kalman.nml
Static:
cat D_GARR_MATA.mod | kalman > GARR_MATA.posS

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 52
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections

A.2. Differential positioning of GARR_MATA receivers


(Short baseline: 51 km)

Question:
• Do the results confirm the expected effect of neglecting the tropospheric
corrections for this baseline (using code measurements ) at the user level?

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 53
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections
A.2. Differential positioning of GARR_MATA receivers
(Short baseline: 51 km)

Question:
• Discuss the error found at the user level for the 50 Km of baseline.
• Is the error level similar to the error seen with the 280km of baseline (slide 34#)?
• Should the tropospheric corrections still be applied for these baselines?

gAGE/UPC A.2.3.2. Differential positioning.


@ J. Sanz & J.M. Juan 54
Research group of Astronomy & Geomatics
Technical University of Catalonia
No tropospheric corrections

OVERVIEW
Ž Introduction: gLAB processing in command line

Ž Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

¾ Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 55


Research group of Astronomy & Geomatics
Technical University of Catalonia
Session B

Differential positioning
Orbit errors

gAGE/UPC @ J. Sanz & J.M. Juan 56


Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Orbit error effect on Differential positioning.

The target of this exercise is to asses the satellite orbit error on


absolute and differential positioning.

This will be done by modifying the broadcast orbit parameters to


generate an Along-track orbit error of about 2000m and,
positioning two receivers with these corrupted orbits.

The user positioning error using the original and the corrupted orbits
will be compared for absolute and differential positioning, with the
receivers and baselines used in the previous session.

gAGE/UPC B. Differential positioning.


@ J. Sanz & J.M. Juan 57
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
Ephemeris Errors and Geographic decorrelation

Position from
Satellite location broadcast Differential range error
error ephemeris due to satellite obit error
True position
H ε˜
ρuser
Uuser ρuser ρref
GU ε˜ ε˜
ρ ref
Uuser Uref
ε˜
U ref
Uuser
b sin I b
GU  ε T ˜ uˆ  ε T ˜ sin I uˆ
U U
b Where: b = b bˆ
Uref  ε T I  ρˆ ˜ ρˆ T
U is the baseline vector

A conservative bound: b
GU  H
User
with a baseline b 20km
U
Reference Station 20 1
GU  H H
20000 1000

gAGE/UPC B. Differential positioning.


@ J. Sanz & J.M. Juan 58
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

B. Orbit error effect.

Injecting an error to broadcast orbits:


Along-track Error (PRN17)
The following ephemeris block of PRN17 is modified
In order to simulate an Along-track error of about 2000m.
The corrupted file is renamed as: brdc0770.10nERR

17 10 3 18 20 0 0.0 1.379540190101E-04 2.842170943040E-12 0.000000000000E+00


7.800000000000E+01-5.059375000000E+01 4.506973447820E-09-2.983492318682E+00
-9.257976353169E-05 5.277505260892E-03 8.186325430870E-06 5.153578153610E+03
4.176000000000E+05-5.401670932770E-08-4.040348681654E-01-7.636845111847E-08
9.603630515702E-01 2.215312500000E+02-2.547856603060E+00-7.964974630307E-09
-3.771585673111E-10 1.000000000000E+00 1.575000000000E+03 0.000000000000E+00
2.000000000000E+00 0.000000000000E+00-1.024454832077E-08 7.800000000000E+01
4.104180000000E+05 4.000000000000E+00

diff brdc0770.10n brdc0770.10nERR- --------------------------------------------------


< -2.579763531685E-06 5.277505260892E-03 8.186325430870E-06 5.153578153610E+03
> -9.257976353169E-05 5.277505260892E-03 8.186325430870E-06 5.153578153610E+03
---------------------------------------------------------------------------------

gAGE/UPC B. Differential positioning.


@ J. Sanz & J.M. Juan 59
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
By Miguel Juan Zornoza
gAGE
ε • Errors over the hyperboloid (i.e.
U B  U A ctt ) will not produce
û differential range errors.
research group of Astronomy and Geomatics

• The highest error is given by the


vector û , orthogonal to the
hyperboloid and over the plain
containing the baseline vector b̂
and the LoS vector ρ̂ .
Note:
Being the baseline b much smaller than the
distance to the satellite, we can assume
a ( U B  U A ) / 2 : hyperboloid semiaxis that the LoS vectors from A and B receives
are essentially identical to U.
b / 2 : focal length That is, U B # U A # U

1
where a
2
b cos I u
ρˆ u bˆ u ρˆ
bˆ ρˆ T ˜ ρˆ - ρˆ ρˆ T ˜bˆ
I is NOT the elevation of ray.
Note: in this 3D problem
I bˆ  ρˆ ˜ ρˆ T bˆ I  ρˆ ˜ ρˆ bˆ
T

Note: u sin I uˆ
Differential range error GU produced by an
orbit error H parallel to vector û Note: being uˆ a vector orthogonal
Let GH { H to the LoS ρˆ , thence, H ε T uˆ
Thence:
gAGE/UPC

GU { G ( U B  U A ) 2G a
b sin I b
wa wa wI wI GU  ε T ˜ uˆ  ε T ˜ sin I uˆ
2
wH
GH 2
wI wH
GH b sin I
wH
GH U U
b
b sin I
1
GH  ε T I  ρˆ ˜ ρˆ T Where: b = b bˆ
U
Master of Science in GNSS
Note: ε A ρ Ÿ G
GH U GI U is the baseline
J. Sanz Subirana, JM. Juan Zornoza, M. Hernández-Pajares, vector

OVERVIEW
Ž Introduction: gLAB processing in command line

Ž Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

¾ Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 61


Research group of Astronomy & Geomatics
Technical University of Catalonia
B1. Orbit error: Differential positioning
of EBRE-CREU receivers (Long baseline: 288 km)

Repeat the computation of the absolute positioning of receivers EBRE and CREU, but
using the corrupted ephemeris file brdc0770.10nERR.

Model Components computation


• The script "ObsFile1.scr" generates a data file “STA.obs” with the following
content
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion Elev Azim Prefit]

• Run this script for EBRE and CREU receivers. Rename as STA.obsERR the
output files ObsFile1.scr EBRE0770.10o brdc0770.10nERR
mv EBRE.obs EBRE.obsERR
ObsFile1.scr CREU0770.10o brdc0770.10nERR
mv EBRE.obs EBRE.obsERR

• Generate the navigation equations system for absolute positioning for each
receiver and compute the user solution (see the next two slides).

gAGE/UPC B.1.1. Absolute positioning.


@ J. Sanz & J.M. Juan 62
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

B1. Orbit error: Differential positioning


of EBRE-CREU receivers (Long baseline: 288 km)

1.- Building the navigation equations system for absolute positioning:


cat EBRE.obsERR | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> EBRE.modERR

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat EBRE.modERR | kalman > EBRE.posERR

3.- Plotting the results:


graph.py -f EBRE.posERR -x1 -y2 -s.- -l "North error"
-f EBRE.posERR -x1 -y3 -s.- -l "East error"
-f EBRE.posERR -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -300 --yx 300
-t "EBRE: SPP: 2000m Along-Track orbit error"

gAGE/UPC B.1.1. Absolute positioning.


@ J. Sanz & J.M. Juan 63
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
B1. Orbit error: Differential positioning
of EBRE-CREU receivers (Long baseline: 288 km)

1.- Building the navigation equations system for absolute positioning:


cat CREU.obsERR | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> CREU.modERR

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat CREU.modERR | kalman > CREU.posERR

3.- Plotting the results:


graph.py -f CREU.posERR -x1 -y2 -s.- -l "North error"
-f CREU.posERR -x1 -y3 -s.- -l "East error"
-f CREU.posERR -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -300 --yx 300
-t "CREU: SPP: 2000m Along-Track orbit error"

gAGE/UPC B.1.1. Absolute positioning.


@ J. Sanz & J.M. Juan 64
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

B1. Orbit error: Differential positioning


of EBRE-CREU receivers (Long baseline: 288 km)

Question:
• Is the impact on user positioning error similar for both receivers?
• From these plots, what is the expected level of error in differential positioning?

gAGE/UPC B.1.1. Absolute positioning.


@ J. Sanz & J.M. Juan 65
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
B1. Orbit error: Differential positioning
of EBRE-CREU receivers (Long baseline: 288 km)

Analyse the effect of the 2000m orbit error on the differential positioning of
CREU receiver relative to EBRE, with 280km of baseline.

Using the files EBRE.obsERR and CREU.obsERR, follow next


steps:
1. Compute the single differences of measurements and model
components.
2. Build the navigation equations system for the differential
positioning of CREU receiver (user) relative to EBRE
(reference station).
3. Compute the user solution in kinematic mode.
4. Plot the results and discuss the positioning error found.

gAGE/UPC B.1.2. Differential positioning.


@ J. Sanz & J.M. Juan 66
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

B1. Orbit error: Differential positioning


of EBRE-CREU receivers (Long baseline: 288 km)

1.- Computing the single differences of measurements and model


components. Dobs.scr EBRE.obsERR CREU.obsERR
mv D_EBRE_CREU.obs D_EBRE_CREU.obsERR

2.- Building the navigation equations system for differential positioning:


cat D_EBRE_CREU.obsERR | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$10-$11,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'>D_EBRE_CREU.modERR

3.- Computing the user solution for differential positioning:


cp kalman.nml_wn kalman.nml
Kinematic:
cat D_EBRE_CREU.modERR| kalman > EBRE_CREU.posKERR

gAGE/UPC B.1.2. Differential positioning.


@ J. Sanz & J.M. Juan 67
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
B1. Orbit error: Differential positioning
of EBRE-CREU receivers (Long baseline: 288 km)

graph.py -f D_EBRE_CREU.modERR -x1 -y2 -s. -l "North error"


4.- Plotting -f D_EBRE_CREU.modERR -x1 -y3 -s. -l "East error"
-f D_EBRE_CREU.modERR -x1 -y4 -s. -l "UP error"
results: --xl "time (s)" --yl "error (m)" --yn -15 --yx 15
-t "EBRE-CREU 280km: SPP: 2000m Along-Track orbit error"

Question:
• Assuming an orbit error
of 2000m (see slide #87),
compute a threshold for
the differential error.

gAGE/UPC B.1.2. Differential positioning.


@ J. Sanz & J.M. Juan 68
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

OVERVIEW
Ž Introduction: gLAB processing in command line

Ž Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

¾ Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 69


Research group of Astronomy & Geomatics
Technical University of Catalonia
B2. Orbit error: Differential positioning
of GARR-MATA receivers (Short baseline: 51 km)

Repeat the computation of the absolute positioning of receivers GARR and MATA, but
using the corrupted ephemeris file brdc0770.10nERR.

Model Components computation


• The script "ObsFile1.scr" generates a data file “STA.obs” with the following
content
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion Elev Azim Prefit]

• Run this script for GARR and MATA receivers. Rename as STA.obsERR the
output files ObsFile1.scr GARR0770.10o brdc0770.10nERR
mv GARR.obs GARR.obsERR
ObsFile1.scr MATA0770.10o brdc0770.10nERR
mv MATA.obs MATA.obsERR

• Generate the navigation equations system for absolute positioning for each
receiver and compute the user solution (see next two slides).

gAGE/UPC B.2.1. Absolute positioning.


@ J. Sanz & J.M. Juan 70
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

B2. Orbit error: Differential positioning


of GARR-MATA receivers (Short baseline: 51 km)

1.- Building the navigation equations system for absolute positioning:


cat GARR.obsERR | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> GARR.modERR

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat GARR.modERR | kalman > GARR.posERR

3.- Plotting the results:


graph.py -f GARR.posERR -x1 -y2 -s.- -l "North error"
-f GARR.posERR -x1 -y3 -s.- -l "East error"
-f GARR.posERR -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -300 --yx 300
-t "GARR: SPP: 2000m Along-Track orbit error"

gAGE/UPC B.2.1. Absolute positioning.


@ J. Sanz & J.M. Juan 71
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
B2. Orbit error: Differential positioning
of GARR-MATA receivers (Short baseline: 51 km)

1.- Building the navigation equations system for absolute positioning:


cat MATA.obsERR | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4, $14 ,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1 }'> MATA.modERR

2.- Computing the user solution for absolute positioning:


cp kalman.nml_wn kalman.nml
cat MATA.modERR | kalman > MATA.posERR

3.- Plotting the results:


graph.py -f MATA.posERR -x1 -y2 -s.- -l "North error"
-f MATA.posERR -x1 -y3 -s.- -l "East error"
-f MATA.posERR -x1 -y4 -s.- -l "UP error"
--xl "time (s)" --yl "error (m)" --yn -300 --yx 300
-t "MATA: SPP: 2000m Along-Track orbit error"

gAGE/UPC B.2.1. Absolute positioning.


@ J. Sanz & J.M. Juan 72
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

B2. Orbit error: Differential positioning


of GARR-MATA receivers (Short baseline: 51 km)

Question:
• Is the impact on user positioning error similar for both receivers?
• From these plots, what is the expected level of error in differential positioning?

gAGE/UPC B.2.1. Absolute positioning.


@ J. Sanz & J.M. Juan 73
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
B2. Orbit error: Differential positioning
of GARR-MATA receivers (Short baseline: 51 km)

Analyse the effect of the 2000m orbit error on the differential positioning of
MATA receiver relative to GARR, with 51km of baseline.

Using the files GARR.obsERR and MATA.obsERR, follow the next


steps:
1. Compute the single differences of measurements and model
components.
2. Build the navigation equations system for the differential
positioning of MATA receiver (user) relative to GARR
(reference station).
3. Compute the user solution in kinematic mode.
4. Plot the results and discuss the positioning error found.

gAGE/UPC B.2.2. Differential positioning.


@ J. Sanz & J.M. Juan 74
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

B2. Orbit error: Differential positioning


of GARR-MATA receivers (Short baseline: 51 km)

1. Computing the single differences of measurements and model


components.
Dobs.scr GARR.obsERR MATA.obsERR

2.- Building the navigation equations system for differential positioning:


cat D_GARR_MATA.obsERR | gawk 'BEGIN{g2r=atan2(1,1)/45}{e=$12*g2r;a=$13*g2r;
printf "%8.2f %8.4f %8.4f %8.4f %8.4f %1i \n",
$4,$5-$9-$10-$11,-cos(e)*sin(a),-cos(e)*cos(a),-sin(e),1}'>D_GARR_MATA.modERR

3.- Computing the user solution for differential positioning:

cp kalman.nml_wn kalman.nml
Kinematic:
cat D_GARR_MATA.modERR| kalman > GARR_MATA.posKERR

gAGE/UPC B.2.2. Differential positioning.


@ J. Sanz & J.M. Juan 75
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error
B2. Orbit error: Differential positioning
of GARR-MATA receivers (Short baseline: 51 km)

graph.py -f D_GARR_MATA.modERR -x1 -y2 -s. -l "North error"


4.- Plotting -f D_GARR_MATA.modERR -x1 -y3 -s. -l "East error"
-f D_GARR_MATA.modERR -x1 -y4 -s. -l "UP error"
results: --xl "time (s)" --yl "error (m)" --yn -8 --yx 8
-t "GARR_MATA 51km: SPP: 2000m Along-Track orbit error"

Question:
• Assuming an orbit error
of 2000m (see slide #87),
compute a threshold for
the differential error.

gAGE/UPC B.2.2. Differential positioning.


@ J. Sanz & J.M. Juan 76
Research group of Astronomy & Geomatics
Technical University of Catalonia
Orbit error

OVERVIEW
Ž Introduction: gLAB processing in command line

Ž Session A: Atmospheric effects


• A1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• A2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)

¾ Session B: Orbit error effects


• B1 Differential positioning of EBRE-CREU receivers (Long baseline: 288 km)
• B2 Differential positioning of GARR-MATA receivers (Short baseline: 51 km)
• B3 Range domain orbit error.

gAGE/UPC @ J. Sanz & J.M. Juan 77


Research group of Astronomy & Geomatics
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

Analyze the orbit error of PRN17 in the Range Domain.

The following procedure is proposed:


Using the files brdc0770.10n and brdc0770.10nERR, follow the
next steps:
1. Compute the absolute orbit for satellite PNR17 error by
comparing the corrupted orbits with the original ones.
2. Compute the range error for the receivers EBRE and CREU
3. Compute the differential range error between EBRE and CREU
4. Compute the predicted range error between EBRE and CREU
and compare with the present one.

gAGE/UPC B.3. Differential positioning.


@ J. Sanz & J.M. Juan 78
Research group of Astronomy & Geomatics
Technical University of Catalonia
Range Domain Orbit error

B3. Orbit error: Differential positioning


Range Domain Orbit Error

B.3.1.- Absolute error computation for satellite PRN17:

Compute the discrepance between the satellite coordinates predicted


from files brdc0770.10n and brdc0770.10nERR
gLAB_linux -input:nav brdc0770.10n -input:nav brdc0770.10nERR -pre:dec 30 |
grep SATDIFF > dif.sel

Plot the results for satellite PRN17:


graph.py -f dif.sel -x4 -y11 -so -c '($6==17)' --cl y -l "Rad"
-f dif.sel -x4 -y12 -s. -c '($6==17)' --cl r -l "Alon"
-f dif.sel -x4 -y13 -s. -c '($6==17)' --cl g -l "Cross"
--xn 55000 --xl "GPS seconds of day" --yl "metres" -t "PRN17: Orbit error"

gAGE/UPC B.3.1. Absolute Orbit error @ J. Sanz & J.M. Juan 79


Research group of Astronomy & Geomatics
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

gAGE/UPC B.3.1. Absolute Orbit error @ J. Sanz & J.M. Juan 80


Research group of Astronomy & Geomatics
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

B.3.2.- Absolute Range error computation for satellite PRN17 from EBRE:

1. Using the original orbits brdc0770.10n, compute the geometric


range between EBRE and satellite PRN17 (i.e rang.ebre file).

1.1- Compute the satellite coordinates with the original 1 2 3 4


orbits and generate a file with the following content: [time X Y Z]

gLAB_linux -input:nav brdc0770.10n -pre:dec 30 | grep SATPVT |


gawk '{if ($6==17) print $4,$7,$8,$9}' > xyz.brdc

1.2.- Using the coordinates EBRE=[4833520.1197 41537.2015 4147461.6263],


compute the geometric range between EBRE and satellite PRN17:
cat xyz.brdc | gawk 'BEGIN{x0=4833520.1197;y0=41537.2015;z0=4147461.6263}
{dx=$2-x0;dy=$3-y0;dz=$4-z0;rho=sqrt(dx**2+dy**2+dz**2);
printf "%s %16.6f \n", $1,rho}' > rang.ebre

gAGE/UPC B.3.2. Absolute Range Orbit error: @ J. Sanz & J.M. Juan 81
Research group of Astronomy & Geomatics EBRE
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

2. Repeat the previous computation using the corrupted orbits file


brdc0770.10nERR (i.e. generate the rang.ebreERR file).

2.1- Compute the satellite coordinates with the corrupted 1 2 3 4


orbits and generate a file with the following content: [time X Y Z]

gLAB_linux -input:nav brdc0770.10nERR -pre:dec 30 | grep SATPVT |


gawk '{if ($6==17) print $4,$7,$8,$9}' > xyz.brdcERR

2.2.- Using the coordinates EBRE=[4833520.1197 41537.2015 4147461.6263],


compute the geometric range between EBRE and satellite PRN17:
cat xyz.brdcERR|gawk 'BEGIN{x0=4833520.1197;y0=41537.2015;z0=4147461.6263}
{dx=$2-x0;dy=$3-y0;dz=$4-z0;rho=sqrt(dx**2+dy**2+dz**2);
printf "%s %16.6f \n", $1,rho}' > rang.ebreERR

gAGE/UPC B.3.2. Absolute Range Orbit error: @ J. Sanz & J.M. Juan 82
Research group of Astronomy & Geomatics EBRE
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

3. Calculate the discrepancy between the geometric ranges computed


using the original and the corrupted orbits:
cat rang.ebre rang.ebreERR |
gawk '{i=$1*1;if (length(r[i])==0) {r[i]=$2}else{print i,$2-r[i]}}' > drang.ebre

4.- Plot the results


graph.py -f drang.ebre -x1 -y2 -l"EBRE"
--xl "time (s)" --yl "error (m)" --yx 600
-t"PRN17: 2000m AT orbit error PRN17: EBRE: Range Error"

gAGE/UPC B.3.2. Absolute Range Orbit error: @ J. Sanz & J.M. Juan 83
Research group of Astronomy & Geomatics EBRE
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

gAGE/UPC B.3.2. Absolute Range Orbit error: @ J. Sanz & J.M. Juan 84
Research group of Astronomy & Geomatics EBRE
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

Absolute Range error computation for satellite PRN17 from CREU:

a) Repeat the previous computations of section B.3.2 for the


receiver CREU.

b) Compare in the same plot the results for EBRE and CREU

gAGE/UPC B.3.2. Absolute Range Orbit error: @ J. Sanz & J.M. Juan 85
Research group of Astronomy & Geomatics CREU
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

gAGE/UPC B.3.2. Absolute Range Orbit error: @ J. Sanz & J.M. Juan 86
Research group of Astronomy & Geomatics EBRE
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

gAGE/UPC B.3.2. Absolute Range Orbit error: @ J. Sanz & J.M. Juan 87
Research group of Astronomy & Geomatics EBRE and CREU
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

B.3.3 Differential range Error computation

Using the previous files drang.ebre and drang.creu,


compute the differential range orbit error of PRN17 between the
receivers EBRE and CREU
cat drang.ebre drang.creu | gawk '{i=$1*1;if (length(r[i])==0)
{r[i]=$2}else{printf "%s %16.6f \n", i,$2-r[i]}}' > ddrang.creu_ebre

Plot the results


graph.py -f ddrang.creu_ebre -x1 -y2 -s. --cl r --yn -10 --yx 35
--xl "time (s)" --yl "error (m)"
-t"PRN17: 2000m AT orbit error PRN17: EBRE-CREU: Diff Range Error"

gAGE/UPC B.3.3. Differential Range Orbit error: @ J. Sanz & J.M. Juan 88
Research group of Astronomy & Geomatics EBRE-CREU
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

gAGE/UPC B.3.3. Differential Range Orbit error: @ J. Sanz & J.M. Juan 89
Research group of Astronomy & Geomatics EBRE-CREU
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

Results comparison

gAGE/UPC B.3.3. Differential Range Orbit error: @ J. Sanz & J.M. Juan 90
Research group of Astronomy & Geomatics EBRE-CREU
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

B.3.4. Prediction of the differential range orbit error


Verify the next expression, which relates the orbit error H with the
differential range error GU:
ε
ε
GU 
b
U
εT ˜ u 
b
U ¬
ε T ˜ ªbˆ - ρˆ ρˆ T ˜bˆ º
¼

Baseline vector
b
b b rB - rA
rA
rB
rA [4833520.1197, 41537.2015, 4147461.6263]
[4833
A: EBRE B: CREU rB [4715420.3054, 273177.8809, 4271946.7957]
[4715
Receiver Receiver
(ref station) (user)

gAGE/UPC B.3.4. Differential Range Orbit error: @ J. Sanz & J.M. Juan 91
Research group of Astronomy & Geomatics Prediction
Technical University of Catalonia
B3. Orbit error: Differential positioning
Range Domain Orbit Error

The following procedure can be applied:


1.- Compute the orbit error H vector from the original and corrupted orbits:
gLAB_linux -input:nav brdc0770.10n -pre:dec 30 |grep SATPVT
|gawk '{if ($6==17) print $4,$7,$8,$9}' > xyz.brdc
gLAB_linux -input:nav brdc0770.10nERR -pre:dec 30 |grep SATPVT
|gawk '{if ($6==17) print $4,$7,$8,$9}'> xyz.brdcERR

2.- From previous results, generate a file err.dat with the orbit error (H) vector
and the Line-Of-Sight (U) from CREU receiver (with coordinates [4715420.3054,
273177.8809, 4271946.7957]), according to format: err.dat=[sec Hx Hy Hz Ux Uy Uz]

cat xyz.brdc xyz.brdcERR|awk 'BEGIN{xb=4715420.3054;yb=273177.8809;zb= 4271946.7957}


{i=$1*1;dx=$2-xb;dy=$3-yb;dz=$4-zb;rho=sqrt(dx**2+dy**2+dz**2);
if (length(x[i])==0){x[i]=$2;y[i]=$3;z[i]=$4}
else{printf "%6i %16.6f %16.6f %16.6f %16.6f %16.6f %16.6f %16.6f \n",
i,$2-x[i],$3-y[i],$4-z[i],dx,dy,dz,rho}}' |sort -n -k +1> err.dat

gAGE/UPC B.3.4. Differential Range Orbit error: @ J. Sanz & J.M. Juan 92
Research group of Astronomy & Geomatics Prediction
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

3.- Using the expression:


Baseline vector
GU 
b
U
εT ˜ u 
b
U ¬
ε T ˜ ªbˆ - ρˆ ρˆ T ˜bˆ º
¼ b rB - rA

and the receivers’ coordinates:


EBRE: rA [4833520.1197, 41537.2015, 4147461.6263]
[4833
CREU: rB [4715420.3054, 273177.8809, 4271946.7957]
[4715
Compute the predicted differential orbit error dU for the receiver CREU
relative to EBRE station.
cat err.dat|gawk 'BEGIN{xa=4833520.1197;ya=41537.2015;za= 4147461.6263;
xb=4715420.3054;yb=273177.8809;zb= 4271946.7957; bx=xb-xa; by=yb-ya; bz=zb-za;
b=sqrt(bx*bx+by*by+bz*cz)} {rtc=($5*bx+$6*by+$7*bz)/$8/b;ux=bx/cb-$5/$8*rtc;
uy=by/b-$6/$8*rtc;uz=bz/b-$7/$8*rtc;dr=-b/$8*($2*ux+$3*uy+$4*uz);
printf "%6i %16.6f \n", $1,dr}' > rang.err

gAGE/UPC B.3.4. Differential Range Orbit error: @ J. Sanz & J.M. Juan 93
Research group of Astronomy & Geomatics Prediction
Technical University of Catalonia
B4. Orbit error: Differential positioning
Range Domain Orbit Error

Plot the results and compare with the result found in the previous
exercise B.3.3 (i.e. with those of file ddrang.creu_ebre):
graph.py -f ddrang.creu_ebre -x1 -y2 -so --cl r -l "Observed"
-f rang.err -x1 -y2 -l "Predicted"
--xl "time (s)" --yl "error (m)"
-t"PRN17: 2000m AT orbit error PRN17: EBRE-CREU: Diff Range Error"
--yn -10 --yx 35

gAGE/UPC B.3.4. Differential Range Orbit error: @ J. Sanz & J.M. Juan 94
Research group of Astronomy & Geomatics Prediction
Technical University of Catalonia

B3. Orbit error: Differential positioning


Range Domain Orbit Error

gAGE/UPC B.3.4. Differential Range Orbit error: @ J. Sanz & J.M. Juan 95
Research group of Astronomy & Geomatics Prediction
Technical University of Catalonia
Thanks for your
attention

gAGE/UPC @ J. Sanz & J.M. Juan 96


Research group of Astronomy & Geomatics
Technical University of Catalonia

Acknowledgements

• To Institut Cartografic de Catalunya for the data files of receivers EBRE,


CREU, GARR and MATA.
• To Adrià Rovira-Garcia for his contribution to the editing of this material
and gLAB updating and integrating this learning material into the GLUE.

The ESA/UPC GNSS-Lab Tool suite (gLAB) has been developed under the
ESA Education Office contract N. P1081434.

gAGE/UPC @ J. Sanz & J.M. Juan


Research group of Astronomy & Geomatics
Technical University of Catalonia
Tutorial 4
Carrier ambiguity fixing

Contact: [email protected]
Web site: http://www.gage.upc.edu

Slides associated to
gLAB version 2.0.0

gAGE/UPC @ J. Sanz & J.M. Juan 1


Research group of Astronomy & Geomatics
Technical University of Catalonia

Aim of this tutorial


Ž This tutorial is devoted to analyse and assess the ambiguity fixing and the
differential positioning with carrier phase measurements (L1, L2). Two receivers
UPC1 and UPC2 with a baseline of about 40 metres are considered.

Ž This study includes ambiguity fixing using the “cascade method” (i.e., fixing one at
a time) and with the LAMBDA method.

The effect of synchronization errors between the reference station and the user is
and its effect on the navigation and ambiguity fixing is also analysed

Ž All software tools (including gLAB) and associated files for the laboratory session
are included in the CD-ROM or USB stick associated with this tutorial.

gAGE/UPC @ J. Sanz & J.M. Juan 3


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
Ž Introduction: gLAB processing in command line.
Ž Preliminary computations: Data files.
Ž Session A: Fixing DD ambiguities one at a time: UPC1-UPC2.

Ž Session B: Assessing the fixed ambiguities in navigation:


Differential positioning of UPC1-UPC2 receivers.

Ž Session C: Fixing DD ambiguities with LAMBDA method.

Note: UPC1-UPC2 receivers baseline: 37.95 metres.


gAGE/UPC @ J. Sanz & J.M. Juan 4
Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
¾ Introduction: gLAB processing in command line.
Ž Preliminary computations: Data files.
Ž Session A: Fixing DD ambiguities one at a time: UPC1-UPC2.

Ž Session B: Assessing the fixed ambiguities in navigation:


Differential positioning of UPC1-UPC2 receivers.

Ž Session C: Fixing DD ambiguities with LAMBDA method.

Note: UPC1-UPC2 receivers baseline: 37.95 metres.


gAGE/UPC @ J. Sanz & J.M. Juan 5
Research group of Astronomy & Geomatics
Technical University of Catalonia
gLAB processing in command line

A “notepad”
with the
command
line sentence
is provided to
facilitate the
sentence
writing: just
“copy” and
“ paste”
Console to execute
from
“command line” notepad to
sentences the working
terminal.

gAGE/UPC @ J. Sanz & J.M. Juan 6


Research group of Astronomy & Geomatics
Technical University of Catalonia

gLAB processing in command line


The different messages provided by
gLAB and its content can be found
in the [OUTPUT] section.

By placing the mouse on a given


message name, a tooltip appears
describing the different fields.

In console mode: execute

gLAB_linux -messages

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 7
OVERVIEW
Ž Introduction: gLAB processing in command line.
¾ Preliminary computations: Data files.

Ž Session A: Fixing DD ambiguities one at a time: UPC1-UPC2.

Ž Session B: Assessing the fixed ambiguities in navigation:


Differential positioning of UPC1-UPC2 receivers.

Ž Session C: Fixing DD ambiguities with LAMBDA method.

Note: UPC1-UPC2 receivers baseline: 37.95 metres.

gAGE/UPC @ J. Sanz & J.M. Juan 8


Research group of Astronomy & Geomatics
Technical University of Catalonia

Previous

Preliminary Computations

gAGE/UPC @ J. Sanz & J.M. Juan 9


Research group of Astronomy & Geomatics
Technical University of Catalonia
P. Preliminary computations
Ž This section is devoted to prepare the data files to be used in the exercises.

Ž These data files will include the code and carrier measurements and the model
components: geometric range, nominal troposphere and ionosphere corrections,
satellite elevation and azimuth from each receiver…

Ž This data processing will be done with gLAB for each individual receiver.

Ž This preliminary processing will provide the baseline data files to perform
computations easily using basic tools (such as awk for data files handling, to
compute Double Differences of measurements) or using octave (MATLAB) scripts
for the LAMBDA method implementation.

Ž Detailed guidelines for self learning students are provided in this tutorial and in
its associated notepad text file.

gAGE/UPC @ J. Sanz & J.M. Juan 10


Research group of Astronomy & Geomatics
Technical University of Catalonia

P. Preliminary computations
P1. Model Components computation
• The script "ObsFile.scr" generates a data file with the following content

1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

• Run this script for all receivers:


ObsFile.scr UPC10770.11o brdc0770.11n
ObsFile.scr UPC20770.11o brdc0770.11n

• Merge all files into a single file:

cat ????.obs > ObsFile.dat

gAGE/UPC P1. Model components computation @ J. Sanz & J.M. Juan 11


Research group of Astronomy & Geomatics
Technical University of Catalonia
P. Preliminary computations
Selecting measurements: Time interval [18000:19900]
• To simplify computations, a time interval with always the same set of
satellites in view and without cycle-slips is selected.
• Moreover an elevation mask of 10 degrees will be applied.

If the satellites change or cycle-slips appear during the data processing


interval, care with the associated parameters handling must be taken in
the navigation filter. Set up new parameters when new satellites appear
and treat the ambiguities as constant between cycle-slips and white
noise when a cycle-slip happens.

gAGE/UPC P1. Model components computation @ J. Sanz & J.M. Juan 12


Research group of Astronomy & Geomatics
Technical University of Catalonia

P. Preliminary computations
Selecting measurements: Time interval [18000:19900]
• Select the satellites in the time interval [18000:19900] with elevation over 10º

cat ObsFile.dat|gawk '{if ($4>=18000 && $4<=19900 && $12>10) print $0}' >
obs.dat

• Reference satellite (over the time interval [18000:19900])

Confirm that the satellite PRN06 is the satellite with the highest elevation
(this satellite will be used as the reference satellite)

obs.dat Î
1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

gAGE/UPC P1. Model components computation @ J. Sanz & J.M. Juan 13


Research group of Astronomy & Geomatics
Technical University of Catalonia
P. Preliminary computations
P2. Double differences between receivers and satellites computation
The script "DDobs.scr" computes the double differences between receivers
and satellites from file obs.dat. 1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 rho Trop Ion elev azim]

For instance, the following sentence:


DDobs.scr obs.dat UPC1 UPC2 06 03
generates the file
------------------- DD_{sta1}_{sta2}_{sat1}_{sat2}.dat ----------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[sta1 sta2 sat1 sat2 DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2]
<---- sta2 ---->
------------------------------------------------------------------------------------

Where the elevation (EL) and azimuth (AZ) are taken from station #2.
and where (EL1, AZ1) are for satellite #1 and (EL1, AZ1) are for satellite #2.

gAGE/UPC P2. Double Differences computation @ J. Sanz & J.M. Juan 14


Research group of Astronomy & Geomatics
Technical University of Catalonia

P. Preliminary computations
Compute the double differences between receivers UPC1 (reference) and
UPC2 and satellites PRN06 (reference) and [PRN 03, 07,16, 18, 19, 21,
22, 24]
DDobs.scr obs.dat UPC1 UPC2 06 03
DDobs.scr obs.dat UPC1 UPC2 06 07
DDobs.scr obs.dat UPC1 UPC2 06 16
DDobs.scr obs.dat UPC1 UPC2 06 18
DDobs.scr obs.dat UPC1 UPC2 06 19
DDobs.scr obs.dat UPC1 UPC2 06 21
DDobs.scr obs.dat UPC1 UPC2 06 22
DDobs.scr obs.dat UPC1 UPC2 06 24

Merge the files in a single file and sort by time:


cat DD_UPC1_UPC2_06_??.dat|sort -n -k +6 > DD_UPC1_UPC2_06_ALL.dat

gAGE/UPC P2. Double Differences computation @ J. Sanz & J.M. Juan 15


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
Ž Introduction: gLAB processing in command line.
Ž Preliminary computations: Data files.
¾ Session A: Fixing DD ambiguities one at a time: UPC1-UPC2.

Ž Session B: Assessing the fixed ambiguities in navigation:


Differential positioning of UPC1-UPC2 receivers.

Ž Session C: Fixing DD ambiguities with LAMBDA method.

Note: UPC1-UPC2 receivers baseline: 37.95 metres.

gAGE/UPC @ J. Sanz & J.M. Juan 16


Research group of Astronomy & Geomatics
Technical University of Catalonia

A. Fixing DD ambiguities one at a time: UPC1-UPC2

Ž This exercise is devoted to study the ambiguity fixing using the


cascade method, that is, fixing the ambiguities one at a time.

Ž In the first part, we are going to assess this approach for a single
frequency receiver, trying to fix DDN1 and DDN2 independently.
Ž In the second part, we are going to assess this approach for dual
frequency receivers, fixing first the wide-lane ambiguity DDNw and
afterwards DDN1 and DDN2.
Ž The results (i.e. the DDN1 and DDN2 ambiguities) will be assessed
in the next “Session B” by computing the navigation solution using
the carrier phases repaired with the fixed DDN1 and DDN2 ambig.
Ž Finally, in Session C, the LAMBDA method will be applied for
comparison.
gAGE/UPC @ J. Sanz & J.M. Juan 17
Research group of Astronomy & Geomatics
Technical University of Catalonia
gAGE
Resolving ambiguities one at a Time: single Freq.
A simple trial would be (for instance using L1 and P1):
research group of Astronomy and Geomatics

P1 jk U jk Q Pjk ª L1jk  P1 jk º
1 o L1jk  P1 jk O1 N1jk Q Pjk o Nˆ 1jk « »
L1jk U jk  O1 N1jk Q Ljk
1
¬ O1 ¼ roundoff
1
O1 20 cm
V P | 1m 1
1
jk
V Nˆ VP | 5
O1
jk jk
V L | 1cm
jk
1 1
1

N 1
Fail To much error (5 wavelengths)!
N  1/ 2 Note that, assuming a Gaussian
Good
distribution of errors, V Nˆ jk 1/ 2
N
guarantee only the 68% of success
1

N 1/ 2
N 1 As the ambiguity is constant (between cycle-
slips), we would try to reduce uncertainty by
gAGE/UPC

averaging the estimate on time, but we will


need 100 epochs to reduce noise up to ½ (but
Similar results with L2, P2 measurements
measurement errors are highly correlated on
time!)
Master of Science in GNSS @ J. Sanz & J.M. Juan
18

A1 Trying to fix ambiguities in Single frequency

A1.1 Fixing N1 and N2 independently:


Estimate graphically values of DDN1 and DDN2 (i.e. try to identify the true
ambiguity from the plot).
Hint:
From file DD_UPC1_UPC2_06_ALL.dat, generate the file DDN1N2.dat with the following
content: 1 2 3 4 5 6
[PRN sec DDN1 DDN2 nint(DDN1) nint(DDN2)]

where:
O; DDN2=[DDL2 -DDP2]/O
DDN1=[DDL1 -DDP1]/O

Be careful: “nint" in awk:


Note: nint(x)must be generated as:
“nint” means near-integer int(x+0.5*sign(x))

gAGE/UPC @ J. Sanz & J.M. Juan 19


Research group of Astronomy & Geomatics
Technical University of Catalonia
A1 Trying to fix ambiguities in Single frequency

----------------------------- DD_UPC1_UPC2_06_ALL.dat ------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 ]
<---- UPC2 ---->
------------------------------------------------------------------------------------

a) From file DD_UPC1_UPC2_06_ALL.dat, generate the file DDN1N2.dat with the


following content: 1 2 3 4 5 6
[PRN sec DDN1 DDN2 nint(DDN1) nint(DDN2)]

Execute, for instance:


gawk 'BEGIN{c=299792458;f0=10.23e+6;l1=c/(154*f0);l2=c/(120*f0)}
{A1=($8-$7)/l1; A2=($10-$9)/l2;if (A1!=0){signA1=A1/sqrt(A1*A1)}else{signA1=0};
if (A2!=0) {signA2=A2/sqrt(A2*A2)}else{signA2=0};
print $4,$6,A1,int(A1+0.5*signA1),A2,int(A2+0.5*signA2)}' DD_UPC1_UPC2_06_ALL.dat >
DDN1N2.dat

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 20
Research group of Astronomy & Geomatics
Technical University of Catalonia

A1 Trying to fix ambiguities in Single frequency

b) Plot DDN1 and DDN2 for the different satellites and discuss if the ambiguity
DDN1 and DDN2 can be fixed: 1 2 3 4 5 6
[PRN sec DDN1 DDN2 nint(DDN1) nint(DDN2)]

b1) DDN1 plot:

graph.py -f DDN1N2.dat -x2 -y3 -c '($1==16)' -s. -f DDN1N2.dat -x2 -y4 -c '($1==16)'
-sx --cl r --yn -4 --yx 10 --xl "time (s)" --yl "cycles L1" -t "DDN1 ambiguity: PRN16"

b2) DDN2 plot:


graph.py -f DDN1N2.dat -x2 -y5 -c '($1==16)' -s. -f DDN1N2.dat -x2 -y6 -c '($1==16)'
-sx --cl r --yn -8 --yx 6 --xl "time (s)" --yl "cycles L2" -t "DDN2 ambiguity: PRN16"

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 21
Research group of Astronomy & Geomatics
Technical University of Catalonia
A1 Trying to fix ambiguities in Single frequency

b1) DDN1 plot:


graph.py -f DDN1N2.dat -x2 -y3 -c '($1==16)' -s. -f DDN1N2.dat -x2 -y4 -c '($1==16)'
-sx --cl r --yn -4 --yx 10 --xl "time (s)" --yl "cycles L1" -t "DDN1 ambiguity: PRN16"

Questions:
1.- Explain what is the meaning
of this plot.
2.- Is it possible to identify the
integer ambiguity?
3.- How reliability can be
improved?

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 22
Research group of Astronomy & Geomatics
Technical University of Catalonia

A1 Trying to fix ambiguities in Single frequency

b2) DDN2 plot:


graph.py -f DDN1N2.dat -x2 -y5 -c '($1==16)' -s. -f DDN1N2.dat -x2 -y6 -c '($1==16)'
-sx --cl r --yn -8 --yx 6 --xl "time (s)" --yl "cycles L2" -t "DDN2 ambiguity: PRN16"

Questions:
1.- Explain what is the meaning
of this plot.
2.- Is it possible to identify the
integer ambiguity?
3.- How reliability can be
improved?

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 23
Research group of Astronomy & Geomatics
Technical University of Catalonia
A1 Trying to fix ambiguities in Single frequency

----------------------------- DD_UPC1_UPC2_06_ALL.dat ------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 ]
------------------------------------------------------------------------------------

c) Make plots to analyze the DDP1 and DDP2 code noise.


Hint:
From file DD_UPC1_UPC2_06_ALL.dat, generate the file P1P2noise.dat with
the following content: 1 2 3 4 5
[PRN sec DDP1-DDRho DDP2-DDRho]

Execute, for instance:

gawk '{print $4,$6,$7-$11,$9-$11}' DD_UPC1_UPC2_06_ALL.dat > P1P2noise.dat

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 24
Research group of Astronomy & Geomatics
Technical University of Catalonia

A1 Trying to fix ambiguities in Single frequency

c1 ) Depict the DDP1 code noise:


graph.py -f P1P2noise.dat -x2 -y3 -c '($1==16)' -so --yn -2 --yx 1.5 --xl "time (s)"
--yl "metres" -t "DDP1 noise: PRN16"

Questions:

Discuss why the ambiguities cannot


be fixed by rounding-off the
expression DDN1=[DDL1 -DDP1]/O O

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 25
Research group of Astronomy & Geomatics
Technical University of Catalonia
A1 Trying to fix ambiguities in Single frequency

c2 ) Depict the DDP2 code noise:


graph.py -f P1P2noise.dat -x2 -y4 -c '($1==16)' -so --yn -2 --yx 1.5 --xl "time (s)"
--yl "metres" -t "DDP2 noise: PRN16"

Questions:

Discuss why the ambiguities cannot


be fixed by rounding-off the
expression DDN2=[DDL2 –DDP2]/O

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 26
Research group of Astronomy & Geomatics
Technical University of Catalonia

A1 Trying to fix ambiguities in Single frequency

----------------------------- DD_UPC1_UPC2_06_ALL.dat ------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 ]
------------------------------------------------------------------------------------

d) Make plots to analyze the DDL1 and DDL2 carrier noise.


Hint:
From file DD_UPC1_UPC2_06_ALL.dat, generate the file L1L2noise.dat with
the following content: 1 2 3 4 5
[PRN sec DDL1-DDRho DDL2-DDRho]

Execute, for instance:

gawk '{print $4,$6,$8-$11,$10-$11}' DD_UPC1_UPC2_06_ALL.dat > L1L2noise.dat

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 27
Research group of Astronomy & Geomatics
Technical University of Catalonia
A1 Trying to fix ambiguities in Single frequency

d1) Depict the DDL1 code noise:


graph.py -f L1L2noise.dat -x2 -y3 -c '($1==16)' -so --yn 0.38 --yx 0.40 --xl "time (s)"
--yl "metres" -t "DDL1 noise: PRN16"

Questions:

Discuss the plot.


What is the level of noise?

Compare the noise with the


wavelength O=19.0cm

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 28
Research group of Astronomy & Geomatics
Technical University of Catalonia

A1 Trying to fix ambiguities in Single frequency

d2) Depict the DDL2 code noise:


graph.py –f L1L2noise.dat -x2 -y4 -c'($1==16)' -so --yn -0.24 --yx -0.22 --xl "time (s)"
--yl "metres" -t "DDL2 noise: PRN16"

Questions:

Discuss the plot.


What is the level of noise?

Compare the noise with the


wavelength O=24.4cm

gAGE/UPC A1. DDN1 and DDN2 in single frequency @ J. Sanz & J.M. Juan 29
Research group of Astronomy & Geomatics
Technical University of Catalonia
gAGE
Resolving ambiguities one at a Time: Dual Freq.
Dual frequency measurements: wide-laning with the Melbourne-Wübbena
research group of Astronomy and Geomatics

combination
NW N1  N 2
P1 jk U jk  Q Pjk f1 P1 jk  f 2 P2 jk OW
c
86.2 cm
1
PNjk U jk  Q Pjk f1  f 2
P2 jk
U jk
Q jk
P2
f1  f 2 N

f1 L1jk  f 2 L2jk V P | V P / 2 | 71cm


U jk  OW NWjk  Q Ljk
jk jk

U  O1 N Q LWjk
jk jk jk jk N 1
L 1 1 L1
f1  f 2 W
V L | 6 V L | 6 cm
jk jk
1

U  O2 N Q
W
jk jk jk jk
L 2 2 L2
p
LWjk  PNjk OW NWjk Q Pjk o ª LWjk  PNjk º
Nˆ Wjk « »
¬ OW
N

¼ roundoff
Fixing N1 (after fixing NW)
1 71cm
V Nˆ | VP 0.8
L L
jk
1
jk
2 O1 N 1
jk
 O2 N 2
jk
Q jk
L1  L2
jk
W OW N
jk
86 2cm
86.2
O1  O2 N1jk  O2 NWjk Q Ljk L 1 2
Now, with uncorrelated
O1 19.0 cm
ª L1jk  L2jk  O2 Nˆ Wjk º measurements from 10
gAGE/UPC

O2 24.4 cm Nˆ 1jk « » epochs will reduce noise up


O2  O1 5.4 cm ¬ O1  O2 ¼ roundoff to about ¼.
V L | 1cm
jk

1 1.4cm
1

V Nˆ | 2V jk 1/ 4
Nˆ Nˆ  Nˆ O1  O2
jk
jk jk jk 1 L1 5 4cm
5.4
2 of Science
Master 1 in GNSS W @ J. Sanz & J.M. Juan
30

A2 Dual Frequency Ambiguity Fixing

A2.1 Fixing Wide-lane ambiguity (Nw):


Estimate graphically values of DDNw (i.e. try to identify the true ambiguity from
the plot).
Hint:
From file DD_UPC1_UPC2_06_ALL.dat, generate the file DDNw.dat with the following
content:
1 2 3 4
[PRN sec DDNw nint(DDNw)] OW
where: DDNw=[DDLW-DDPN]/O

Note:
E L1  L2 E P1  P2 f1 154 c
LW ; PN ; E ; OW 86.2cm
E 1 E 1 f2 120 f1  f 2

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 31
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

----------------------------- DD_UPC1_UPC2_06_ALL.dat ------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 ]
------------------------------------------------------------------------------------

a) From file DD_UPC1_UPC2_06_ALL.dat, generate the file DDNw.dat with the following
content: 1 2 3 4 where: DDNw=[DDLW-DDPN]/O OW
[PRN sec DDNw nint(DDNw)]

Execute, for instance:


cat DD_UPC1_UPC2_06_ALL.dat| gawk 'BEGIN{s12=154/120}
{mw=(s12*$8-$10)/(s12-1)-(s12*$7+$9)/(s12+1);if(mw!=0){sign=mw/sqrt(mw*mw)}
else{sign=0};printf "%02i %i %14.4f %i \n", $4,$6, mw/0.862,int(mw/0.862+0.5*sign)}'>
DDNw.dat

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 32
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

b) Plot DDNw for the different satellites and discuss if the ambiguity DDNw
can be fixed: 1 2 3 4
[PRN sec DDNw nint(DDNw)]

- Example PRN03 plot:


graph.py -f DDNw.dat -x2 -y3 -c '($1==03)' -s. -f DDNw.dat -x2 -y4 -c '($1==03)'
-sx --cl r --yn -1 --yx 7 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN03"

- Example PRN07 plot:


graph.py -f DDNw.dat -x2 -y3 -c '($1==07)' -s. -f DDNw.dat -x2 -y4 -c '($1==07)'
-sx --cl r --yn -4 --yx 4 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN07"

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 33
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNw.dat -x2 -y3 -c '($1==03)' -s. -f DDNw.dat -x2 -y4 -c '($1==03)'
-sx --cl r --yn -1 --yx 7 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN03"

PRN03 plot:

Î DDNw= 3 ?

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 34
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNw.dat -x2 -y3 -c '($1==07)' -s. -f DDNw.dat -x2 -y4 -c '($1==07)'
-sx --cl r --yn -4 --yx 4 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN07"

PRN07 plot:

Î DDNw= 0 ?

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 35
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

The remaining plots:


graph.py -f DDNw.dat -x2 -y3 -c '($1==16)' -s. -f DDNw.dat -x2 -y4 -c '($1==16)'
-sx --cl r --yn -1 --yx 7 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN16"

graph.py -f DDNw.dat -x2 -y3 -c '($1==18)' -s. -f DDNw.dat -x2 -y4 -c '($1==18)'
-sx --cl r --yn -7 --yx 1 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN18"

graph.py -f DDNw.dat -x2 -y3 -c '($1==19)' -s. -f DDNw.dat -x2 -y4 -c '($1==19)'
-sx --cl r --yn -2 --yx 6 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN19"

graph.py -f DDNw.dat -x2 -y3 -c '($1==21)' -s. -f DDNw.dat -x2 -y4 -c '($1==21)'
-sx --cl r --yn 4 --yx 12 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN21"

graph.py -f DDNw.dat -x2 -y3 -c '($1==22)' -s. -f DDNw.dat -x2 -y4 -c '($1==22)'
-sx --cl r --yn -4 --yx 4 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN22"

graph.py -f DDNw.dat -x2 -y3 -c '($1==24)' -s. -f DDNw.dat -x2 -y4 -c '($1==24)'
-sx --cl r --yn 0 --yx 8 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambiguity: PRN24"

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 36
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

PRN16 PRN18 PRN19

PRN21 PRN22 PRN24

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 37
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

A.2.2 Smoothing the DDNw:


Smooth the DDNw with a 300 seconds sliding window, in order to improve the
ambiguity fixing.
Hint: From file DD_UPC1_UPC2_06_ALL.dat, generate the file DDNws.dat with the content:
1 2 3 4 5 6
[PRN sec DDNw DDNws nint(DDNw) nint(DDNws)]

Execute, for instance (to smooth the DDNw):


cat DDNw.dat|gawk '{dt=300;for (j=0;j<dt;j++) {t=j+dt/2+int(($2-j)/dt)*dt;ind=$1" "t;
n[ind]++;v[ind]=$3;m[ind]=m[ind]+$3}}
END{for (i in n) {if (n[i]!=0) {;if(n[i]>1) {val=v[i];mean=m[i]/n[i];
print i,val,mean}}}}' | sort -n -k+1 > DDNws.tmp

Estimate again the ambiguity from the raw DDNw and smoothed DDNws:
cat DDNws.tmp | gawk '{sign3=$3/sqrt($3*$3);sign4=$4/sqrt($4*$4);
print $1,$2,$3,$4,int($3+0.5*sign3),int($4+0.5*sign4)}' > DDNws.dat

gAGE/UPC A2. 2 Fixing Wide-lane ambiguity DDNw after smoothing @ J. Sanz & J.M. Juan 38
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

b) Plot DDNw and DDNws for the different satellites and discuss if the
ambiguity DDNw can be fixed: 1 2 3 4 5 6
[PRN sec DDNw DDNws nint(DDNw) nint(DDNws)]

- Example: PRN03 plot:


graph.py -f DDNws.dat -x2 -y3 -c '($1==03)' -s.
-f DDNws.dat -x2 -y5 -c '($1==03)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==03)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==03)' -sx --cl m
--yn 0 --yx 6 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN03"

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 39
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==03)' -s.


-f DDNws.dat -x2 -y5 -c '($1==03)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==03)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==03)' -sx --cl m
--yn 0 --yx 6 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN03"

PRN03 plot:

Î DDNw=3

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 40
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==07)' -s.


-f DDNws.dat -x2 -y5 -c '($1==07)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==07)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==07)' -sx --cl m
--yn -3 --yx 3 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN07"

PRN07 plot:

Î DDNw=0

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 41
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==16)' -s.


-f DDNws.dat -x2 -y5 -c '($1==16)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==16)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==16)' -sx --cl m
--yn 0 --yx 6 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN16"

PRN16 plot:

Î DDNw=3

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 42
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==18)' -s.


-f DDNws.dat -x2 -y5 -c '($1==18)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==18)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==18)' -sx --cl m
--yn -6 --yx 0 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN18"

PRN18 plot:

Î DDNw=-3

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 43
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==19)' -s.


-f DDNws.dat -x2 -y5 -c '($1==19)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==19)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==19)' -sx --cl m
--yn -1 --yx 5 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN19"

PRN19 plot:

Î DDNw=2

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 44
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==21)' -s.


-f DDNws.dat -x2 -y5 -c '($1==21)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==21)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==21)' -sx --cl m
--yn 5 --yx 11 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN21"

PRN21 plot:

Î DDNw=8

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 45
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==22)' -s.


-f DDNws.dat -x2 -y5 -c '($1==22)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==22)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==22)' -sx --cl m
--yn -3 --yx 3 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN22"

PRN22 plot:

Î DDNw=0

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 46
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

graph.py -f DDNws.dat -x2 -y3 -c '($1==24)' -s.


-f DDNws.dat -x2 -y5 -c '($1==24)' -sx --cl r
-f DDNws.dat -x2 -y4 -c '($1==24)' -s. --cl g
-f DDNws.dat -x2 -y6 -c '($1==24)' -sx --cl m
--yn 0 --yx 6 --xl "time (s)" --yl "cycles Lw" -t "DDNw ambig. PRN24"

PRN24 plot:

Î DDNw=4

gAGE/UPC A2. 1 Fixing Wide-lane ambiguity DDNw @ J. Sanz & J.M. Juan 47
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

A2.2 Fixing DDN1 from DDNw and DDL1, DDL2


Using the previous DDNw fixed values, estimate graphically the DDN1 ambiguity
(i.e. try to identify the true ambiguity from the plot).
Hint:
From file DD_UPC1_UPC2_06_ALL.dat, and using the fixed DDNw, generate the file
DDN1.dat with the following content: 1 2 3 4
[PRN sec DDN1 nint(DDN1)]
where:
DDN1=(DDL1  DDL2  O2 DDNw)/(O1 O2)

PRN = [ 03 07 16 18 19 21 22 24]
DDNw= [ 3 0 3 -3 2 8 0 4]

gAGE/UPC A2. 2 Fixing DDN1 after fixing DDNw @ J. Sanz & J.M. Juan 48
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

----------------------------- DD_UPC1_UPC2_06_ALL.dat ------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 ]
------------------------------------------------------------------------------------

From file DD_UPC1_UPC2_06_ALL.dat, and using the fixed DDNw, generate the
file DDN1.dat with the following content: 1 2 3 4
[PRN sec DDN1 nint(DDN1)]
where:
DDN1=(DDL1  DDL2  O2 DDNw)/(O1 O2)

Execute, for instance for PRN24 (with DDNw=4):


gawk 'BEGIN{c=299792458;f0=10.23e+6;f1=154*f0;f2=120*f0;l1=c/f1;l2=c/f2}
{Nw=4;if ($4==24) {amb=($8-$10-l2*Nw)/(l1-l2);
print $4,$6,amb,int(amb+0.5*amb/sqrt(amb*amb))}}' DD_UPC1_UPC2_06_ALL.dat >
DDN1_PRN24

gAGE/UPC A2. 2 Fixing DDN1 after fixing DDNw @ J. Sanz & J.M. Juan 49
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

graph.py -f DDN1_PRN24 -x2 -y3 -c '($1==24)' -s.


-f DDN1_PRN24 -x2 -y4 -c '($1==24)' -sx
--cl r --yn 1 --yx 6 --xl "time (s)"
--yl "cycles L1" -t "DDN1 ambiguity: PRN24"

PRN24 plot:

Î DDN1=4

gAGE/UPC A2. 2 Fixing DDN1 after fixing DDNw @ J. Sanz & J.M. Juan 50
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

----------------------------- DD_UPC1_UPC2_06_ALL.dat ------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 ]
------------------------------------------------------------------------------------

From file DD_UPC1_UPC2_06_ALL.dat, and using the fixed DDNw, generate the
file DDN1.dat with the following content: 1 2 3 4
[PRN sec DDN1 nint(DDN1)]

Other possibility is to execute the following sentence to generate the file for all satellites:
gawk 'BEGIN{for (i=0;i<100;i++) {getline <"sat.ambNw";Nw[$1*1]=$2}}
{c=299792458;f0=10.23e+6;f1=154*f0;f2=120*f0;l1=c/f1;l2=c/f2}
{amb=($8-$10-l2*Nw[$4*1])/(l1-l2);if (amb!=0){sign=amb/sqrt(amb*amb)} else{sign=0};
print $4,$6,amb,int(amb+0.5*sign)}' DD_UPC1_UPC2_06_ALL.dat > DDN1.dat
03 3
07 0
Where sat.ambNw is a file containing 16 3
the DDNw ambiguities: 18 -3
19 2
21 8
gAGE/UPC A2. 2 Fixing DDN1 after fixing DDNw
22 0
51
Research group of Astronomy & Geomatics
24 4 @ J. Sanz & J.M. Juan

Technical University of Catalonia


A2 Dual Frequency Ambiguity Fixing

graph.py -f DDN1_PRN24 -x2 -y3 -c '($1==03)' -s.


-f DDN1_PRN24 -x2 -y4 -c '($1==03)' -sx
--cl r --yn -1 --yx 4 --xl "time (s)"
--yl "cycles L1" -t "DDN1 ambiguity: PRN03"

PRN03 plot:

Î DDN1=2

gAGE/UPC A2. 2 Fixing DDN1 after fixing DDNw @ J. Sanz & J.M. Juan 52
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

graph.py -f DDN1_PRN24 -x2 -y3 -c '($1==07)' -s.


-f DDN1_PRN24 -x2 -y4 -c '($1==07)' -sx
--cl r --yn -2 --yx 3 --xl "time (s)"
--yl "cycles L1" -t "DDN1 ambiguity: PRN07"

PRN07 plot:

Î DDN1=1

gAGE/UPC A2. 2 Fixing DDN1 after fixing DDNw @ J. Sanz & J.M. Juan 53
Research group of Astronomy & Geomatics
Technical University of Catalonia
A2 Dual Frequency Ambiguity Fixing

PRN16 PRN18 PRN19


Î DDN1=2 Î DDN1=-1 Î DDN1=4

PRN21 PRN22 PRN24


Î DDN1=7 Î DDN1=1 Î DDN1=4

gAGE/UPC A2. 2 Fixing DDN1 after fixing DDNw @ J. Sanz & J.M. Juan 54
Research group of Astronomy & Geomatics
Technical University of Catalonia

A2 Dual Frequency Ambiguity Fixing

A2.3 Fixing DDN2


Using the previous DDNw and DDN1 ambiguities fixed, fix the DDN2 ambiguity:

PRN = [ 03 07 16 18 19 21 22 24]
DDNw= [ 3 0 3 -3 2 8 0 4]
DDN1= [ 2 1 2 -1 4 7 1 4]

Hint: The DDN2 can be easily computed by: DDN2=DDN1-DDNw

Then:
DDN2= [-1 1 -1 2 2 -1 1 0]

gAGE/UPC A2. 3 Fixing DDN2 after fixing DDNw and DDN1 @ J. Sanz & J.M. Juan 55
Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
Ž Introduction: gLAB processing in command line.
Ž Preliminary computations: Data files.
Ž Session A: Fixing DD ambiguities one at a time: UPC1-UPC2.
¾ Session B: Assessing the fixed ambiguities in navigation:
Differential positioning of UPC1-UPC2 receivers.

Ž Session C: Fixing DD ambiguities with LAMBDA method.

Note: UPC1-UPC2 receivers baseline: 37.95 metres.

gAGE/UPC @ J. Sanz & J.M. Juan 56


Research group of Astronomy & Geomatics
Technical University of Catalonia

Session B

Assessing the fixed ambiguities in navigation:


Differential positioning of UPC1-UPC2 receivers

(baseline: 37.95 metres)

gAGE/UPC @ J. Sanz & J.M. Juan 57


Research group of Astronomy & Geomatics
Technical University of Catalonia
B. Assessing the fixed ambiguities in navigation

Ž The DDN1 and DDN2 ambiguities have been fixed in the


previous Session A using the “cascade method”.

Ž The obtained results (i.e. the DDN1 and DDN2


ambiguities) will be assessed in this Session B by
computing the navigation solution using the carrier phases
repaired with the fixed DDN1 and DDN2 ambiguities
Ž Finally, in next Session C, the ambiguities will be fixed
using the LAMBDA method and the performance with the
cascade method will be compared.

gAGE/UPC B1. Repairing DDL1 and DDL2 carriers @ J. Sanz & J.M. Juan 58
Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Assessing the fixed ambiguities in navigation

Ž After repairing the carrier ambiguities, these measurements will


be used to navigate.
Ž Indeed, once the integer ambiguities are known, the carrier
phase measurements become like “unambiguous
pseudoranges”, accurate at the centimetre level or better.
Ž Thence, the positioning is straightforward following the same
procedure as with pseudoranges.
Ž Nevertheless, a wrong ambiguity fix can degrade the position
solution significantly.

gAGE/UPC @ J. Sanz & J.M. Juan 59


Research group of Astronomy & Geomatics
Technical University of Catalonia
B. Repairing the DDL1 and DDL2 with the ambiguities fixed

B1. Repair the DDL1 and DDL2 carrier measurements with the DDN1 and
DDN2 ambiguities FIXED and plot results to analyze the data.
03 2 -1
07 1 1
Write in it the DDN1 and DDN2 ambiguities 16 2 -1
18 -1 2
fixed in previous exercise in file N1N2.dat Î 19 4 2
21 7 -1
22 1 1
24 4 0

Using the previous file N1N2.dat and "DD_UPC1_UPC2_06_ALL.dat",


generate a file with the following content:
----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

Note: This file is identical to file "DD_UPC1_UPC2_06_ALL.dat", but with the ambiguities added in the
last fields #18 and #19.

gAGE/UPC B1. Repairing DDL1 and DDL2 carriers @ J. Sanz & J.M. Juan 60
Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Repairing the DDL1 and DDL2 with the ambiguities fixed

a) From previous file, generate a the file "sat.ambL1L2" with the following
content: 1 2 3 4 5
[PRN DDN1 DDN2 ODDN1 ODDN2]

gawk 'BEGIN{c=299792458;f0=10.23e+6;l1=c/(154*f0);l2=c/(120*f0)}
{printf "%02i %3i %3i %14.4f %14.4f \n", $1,$2,$3,$2*l1,$3*l2}' N1N2.dat >
sat.ambL1L2

b) Generate the "DD_UPC1_UPC2_06_30.fixL1L2" file:

cat DD_UPC1_UPC2_06_ALL.dat|
gawk 'BEGIN{for (i=1;i<1000;i++) {getline <"sat.ambL1L2";A1[$1]=$4;A2[$1]=$5}}
{printf "%s %02i %02i %s %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f
%14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f\n",
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,A1[$4], A2[$5]}' >
DD_UPC1_UPC2_06_ALL.fixL1L2

gAGE/UPC B1. Repairing DDL1 and DDL2 carriers @ J. Sanz & J.M. Juan 61
Research group of Astronomy & Geomatics
Technical University of Catalonia
B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

c) Make and discuss the following plots for DDL1

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1 -x6 -y'($8-$18-$11)'


-so --yn -0.06 --yx 0.06 -l "(DDL1-lambda1*DDN1)-DDrho" --xl "time (s)" --yl "m"

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1 -x6 -y'($8-$11)'


-so --yn -5 --yx 5 -l "(DDL1)-DDrho" --xl "time (s)" --yl "metres"

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1 -x6 -y'($8-$18)'


-so --yn -20 --yx 20 -l "(DDL1-lambda1*DDN1)" --xl "time (s)" --yl "metres"

gAGE/UPC B1. Plotting the repaired DDL1 @ J. Sanz & J.M. Juan 62
Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1
-x6 -y'($8-$18-$11)'
-so --yn -0.06 --yx 0.06
-l "(DDL1-O DDN1)-DDrho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC B1. Plotting the repaired DDL1 @ J. Sanz & J.M. Juan 63
Research group of Astronomy & Geomatics
Technical University of Catalonia
B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1
-x6 -y'($8-$11)'
-so --yn -5 --yx 5
-l "DDL1-DDrho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC B1. Plotting the repaired DDL1 @ J. Sanz & J.M. Juan 64
Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1
-x6 -y'($8-$18)'
-so --yn -20 --yx 20
-l "(DDL1-O DDN1)"
--xl "time (s)" --yl "m"

Questions:
1.- Explain what is the meaning
of this plot.
2.- Why a trend and a
discontinuity appears?

gAGE/UPC B1. Plotting the repaired DDL1 @ J. Sanz & J.M. Juan 65
Research group of Astronomy & Geomatics
Technical University of Catalonia
B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

d) Make and discuss the following plots for DDL2

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1 -x6 -y'($10-$19-$11)'


-so --yn -0.06 --yx 0.06 -l "(DDL2-lambda2*DDN2)-DDrho" --xl "time (s)" --yl "m"

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1 -x6 -y'($10-$11)'


-so --yn -5 --yx 5 -l "(DDL2)-DDrho" --xl "time (s)" --yl "metres"

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1 -x6 -y'($10-$19)'


-so --yn -20 --yx 20 -l "(DDL2-lambda2*DDN2)" --xl "time (s)" --yl "metres"

gAGE/UPC B1. Plotting the repaired DDL2 @ J. Sanz & J.M. Juan 66
Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1
-x6 -y'($9-$19-$11)'
-so --yn -0.06 --yx 0.06
-l "(DDL2-O DDN2)-DDrho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC B1. Plotting the repaired DDL2 @ J. Sanz & J.M. Juan 67
Research group of Astronomy & Geomatics
Technical University of Catalonia
B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1
-x6 -y'($9-$11)'
-so --yn -5 --yx 5
-l "DDL2-DDrho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC B1. Plotting the repaired DDL2 @ J. Sanz & J.M. Juan 68
Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Repairing the DDL1 and DDL2 with the ambiguities fixed

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

graph.py -f DD_UPC1_UPC2_06_ALL.fixL1
-x6 -y'($9-$198)'
-so --yn -20 --yx 20
-l "(DDL2-O DDN2)"
--xl "time (s)" --yl "m"

Questions:
1.- Explain what is the meaning
of this plot.
2.- Why a trend and a
discontinuity appears?

gAGE/UPC B1. Plotting the repaired DDL2 @ J. Sanz & J.M. Juan 69
Research group of Astronomy & Geomatics
Technical University of Catalonia
B2 Assessing the fixed ambiguities in navigation

Ž After repairing the carrier ambiguities, these measurements will be used to


navigate.

Ž Indeed, once the integer ambiguities are known, the carrier phase
measurements become like “unambiguous pseudoranges”, accurate at the
centimetre level or better.

Ž Thence, the positioning is straightforward following the same procedure as


with pseudoranges.

Ž Nevertheless, a wrong ambiguity fix can degrade the position solution


significantly.

gAGE/UPC @ J. Sanz & J.M. Juan 70


Research group of Astronomy & Geomatics
Technical University of Catalonia

B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier


(using the time-tagged reference station measurements)

Ž In this exercise we will considerer an implementation of differential positioning


where the user estimates the baseline vector using the time-tagged measurements
of the reference station.

Ž This approach is usually referred to as relative positioning and can be applied


in some applications where the coordinates of the reference station are not
accurately known and where the relative position vector between the reference
station and the user is the main interest. Examples are formation flying, automatic
landing on ships…

Ž Of course, the knowledge of the reference receiver location would allow the user to
compute its absolute coordinates.

Ž This is a simple approach, where synchronism delays between the time tag
measurements of the reference station and the user must be taken into account for
real-time positioning.

gAGE/UPC @ J. Sanz & J.M. Juan 71


Research group of Astronomy & Geomatics
Technical University of Catalonia
B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier
(using the time-tagged reference station measurements)

Data file
----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

PRN06 (ref)
Where the elevation (EL) and azimuth (AZ) PRNXX
are taken from station UPC2 (the user)

and where, (EL1, AZ1) are for satellite


PNR06 (reference) and (EL1, AZ1) are for L1,j ref
satellite PRNXX
r
Baseline vector
Measurements broadcast
L1,j ref
by the reference station. IND2 (ref)
UPC1 (ref) UPC2 (user)
IND3 (user)
gAGE/UPC B2.1 Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 72
Research group of Astronomy & Geomatics
Technical University of Catalonia
(single epoch LS, whole interval)

B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier


(using the time-tagged reference station measurements)

Estimate the baseline vector between UPC1 and UPC2 receivers


using the code measurements of file (DD_UPC1_UPC2_06_ALL.dat).
Note: Use the entire file (i.e. time interval [18000:19900]).

[DDL1- O DDN1 ]=[Los_k - Los_06]*[baseline]

Notation DDL1k j { DDL1(involving satellites j and k )

ª  ρˆ 3  ρˆ 6 T º DDL1k j DL1,k usr


j
 DL1,k refj
ª DDL16,03  O1 DDN16,03 º « »
«
« DDL1  O1 DDN1 »
6,07 6,07 » « ˆ7 ˆ6 »
«  ρ  ρ » r
T
L j
1,usr  L1,k usr  L1,j ref  L1,k ref
« » « »
« 6,24 » « »
«¬ DDL1  O1 DDN1 »¼
6,24 Measurements broadcast
«  ρˆ 24  ρˆ 6 »
T
L1,j ref
¬ ¼ by the reference station.

gAGE/UPC B2.1 Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 73
Research group of Astronomy & Geomatics
Technical University of Catalonia
(single epoch LS, whole interval)
B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier
(using the time-tagged reference station measurements)

Estimate the baseline vector between UPC1 and UPC2 receivers


using the code measurements of file (DD_UPC1_UPC2_06_ALL.dat).
Note: Use the entire file (i.e. time interval [18000:19900]).

[DDL1- O DDN1 ]=[Los_k - Los_06]*[baseline]

Notation
r { Baseline vector
ª  ρˆ 3  ρˆ 6 T º
ª DDL16,03  O1 DDN16,03 º « » DDL1k j { DDL1(involving satellites j and k )
« 6,07 » « ˆ7 ˆ6 »
«  ρ  ρ » r
T
« DDL1  O1 DDN1 »
6,07

ρˆ k { Line-Of-Sight unit vector to satelite k


« » « »
« 6,24 » « »
«¬ DDL1  O1 DDN1 »¼
6,24
«  ρˆ 24  ρˆ 6 T » ρˆ k { > cos( Elk )sin( Azk ), cos( Elk ) cos( Azk ), sin( Elk ) @
¬ ¼

gAGE/UPC B2.1 Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 74
Research group of Astronomy & Geomatics
Technical University of Catalonia
(single epoch LS, whole interval)

B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier


(using the time-tagged reference station measurements)

Using the DDL1 carrier with the ambiguities FIXED, compute the LS single epoch
solution for the whole interval 180000< t <199000 with the program LS.f

Note: The program LS.f computes the Least Square solution for each
measurement epoch of the input file (see the FORTRAN code LS.f)

The following procedure can be applied:


a) generate a file with the following content;

[Time], [DDL1- ODDN1], [ Los_k - Los_06]

where:
Time= seconds of day
DDL1- ODDN1= Prefit residulas (i.e., "y" values in program LS.f)
Los_k-Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC B2.1 Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 75
Research group of Astronomy & Geomatics
Technical University of Catalonia
(single epoch LS, whole interval)
B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier
(using the time-tagged reference station measurements)

Justify that the next sentence builds the navigation equations system
See file content
in slide #31
[DDL1- O DDN1]=[Los_k - Los_06]*[baseline]

cat DD_UPC1_UPC2_06_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%s %14.4f %8.4f %8.4f %8.4f \n",
$6, $8-$18, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat
Time

ª  ρˆ 3  ρˆ 6 T º
ª DDL  O1 DDN º
6,03 6,03
« » [DDL1- O DDN1] [ Los_k - Los_06]
1 1
« » « ˆ7 ˆ6 »
«  ρ  ρ » r
T ------------ --------------------
« DDL  O1 DDN »
6,07 6,07
1 1
-3.3762 0.3398 -0.1028 0.0714
« » « »
« -7.1131 0.1725 0.5972 0.0691
6,24 » « »
«¬ DDL1  O1 DDN1 »¼
6, 24
«  ρˆ 24  ρˆ 6 T » 4.3881 -0.6374 0.0227 0.2725
¬ ¼

gAGE/UPC ρˆ k { > cos( Elk )sin( Azk ), cos( Elk ) cos( Azk ), sin( Elk ) @ @ J. Sanz & J.M. Juan 76
Research group of Astronomy & Geomatics
Technical University of Catalonia

B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier


(using the time-tagged reference station measurements)

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

[Time], [DDL1- O DDN1], [Los_k - Los_06]


The following sentence can be used:
cat DD_UPC1_UPC2_06_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution:

cat L1model.dat |LS > L1fix.pos

gAGE/UPC B2.1 Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 77
Research group of Astronomy & Geomatics
Technical University of Catalonia
(single epoch LS, whole interval)
B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier
(using the time-tagged reference station measurements)

Plot the baseline estimation error:

graph.py -f L1fix.pos -x1 -y'($2+27.4170)' -s.- -l "North error"


-f L1fix.pos -x1 -y'($3+26.2341)' -s.- -l "East error"
-f L1fix.pos -x1 -y'($4+ 0.0304)' -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "Baseline error”

Note: An accurate estimate of baseline is:


bsl_enu =[-27.4170 -26.2341 -0.0304]
Use this determination to assess the baseline vector estimation error.

gAGE/UPC B2.1 Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 78
Research group of Astronomy & Geomatics
Technical University of Catalonia
(single epoch LS, whole interval)

B2.1 UPC1-UPC2 Baseline vector estimation with DDL1 carrier


(using the time-tagged reference station measurements)

L1 Baseline
estimation error
after fixing
ambiguities

Questions:
1.- What is the expected
accuracy when positioning
with carrier after fixing
ambiguities?
2.- Discuss why a trend and a
discontinuity appears?

gAGE/UPC B2.1 Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 79
Research group of Astronomy & Geomatics
Technical University of Catalonia
(single epoch LS, whole interval)
B2.2. UPC1-UPC2 differential positioning with DDL1 carrier
(using the computed differential corrections)

Ž In the previous exercise we have considered an implementation of


differential positioning where the user estimates the baseline vector
from the time-tagged measurements of the reference station.

Ž In the next exercises, we will consider the common implementation


of Differential positioning, where the reference receiver coordinates
are accurately known and used to compute range corrections for
each tracked satellite in view. Then, the user applies these
corrections to improve the positioning.

Ž Unlike in the previous implementation, the synchronism errors


between the time-tagged measurements will be not critical in this
approach, as the differential corrections vary slowly.

gAGE/UPC B2.2. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 80
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)

B2.2. UPC1-UPC2 differential positioning with DDL1 carrier


(using the computed differential corrections)

Using code DDL1 measurements, estimate the coordinates of


receiver UPC2 taking UPC1 as a reference receiver.
Justify that the associated equations system is given by:

[DDL1- DDRho-O DDN1]=[Los_k - Los_06]*[dr]

Notation
dr rIND3 - r0, IND3
ª  ρˆ 3  ρˆ º
6 T
ª DDL16,03  DD U 6,03  O1 DDN1 º « » DDL1k j { DDL1(involving satellites j and k )
« » « ˆ7 ˆ6 T »
« DDL1  DD U  O1 DDN1 » «  ρ  ρ » dr
6,07 6,07

« » « » ρˆ k { Line-Of-Sight unit vector to satelite k


« » « »
«¬ DDL1  DD U  O1 DDN1 »¼
6,24 6,30
«  ρˆ 24  ρˆ 6 T »
¬ ¼ ρˆ k { > cos( Elk )sin( Azk ) cos( Elk ) cos( Azk ) sin( Elk ) @

gAGE/UPC B2.2. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 81
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)
B2.2. UPC1-UPC2 differential positioning with DDL1 carrier
(using the computed differential corrections)

Using code DDL1 measurements, estimate the coordinates of


receiver UPC2 taking UPC1 as a reference receiver.
Justify that the associated equations system is given by:

[DDL1- DDRho-O DDN1]=[Los_k - Los_06]*[dr]

Notation DDL1k j { DDL1(involving satellites j and k )

ª  ρˆ 3  ρˆ 6 T º DDL1k j  DD U k j D L1,k usr


j
 Uusr
k j
 D L1,k refj  Urefk j
ª DDL  DD U  O1 DDN1 º
6,03 6,03
« »
ª L1,j usr  Uusrj  L1,k usr  Uusr º¼  ª¬ L1,j ref  Urefj  L1,k ref  Urefk º¼
1
« » « ˆ7 ˆ6 T »
«  ρ  ρ » dr
k
« DDL  DD U  O1 DDN1 »
6,07 6,07
1 ¬
« » « »
« » « »
«¬ DDL1  DD U  O1 DDN1 »¼
6,24 6,30
«  ρˆ 24  ρˆ 6 T »
¬ ¼ Computed corrections
PRC L1,1
j
{L j
1, ref U j
ref broadcast by the
reference station.

gAGE/UPC B2.2. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 82
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)

B2.2. UPC1-UPC2 differential positioning with DDL1 carrier


(using the computed differential corrections)

Using code DDL1 measurements, estimate the coordinates of


receiver UPC2 taking UPC1 as a reference receiver.
Justify that the associated equations system is given by:

[DDL1- DDRho-O DDN1]=[Los_k-Los_06]*[dr]


PRN06 (ref) PRN j

ª  ρˆ 3  ρˆ 6 T º
ª DDL  DD U  O1 DDN1 º
6,03
1
6,03
« »
« » « ˆ7 ˆ6 T »
« DDL  DD U  O1 DDN1 » «  ρ  ρ » dr
6,07
6,07
1
« » « »
« » « » ρ̂ 6 ρˆ j
«¬ DDL1  DD U  O1 DDN1 »¼
6,24 6,30
«  ρˆ 24  ρˆ 6 T »
¬ ¼
dr rUPC2 - r0,UPC2
ρˆ j { ª¬cos( El j )sin( Az j ), cos( El j ) cos( Az j ), sin( El j ) º¼
UPC1(ref)
IND2 (ref) UPC2
IND3 (user)
(user)

gAGE/UPC B2.2. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 83
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)
B2.2. UPC1-UPC2 differential positioning with DDL1 carrier
(using the computed differential corrections)

Justify that the next sentence builds the navigation equations system
See file content
in slide #43
[DDL1- DDRho- O DDN1]=[Los_k - Los_06]*[dr]

cat DD_UPC1_UPC2_06_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%s %14.4f %8.4f %8.4f %8.4f \n",
$6, $8-$11-$18, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}'> M.dat
Time

ª  ρˆ 3  ρˆ 6 T º [DDL1-DDRho- O DDN1] [Los_k - Los_06]


ª DDL  DD U  O1 DDN º
6,03 6,03 6,03
« »
«
1
»
1
« ˆ7 ˆ6 T »
----------- ------------------
« DDL  DD U  O1 DDN » «  ρ  ρ » r
6,07 6,07 6,07
1 1 -3.3762 0.3398 -0.1028 0.0714
« » « » -7.1131 0.1725 0.5972 0.0691
« 6,24 » « »
¬« DDL1  DD U  O1 DDN1 ¼»
6, 24 6,24
«  ρˆ 24  ρˆ 6 T » 4.3881 -0.6374 0.0227 0.2725
¬ ¼

gAGE/UPC ρˆ k { > cos( Elk )sin( Azk ), cos( Elk ) cos( Azk ), sin( Elk ) @ @ J. Sanz & J.M. Juan 84
Research group of Astronomy & Geomatics
Technical University of Catalonia

B2.2. UPC1-UPC2 differential positioning with DDL1 carrier


(using the computed differential corrections)

----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

[Time], [DDL1- DDRho -O DDN1], [Los_k - Los_06]


The following sentence can be used
cat DD_UPC1_UPC2_06_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$11-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution


cat L1model.dat |LS > L1fix.pos

gAGE/UPC B2.2. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 85
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)
B2.2. UPC1-UPC2 differential positioning with DDL1 carrier
(using the computed differential corrections)

Plot the absolute positioning error:

graph.py -f L1fix.pos -x1 –y2- s.- -l "North error"


-f L1fix.pos -x1 –y3 -s.- -l "East error"
-f L1fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)"
-t "Absolute positioning error with DDL1"

gAGE/UPC B2.2. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 86
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)

B2.2. UPC1-UPC2 differential positioning with DDL1 carrier


(using the computed differential corrections)

L1 Differential
positioning after
fixing ambiguities

Questions:
Discuss why the results
have improved,
achieving centimetre
level navigation.

gAGE/UPC B2.2. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 87
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)
B2.3. UPC1-UPC2 differential positioning with DDL2 carrier
(using the computed differential corrections)

Repeat the previous positioning, but with the DDL2 carrier


----------------------------- DD_UPC1_UPC2_06_ALL.fixL1L2 -------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[UPC1 UPC2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2]
<---- UPC2 ---->
------------------------------------------------------------------------------------------------

[Time], [DDL2- DDRho –O DDN2], [Los_k - Los_06]


The following sentence can be used
cat DD_UPC1_UPC2_06_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$9-$11-$19,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L2model.dat
Compute the Least Squares solution
cat L2model.dat |LS > L2fix.pos

gAGE/UPC B2.3. Differential positioning with DDL2 @ J. Sanz & J.M. Juan 88
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)

B2.3. UPC1-UPC2 differential positioning with DDL2 carrier


(using the computed differential corrections)

Plot the absolute positioning error:

graph.py -f L2fix.pos -x1 –y2- s.- -l "North error"


-f L2fix.pos -x1 –y3 -s.- -l "East error"
-f L2fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)"
-t "Absolute positioning error with DDL2"

gAGE/UPC B2.3. Differential positioning with DDL2 @ J. Sanz & J.M. Juan 89
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)
B2.3. UPC1-UPC2 differential positioning with DDL2 carrier
(using the computed differential corrections)

L2 Differential
positioning after
fixing ambiguities

Questions:
Compare the results with
the previous ones
computed from DDL1.

gAGE/UPC B2.3. Differential positioning with DDL2 @ J. Sanz & J.M. Juan 90
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using computed dif. corrections)

B2.4. UPC1-UPC2 differential positioning with DDL1 carrier


(using the computed differential corrections)

Analyze the effect of a wrong ambiguity fix over a single satellite (e.g. PRN07)

Simulate an error of 1 cycle in DDN1 for satellite PRN07 and compute the
navigation solution: 1 cycle is added to the
DDN1 of satellite PRN07
The following sentence can be used
cat DD_UPC1_UPC2_06_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45;
{if ($4==07){$18=$18+0.19029};}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$11-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

Compute the Least Squares solution

cat L1model.dat |LS > L1fix.pos

gAGE/UPC B2.4. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 91
Research group of Astronomy & Geomatics
Technical University of Catalonia
Effect of wrong ambiguity fix.
B2.4. UPC1-UPC2 differential positioning with DDL1 carrier
(using the computed differential corrections)

Plot the absolute positioning error:

graph.py -f L1fix.pos -x1 –y2- s.- -l "North error"


-f L1fix.pos -x1 –y3 -s.- -l "East error"
-f L1fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)"
-t "Absolute positioning error with a wrong ambiguity fix"

gAGE/UPC B2.4. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 92
Research group of Astronomy & Geomatics
Technical University of Catalonia
Effect of wrong ambiguity fix.

B2.4. UPC1-UPC2 differential positioning with DDL1 carrier


(using the computed differential corrections)

L1 Differential
positioning with a
wrong ambiguity
fix on a single
satellite
Questions:
Discuss the results.
What is the effect of the
wrong fix?

gAGE/UPC B2.4. Differential positioning with DDL1 @ J. Sanz & J.M. Juan 93
Research group of Astronomy & Geomatics
Technical University of Catalonia
Effect of wrong ambiguity fix.
OVERVIEW
Ž Introduction: gLAB processing in command line.
Ž Preliminary computations: Data files.
Ž Session A: Fixing DD ambiguities one at a time: UPC1-UPC2.

Ž Session B: Assessing the fixed ambiguities in navigation:


Differential positioning of UPC1-UPC2 receivers.

¾ Session C: Fixing DD ambiguities with LAMBDA method.

Note: UPC1-UPC2 receivers baseline: 37.95 metres.

gAGE/UPC @ J. Sanz & J.M. Juan 94


Research group of Astronomy & Geomatics
Technical University of Catalonia

Session C

Fixing DD ambiguities with


LAMBDA method

(baseline: 37.95 metres)

gAGE/UPC @ J. Sanz & J.M. Juan 95


Research group of Astronomy & Geomatics
Technical University of Catalonia
C Fixing the DDN1 and DDN2 ambiguities with LAMBDA Method

Apply the LAMBDA method to fix the ambiguities.


Consider only the two epochs: t1=18000 and t2=18015.

Note:
To avoid the synchronization issues, consider the Differential Positioning using
the computed differential corrections, instead of the time-tagged measurements.
That is, we are going to solve the following navigation equations systems:

1. Navigating with L1 carrier, to fix DDN1:


O*DDN1]
[DDL1-DDRho]=[Los_k-Los_06]*dr + [ A ]*[O

2. Navigating with L2 carrier, to fix DDN2:


[DDL2-DDRho]=[Los_k-Los_06]*dr + [ A ]*[O*DDN2]

gAGE/UPC C. Fixing DDN1 and DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 96
Research group of Astronomy & Geomatics
Technical University of Catalonia

Consider again the previous problem of estimating 'r , a 3-vector of real numbers ,
gAGE
and N a (K-1)-vector of integers, which are solution of

y G 'r  O A N  ν
research group of Astronomy and Geomatics

The solution comprises the following steps:


ª 'rˆ º ª P'rˆ P'rˆ , Nˆ º
«ˆ » ; « »
1. Obtain the float solution and its covariance matrix: ¬N ¼ ¬« P'rˆ , Nˆ PNˆ ¼»

2. Find the integer vector N which minimizes the cost function


N  Nˆ WNˆ PNˆ1
2 T
c(N) ˆ
N N ˆ
WNˆ N  N
WNˆ

a) Decorrelation: Using the Z transform, the ambiguity search space is re-


parametrized to decorrelate the float ambiguities.
b) Integer ambiguities estimation (e.g. by rounding or by using sequential
conditional least-squares adjustment, together with a discrete search
strategy).
c) Using the Z-1 transform, the ambiguities are transformed to the original
ambiguity space.
gAGE/UPC

3. Obtain the ‘fixed’ solution 'r, from the fixed ambiguities N.


y O AN G 'r  ν
Master of Science in GNSS @ J. Sanz & J.M. Juan
97
C Fixing the DDN1 and DDN2 ambiguities with LAMBDA Method

C1. DDN1 ambiguity fixing: Differential positioning using computed


differential corrections from a reference receiver.
Consider only the two epochs: t1=18000 and t2=18015.

The following procedure can be applied:


1. Build-up the navigation system.
2. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
3. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding directly the floated solution
and by rounding the solution after decorrelation.

gAGE/UPC C1. Fixing DDN1 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 98
Research group of Astronomy & Geomatics
Technical University of Catalonia

C1 Fixing the DDN1 ambiguities with LAMBDA Method

1. Building-up the navigation system

[DDL1-DDRho]= [Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1]

Notation
ª  ρˆ 3  ρˆ 6 T º y=Gx
ª DDL  DD U º
6,03
1
6,03
« » ª1 0 0 º ª O1 DDN º
1
6,03

« 6,07 » «0 1 « »
« ˆ7 ˆ6 » 0 »» « O1 DDN » Where the vector of
«  ρ  ρ » dr  «
T
« DDL  DD U »
6,07 6,07
1 1
« » « » « »« »
« 6,24 » « » « »« » unknowns x includes
¬« DDL1  DD U ¼» 1 ¼ ¬« O1 DDN16,24 ¼» the user coordinates
6, 24
«  ρˆ 24  ρˆ 6 T » ¬0 0 0
¬ ¼ and ambiguities

gAGE/UPC C1. Fixing DDN1 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 99
Research group of Astronomy & Geomatics
Technical University of Catalonia
C1 Fixing the DDN1 ambiguities with LAMBDA Method

The receiver was not moving (static) during the data collection.
Thence, for each epoch we have the equations system:

ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,03 (t1 )  DD U 6,03 (t1 ) º « 1 1
» ª1 0 0 º ª O1 DDN16,03 º
«
« DDL1 (t1 )  DD U (t1 ) »
6,07 6,07 » « ˆ7 6 T » «
«  ρ (t1 )  ρˆ (t1 ) » dr  «
0 1
«
0 »» « O1 DDN16,07 »
»
y1 = G1 x
« » « » « »« »
« » « » « »« »
¬« DDL1 (t1 )  DD U (t1 ) ¼» 1 ¼ ¬« O1 DDN16,24 ¼»
6, 24 6,24
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,03 (t2 )  DD U 6,03 (t2 ) º « 2 2
» ª1 0 0 º ª O1 DDN16,03 º
«
« DDL1 (t2 )  DD U (t2 ) »
«
6,07 6,07 »
»
« ˆ7
«
6 T »

»
«0 1
«  ρ (t2 )  ρˆ (t2 ) » dr  «
« »«
« »
0 »» «O1 DDN16,07 »
»
y2 = G2 x
« » « » « »« 6,24 »
¬« DDL1 (t2 )  DD U (t2 ) ¼» 1 ¼ ¬« O1 DDN1 ¼»
6, 24 6,24
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
¬ 2 2 ¼ y2:=y[t2]
G2:=G[t2]

gAGE/UPC
[DDL1-DDRho]=[Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1] 100 @ J. Sanz & J.M. Juan
Research group of Astronomy & Geomatics
Technical University of Catalonia

C1 Fixing the DDN1 ambiguities with LAMBDA Method

In the previous computation we have not taken into account the


correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL1 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC
C1. Fixing DDN1 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 101
Research group of Astronomy & Geomatics
Technical University of Catalonia
C1 Fixing the DDN1 ambiguities with LAMBDA Method

The script MakeL1DifMat.scr builds the equations system


[DDL1-DDRho]=[ Los_k- Los_06]*[dr] + [ A ]*[O1*DDN1]

for the two epochs required t1=18000 and t2=18015, using the input
file DD_UPC1_UPC2_06_ALL.dat generated before.

Execute:
MakeL1DifMat.scr DD_UPC1_UPC2_06_ALL.dat 18000 18015
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC C1. Fixing DDN1 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 102
Research group of Astronomy & Geomatics
Technical University of Catalonia

C1 Fixing the DDN1 ambiguities with LAMBDA Method

2. Compute the FLOATED solution (solving the equations system).


The following procedure can be applied

octave
load M1.dat
load M2.dat P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
y1=M1(:,1);
G1=M1(:,2:12);
Solution
y2=M2(:,1);
G2=M2(:,2:12); x(1:3)'
Py=(diag(ones(1,8))+ones(8))*2e-4; 1.4216 -0.6058 0.4035
W=inv(Py);

gAGE/UPC C1. Fixing DDN1 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 103
Research group of Astronomy & Geomatics
Technical University of Catalonia
C1 Fixing the DDN1 ambiguities with LAMBDA Method

3. Applying the LAMBDA method to FIX the ambiguities.


Compare the results with the solution obtained by rounding the floated solution.
The following procedure can be applied (justify the computations done)

octave 2.- Rounding the decorrelated floated solution


[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458;
f0=10.23e+6; afix=iZ*round(az);
f1=154*f0; 2 1 2 -1 4 7 1 4
lambda1=c/f1
a=x(4:11)/lambda1; 3.- Decorrelation and integer LS search solution
Q=P(4:11,4:11); [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
[azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
afixed=iZ*azfixed;
1. Rounding directly the floated solution sqnorm(2)/sqnorm(1)
round(a)' ans = 3.10696822814451
0 6 -6 6 6 -1 8 9 afixed(:,1)'
2 1 2 -1 4 7 1 4

gAGE/UPC C1. Fixing DDN1 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 104
Research group of Astronomy & Geomatics
Technical University of Catalonia

C1 Fixing the DDN1 ambiguities with LAMBDA Method

Questions:
1. Can the ambiguities be well fixed?
2. Is the test resolutive?
3. Compare the fixed ambiguities with those obtained
in the previous exercises when fixing the ambiguities
one at a time. Are the same results found?
4. What is the elapsed time to needed fix the
ambiguities? And in the previous exercise when
fixing the ambiguities one at a time?
5. The values found for the ambiguities are the same
than in the previous case?

gAGE/UPC C1. Fixing DDN1 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 105
Research group of Astronomy & Geomatics
Technical University of Catalonia
C2 Checking the Z-transform matrix

a. Using the Octave/MATLAB program sentence imagesc display the covariance


matrix of ambiguities before and after the decorrelation with the Z-matrix.

imagesc(Q) imagesc(Qz)
gAGE/UPC C2. Checking the Z-transform Matrix @ J. Sanz & J.M. Juan 106
Research group of Astronomy & Geomatics
Technical University of Catalonia

C2 Checking the Z-transform matrix

b.- Show the content of the integer matrix Z

Note: The previous routines computes its transpose (Zt). Then: Z=Zt'.

Z =Zt’
3 -5 -4 -5 6 7 4 -2
3 2 -7 -6 -5 -4 9 3
-4 -0 -5 8 3 -4 1 -3
1 -5 1 -8 4 -1 1 8
-0 1 2 7 -1 -8 -4 3
8 -3 -1 4 2 -6 -1 4
-5 -1 1 -6 1 0 1 4
-5 -3 -0 -0 5 -2 -1 3

gAGE/UPC C2. Checking the Z-transform Matrix @ J. Sanz & J.M. Juan 107
Research group of Astronomy & Geomatics
Technical University of Catalonia
C2 Checking the Z-transform matrix

c.- Compute by hand the transformed covariance matrix Qz:

Z * Q * Z'

d.- Compute the decorrelated ambiguities az:


Z*a
67.19877600816902
-27.00815309344809
-52.80792522348074
49.18410614456196
-53.87737144457776
-11.70730035212100
18.08081880749826
4.09968790147667

gAGE/UPC C2. Checking the Z-transform Matrix @ J. Sanz & J.M. Juan 108
Research group of Astronomy & Geomatics
Technical University of Catalonia

C2 Checking the Z-transform matrix

e.- Round-off the decorrelated ambiguities:


Nz=round(Z*a)

67 -27 -53 49 -54 -12 18 4

f.- Apply the inverse transform to these values:


format short

inv(Z)*Nz
2.00000 1.00000 2.00000 -1.00000
4.00000 7.00000 1.00000 4.00000

g. - Compare the previous results with the direct rounding of initial ambiguities “a”:
round(a)

0 -6 6 6 -1 12 8 9

gAGE/UPC C2. Checking the Z-transform Matrix @ J. Sanz & J.M. Juan 109
Research group of Astronomy & Geomatics
Technical University of Catalonia
C Fixing the DDN1 and DDN2 ambiguities with LAMBDA Method

C3. DDN2 ambiguity fixing: Differential positioning using computed


differential corrections from a reference receiver.
Consider only the two epochs: t1=18000 and t2=18015.

The following procedure can be applied, as in the previous case:


1. Build-up the navigation system.
2. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
3. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding directly the floated solution
and by rounding the solution after decorrelation.

gAGE/UPC C3. Fixing DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 110
Research group of Astronomy & Geomatics
Technical University of Catalonia

C3 Fixing the DDN2 ambiguities with LAMBDA Method

1. Building-up the navigation system

[DDL2-DDRho]= [Los_k - Los_06]*[dr] + [ A ]*[lambda2*DDN2]

Notation
ª  ρˆ 3  ρˆ 6 T º y=Gx
ª DDL  DD U º
6,03
2
6,03
« » ª1 0 0 º ª O2 DDN º
6,03
2
« 6,07 » «0 1 « »
« ˆ7 ˆ6 » 0 »» «O2 DDN » Where the vector of
«  ρ  ρ » dr  «
T
« DDL  DD U »
6,07 6,07
2 2
« » « » « »« »
« 6,24 » « » « »« » unknowns x includes
¬« DDL2  DD U ¼» 1 ¼ ¬« O2 DDN 26,24 ¼» the user coordinates
6, 24
«  ρˆ 24  ρˆ 6 T » ¬0 0 0
¬ ¼ and ambiguities

gAGE/UPC C3. Fixing DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 111
Research group of Astronomy & Geomatics
Technical University of Catalonia
C3 Fixing the DDN2 ambiguities with LAMBDA Method

The receiver was not moving (static) during the data collection.
Thence, for each epoch we have the equations system:

ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL6,03 (t1 )  DD U 6,03 (t1 ) º « 1 1
» ª1 0 0 º ª O2 DDN 26,03 º
y1 = G1 x
2
« » «0 1 « »
« ˆ7 0 »» « O2 DDN 26,07 »
T »
« DDL2 (t1 )  DD U (t1 ) » «  ρ (t1 )  ρˆ (t1 ) » dr  «
6,07 6,07 6

« » « » « »« »
« » « » « »« »
¬« DDL2 (t1 )  DD U (t1 ) ¼» 1 ¼ ¬« O2 DDN 26,24 ¼»
6, 24 6,24
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL6,03
2 (t2 )  DD U 6,03 (t2 ) º « 2 2
» ª1 0 0 º ª O2 DDN 26,03 º
«
« DDL2 (t2 )  DD U (t2 ) »
«
6,07 6,07 »
»
« ˆ7
«
6 T »

»
«0 1
«  ρ (t2 )  ρˆ (t2 ) » dr  «
« »«
« »
0 »» «O2 DDN 26,07 »
»
y2 = G2 x
« » « » « »« 6,24 »
¬« DDL2 (t2 )  DD U (t2 ) ¼» 1 ¼ ¬« O2 DDN 2 ¼»
6, 24 6,24
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
¬ 2 2 ¼ y2:=y[t2]
G2:=G[t2]

gAGE/UPC
[DDL2-DDRho]=[Los_k - Los_06]*[dr] + [ A ]*[lambda2*DDN2] 112 @ J. Sanz & J.M. Juan
Research group of Astronomy & Geomatics
Technical University of Catalonia

C3 Fixing the DDN2 ambiguities with LAMBDA Method

In the previous sessions A and B we have not taken into account the
correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL2 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC
C3. Fixing DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 113
Research group of Astronomy & Geomatics
Technical University of Catalonia
C3 Fixing the DDN2 ambiguities with LAMBDA Method

The script MakeL2DifMat.scr builds the equations system


[DDL2-DDRho]=[ Los_k- Los_06]*[dr] + [ A ]*[O2*DDN2]

for the two epochs required t1=18000 and t2=18015, using the input
file DD_UPC1_UPC2_06_ALL.dat generated before.

Execute:
MakeL2DifMat.scr DD_UPC1_UPC2_06_ALL.dat 18000 18015
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC C3. Fixing DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 114
Research group of Astronomy & Geomatics
Technical University of Catalonia

C3 Fixing the DDN2 ambiguities with LAMBDA Method

2. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied

octave
load M1.dat
load M2.dat P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
y1=M1(:,1);
G1=M1(:,2:12);
Solution
y2=M2(:,1);
G2=M2(:,2:12); x(1:3)'
Py=(diag(ones(1,8))+ones(8))*2e-4; 0.1442 -0.5154 0.5568
W=inv(Py);

gAGE/UPC C3. Fixing DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 115
Research group of Astronomy & Geomatics
Technical University of Catalonia
C3 Fixing the DDN2 ambiguities with LAMBDA Method

3. Applying the LAMBDA method to FIX the ambiguities.


Compare the results with the solution obtained by rounding the floated solution.
The following procedure can be applied (justify the computations done)

octave 2.- Rounding the decorrelated floated solution


[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458;
f0=10.23e+6; afix=iZ*round(az);
f2=120*f0; -1 1 -1 2 2 -1 1 0
lambda2=c/f2
a=x(4:11)/lambda2; 3.- Decorrelation and integer LS search solution
Q=P(4:11,4:11); [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
[azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
afixed=iZ*azfixed;
1. Rounding directly the floated solution sqnorm(2)/sqnorm(1)
round(a)' ans = 3.54056715815950
-1 -2 1 2 1 -2 3 -1 afixed(:,1)'
-1 1 -1 2 2 -1 1 0

gAGE/UPC C3. Fixing DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 116
Research group of Astronomy & Geomatics
Technical University of Catalonia

C3 Fixing the DDN2 ambiguities with LAMBDA Method

Questions:
1. Can the ambiguities be well fixed?
2. Is the test resolutive?
3. Compare the fixed ambiguities with those obtained
in the previous exercises when fixing the ambiguities
one at a time. Are the same results found?
4. What is the elapsed time to needed fix the
ambiguities? And in the previous exercise when
fixing the ambiguities one at a time?
5. The values found for the ambiguities are the same
than in the previous case?

gAGE/UPC C3. Fixing DDN2 ambiguities with LAMBDA @ J. Sanz & J.M. Juan 117
Research group of Astronomy & Geomatics
Technical University of Catalonia
C4. UPC1-UPC2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

C4. Estimate the baseline vector between UPC1 and UPC2 receivers using
the L1 carrier measurements of file (DD_UPC1_UPC2_06_ALL.dat).
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14515

The following procedure can be applied, as in the previous case:


1. Build-up the navigation system.
2. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
3. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding directly the floated solution
and by rounding the solution after decorrelation.

gAGE/UPC C4. Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 118
Research group of Astronomy & Geomatics
Technical University of Catalonia

C4. UPC1-UPC2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

C4.1 Estimate the baseline vector between UPC1 and UPC2 receivers using the
L1 carrier measurements of file (DD_UPC1_UPC2_06_ALL.dat).

[DDL1]= [Los_k - Los_06]*[baseline] + [ A ]*[lambda1*DDN1]

Notation (for each epoch t)


y=Gx
ª DDL º «
ª  ρˆ  ρˆ º 3 6 T
6,03
1 » ª1 0 0 º ª O1 DDN º 1
6,03

« » « « « »
1
»
« DDL » «  ρˆ  ρˆ » r  «0 1
6,07 7 6 T
0 »» « O1 DDN »6,07
1 Where the vector of
« » « » « »« » unknowns x includes
« 6, 24 » « » « »« » the user coordinates
¬« DDL1 ¼» «  ρˆ  ρˆ »
24 6 T ¬0 0 0 1 ¼ ¬« O1 DDN16,24 ¼»
¬ ¼ and ambiguities

gAGE/UPC C4. Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 119
Research group of Astronomy & Geomatics
Technical University of Catalonia
C4. UPC1-UPC2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

The receiver was not moving (static) during the data collection.
Therefore, for each epoch we have the equations system:
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t1 ) º
6,03
1 « 1 1
» ª1 0 0 º ª O1 DDN16,03 º
« » «0 1 « »
« ˆ7 0 »» « O1 DDN16,07 »
T »
«  ρ (t1 )  ρˆ (t1 ) » r  « y1 = G1 x
6,07 6
« DDL (t1 ) »
1
« » « » « »« »
« » « » « »« »
6, 24
«¬ DDL1 (t1 ) »¼ «  ρˆ 24 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ «¬ O1 DDN16,24 »¼ y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t2 ) º
6,03
1 « 2 2
» ª1 0 0 º ª O1 DDN16,03 º
« » « »
6,07
« DDL (t2 ) »
1
« ˆ7 6 T »
«  ρ (t2 )  ρˆ (t2 ) » r  «
« 0 1 0 »» « O1 DDN16,07 » y2 = G2 x
« » « » « »« »
« » « » « »« »
6, 24
¬« DDL1 (t2 ) ¼» «  ρˆ 24 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ ¬« O1 DDN16,24 ¼» y2:=y[t2]
¬ 2 2 ¼
G2:=G[t2]

gAGE/UPC
[DDL1]=[Los_k - Los_06]*[baseline] + [ A ]*[lambda1*DDN1] 120 @ J. Sanz & J.M. Juan
Research group of Astronomy & Geomatics
Technical University of Catalonia

C4. UPC1-UPC2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

In the previous sessions A and B we have not taken into account the
correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL1 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC
C4. Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 121
Research group of Astronomy & Geomatics
Technical University of Catalonia
C4. UPC1-UPC2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

The script MakeL1BslMat.scr builds the equations system


[DDL1]=[ Los_k- Los_06]*[baseline] + [ A ]*[O1*DDN1]

for the two epochs required t1=18000 and t2=18015, using the input
file DD_UPC1_UPC2_06_ALL.dat generated before.

Execute:
MakeL1BslMat.scr DD_UPC1_UPC2_06_ALL.dat 18000 18015
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC C4. Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 122
Research group of Astronomy & Geomatics
Technical University of Catalonia

C4. UPC1-UPC2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied:

octave
P=inv(G1'*W*G1+G2'*W*G2);
load M1.dat x=P*(G1'*W*y1+G2'*W*y2);
load M2.dat
x(1:3)'
y1=M1(:,1);
-24.5735 -27.1121 3.0021
G1=M1(:,2:12);
bsl_enu =[-27.4170 -26.2341 -0.0304]
y2=M2(:,1);
G2=M2(:,2:12); x(1:3)'-bsl_enu
Py=(diag(ones(1,8))+ones(8))*2e-4; ans= 2.84348 -0.87798 3.03248
W=inv(Py);

gAGE/UPC C4. Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 123
Research group of Astronomy & Geomatics
Technical University of Catalonia
C4. UPC1-UPC2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

3. Applying the LAMBDA method to FIX the ambiguities.


Compare the results with the solution obtained by rounding the floated solution.
The following procedure can be applied (justify the computations done)

octave 2.- Rounding the decorrelated floated solution


[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458;
f0=10.23e+6; afix=iZ*round(az);
f1=154*f0; -1 -12 18 2 -4 8 9 4
lambda1=c/f1
a=x(4:11)/lambda1; 3.- Decorrelation and integer LS search solution
Q=P(4:11,4:11); [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
[azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
afixed=iZ*azfixed;
1. Rounding directly the floated solution sqnorm(2)/sqnorm(1)
round(a)' ans = 1.22717645070483
-4 -20 13 11 -14 19 10 16 afixed(:,1)'
-1 -12 18 2 -4 8 9 4

gAGE/UPC C4. Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 124
Research group of Astronomy & Geomatics
Technical University of Catalonia

C4. UPC1-UPC2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

Questions:
1. Can the ambiguities be well fixed?
2. Is the test resolutive?
3. Compare the fixed ambiguities with those obtained
in the previous exercises when fixing the ambiguities
one at a time. Are the same results found?
4. What is the elapsed time to needed fix the
ambiguities? And in the previous exercise when
fixing the ambiguities one at a time?
5. The values found for the ambiguities are the same
than in the previous case?

gAGE/UPC C4. Baseline vector estimation with DDL1 @ J. Sanz & J.M. Juan 125
Research group of Astronomy & Geomatics
Technical University of Catalonia
C5. UPC1-UPC2 Baseline vector estimation with L2 carrier
(using the time-tagged reference station measurements)

C5. Estimate the baseline vector between UPC1 and UPC2 receivers using
the L2 carrier measurements of file (DD_UPC1_UPC2_06_ALL.dat).
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14515

The following procedure can be applied, as in the previous case:


1. Build-up the navigation system.
2. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
3. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding directly the floated solution
and by rounding the solution after decorrelation.

gAGE/UPC C5. Baseline vector estimation with DDL2 @ J. Sanz & J.M. Juan 126
Research group of Astronomy & Geomatics
Technical University of Catalonia

C5. UPC1-UPC2 Baseline vector estimation with L2 carrier


(using the time-tagged reference station measurements)

C5.1 Estimate the baseline vector between UPC1 and UPC2 receivers using the
L2 carrier measurements of file (DD_UPC1_UPC2_06_ALL.dat).

[DDL2]= [Los_k - Los_06]*[baseline] + [ A ]*[lambda2*DDN2]

Notation (for each epoch t)


y=Gx
ª DDL º «
ª  ρˆ  ρˆ º 3 6 T
6,03
2 » ª1 0 0 º ª O2 DDN º 6,03
2
« » « « « »
2
»
« DDL » «  ρˆ  ρˆ » r  «0 1
6,07 7 6 T
0 »» « O2 DDN » 6,07
2 Where the vector of
« » « » « »« » unknowns x includes
« 6, 24 » « » « »« » the user coordinates
¬« DDL2 ¼» «  ρˆ  ρˆ »
24 6 T ¬0 0 0 1 ¼ ¬« O2 DDN 26,24 ¼»
¬ ¼ and ambiguities

gAGE/UPC C5. Baseline vector estimation with DDL2 @ J. Sanz & J.M. Juan 127
Research group of Astronomy & Geomatics
Technical University of Catalonia
C5. UPC1-UPC2 Baseline vector estimation with L2 carrier
(using the time-tagged reference station measurements)

The receiver was not moving (static) during the data collection.
Therefore, for each epoch we have the equations system:
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t1 ) º
6,03
2 « 1 1
» ª1 0 0 º ª O2 DDN 26,03 º
« » « « »
« ˆ7 0 »» « O2 DDN 26,07 »
T »
«  ρ (t1 )  ρˆ (t1 ) » r  « y1 = G1 x
6,07
« DDL (t1 ) »
2
6
0 1
« » « » « »« »
« » « » « »« »
6, 24
«¬ DDL2 (t1 ) »¼ «  ρˆ 24 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ «¬ O2 DDN 26,24 »¼ y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t2 ) º
6,03
2 « 2 2
» ª1 0 0 º ª O2 DDN 26,03 º
« » « »
6,07
« DDL (t2 ) »
2
« ˆ7 6 T »
«  ρ (t2 )  ρˆ (t2 ) » r  «
« 0 1 0 »» «O2 DDN 26,07 » y2 = G2 x
« » « » « »« »
« » « » « »« »
6, 24
¬« DDL2 (t2 ) ¼» «  ρˆ 24 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ ¬« O2 DDN 26,24 ¼» y2:=y[t2]
¬ 2 2 ¼
G2:=G[t2]

gAGE/UPC
[DDL2]=[Los_k - Los_06]*[baseline] + [ A ]*[lambda2*DDN2] 128 @ J. Sanz & J.M. Juan
Research group of Astronomy & Geomatics
Technical University of Catalonia

C5. UPC1-UPC2 Baseline vector estimation with L2 carrier


(using the time-tagged reference station measurements)

In the previous sessions A and B we have not taken into account the
correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL2 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC
C5. Baseline vector estimation with DDL2 @ J. Sanz & J.M. Juan 129
Research group of Astronomy & Geomatics
Technical University of Catalonia
C5. UPC1-UPC2 Baseline vector estimation with L2 carrier
(using the time-tagged reference station measurements)

The script MakeL1BslMat.scr builds the equations system


[DDL2]=[ Los_k- Los_06]*[baseline] + [ A ]*[O2*DDN2]

for the two epochs required t1=18000 and t2=18015, using the input
file DD_UPC1_UPC2_06_ALL.dat generated before.

Execute:
MakeL2BslMat.scr DD_UPC1_UPC2_06_ALL.dat 18000 18015
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC C5. Baseline vector estimation with DDL2 @ J. Sanz & J.M. Juan 130
Research group of Astronomy & Geomatics
Technical University of Catalonia

C5. UPC1-UPC2 Baseline vector estimation with L2 carrier


(using the time-tagged reference station measurements)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied:

octave
P=inv(G1'*W*G1+G2'*W*G2);
load M1.dat x=P*(G1'*W*y1+G2'*W*y2);
load M2.dat
x(1:3)'
y1=M1(:,1);
-25.85097 -27.02162 3.15538
G1=M1(:,2:12);
bsl_enu =[-27.4170 -26.2341 -0.0304]
y2=M2(:,1);
G2=M2(:,2:12); x(1:3)'-bsl_enu
Py=(diag(ones(1,8))+ones(8))*2e-4; ans= 1.5660 -0.7875 3.18578
W=inv(Py);

gAGE/UPC C5. Baseline vector estimation with DDL2 @ J. Sanz & J.M. Juan 131
Research group of Astronomy & Geomatics
Technical University of Catalonia
C5 Fixing the DDN2 ambiguities with LAMBDA Method

3. Applying the LAMBDA method to FIX the ambiguities.


Compare the results with the solution obtained by rounding the floated solution.
The following procedure can be applied (justify the computations done)

octave 2.- Rounding the decorrelated floated solution


[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458;
f0=10.23e+6; afix=iZ*round(az);
f2=120*f0; 3 2 9 -27 13 -32 -13 -35
lambda2=c/f2
a=x(4:11)/lambda2; 3.- Decorrelation and integer LS search solution
Q=P(4:11,4:11); [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
[azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
afixed=iZ*azfixed;
1. Rounding directly the floated solution sqnorm(2)/sqnorm(1)
round(a)' ans = 1.00508811343751
-5 -13 6 7 -9 4 4 4 afixed(:,1)'
-3 7 -6 13 -3 19 -3 24

gAGE/UPC C5. Baseline vector estimation with DDL2 @ J. Sanz & J.M. Juan 132
Research group of Astronomy & Geomatics
Technical University of Catalonia

C5 Fixing the DDN2 ambiguities with LAMBDA Method

Questions:
1. Can the ambiguities be well fixed?
2. Is the test resolutive?
3. Compare the fixed ambiguities with those obtained
in the previous exercises when fixing the ambiguities
one at a time. Are the same results found?
4. What is the elapsed time to needed fix the
ambiguities? And in the previous exercise when
fixing the ambiguities one at a time?
5. The values found for the ambiguities are the same
than in the previous case?

gAGE/UPC C5. Baseline vector estimation with DDL2 @ J. Sanz & J.M. Juan 133
Research group of Astronomy & Geomatics
Technical University of Catalonia
Thanks for your
attention

gAGE/UPC @ J. Sanz & J.M. Juan 134


Research group of Astronomy & Geomatics
Technical University of Catalonia

Acknowledgements

• To the University of Delft for the MATLAB files of LAMBDA method.


• To Adrià Rovira-Garcia for his contribution to the editing of this material
and gLAB updating and integrating this learning material into the GLUE.

The ESA/UPC GNSS-Lab Tool suite (gLAB) has been developed under the
ESA Education Office contract N. P1081434.

gAGE/UPC @ J. Sanz & J.M. Juan


Research group of Astronomy & Geomatics
Technical University of Catalonia
Tutorial 5
Analysis of propagation effects from
GNSS observables based on
laboratory exercises
Contact: [email protected]
Web site: http://www.gage.upc.edu

Slides associated to
gLAB version 2.0.0

gAGE/UPC @ J. Sanz & J.M. Juan 1


Research group of Astronomy & Geomatics
Technical University of Catalonia

Authorship statement

The authorship of this material and the Intellectual Property Rights are owned by
J. Sanz Subirana and J.M. Juan Zornoza.

These slides can be obtained either from the server http://www.gage.upc.edu,


or [email protected]. Any partial reproduction should be previously
authorized by the authors, clearly referring to the slides used.

This authorship statement must be kept intact and unchanged at all times.

gAGE/UPC @ J. Sanz & J.M. Juan 2


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
¾ Introduction
Ž The gLAB tool suite
Ž Examples of GNSS Data Processing using gLAB
Ž Laboratory session organization
LABORATORY Session
Ž Starting up your laptop
Ž Basic: Introductory lab exercises: Iono & Posit, SF, storm,TIDs
Ž Medium: Laboratory Work Projects: LWP1 to LWP4
Ž Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 3


Research group of Astronomy & Geomatics
Technical University of Catalonia

Introduction
Ž This tutorial is devoted to analysing and assessing different issues associated with GNSS
signal propagation effects in the atmosphere.
Ž The laboratory exercises will be developed with actual GPS measurements, and processed
with the ESA/UPC GNSS-Lab Tool suite (gLAB), which is an interactive software package
for GNSS data processing and analysis.
Ž All software tools (including gLAB) and associated files for the laboratory session are
included in the USB stick delivered to those who attend the lecture.
Ž The laboratory session will consist of a set of exercises organized in three different levels
of difficulty (Basic, Medium and Advanced). A set of introductory examples range from a first
glance assessment of the ionosphere effects on single frequency positioning, and Zenith
Tropospheric Delays estimate to showing different perturbation effects in the ionosphere
(Solar Flair, Halloween storm, TIDs). Electron density profiles (Ne) retrieval, bending effects
analysis (phase excess rate depicture), as well as in-depth analysis of the code-carrier
ionosphere divergence on single-frequency smoothed codes and the second order
ionospheric effects are analysed in detail in four Laboratory Work Projects. Other topics are
given as homework.
Ž The target is to provide the participants with a wide range of selected exercises to
choose from, according their interests and their level of knowledge of these topics.

gAGE/UPC @ J. Sanz & J.M. Juan 4


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
Ž Introduction
¾ The gLAB tool suite
Ž Examples of GNSS Data Processing using gLAB
Ž Laboratory session organization
LABORATORY Session
Ž Starting up your laptop
Ž Basic: Introductory lab exercises: Iono & Posit, SF, storm,TIDs
Ž Medium: Laboratory Work Projects: LWP1 to LWP4
Ž Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 5


Research group of Astronomy & Geomatics
Technical University of Catalonia

The gLAB Tool suite


Ž The GNSS-Lab Tool suite (gLAB) is an interactive
multipurpose educational and professional package for
GNSS Data Processing and Analysis.
Ž gLAB has been developed under the ESA Education Office
contract N. P1081434.
ŽMain features:
• High Accuracy Positioning
capability.
• Fully configurable.
• Easy to use.
• Access to internal computations.

gAGE/UPC @ J. Sanz & J.M. Juan 6


Research group of Astronomy & Geomatics
Technical University of Catalonia
The gLAB Tool suite
Ž Students/Newcomers:
• Easy to use: Intuitive GUI.
• Explanations: Tooltips over the different GUI options.
• Guidelines: Several error and warning messages.
Templates for pre-configured processing.

Ž Professionals/Experts:
• Powerful tool with High Accuracy Positioning capability.
• Fast to configure and use: Templates and carefully chosen defaults.
• Can be executed in command-line and included in batch processing.

gAGE/UPC @ J. Sanz & J.M. Juan 7


Research group of Astronomy & Geomatics
Technical University of Catalonia

The gLAB Tool suite


Ž In order to widen the tool availability, gLAB
Software has been designed to work in both
Windows and Linux environments.

Ž The package contains:


• Windows binaries (with an installable file).
• Linux .tgz file.
• Source code (to compile it in both Linux and Windows OS)
under an Apache 2.0 license.
• Example data files.
• Software User Manual.
• HTML files describing the standard formats.

gAGE/UPC
gA @ J. Sanz & J.M. Juan 8
Research
h group o
of Astronomy & Geomatics
Technical University of Catalonia
The gLAB Tool suite
Ž Read files capability: Ž Modelling module:
• RINEX observation v2.11 & v3.00
• RINEX navigation message. • Fully configurable model.
• SP3 precise satellite clocks and orbits files • Satellite positions.
• ANTEX Antenna information files.
• Constellation status. • Satellite clock error correction.
• DCBs files. • Satellite movement during signal flight
• GPS_Receiver_Type files. time.
• SINEX position files. • Earth rotation during signal flight time.
• Satellite phase center correction.
Ž Pre-processing module:
• Carrier-phase pre-alignment.
• Receiver phase center correction.
• Carrier-phase / pseudo-range consistency
(frequency dependent).
check. • Relativistic clock correction.
• Cycle-slip detection (customizable parameters) • Relativistic path range correction.
- Melbourne-Wübbena. • Ionospheric correction (Klobuchar).
- Geometry-free CP combination.
- L1-C1 difference (single frequency). • Tropospheric correction
• Pseudo-range smoothing. - Simple and Niell mappings.
• Decimation capability. - Simple and UNB-3 nominals.
• On demand satellite enable/disable. • Differential Code Bias corrections.
• Elevation mask. • Wind up correction.
• Frequency selection.
• Discard eclipsed satellites.
• Solid tides correction (up to 2nd
degree).

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 9

The gLAB Tool suite


Ž Filtering module: Ž Output module:
• Cartesian / NEU coordinates.
• Able to chose different measurements • Configurable message output.
to process (1 or more), with different
weights. This design could be useful
in future Galileo processing, where Ž Other functionalities:
processing with different • Computation of satellite coordinates
measurements may be desired. and clocks from RINEX and SP3 files.
• Fixed or elevation-dependent weights • Satellite coordinates comparison
per observation. mode. For instance RINEX navigation
• Troposphere estimation on/off. vs. SP3, or SP3 vs. SP3 (along-track,
cross-track and radial orbit errors,
• Carrier-Phase or Pseudo-range clock errors, SISRE).
positioning.
• Show input mode. No processing, only
• Static/Kinematic positioning (full parsing RINEX observation files.
Q/Phi/P0 customization).
• Able to do a forward/backward
processing. • Current version allows full GPS data
• Able to compute trajectories (no need processing, and partial handling of
for a priori position). Galileo and GLONASS data.
• Future updates may include full
GNSS data processing.

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 10
GNSS learning material package
Includes three different parts, allowing participants to
follow either a guided or a self-learning GNSS course:
• GNSS Book: Complete book with theory, practical GPS Data Processing: Code and Phase
Algorithms, Techniques and Recipes

examples, and with a Laboratory course on GNSS


Data Processing & Analysis [R-1].

• gLAB tool suite: Source code and binary software Image courtesy of USAF Research Laboratory

files, plus configuration files, allowing processing gAGE-NAV


Research group of Astronomy & Geomatics
Satellite Navigation, LLC
http://www.gage.es
Manuel Hernández Pajares
José Miguel Juan Zornoza
Jaume Sanz Subirana

GNSS data from standard formats. The options


are fully configurable through a GUI.

• gAGE-GLUE: Bootable USB stick with a full


environment ready to use; based on LINUX
(Ubuntu) OS.
gAGE/UPC @ J. Sanz & J.M. Juan 11
Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
Ž Introduction
Ž The gLAB tool suite
¾ Examples of GNSS processing using gLAB
Ž Laboratory session organization
LABORATORY Session
Ž Starting up your laptop
Ž Basic: Introductory lab exercises: Iono & Posit, SF, storm,TIDs
Ž Medium: Laboratory Work Projects: LWP1 to LWP4
Ž Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 12


Research group of Astronomy & Geomatics
Technical University of Catalonia
Examples of GNSS Data Processing using gLAB

Example 1: Ionospheric effects on single frequency


positioning.
• This exercise is devoted to analysing the effect of the
ionospheric error in single frequency positioning. This is done
both in the Signal-In-Space (SIS) and User Domains.

• A receiver will be positioned in Standard Point Positioning


(SPP) mode: a) with full modelling, b) neglecting the
ionospheric correction.

gAGE/UPC @ J. Sanz & J.M. Juan 13


Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 1: Iono effects on single freq. Posit.


Data set: 24h data collected by the IGS permanent receiver
“ramo” (Lon,Lat ) on May 4th 2000.

May 4, 2000

gAGE/UPC @ J. Sanz & J.M. Juan 14


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1: Iono effects on single freq. Posit.

1. Compute SPP using files: ramo1250.00o,brdc1250.00n

2 4

1 3 5
gLAB.out

Equivalent command line sentence:


gLAB_linux -input:cfg gLAB_p1_Full.cfg
gAGE/UPC -input:obs ramo1250.00o
@ J. Sanz & J.M. Juan 15
Research group of Astronomy &-input:nav
R Geomatics brdc1250.00n
Techn ca University
Technical
ec ical U
Unive s y of
ersity of Catalonia
Ca a onia
Catalo
Catal a

Example 1. NEU Position Error plot from gLAB.out

FULL SPP model

NEU plot template configuration


gLAB.out

Equivalent command line sentence:


graph.py -f gLAB.out -x4 -y18 -s.- -c '($1=="OUTPUT")' -l "North error"

North East Up
-f gLAB.out -x4 -y19 -s.- -c '($1=="OUTPUT")' -l "East error"
-f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' -l "UP error“
--yn -20 --yx 50 --xl "time (s)" --yl "error (m)"
-t "NEU positioning error [SPP]: Full model"
gAGE/UPC @ J. Sanz & J.M. Juan 16
Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1. gLAB Modeling panel
The different model terms can
be analyzed with gLAB:
•Using the previous data file,
the impact of neglecting the
ionospheric correction is
evaluated in the Range and
Position domains.
The modeling
options set in this •This is a baseline example of
this analysis procedure. The
panel are applied same scheme must be
by default to the applied for all model terms
SPP solution. (troposphere, relativistic
correction...). A full analysis
of the different model
components can be found in
[R-2].)

gAGE/UPC @ J. Sanz & J.M. Juan 17


Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 1. Model component analysis: IONO.


The procedure
explained here is
applicable for all model
terms: iono, tropo…
Default 1.In Modeling panel,
configuration disable the model
1 Disable
Ionospheric
for SPP component to analyze. correction
(in this example:
disable
Ionospheric
correction)

2.Save as gLAB1.out

In the Default
the associated output file. 2 Set output file
Notice that the gLAB.out
configuration the file contains the processing as
output file was results with the FULL gLAB1.out
gLAB.out model, as was set in the
default configuration. 3
gAGE/UPC
C Equivalent command line sentence:
gLAB_linux -input:cfg gLAB_p1_NoIono.cfg
@ J. Sanzz & J.M. Juan 18
Research group of Astronomy & Geomatics
ics
Technical University of Catalonia -input:obs ramo1250.00o -input:nav brdc1250.00n
Example 1. NEU Position Error plot from gLAB1.out

No Iono. correction

NEU plot template configuration


gLAB1.out

Equivalent command line sentence:


graph.py -f gLAB1.out -x4 -y18 -s.- -c '($1=="OUTPUT")' -l "North error"

North East Up
-f gLAB1.out -x4 -y19 -s.- -c '($1=="OUTPUT")' -l "East error"
-f gLAB1.out -x4 -y20 -s.- -c '($1=="OUTPUT")' -l "UP error“
--yn -20 --yx 50 --xl "time (s)" --yl "error (m)"
-t "NEU positioning error [SPP]: No Iono. Corr."
gAGE/UPC @ J. Sanz & J.M. Juan 19
Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 1. VPE plot from gLAB.out,gLAB1.out

Click Clear to
1 restart plots

Y-min, Y-max

2 3
gLAB1.out
gLAB.out Time (sec) Vertical

gAGE/UPC @ J. Sanz & J.M. Juan 20


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1. HPE plot: gLAB.out, gLAB1.out

Click Clear to
1 restart plots

X-min, Y-min, Y-max

2 3
gLAB1.out East: 19
gLAB.out North: 18

gAGE/UPC @ J. Sanz & J.M. Juan 21


Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 1. Klobuchar iono. corr. plot: gLAB.out

Code
delay

Carrier
advance

Ionosphere delays code and


advances carrier measurements.

Note: Use the gLAB.out file.


gLAB.out In gLAB1.out file this model
Select
IONO component was switched off.

gAGE/UPC @ J. Sanz & J.M. Juan 22


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1. Measur. (P2-P1) v.s. Model (Klobuchar)

P2-P1=STEC+Krec+Ksat

Y-min=0
Y-max=40
gLAB.out

gAGE/UPC @ J.
J. Sanz
San
nz & J.M.
J.M. Juan
Jua
J an 23
Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 1. Summary: Klobuchar model performance

gLAB1.out gLAB1.out

gLAB.out
gLAB.out

gLAB.out Ionospheric correction (broadcast


Klobuchar )
Ionospheric delays are larger at noon due to
Code the higher illumination.
delay Large positioning errors (mainly in vertical)
appear when neglecting ionospheric
corrections.

gAGE/UPC @ J. Sanz & J.M. Juan 24


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1. 2-frequency Ionosphere-free solution

From previous configuration set following options


gLAB2.out

1 2-frequencies
Disable
Iono correct.
and
Iono-free (PC)
2
(P1-P2) TGDs

3
After running gLAB, plot results as in previous cases
gAGE/UPC Equivalent command line sentence:
gLAB_linux -input:cfg gLAB_pc_IFree.cfg@ J. Sanz & J.M. Juan 25
Research group of Astronomy & Geomatics
Technical University of Catalonia -input:obs ramo1250.00o -input:nav brdc1250.00n

Example 1. Single-frequency vs. Dual-frequency

1-freq.[SPS]:
with Klobuchar

Plot gLAB2.out
results as in
gLAB.out previous cases
gLAB.out

2-freq.:
Iono-free ramo station location

gLAB2.out gLAB2.out
May 4, 2000
gAGE/UPC @ J. Sanz & J.M. Juan 26
Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1: Iono effects on single freq. Posit.
Ionospheric delay
The ionosphere extends from about 60 km over the Earth’s
surface until more than 2000 km, with a sharp electron density
maximum at around 350 km. The ionospheric refraction depends,
among other things, on the location, local time and solar cycle (11
years).
• First order (~99.9%) ionospheric delay I1 depends I1
40.3
STEC
on the inverse of squared frequency: f2
where STEC is the number of electrons per area unit
along ray path (STEC: Slant Total Electron Content). STEC ³ N dse

• Two-frequency receivers can remove this error source


(up to 99.9%) using ionosphere-free combination f12 P1  f 22 P 2
PC
of pseudo-ranges (PC) or carriers (LC). f12  f 22
• Single-frequency users can remove about a 50-70% of the
ionospheric delay using the Klobuchar model, whose parameters
are broadcast in the GPS navigation message.

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 27

Example 1: Iono effects on single freq. Posit.

Annex:
gLAB processing in command line

gAGE/UPC @ J. Sanz & J.M. Juan 28


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1: gLAB processing in command line

Execute in a single line: (gnuplot can also be used )


graph.py -f gLAB.out -x4 -y18 -s.- -c '($1=="OUTPUT")' -l "North error"
-f gLAB.out -x4 -y19 -s.- -c '($1=="OUTPUT")' -l "East error"
-f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' -l "UP error"
--yn -20 --yx 50 --xl "time (s)" --yl "error (m)"
-t "NEU positioning error [SPP]: Full model"

graph.py -f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' --l "Full model"


-f gLAB1.out -x4 -y20 -s.- -c '($1=="OUTPUT")' --l "No Iono." --cl r
--yn -20 --yx 50 --xl "Time (s)" --yl "Up error (m)"
-t "Vertical positioning error [SPP]"

graph.py -f gLAB1.out -x19 -y18 -so -c '($1=="OUTPUT")' --l "No Iono." --cl r
-f gLAB.out -x19 -y18 -so -c '($1=="OUTPUT")' --l "Full mod" --cl b
--xl "East error (m)" --yl "North error (m)"
--xn -20 --xx 20 --yn -20 --yx 20
-t "Horizontal pos. error [SPP]"

graph.py -f gLAB.out -x4 -y25 -s. -c '($1=="MODEL")'


-f gLAB.out -x4 -y'($10-$9)' -s. -c '($1=="INPUT")‘ --cl r
--xl "time (s)" --yl "meters"
--yn -0 --yx 40 -t "Ionospheric Combination"

gAGE/UPC @ J.
J. Sanz
San
S
Sa
an
anz & J.M.
J.M
M. Juan
Ju
Jua
Ju
ua
an 29
29 29
Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 1: gLAB processing in command line

A “notepad”
with the
command
line sentence
is provided to
facilitate the
sentence
writing: just
“copy” and
“ paste”
Console to execute
from
“command line” notepad to
sentences the working
terminal.

gAGE/UPC @ J. Sanz & J.M. Juan 30


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 1: gLAB processing in command line

The different messages provided


by gLAB and its content can be
found in the [OUTPUT] section.

By placing the mouse on a given


message name, a tooltip appears
describing the different fields.

In console mode: execute

gLAB_linux -messages

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 31

Example 2: Ionospheric delay analysis


Example 2: Depict the ionospheric delays for the
different satellites in view from station amc2
• This is a simple exercise aimed to illustrate how to use gLAB
to easily analyze GNSS measurements and their
combinations.
• gLAB will used to read the RINEX measurements file and to
generate a “text” with the measurements provided in a
columnar format (more suitable to make plots).
• From “text” file, compute PI { P2  P1 I  K 21
and plot the Ionospheric
LI { L1  L2 I  Ambiguity
delay for a given satellite,
by using code and carrier P1  L1 2D1 I  ambiguity1
measurements at f1, f2: P2  L2 2D 2 I  ambiguity 2

gAGE/UPC @ J. Sanz & J.M. Juan 32


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 2: Ionospheric delay analysis
The target is to generate
this plot to depict the
ionospheric delay from
Ionospheric combination (meters)

code & carrier data


Code P2-P1 (unambiguous but noisier)

PI { P2  P1 I  K 21
LI { L1  L2 I  Ambiguity

P1  L1 2D1 I  ambiguity1
Ambiguity= P  L
P2  L2 2D 2 I  ambiguity 2

1
D1 1.546 ; D 2 1  D1
Carrier Phase L1-L2 (ambiguous but precise) J 21  1
f1 / f2
2
J 21 (154 / 120) 2

gAGE/UPC @ J. Sanz & J.M. Juan 33


Research group of Astronomy & Geomatics
Technical University of Catalonia

Example2: GPS measurements content


Code measurement content Carrier measurement content
D 2  D1
U  D1 I  K 21  H1
1
P1 L1 U  D1 I  B1  9 1 D1
1
1.546
J 21  1
P2 U  D 2 I  K 21  H 2 L2 U  D 2 I  B2  9 2 J 21 f1 / f2
2

U Refers to all non dispersive terms: geometric range, clocks, tropo. delay… (see [R-1]).
Ionospheric delay
STEC is in TECUs
sat

40.3 f12  f 22
STEC ³
rec
N e dl ,
I 2 2
1016 STEC ; ( I is in m of L1  L2 delay) 1 TECU 1016 e  / m 2 0.10m of L1- L 2 delay
f f
1 2

Interfrequency bias As the satellite clocks are referred to the ionosphere-free combination
of codes (PC), the K 21sat cancels in such combination. f12 P1  f 22 P2
K 21 K 21,rec  K 21sat Note: TGD D1 K 21sat is broadcast in GPS nav. Message. C
P
f12  f 22

Carrier ambiguities
Bi Oi N i  bi Ni is an integer number. bi is a real number (fractional part of ambiguity)

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 34
Example 2: Ionospheric delay analysis
1.- Read RINEX file with gLAB and generate a “measurements file” in
a columnar format (the easiest to manipulate and plot content):

Æ Using the configuration file meas.cfg, READ the RINEX and generate the MEAS file:
gLAB_linux -input:cfg meas.cfg -input:obs coco0090.97o -input:nav brdc0090.97n > coco.meas

gLAB configuration file


-pre:dec 1 RINEX RINEX
-print:none Measurement Navigation
-print:meas file file
--model:satphasecenter
--model:recphasecenter
--model:satclocks
--pre:cs:li OUTPUT: measurement file in columnar format
--pre:cs:bw
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 7 8 9 10 11 xx xx 14 15 16 ]

gAGE/UPC @ J. Sanz & J.M. Juan


Research group of Astronomy & Geomatics
Technical University of Catalonia
35

Example 2: Ionospheric delay analysis


2.- Manipulate the file with the easy & powerful awk (or gawk)
programming language (to compute the combinations of measurements):
P1 L1 P2 L2 ]
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
Æ From coco.meas file: 1 2 3 4 5 6 7 8 9 10 11 xx xx 14 15 16

Compute different ionospheric combination of codes and carriers, and generate the
obs.txt file containing the fields: [PRN,sec, P2-P1, (P2-L2)/5.09, (P1-L1)/3.09, L1-L2, Elev/10]

gawk '{print $6,$4,$15-$11,($15-$16)/5.09,($11-$14)/3.09,$14-$16,$7/10}' coco.meas >


obs.txt
(P2-P1) (L1-L2)
PRN
#6 #15 -- #11 #14 -- #16
(P2-L2)/5.09 (P1-L1)/3.09
sec Elev/10
#4 #15 -- #16 #11-- #14 #7

gAGE/UPC @ J. Sanz & J.M. Juan 36


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 2: Ionospheric delay analysis
3.-Plot results with “graph.py” (you can use the gnuplot as well)
[PRN, sec, P2-P1, (P2-L2)/5.09, (P1-L1)/3.09, L1-L2, Elev/10]
ÆFrom obs.txt file: 1 2 3 4 5 6 7

Show in the same plot the following iono. delays for satellite PRN01:
P2-P1, (P2-L2)/5.09, (P1-L1)/3.09, L1-L2, Elev./10

Condition: Fields to plot:


Select PRN01 #2 (x-axis)
(from 1-st field) versus Label:
#3 (y-axis) P2-P1
File to plot

graph.py -f obs.txt -c'($1==01)' -x2 -y3 --l "P2-P1"


-f obs.txt -c'($1==01)' -x2 –y4 --l "(P2-L2)/5.09"
-f obs.txt -c'($1==01)' -x2 -y5 --l "(P1-L1)/3.09"
-f obs.txt -c'($1==01)' -x2 –y6 --l "L1-L2"
-f obs.txt -c'($1==01)' -x2 –y7 --l "Elev/10"
--yn -10 --yx 15 --xl "time (s)" --yl "meters of L1-L2 delay"

gAGE/UPC @ J. Sanz & J.M. Juan 37


Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 2: Ionospheric delay analysis

PI { P2  P1 I  K 21
LI { L1  L2 I  Ambiguity

P1  L1 2D1 I  ambiguity1

zoom P2  L2 2D 2 I  ambiguity 2

1
D1 1.546 ; D 2 1  D1
J 21  1
f1 / f2
2
J 21 (154 / 120) 2

gAGE/UPC @ J. Sanz & J.M. Juan 38


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 2: Sky plots

)=40º
)=90º

Sky plots at
)=0º different
coco
latitudes
PRN01
gAGE/UPC @ J. Sanz & J.M. Juan 39
Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 3: Zenith Troposphere Delay estimation


PPP Template: Static positioning with dual freq. code & carrier (ionosphere-
free combination PC,LC) + post-processed precise orbits & clocks.

1. Select the PPP Template


2. Upload data files:
-Measurement : roap1810.09o
- ANTEX: igs05_1525.atx
- Orbits & clocks: igs15382.sp3
2 - SINEX: igs09P1538.snx
3. RUN gLAB

3 Default output file:


1 gLAB.out

gAGE/UPC @ J. Sanz & J.M. Juan 40


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 3: Zenith Troposphere Delay estimation
Plotting Results
• Coordinates are taken as
constants in nav. filter.
• Dual frequency Code and
Carrier measurements.
• Precise orbits and clocks.
• Measurements modelling
at the
centimetre Centimetre level accuracy
over 24h data is achieved
level. in PPP static mode

gAGE/UPC @ J. Sanz & J.M. Juan 41


Research group of Astronomy & Geomatics
Technical University of Catalonia

Example 3: Zenith Troposphere Delay estimation

The troposphere is
estimated as a Random
Walk process in the Kalman
Filter. A process noise of
1cm/sqrt(h) has been taken.

1 2
ftp://cddis.gsfc.nasa.gov/pub/gps/products/troposphere/new/2009/181/roap1810.09zpd.gz
The ZTD in this file is given in mm of delay. Thus, it is converted to m to compare with gLAB results
grep ROAP roap1810.09zpd | gawk -F\: '{print $3} ' | gawk '{print $1,$2/1000}' > roap_igs.trp

gAGE/UPC @ J. Sanz & J.M. Juan 42


Research group of Astronomy & Geomatics
Technical University of Catalonia
Example 3: Zenith Troposphere Delay estimation
Tropospheric delay
The troposphere is the atmospheric layer situated between the Earth’s surface and an
altitude of about 50 km.
The effect of the troposphere on GNSS signals appears as an extra delay in the
measurement of the signal travelling from satellite to receiver.
The tropospheric delay does not depend on frequency and affects both the pseudo-range
(code) and carrier phases in the same way. It can be modeled by:
• A hydrostatic component, composed of dry gases (mainly nitrogen and oxygen) in
hydrostatic equilibrium. This component can be treated as an ideal gas. Its effects vary
with the temperature and atmospheric pressure in a reasonably predictable manner, and it
is responsible for about 90% of the delay.
• A wet component caused by the water vapor condensed in the form of clouds. It depends
on the weather conditions and varies faster than the hydrostatic component and in a totally
random way. For high accuracy positioning, this component must be estimated together
with the coordinates and other parameters in the navigation filter.

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 43

OVERVIEW
Ž Introduction
Ž The gLAB tool suite
Ž Examples of GNSS processing using gLAB
¾ Laboratory session organization
LABORATORY Session
Ž Starting up your laptop
Ž Basic: Introductory lab exercises: Iono & Posit, SF, storm,TIDs
Ž Medium: Laboratory Work Projects: LWP1 to LWP4
Ž Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 44


Research group of Astronomy & Geomatics
Technical University of Catalonia
Laboratory session organization
Ž The laboratory session is organized as an assisted activity
where a set of exercises must be developed individually
or in groups of two.
Ž As they are conceived as self-learning work, a detailed guide
is provided in the slides (pdf file) to carry out the exercises.
Ž A notepad file with the command line instructions is also
provided to help the sentence writing (doing copy & paste).
Ž A set of questions is presented, and the answers are also
included in the slides.
Ž Teachers will attend individual (or collective) questions that
could arise during exercise resolution.

gAGE/UPC @ J. Sanz & J.M. Juan 45


Research group of Astronomy & Geomatics
Technical University of Catalonia

Laboratory session organization


Ž The exercises are organized at three different levels of difficulty.
The student can choose the level of exercises to do, although at least
one introductory exercise is recommended to learn basic gLAB usage.
Ž 1. Basic: Introductory exercises. From 1 to 6.
They consist of simple exercises to: 1) Study the Ionosphere effects on
single frequency positioning. 2) To depict the STEC on a Radio
occulation 3) Solar Flare effect on TEC, 4,5) TEC evolution during the
Halloween Storm, 6) To depict a TID propagaction. a
GP

gAGE/UPC @ J. Sanz & J.M. Juan 46


Research group of Astronomy & Geomatics
Technical University of Catalonia
Laboratory session organization
Ž 2. Medium: Laboratory Work Projects (LWP).
Four different LWP are proposed (to choose from):
• LWP1: To show a simple numerical method to estimate
electron density profiles (Ne(h)) from RO data.
㻯㼛㼡㼞㼠㼑㼟㼥㻌㼛㼒㻌㼁㻯㻭㻾㻌
• LWP2: To analyse the phase excess rate from GPS to LEO
Actual measurements from
due to atmospheric (ionosphere & troposphere) FORMOSAT-3/COSMIC
bending. LEOs will be used

a
G P Ne a
GP
a
U
U

A minimum knowledge of UNIX LWP1 LWP2


(e.g., awk) would be desirable

gAGE/UPC @ J. Sanz & J.M. Juan 47


Research group of Astronomy & Geomatics
Technical University of Catalonia

Laboratory session organization


Ž 2. Medium: Laboratory Work Projects (LWP).
Four different LWP are proposed (to choose from):
• LWP3: To study the code-carrier ionosphere divergence f f
effect on single-frequency carrier smoother code.

• LWP4: To analyse if second-order ionospheric effects


can be depicted from three-frequency GNSS
measurements.

Given that session time is


limited to 3h, students who feel
comfortable using gLAB, can
skip part of the previous basic
exercises (Ex1, Ex2,.. ) and
jump to the Lab. Work Project.
A minimum knowledge of UNIX
(e.g., awk) would be desirable

gAGE/UPC @ J. Sanz & J.M. Juan 48


Research group of Astronomy & Geomatics
Technical University of Catalonia
Laboratory session organization
Ž 3 . Advanced: Labeled as “Homework exercises”
A set of additional exercises addressed to those students that already have
a solid background in GPS data processing.
These exercises are beyond the scope of this 3h laboratory session, and are
given for a possible further discussion…
As in the previous cases, the answers to the questions are also included as
BACKUP slides.

A minimum ¦D k Lk  ¦ D k ' kUP sin H bias


knowledge of k

k

UNIX (e.g., awk) APC correction term

is desirable for
7257c sat 7427cB0 cos T
3 ³rec
these homework I 2 L1  N e B cos T ds   STEC
exercises. 2 f1 2 f13

gawk 'BEGIN{g=(77/60)^2}{print $6, $4, (g*($13-$14)-($15-$16))/(g-1)}' meas.txt > PC.txt

gAGE/UPC @ J. Sanz & J.M. Juan 49


Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
Ž Introduction
Ž The gLAB tool suite
Ž Examples of GNSS processing using gLAB
Ž Laboratory session organization
LABORATORY Session
¾ Starting up your laptop
Ž Basic: Introductory lab exercises: Iono & Posit, SF, storm,TIDs
Ž Medium: Laboratory Work Projects: LWP1 to LWP4
Ž Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 50


Research group of Astronomy & Geomatics
Technical University of Catalonia
Starting up your laptop
1. Plug the stick into an USB port and boot your
laptop from the stick.

2. Access the Boot Device Menu when starting up


the laptop.
Note: The way to do it depends on your computer:
Usually, you should press [ESC] or [F4], [F10], [F12]....

gAGE/UPC
gA @ J. Sanz & J.M. Juan 51
Research
h group o
of Astronomy & Geomatics
Technical University of Catalonia

Starting up your laptop


3. The following screen will appear after about 2
minutes:
The US keyboard is
set by default.
Click on this icon to You can change it
open a console by clicking on the
upper right corner.

Click on the gLAB icon


to start-up gLAB

gAGE/UPC @ J. Sanz & J.M. Juan 52


Research group of Astronomy & Geomatics
Technical University of Catalonia
Starting up your laptop

Now, the
system is
ready to
start
working!
Console to execute
“command line”
sentences

gAGE/UPC @ J. Sanz & J.M. Juan 53


Research group of Astronomy & Geomatics
Technical University of Catalonia

Starting up your laptop

Copy and
paste the
sentences
from
notepad
Console to execute to console
“command line”
sentences

gAGE/UPC @ J. Sanz & J.M. Juan 54


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
Ž Introduction
Ž The gLAB tool suite
Ž Examples of GNSS processing using gLAB
Ž Laboratory session organization
LABORATORY Session
Ž Starting up your laptop
¾ Basic: Introductory lab exercises: Iono & Posit, Solar Flair, Halloween storm,TIDs
Ž Medium: Laboratory Work Projects: LWP1 to LWP4
Ž Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 55


Research group of Astronomy & Geomatics
Technical University of Catalonia

EX. 1 Halloween storm: October 2003


A severe ionospheric storm was experienced on October 29-31,
2003 producing and increase of the electron density which led
to large ionospheric refraction values on the GPS signals. Such
conditions were beyond the capability of the GPS Klobuchar
model broadcast for single frequency users, producing large
errors in the SPS (see details in [R-3])..
Dual frequency users, navigating with
the ionospheric-free combination of
GPS signals were not affected by
such ionospheric errors, as the
ionospheric refraction can be
removed up to 99:9% using dual-
frequency signals.
gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 56
Ex. 1: Assessing Iono effects on single freq. pos.

Exercise: Repeat the previous study of Example 1 to


analyze the single freq. solution, but for the Halloween
storm.
The following steps are recommended:
1. Using files amc23020.03o,brdc3030.03n compute with gLAB
the following solutions:
1. Solution with full SPS modeling. Name output file as: gLAB.out
2. Solution with the ionospheric corrections disabled Î gLAB1.out
3. Solution with the 2-freq. Ionosphere-free code (PC) Î gLAB2.out
2. Plot results
Note: The gLAB GUI or the command line sentences can also be used .
A “notepad” with the command line sentence is provided to facilitate the
sentence writing: just “copy” and “paste” from notepad to the working terminal

gAGE/UPC @ J. Sanz & J.M. Juan 57


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 1: Full processing Î gLAB.out

1. Compute SPP using files: amc23020.03o,brdc3030.03n

2
By default, the output
file name is gLAB.out

1 3

Equivalent command line sentence:


gLAB_linux -input:cfg gLAB_p1_Full.cfg
gAGE/UPC -input:obs amc3030.03o
@ J. Sanz & J.M. Juan 58
Research group of Astronomy &-input:nav
R Geomatics brdc3030.03n
Technical University
Technical y of Catalonia
University Catalonia
Ex. 1: Iono. Disabled Î gLAB1.out

2. Reprocess the same files, with the iono. corrections disabled

2
Disable Ionospheric
Change output file
corrections
name to gLAB1.out
1 3
Equivalent command line sentence:
gLAB_linux -input:cfg gLAB_p1_NoIono.cfg
gAGE/UPC -input:obs amc3030.03o
@ J. Sanz & J.M. Juan 59
Research group of Astronomy &-input:nav
R Geomatics brdc3030.03n
Techn ca University
Technical
ec ical U
Unive s y of
ersity of Catalonia
Ca a onia
Catalo
Catal a

Ex. 1: Processing with PCÎ gLAB2.out

3. Reprocess the same files, but with 2-frequency ionosphere-free (PC)

1 2
Disable Ionospheric
corrections and P1- Select Dual Frequency
P2 corrections

Change output
Equivalent command line sentence:
gLAB_linux -input:cfg gLAB_p1_IFree.cfg
3 file name to
gLAB2.out

gAGE/UPC -input:obs amc3030.03o


Research group of Astronomy &-input:nav
R
Technical
Techn ical University
Geomatics
y of Catalonia
University Catalonia
brdc3030.03n @ J.
J. Sanz
4
Sanz & J.M. Juan
J n
Jua
60
60
Ex. 1: Assessing Iono effects on single freq. pos.

Execute in a single line: (or use the gLAB GUI)

graph.py -f gLAB.out -x4 -y18 -s.- -c '($1=="OUTPUT")' -l "North error"


-f gLAB.out -x4 -y19 -s.- -c '($1=="OUTPUT")' -l "East error"
-f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' -l "UP error"
--yn -40 --yx 70 --xl "time (s)" --yl "error (m)"
-t "NEU positioning error [SPP]: Full model"

graph.py -f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' --l "Full model"


-f gLAB1.out -x4 -y20 -s.- -c '($1=="OUTPUT")' --l "No Iono." --cl r
--yn -40 --yx 90 --xl "Time (s)" --yl "Up error (m)"
-t "Vertical positioning error [SPP]"

graph.py -f gLAB1.out -x19 -y18 -so -c '($1=="OUTPUT")' --l "No Iono." --cl r
-f gLAB.out -x19 -y18 -so -c '($1=="OUTPUT")' --l "Full mod" --cl b
--xl "East error (m)" --yl "North error (m)"
--xn -40 --xx 40 --yn -40 --yx 40
-t "Horizontal pos. error [SPP]"

P2-P1 shifted +4 m

graph.py -f gLAB.out -x4 -y'($10-$9+4)' -s. -c '($1=="INPUT")'


-f gLAB.out -x4 -y25 -s. -c '($1=="MODEL")' --cl r
--xl "time (s)" --yl "meters"
gAGE/UPC --yn -5 --yx 80 -t "Ionospheric Combination"
@ J.
J. Sanz
Sa
San
San
anz & J.M.
J.M. Juan
Ju
Jua
Juan 61
61 61
Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 1: Assessing Iono effects on single freq. pos.

gLAB1.out gLAB1.out

gLAB.out
gLAB.out

gLAB.out Ionospheric correction (broadcast Klobuchar )


Ionospheric delays are larger at noon due to the higher
insulation.
Code Klobuchar model is unable to mitigate the large
delay ionospheric errors during the storm. Position domain
errors reach up to 40 meters with Klobuchar corrections
used.

gAGE/UPC @ J. Sanz & J.M. Juan 62


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 1: Assessing Iono effects on single freq. pos.

Ionospheric correction
1-freq.[SPS]:
with Klobuchar
(broadcast Klobuchar )
•The ionosphere-free combination
(PC) of P1 and P2 codes is immune
to the ionospheric storm.
• Although PC is three-times noisier
than P1 or P2, it provides positioning
accurate at the level of a few meters
during the storm. f 2P  f 2P
1 1 2 2
PC
f12  f 22

2-freq.:
Iono-free amc2 station location

October 30, 2003

gAGE/UPC @ J. Sanz & J.M. Juan 63


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 2: STEC in a Radio Occultation (RO)


Radio Occultation (RO) commonly refers to a
GP

a sounding technique in which a radio


signal from a transmitting satellite (e.g.,
GPS) passes through a planetary
atmosphere before arriving at a receiver on
board a Low Earth Orbiter (LEO) satellite.

Along the ray path, the phase of the radio


signal is perturbed in a manner related to the This is a simple exercise where the STEC
refractivity. variation along a radio occultation will be
RO measurements can reveal the refractivity, depicted using GPS L1, L2 measurements
from which one can then derive atmospheric from a receiver on board a LEO of COSMIC
quantities such as Pressure, Temperature and constellation.
the partial pressure of water vapor; and
In the LWP1, Electron Density Profiles will
electron density, among others.
be retrieved from this data using an
algorithm equivalent to the Abel Transform.

gAGE/UPC @ J. Sanz & J.M. Juan 64


Research group of Astronomy & Geomatics
Technical University of Catalonia
FORMOSAT-3/COSMIC mission
Constellation Observing System for Meteorology Ionosphere and Climate:
6 microsatellites; orbit altitude ~ 800km

• Three instruments:
GPS receiver. 4 antennas: 2 for POD, 2 for RO.
TIP, Tri-band beacon
• Weather + Space Weather data.
‡ Global observations of:
Pressure, Temperature, Humidity 㻯㼛㼡㼞㼠㼑㼟㼥㻌㼛㼒㻌㼁㻯㻭㻾㻌
Refractivity 㻯㼛㼡㼞㼠㼑㼟㼥㻌㼛㼒㻌㼁㻯㻭㻾㻌
Ionospheric Electron Density
Ionospheric Scintillation
• Demonstrate quasi-operational GPS limb
sounding with global coverage in near-real time
• Climate Monitoring
Information available at www.cosmic.ucar.edu

gAGE/UPC @ J. Sanz & J.M. Juan 65


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 2: STEC in a Radio Occultation (RO)


Exercise: The file “RO.obs” contains the following fields [*]:
|Å------ LEO ------>|<------- GPS ------->|
YY DoY HH.HH CODE PRN elev r_LEO AR_LEO DEC_LEO r_GPS AR_GPS DEC_GPS L1 L2 L1-L2 arc
(deg) (km) (Deg) (Deg) (km) (Deg) (Deg) (cycles) (m)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Plot the L1-L2 measurement in function of time to depict the variation of STEC
along the occultation:
Select for instance : PRN=02 and “CODE=l241”, that corresponds
p to LEO=4 and Antenna 1

- Selecting: CODE=l241 and PRN=02


grep l241 RO.obs|gawk '{if ($5==02) print $3,$15}'> ro.dat

- Ploting L1-L2
graph.py -f ro.dat --xl "time (H)"
--yl "meters of L1-L2" -t"RO: L1-L2: COSMIC #4 Antenna #1"

[*] This file has been generated from files (http://cosmic-io.cosmic.ucar.edu/cdaac):


podObs_2006.253.004.01.01_rnx, leoOrb_2006.253.004.01_2009.2650_sp3, igs13920.sp3

gAGE/UPC 66
Research group of Astronomy & Geomatics
66
@ J. Sanz & J.M. Juan

Technical University of Catalonia


Ex. 2: STEC in a Radio Occultation (RO)
The previous plot shows only the
variation of the Integrated Electron
Content along the ray path (STEC).

More information can be retrieved from


occultation measurements. For instance:
• Electron Density Profile of the Ionosphere
(LWP1).
• Phase excess rate, which is related to the
bending of ray (LWP2).

G P Ne
a
a
G P
a
U
U

gAGE/UPC @ J. Sanz & J.M. Juan 67


Research group of Astronomy & Geomatics
Technical University of Catalonia

Given that session time is limited to 2h,


participants who feel comfortable using
gLAB, can skip part of the next basic
exercises (Ex3..., Ex6) and jump to the
Laboratory Work Projects (LWP).

There, if you prefer, you can jump to


slide #87 and choose one from the four
LWPs

gAGE/UPC @ J. Sanz & J.M. Juan 68


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3: Solar Flare October 28, 2003
On October 28, 2003, an intense solar eruption (a Solar Flare) was
detected around 11h UT in an active region which had grown
one of the largest sunspots ever seen by the SOlar Helioscopic
Observatory (SOHO). It appeared as a bright spike in the SOHO
ultraviolet images.

This sudden enhancement of the solar


radiation in the X-ray and extreme
ultra-violet band produced a sudden
increase in the ionospheric electron
density on the daylight hemisphere,
(see [R-3]).

gAGE/UPC @ J. Sanz & J.M. Juan 69


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3: Solar Flare October 28, 2003

Exercise: Analyze the effect of the Solar Flare on the Slant Total
Electron Content (STEC) measurements of four permanent IGS
receivers ankr, asc1, kour and qaq1, covering a wide range of
longitude and latitude.
qaq1

Data sets:
ankr
ankr3010.03o, asc13010.03o,
kour3010.03o, qaq13010.03o kour

asc1

gAGE/UPC @ J. Sanz & J.M. Juan 70


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 3: Solar Flare October 28, 2003
Execute: [Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 7 8 9 10 11 xx 13 14 15 16 ]

gLAB_linux -input:cfg meas.cfg -input:obs ankr3010.03o > ankr3010.03.meas


gLAB_linux -input:cfg meas.cfg -input:obs asc13010.03o > asc13010.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs kour3010.03o > kour3010.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs qaq13010.03o > qaq13010.03.meas

graph.py -f ankr3010.03.meas -x4 -y'($14-$16)' --l "ankr" qaq1


-f asc13010.03.meas -x4 -y'($14-$16)' --l "asc1"
-f kour3010.03.meas -x4 -y'($14-$16)' --l "kour" ankr

-f qaq13010.03.meas -x4 -y'($14-$16)' --l "qaq1" kour


--xl "time (s)" --yl "meters of L1-L2"
--xn 38500 --xx 40500 --yn -20 --yx 20 asc1

-t "28 Oct 2003 Solar flare"

gAGE/UPC @ J. Sanz & J.M. Juan 71


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 3: Solar Flare October 28, 2003

qaq1

ankr

kour

asc1

gAGE/UPC @ J. Sanz & J.M. Juan 72


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 4: Halloween storm: P2-P1 analysis
Associated with the Solar Flare analysed in the previous exercise, a Coronal
Mass Ejection occurred, which sent a large particle cloud impacting the
Earth's magnetosphere about 19 hours later, on October 29.
Subsequent impacts were still occurring several hours later. This material
interacted with the Earth's magnetosphere and a Storm Enhancement
Density (SED) appeared in North America and affected later the northern
latitudes in Europe. Extra large gradients of
TEC associated with this phenomenon were
also produced, degrading the GPS
positioning performance.

The TEC evolution in October 30, 2003 (i.e.,


Day 303 of year 2003) can be seen in the
movie TEC 2003oct30 anim.gif.

gAGE/UPC @ J. Sanz & J.M. Juan 73


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 4: Halloween storm: P2-P1 analysis


The measurement files garl3010.03o, garl3020.03o, garl3030.03o,
garl3040.03o, garl3050.03o, garl3060.03o were collected by the
permanent receiver garl in Empire, Nevada, USA ( I= 40.42 deg
O =-119:36 deg) from October 28 to November 2, 2003.

Using these files, plot the STEC for all satellites in view and discuss
the range of such variations. Analyse, in particular, the satellite
PRN 04 and calculate the maximum rate of STEC variation in
mm=s of L1 delay. Add the elevation of satellite PRN 04 in the plot.
The associated broadcast navigation les are brdc3010.03n,
brdc3020.03n, brdc3030.03n, brdc3040.03n, brdc3050.03n,
brdc3060.03n.

gAGE/UPC @ J. Sanz & J.M. Juan 74


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 4: Halloween storm: P2-P1 analysis
Exercise: Depict the ionospheric delays for the
different satellites in view from station amc2
• This is a simple exercise aimed to illustrate how to use gLAB
to easily analyze GNSS measurements and their
combinations.
• gLAB will used to read the RINEX measurements file and to
generate a “text” with the measurements provided in a
columnar format (more suitable to make plots).

• Using such “text” file, the STEC pattern for the different
satellites in view during the storm is depicted from the
geometry-free combination of codes P2-P1.
Note:
P2  P1 I  K 21

gAGE/UPC @ J. Sanz & J.M. Juan 75


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 4: Halloween storm: P2-P1 analysis


The next commands read a RINEX file and generate a text file (in columnar format)
that allows to easily plot the measurements and their combinations:
1. Using the configuration file meas.cfg, READ the RINEX and generate the MEAS message with
data format:
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1 2 3 4 5 6 7 8 9 10 11 xx 13 14 15 16 ]
Execute:
gLAB_linux -input:cfg meas.cfg -input:obs amc23030.03o -input:nav brdc3030.03n > amc23030.03.meas

2. From meas.txt file,


Compute the ionospheric combination of codes: PI=P2-P1.
Generate the file PI.txt with the following content: [PRN, hour, PI, elevation]

gawk '{print $6, $4/3600, $15-$13, $7}' amc23030.03.meas > PI.txt

3. From PI.txt file,


Plot the PI=P2-P1 for time interval [15 to 24].hours. Show in the same graph: 1) ALL satellites,
2) PRN 13, 28 and 29, and 3) The elevation of each satellite.(13, 28 and 29)
graph.py -f PI.txt -x2 -y3 --l "ALL"
-f PI.txt -c'($1==28)' -x2 -y3 -so --l "28:P2-P1" -f PI.txt -c'($1==28)' -x2 -y4 --l "29:ELEV"
-f PI.txt -c'($1==29)' -x2 -y3 -so --l "29:P2-P1" -f PI.txt -c'($1==29)' -x2 -y4 --l "13:ELEV"
gAGE/UPC
-f PI.txt -c'($1==13)' -x2 -y3 -so --l "13:P2-P1" -f PI.txt -c'($1==13)' -x2 -y4 --l "13:ELEV"
--xn 15 --xx Backup
25 --yn 0 --yx 85 --xl "time (s)" --yl "meters
Research group of Astronomy & Geomatics
Technical University of Catalonia
of L1-L2 delay" @ J. Sanz & J.M. Juan
76
76
Ex. 4: Halloween storm: P2-P1 analysis

amc2 station location

October 30, 2003

gAGE/UPC @ J. Sanz & J.M. Juan 77


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 5: Halloween storm evolution


Exercise: Analyze the ionospheric delays for 6
consecutive days including the Halloween storm
• This is a simple exercise aimed to illustrate the ionospheric
delays variation during the Halloween storm. A period of 6
consecutive days (from October 28 to November 2, 2003)
are analyzed using measurements collected in the “garl”
station in North America.

• The STEC variations are depicted from the geometry-free


combination of codes P2-P1.
Note: P2  P1 I  K 21

gAGE/UPC @ J. Sanz & J.M. Juan 78


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 5: Halloween storm evolution
[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
1.- Read RINEX file: 1 2 3 4 5 6 7 8 9 10 11 xx 13 14 15 16 ]

gLAB_linux -input:cfg meas.cfg -input:obs garl3010.03o -input:nav brdc3010.03n > garl3010.03.meas


gLAB_linux -input:cfg meas.cfg -input:obs garl3020.03o -input:nav brdc3020.03n > garl3020.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3030.03o -input:nav brdc3030.03n > garl3030.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3040.03o -input:nav brdc3040.03n > garl3040.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3050.03o -input:nav brdc3050.03n > garl3050.03.meas
gLAB_linux -input:cfg meas.cfg -input:obs garl3060.03o -input:nav brdc3060.03n > garl3060.03.meas

2.- Merge files and refer all the data to 0h of October 28th: Doy0301:
cat garl30?0.03.meas |gawk '{d=($3-301)*86400;$4=$4+d; print $6, $4/3600, $15-$13, $7}' > PI.txt

3.- Plot results:


graph.py -f PI.txt –x2 –y3 --l "ALL P2-P1"
-f PI.txt -c'($1==04)' –x2 –y4 --l "PRN04: ELEV"
-f PI.txt -c'($1==04)' –x2 –y3 –so --l "PRN04: P2-P1"
--xn 0 --xx 144

gAGE/UPC @ J.
J. Sanz
San
nz & J.M.
J.M
M. Juan
Jua
Jua
uan 79
Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 5: Halloween storm evolution


Zoom at time interval: 70 to 78 h
graph.py -f PI.txt –x2 –y3 --l "ALL P2-P1" graph.py -f PI.txt –x2 –y3 --l "ALL P2-P1"
-f PI.txt -c'($1==04)' –x2 –y4 --l “04: EL" -f PI.txt -c'($1==04)' –x2 –y4 --l “04: EL"
-f PI.txt -c'($1==04)' –x2 –y3 –so --l “04" -f PI.txt -c'($1==04)' –x2 –y3 –so --l “04"
--xn 0 --xx 144 --xn 70 --xx 78

gAGE/UPC @ J. Sanz & J.M. Juan 80


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 6: Travelling Ionospheric Disturb.
Travelling Ionospheric Disturbances (TIDs) are understood as plasma density
fluctuations that propagate through the ionosphere at an open range of
velocities and frequencies. The trend of such fluctuations can be seen from
the geometry free combination of GPS carrier measurements LI L1  L2 .

Some authors distinguish between Large-Scale TIDs (LSTIDs) with a period


greater than 1 hour and moving faster than 0,3 km/s, and Medium- Scale
TIDs (MSTIDs) with shorter periods (from 10 minutes to 1 hour) and moving
slower (0.05-0.3 km/s). The LSTIDs seem to be related to geomagnetic
disturbances (i.e., aurora, ionospheric storms, etc.). The origin of MSTIDs
seems to be more related to meteorological phenomena such as neutral
winds, eclipses, or solar terminator that produces Atmospheric Gravity Waves
(AGW) being manifested as TIDs at ionospheric heights, due to the collision
between neutral and ionised molecules.

gAGE/UPC @ J. Sanz & J.M. Juan 81


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 6: Travelling Ionospheric Disturb.


In [R4, 2006] a simple method to detect MSTIDs is proposed. It consists of
detrending the geometry free combination of GPS carrier measurements
from the diurnal variation and elevation angle dependences, applying the
following equation:
G LI (t ) LI (t )  LI (t  W )  LI (t  W ) / 2
where a value of 300sec is suitable to keep enough variation of LI (i.e.,
STEC).

Using the previous equation, the detrending is done simply by subtracting


from each value an average value of the previous and posterior
measurements (i.e., the curvature of the LI temporal dependency). It must
be pointed out that that this detrending procedure can be used in real time
with a single receiver, so it is suitable for identifying these ionospheric
perturbations in navigation applications.

gAGE/UPC @ J. Sanz & J.M. Juan 82


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 6: Travelling Ionospheric Disturb.

An example of MSTID propagation


can be depicted as follows using
the measurements of three stations
SODB, MHCB and MONB, which
are separated by a few tens of
monb
kilometres.

The target is to reproduce the


mhcb
figure 10 of the above mentioned
paper [R4, 2006].
 sodb

[R4, 2006] Hernández-Pajares, M; Juan, M.; Sanz, J., 2006].

gAGE/UPC @ J. Sanz & J.M. Juan 83


Research group of Astronomy & Geomatics
Technical University of Catalonia

Ex. 6: Travelling Ionospheric Disturb.


Exercise: Execute in a single line:
# a) Reading RINEX files:
gLAB_linux -input:cfg meas.cfg -input:obs mhcb2910.01o > mhcb.meas
gLAB_linux -input:cfg meas.cfg -input:obs monb2910.01o > monb.meas
gLAB_linux -input:cfg meas.cfg -input:obs sodb2910.01o > sodb.meas
monb
# b) Selecting satellite PRN16:
gawk '{if ($6==14) print $0}' mhcb.meas > mhcb_14.meas
mhcb
gawk '{if ($6==14) print $0}' monb.meas > monb_14.meas
gawk '{if ($6==14) print $0}' sodb.meas > sodb_14.meas
sodb

# c) Detrending on the geometry-free combination L1-L2:

gawk '{for (i=0;i<21;i++) {t[i]=t[i+1];l[i]=l[i+1]};t[21]=$4;l[21]=$14-$16;


if (NR>21){tt=t[0]*t[10]*t[20];if (tt!=0) print t[10],(l[10]-(l[0]+l[20])/2)}}' mhcb_14.meas > mhcb_dLi.meas

gawk '{for (i=0;i<21;i++) {t[i]=t[i+1];l[i]=l[i+1]};t[21]=$4;l[21]=$14-$16;


if (NR>21){tt=t[0]*t[10]*t[20];if (tt!=0) print t[10],(l[10]-(l[0]+l[20])/2)}}' monb_14.meas > monb_dLi.meas

gawk '{for (i=0;i<21;i++) {t[i]=t[i+1];l[i]=l[i+1]};t[21]=$4;l[21]=$14-$16;if (NR>21){tt=t[0]*t[10]*t[20];


if (tt!=0) print t[10],(l[10]-(l[0]+l[20])/2)}}' sodb_14.meas > sodb_dLi.meas

gAGE/UPC @ J. Sanz & J.M. Juan 84


Research group of Astronomy & Geomatics
Technical University of Catalonia
Ex. 6: Travelling Ionospheric Disturb.
Execute in a single line:
graph.py -f sodb_dLi.meas -s.- --l "sodb: PRN14"
-f mhcb_dLi.meas -s.- --l "mhcb: PRN14"
-f monb_dLi.meas -s.- --l "monb: PRN14"
--xn 55500 --xx 57000 --yn -0.05 --yx 0.07
--xl "time (s)" --yl "Detrended STEC (meters of L1-L2 delay)"
-t "MS Travelling Ionospheric Disturbance (MSTID) propagation"

monb

mhcb

gAGE/UPC
gAGE/UPC sodb
@ J. Sanz & J.M. Juan 85
Research group off Astronomy
A t & Geomatics
Technical University of Catalonia

OVERVIEW
Ž Introduction
Ž The gLAB tool suite
Ž Examples of GNSS processing using gLAB
Ž Laboratory session organization
LABORATORY Session
Ž Starting up your laptop
Ž Basic: Introductory lab exercises: Iono & Posit, SF, storm,TIDs
¾ Medium: Laboratory Work Projects: LWP1 to LWP4
Ž Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 86


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP1: Electron Density Profile from RO
In the previous Exercise #2 a
G P Ne

the variation of the


Integrated Electron Content
along the ray path (STEC)
has been shown. From
these integrated LWP1: Target
measurements during an In this LWP we will retrieve
occultation it is possible to the Ne(h) using a simple
retrieve the electron density numerical algorithm which
profile (i.e., Ne(h)) of the is equivalent to the Abel
ionosphere. transform (see [R-6]).
gAGE/UPC @ J. Sanz & J.M. Juan 87
Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP1: Electron Density Profile from RO


• The basic observable of this technique
is the additional delay, due to the GP Ne
a
refractivity index, of a radio signal
when passing through the
atmosphere.
• This additional delay is proportional to
the integrated refractivity, in such a
way that we can obtain an estimation
of the vertical refractivity profiles using As it is know, STEC and Ne are related by:
observations at different elevation LEO
angles by solving an inverse problem. STEC ( p ) ³GPS
N e dl
• Traditionally, the solution of this An equivalent expression, assuming spherical symmetry
inverse problem is obtained by using
STEC ( pn )  2¦ i 1 N e ( pi ) li ,n
n
the Abel inversion algorithm
assuming a refractivity index that only
where p stands for the impact parameter (the closest
depends on the altitude (see [RD-6]) point to the Earth centre along the optical ray path).

gAGE/UPC @ J. Sanz & J.M. Juan 88


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP1: Electron Density Profile from RO

Thence, starting from the outer ray


(p1=rLEO), for a given ray i, where
i=1,…, with impact parameter pi, its
STEC can be written in a discrete
representation as: L1  L2 D STEC  b
j i 1
STEC ( pi ) 2 N e ( pi ) li ,i  ¦ N (p ) l
j 1
e j i, j
where p stands for the impact parameter (the closest
point to the Earth centre along the optical ray path).
where lii is the fraction of ith ray within
the spherical layer ith (see [R-6]). As measurements we use L1-L2 carrier
The previous equation defines a phases that are related with the STEC by:
triangular linear equations system that L1  L2 D STEC  b
can be solved recursively for the where the bias term b is eliminated making
electron density Ne(p). differences to a reference in the arch data.

gAGE/UPC 89
Research group of Astronomy & Geomatics
89
@ J. Sanz & J.M. Juan

Technical University of Catalonia

LWP1: Electron Density Profile from RO


The program “abel.perl” implements the previous algorithm to estimate the
Ne(p) profile from GPS L1-L2 carrier measurements.
• The input data is [p(n),L1-L2(n)], with p in km and L1-L2 in meters (of L1-L2 delay)
where the impact parameter must be sorted from larger to lower value.
Î Only measurements with negative elevation must be given (i.e., occultation).

• The output data is: [n,p(n),L1-L2(n),Ne(n)],


where Ne is given in e-/m3.

Note: the Impact parameters can be


computed from the LEO elevation (elev)
and its distance to Earth’s centre (rLEO) by
(see figure):
p rLEO cos(elev)

gAGE/UPC @ J. Sanz & J.M. Juan 90


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP1: Electron Density Profile from RO
Exercise:
The file “RO.obs” contains the following fields (see Ex.5):
|Å------ LEO ------>|<------- GPS ------->|
YY DoY HH.HH CODE PRN elev r_LEO AR_LEO DEC_LEO r_GPS AR_GPS DEC_GPS L1 L2 L1-L2 arc
(deg) (km) (Deg) (Deg) (km) (Deg) (Deg) (cycles) (m)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1.- Using the file RO.obs, select the measurements with negative elevations for GPS
satellite PRN02, the LEO #4 and antenna #1, and generate the input file
[p(n),L1-L2(n)] for program “abel.perl”
- Selecting: CODE=l241 and PRN=02 and negative elevations (ocult)
grep l241 RO.obs|gawk '{if ($5==02 && $6<0) print $0}'> ro.tmp
- Generating the input file
gawk '{printf "%9.5f %7.5f \n",$7*cos($6*3.14/180),$15}' ro.tmp > abl.tmp
- Sort the file by impact parameter:
sort –nr –k+1 abl.tmp > abl.dat

gAGE/UPC @ J. Sanz & J.M. Juan 91


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP1: Electron Density Profile from RO


2.- Run the program “abel.perl” over the generated file “abl.dat“ to compute the
electron density profile Ne(p):
- Sort the file by impact parameter:
cat abl.dat| abel.perl > Ne.dat

3.- The output file “abl.dat“ contains the


fields [n,p(n),L1-L2(n),Ne(n)]
Plot the electron density profile Ne as a
function the impact parameter p and as
a function of height above Earth‘s
- Plot1: As a function of “p”
graph.py -f Ne.dat -x4 -y2
--xl "Ne(e-/m3)" --yl "p (km)"
- Plot2: As a function of “height”
graph.py -f Ne.dat -x4 –y’($2-6370)’
--xl "Ne(e-/m3)" --yl “h (km)"

gAGE/UPC @ J. Sanz & J.M. Juan 92


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP1: Electron Density Profile from RO
Questions
1. Taking into account the relationship between the electron density (Ne) and the
critical frequency (fp), i.e., minimum frequency for a signal not being reflected,
[R-1]:
f p 8.98 N e ( N e in e  /m3 , f p in Hz)
Compute the minimum frequency of a signal to cross through the ionosphere.
Answer:
From previous plot, the Ne of the maximum is 3.7E+11 e-/m3. Thence
fp 8.98 3.7 ˜1011 5.46 MHz

2. Calculate the height where a signal with frequency f=4 MHz will be reflected,
according to the previous plot of Ne profile.
Answer:
Ne ( f / 8.98) 2 (4 ˜106 / 8.98) 2 1.98 ˜1011 Ÿ  150 km

gAGE/UPC @ J. Sanz & J.M. Juan 93


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP2: Atmospheric Bending in RO


LWP2: Target
This LWP is focused in G P
a
U
a

depicting and analysing the


effect of the atmospheric U
bending in Radio
Occultation measurements.

A simple procedure will be given to depict the phase excess rate due to
the troposphere and ionosphere over L1, L2 and LC measurements.

Note: LC is the Ionosphere Free combination f12 L1  f 22 L 2


LC
of carriers L1 and L2 is given by: f12  f 22

gAGE/UPC @ J. Sanz & J.M. Juan 94


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP2: Atmospheric Bending in RO
G P
a
Ref.
Let L1 be the carrier measurement at frequency f1. GPS
A procedure to depict the L1 bending is given next: No bending

L1 U *  cdtrec
sat
 B1 ; U * U  T  D1 I a
G P
a
U Bending
U
being U the Euclidean distance between GPS and LEO
Ref.
and B a constant bias along continuous phase arc LEO

• The bias B cancels, taking time differences of L1.


Thence, from previous equation, it follows
'U * § 'L1 'cdtrec
sat
· Reference satellites (GPS, LEO) are taken
¨  ¸
't © 't 't ¹ in NON-OCULTATION .

• And clocks cancel taking Double-Differences 'U occult


*
'U occult 'L j 'U
between pairs of LEO and GPS satellites:
 DD  DD z0
't 't 't 't

'U * 'L j Note: LEO and GPS orbits are known at the level
DD DD of few cm (~5cm), thus the Euclidean range can be
't 't calculated accurately and, thus, the range rate 'U
't

gAGE/UPC DD(<) ª¬(<)GPS º ª GPS º


LEO  (<) LEO ¼  ¬ (<) LEORef  (<) LEORef ¼
GPSRef GPSRef
@ J. Sanz & J.M. Juan 95
Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP2: Atmospheric Bending in RO


G P

Next expressions generalize previous a


Ref.
GPS
results for L1, L2 and Lc measurements: No bending
L j U *  cdtrec
sat
 B j ; U * U  T  D j I ; j 1, 2

LC U :  cdtrec  BC ; U : U  T a
G P
sat
U
a
Bending
U
The differences in time to depict the bending
Ref.
'U * 'L j 'cdtrec
sat
'U * 'L LEO
 Ÿ DD DD j
't 't 't 't 't
'U : 'LC 'cdtrec sat
'U : 'L
 Ÿ DD DD C
't 't 't 't 't
Reference satellites (GPS, LEO) are taken
And the clock term cancels taking Double in NON-OCULTATION .
Differences between LEO and GPS satellites Bending is assumed only for the GPS-LEO
'U occult
*
'U occult 'L j 'U ray in occultation.
 DD  DD z 0 ; j 1, 2
't 't 't 't
'U occult
:
'U occult
*
'L 'U DD(<) ª¬(<)GPS º ª GPS GPSRef
º
LEO  (<) LEO ¼  ¬ (<) LEORef  (<) LEORef ¼
GPSRef

 DD C  DD z0 Carrier Excess
't 't 't 't Rate

gAGE/UPC @ J. Sanz & J.M. Juan 96


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP2: Atmospheric Bending in RO
Another possibility to remove the clock term, could be to subtract the LC combination
from L1 (or L2). The result will provide the “discrepancy between L1 (or L2) and LC
excess ray path.

That is:
'U occult
*
'L j 'cdtrec
sat ½
 ; j 1, 2 °
° 'U occult 'U occult 'L j
* :
't 't 't 'LC
¾Ÿ   ; j 1, 2
'U occult
:
'LC 'cdtrecsat
° 't 't 't 't
 °¿
't 't 't

Notice that the Euclidian range rate is not needed to subtract as in the previous case,
because it is cancelled when taking the difference between L1 (or L2) and Lc. Other delays
can also be cancelled...

In the following exercises, we will plot the previous combinations and discuss the
different contribution of the ionosphere and troposphere to the phase excess rate.

gAGE/UPC @ J. Sanz & J.M. Juan 97


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP2: Atmospheric Bending in RO


Exercise:
The program “RO.perl” uses the “RO.obs” as input data and computes the
following combinations of RO measurements:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
The output file: sec CODE PRN p dRho dL1 dL2 dLc d(L1-Lc) d(L2-Lc) DDdRho DDdL1 DDdL2 DDLc
(units m/s)
where
• Rho is the Euclidean Distance between GPS and LEO
• d: means differences in time
• DD: means Double Differences between GPS and LEOs satellites.
Note: the GPS PRN13 and LEO “l252” are used as reference satellites. G P

(the rays between these satellites are not in occultation). Ref.


a

GPS
No bending
The results are computed for the RO between GPS PRN02 a
G P

and LEO “l241” (the same occultation as in previous cases) Bending

Ref.
The aim of this exercise is to analyse the phase excess rate LEO

in the different combinations due to the bending of the ray.

gAGE/UPC @ J. Sanz & J.M. Juan 98


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP2: Atmospheric Bending in RO
1.- Run the program “RO.perl” over the file “RO.obs” and generate the
combinations of measurements indicated in the previous table.

Note: the results are provided for the occultation associate to PRN=02 and
“CODE=l241”, that corresponds to LEO=4 and Antenna 1.
This is hard code in the program, but can be changed, as well.

- Execute (the file RO.obs, must be available in the directory)

RO.perl > bending.dat

2.- Discuss next plots:

gAGE/UPC @ J. Sanz & J.M. Juan 99


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP2: Atmospheric Bending in RO


P1.- Plot “DDdL1-DDdRho” and DDdL2-DDdRho as a function of time and
discuss the results found

graph.py -f bending.dat -x'($12-$11)' -y4 -l "DDdL1-DDdRho"


-f bending.dat -x'($13-$11)' -y4 -l "DDdL2-DDdRho" --xn -0.4 --xx 4

Q1: Justify the discrepancy


between the two plots.
Answer 1:
• The curves in the plot show phase
excess rate due the effect of both
ionosphere and troposphere.
• As the bending in the ionosphere is
a frequency dependent effect, the
contribution is different for each
signal (L1 and L2).

gAGE/UPC @ J. Sanz & J.M. Juan 100


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP2: Atmospheric Bending in RO
P2.- Plot DDdLc-DDdRho as a function of time. Discuss results.

graph.py -f bending.dat -x'($14-$11)' -y4 --xn -0.1 --xx 0.3 --xl "m_Lc/s"
--yl "p (km)" -t"DDdLc-DDdRho: COSMIC #4 Antenna #1, PRN02"

Q2: Why there is no excess


ray path for p> 6420 km?
Answerer 2:
• The ionospheric bending effect on L1
and L2 is proportional to the inverse
of squared frequencies and cancels
in the ionosphere-free combination of
carriers Lc.
• There is only bending effect in Lc due
to the troposphere, which produces
the path at the bottom of the figure.

gAGE/UPC @ J. Sanz & J.M. Juan 101


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP2: Atmospheric Bending in RO


P3.- Plot “dL1-dLc” and DDdL1-DDdRho as a function of time. Discuss results.

graph.py -f bending.dat –x9 -y4 -l "dL1-dLc"


-f bending.dat -x'($12-$11)' –y4 -l "DDdL1-DDdRho"
--xl "m_L1/s" --yl "p (km)" --xn -0.4 --xx 4 -y4

Q3: Justify the discrepancy


between the two plots.
Answer 3:
• DDdL1-DDdRho accounts for the
contribution of ionosphere and
troposphere. The troposphere produces
the large drift at the bottom.
• dL1-dLc cancels common effects in
both signals, like troposphere and
ionosphere. But, as there is no bending
effect due to the ionosphere on Lc (see
previous plot P2) , thence, the curves
match for p> 6420 km.

gAGE/UPC @ J. Sanz & J.M. Juan 102


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP2: Atmospheric Bending in RO
P4.- Plot “dL2-dLc” and DDdL2-DDdRho as a function of time. Discuss results.
graph.py -f bending.dat –x10 -y4 -l "dL2-dLc"
-f bending.dat -x'($13-$11)' –y4 -l "DDdL1-DDdRho"
--xl "m_L2/s" --yl "p (km)" --xn -0.4 --xx 4 -y4

Q4: Justify the discrepancy


between the two plots.
Answer 4:
• The same answer as in previous plot.

gAGE/UPC @ J. Sanz & J.M. Juan 103


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP2: Atmospheric Bending in RO


P5.- Plot “dL1-dRho” and dL1-dLc as a function of time. Discuss results.

graph.py -f bending.dat -x'($6-$5)' -y4 -l "dL1-dRho"


-f bending.dat –x9 -y4 -l "dL1-dLc"
--xl "m_L1/s" --yl "p (km)" -t"COSMIC #4 Antenna #1, PRN02"

Q5: Justify the discrepancy


between the two plots.
Answer 5:
• The large drift in dL1-dRho curve is
due to the satellites (GPS and LEO)
clock drift.
• These large clock variations do not
allow to see the atmospheric bending
effect.

gAGE/UPC @ J. Sanz & J.M. Juan 104


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP2: Atmospheric Bending in RO
P6.- Plot “dL2-dRho” and dL2-dLc as a function of time. Discuss results.

graph.py -f bending.dat -x'($7-$5)' -y4 -l "dL2-dRho"


-f bending.dat –x10 -y4 -l "dL2-dLc"
--xl "m_L2/s" --yl "p (km)" -t"COSMIC #4 Antenna #1, PRN02"

Q6: Justify the discrepancy


between the two plots.
Answer 6:
• The same answer as in previous plot.

gAGE/UPC @ J. Sanz & J.M. Juan 105


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP2: Atmospheric Bending in RO


Derivation of bending angle D a from Excess
VGPS IGPS v Bending Angle (D)
W NGPS
GPS
Phase Rate (or Atmospheric Doppler Shift O 'f )

D
GP
a
N 'U occult
( v GPS  v LEO ) ˜ IJ
DGPS LEO 't

PSW
VvLEO
NGP
GPS TGPS LLEO
EO 'U occult
*

v GPS ˜ k GPS  v LEO ˜ k LEO


DLEO INLEO 't
LEOO
rGPS 'U occult 'U occult 'L j
*
'U
O 'f  DD  DD
't 't 't 't

: TLEO W
rLEO
O 'f v GPS ˜ k GPS  IJ  Y LEO ˜ N LEO  IJ
nGPS rGPS sin(D GPS  TGPS ) nLEO rLEO sin(D LEO  T LEO ) a The Bending Angle D ( a ) can be derived
iteratively from this equations system (see, [R-7])
D D GPS  D LEO

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 106
LWP2: Atmospheric Bending in RO
Comments:
From phase excess rate measurements the bending angle can be estimated.
From the bending angle, the variations of the refractivity can be computed, and
from these one can then derive atmospheric quantities such as Pressure,
Temperature and the partial pressure of water vapor, and electron density, among
others.

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 107

LWP3: Iono. Divergence on Smoothing


The target of LWP3 is to
analyze the error induced by
the divergence of the
ionosphere (between code
and carrier) into the Single-
Frequency (SF) carrier
smoothed code.
The Divergence Free (Dfree) This effect will be analyzed
analytically and tested with
and the Ionosphere Free
single and double frequency
(IFree) smoothed codes will be GPS measurements under
compared with the SF one. large ionospheric gradients.
gAGE/UPC @ J. Sanz & J.M. Juan 108
Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP3: Iono. Divergence on Smoothing
The noisy code can be smoothed with the precise (but ambiguous) carrier
measurements. This carrier smoothing can be done in real-time applying the
Hatch filter.
The smoothing depends on the time smoothing constant or filter length. The more
the filter length is used, the more smoothed the code is, but (with single
frequency measurements) a higher code-carrier divergence error is induced by
the ionosphere.
This is because the ionospheric refraction has opposite sign on code and carrier,
being its effect twice on the difference of code and carrier. This double
ionospheric refraction is propagated forward through the filter, producing a bias.

The error induced by the code-carrier divergence of the ionosphere on the


single frequency smoothed codes is assessed in this exercise for different filter
lengths.

gAGE/UPC @ J. Sanz & J.M. Juan 109


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP3: Iono. Divergence on Smoothing


The noisy code P can be smoothed with the precise (but ambiguous) carrier L
measurements. This carrier smoothing can be done in real-time applying the
Hatch filter.
1 n 1
Pˆ (k ) P(k )  P(k  1)  L(k )  L(k  1)
n n
Ionospheric combination (meters)

where [n k if k  N ], and [n N if k t N ]. Code P (unambiguous but noisier)

The algorithm is initialised with: Pˆ (1) P (1).

The previous algorithm can be interpreted


as real-time alignment of carrier with code: Ambiguity= P  L

1 n 1
Pˆ (k ) P(k )  P(k  1)  L(k )  L(k  1) Carrier Phase L (ambiguous but precise)
n n
L(k )  P  L ( k )

where 1 n 1 1
PL (k )
n
P (k )  L(k ) 
n
PL ( k 1)

n
¦ P (k )  L(k )

gAGE/UPC @ J. Sanz & J.M. Juan 110


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP3: Iono. Divergence on Smoothing
Time varying ionosphere induces a bias in the single frequency smoothed
code when it is averaged in the smoothing filter. This effect is analysed as follows:
Let: Where U includes all non dispersive terms (geometric range, clock
offsets, troposphere) and I1 represents the frequency dependent
P1 U  I1  H1 terms (ionosphere and DCBs). B1 Is the carrier ambiguity, which is
L1 U  I1  B1  9 1 constant along continuous carrier phase arcs and H1 , 9 1 account for
code and carrier multipath and thermal noise.
thence,
Note: the carrier noise L1 is
P1  L1 2 I1  B  H1 Ÿ 2 I1 : Code-carrier divergence neglected against code noise H1 .

Substituting P1  L1 in Hatch filter equation (see the previous slide #110):


Pˆ (k ) L(k )  P  L U (k )  I (k )  B  2 I  B
(k ) 1 1 1 1 (k )

U (k )  I1 (k )  2 I1  I (k )

(k ) 1 Ÿ Pˆ1 U  I1  biasI  X1
biasI
where X1 is the noise term after
where, being the ambiguity term B1 a constant bias, thence
smoothing
B1 B1 , and cancels in the previous expression

gAGE/UPC @ J. Sanz & J.M. Juan 111


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP3: Iono. Divergence on Smoothing


Raw assessment of the induced bias on P1 smoothed code by ionosphere:

• Let assume a simple model where the STEC vary linearly with time:

I1 (t ) I10  I1c ˜ t Ÿ biasI


2 I1 (k )
 I1 (k ) 2W I1c

where W is the Hatch filter smoothing time constant (i.e.,W N in previous eq.).

Exercise:
Proof the previous statement.
Solution:
Let be f (t ) { I (t ) and y (t ) { I (t )
. The averaging in the Hatch filter can be implemented as:
W  'T 'T y (t  'T )  y (t ) 1 1 1 1
y (t  'T ) y (t )  f (t  'T ) Ÿ  y (t ) f (t  'T )  o y ' y f (t )
W W 'T W W 'T o 0
W W
Thence:
I1 (t ) I10  I1c ˜ t Ÿ I1 (t )
I1 (t )  W I1c 1  e  t /W Ÿ biasI
2 I1 (t )
 I1 (t ) 
t of
o 2W I1c

gAGE/UPC @ J. Sanz & J.M. Juan 112


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP3: Iono. Divergence on Smoothing
• Divergence Free smoothing (DFree):
With 2-frequency measurements, the ionosphere can be removed from a
combination of two carriers: f2
D 2

P1  L1  2D ( L1  L2 ) B12  H1 Ÿ Pˆ1 U  I1  X12 f12  f 22


B12  B1  2D ( B1  B2 )
ÎDFree smoothed code is not affected by iono. temporal gradients,
being the ionospheric delay the same as in the original code P1 .

• Ionosphere Free smoothing (IFree):


Using both, code and carrier 2-frequency measurements, it is possible to remove
the frequency dependent effects using the ionosphere-free combination PC , LC :
PC U  H C f12 P1  f12 P2
Ÿ PˆC U  XC PC
LC U  BC  9 C f12  f 22

ÎIFree smoothed code is not affected by either spatial or temporal gradients, f12 L1  f12 L2
LC
but is 3-times noisier than the DFree, or the in the Single Freq. smoothed code. f12  f 22

gAGE/UPC @ J. Sanz & J.M. Juan 113


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP3: Iono. Divergence on Smoothing


1.- Multipath and measurement noise assessment on raw code measurements:
The C1 code multipath and receiver noise can be depicted using the following
combination (that removes all frequency dependent and not dependent terms):
2
f 22 1 § 77 ·
M C1 C1  L1  2D ( L1  L2 ) D
f12  f 22 J 1
1.545 ; J ¨ ¸
© 60 ¹

[Id YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2P L2P]
a) Generate the “meas” file for PRN03: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ]

gLAB_linux -input:cfg meas.cfg -input:obs UPC33510.08O|gawk '{if ($6==03)print $0}'>upc3.meas

b) Using previous expression, compute the C1 multipath and code noise: :


gawk '{print $4,$11-$14-3.09*($14-$16)-21.3}' upc3.meas> upc3.C1
[*] results are Shifted by “-21.3” to remove the carrier ambiguity

c) Plot the raw (unsmoothed) measurements for PRN03:


graph.py -f upc3.C1 -s- --l "C1 Raw" --xn 35000 --xx 40000
--yn -5 --yx 5 --xl "time (s)" --yl "meters"
-t "PRN03, C1 Raw measurement noise and multipath"

gAGE/UPC @ J. Sanz & J.M. Juan


114
Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP3: Iono. Divergence on Smoothing
2. Apply the Hatch filter to smooth the code using a filter length of N =100 sample
(as the measurements are at 1Hz,this means 100 seconds smoothing). Then, as
in the previous case, depict the multipath and noise of the smoothed code.
a) Smoothing code (T=100sec):

gawk 'BEGIN{Ts=100}{if (NR>Ts){n=Ts}else{n=NR};


C1s=$11/n+(n-1)/n*(C1s+($14-L1p));L1p=$14;
print $4,C1s-$14-3.09*($14-$16)-21.3}' upc3.meas > upc3.C1s100
b) Plotting results and compare with the row C1.

graph.py -f upc3.C1 -s- --l "C1 Raw"


-f upc3.C1s100 -s.- --cl r --l "C1 SF smoothed"
--xn 35000 --xx 40000 --yn -5 --yx 5
--xl "time (s)" --yl "meters"
-t "PRN03: C1 100s smoothing and iono div."

gAGE/UPC @ J. Sanz & J.M. Juan 115


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP3: Iono. Divergence on Smoothing


3 . . Using 2-frequency carriers it is possible to generate a combination with the
same ionospheric delay (the same sign) as the code to avoid the code-carrier
divergence: f 22 1 § 77 ·
2

D 1.545 ; J
L1DFree L1  2D ( L1  L2 ) U  I1  B  ] f12  f 22 J  1
¨ ¸
© 60 ¹

a) Apply the Hatch filter to compute the DFree smoothed code


gawk 'BEGIN{Ts=100}{if (NR>Ts){n=Ts}else{n=NR};
C1f=$11; L1f=$14+2*1.55*($14-$16);
C1fs=C1f/n+(n-1)/n*(C1fs+(L1f-L1p));L1p=L1f;
print $4,C1fs-L1f-21.3}' upc3.meas > upc3.C1DFs100

b) Plot results and compare with the row C1 code:


graph.py -f upc3.C1 -s- --l "C1 Raw"
-f upc3.C1s100 -s.- --cl r --l "C1 SF smoothed (100s)"
-f upc3.C1DFs100 –s.- --cl g --l "C1 DFree smooth(100s)"
--xn 35000 --xx 40000 --yn -5 --yx 5
--xl "time (s)" --yl "meters"

gAGE/UPC @ J. Sanz & J.M. Juan 116


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP3: Iono. Divergence on Smoothing
4 . Generate the ionosphere-free combinations of code and carrier measurements
to compute the Ionosphere Free (IFree) smoothed code:
J P1  P2 J L1  L2 § 77 ·
2

CIFree { PC ; LIFree { LC J ¨ ¸
J 1 J 1 © 60 ¹

gawk 'BEGIN{g=(77/60)**2}{pc=(g*$13-$15)/(g-1); lc=(g*$14-$16)/(g-1);


print $4,pc-lc-3.5}' upc3.meas > upc3.PC
• Apply the Hatch filter to compute the IFree smoothed code
gawk 'BEGIN{g=(77/60)**2}{pc=(g*$13-$15)/(g-1);
lc=(g*$14-$16)/(g-1); if (NR>100){n=100}else{n=NR};
ps=1/n*pc+((n-1)/n*(ps+lc-lcp)); lcp=lc;
print $4,ps-lc-3.5}' upc3.meas > upc3.PCs100

• Plot results and compare with the unsmoothed PC:


graph.py -f upc3.PC -s- --l "IFree raw"
-f upc3.PCs100 -s.- --cl black --l "Ifree(100s)"
--xn 35000 --xx 40000 --yn -5 --yx 5
--xl "time (s)" --yl "meters"

gAGE/UPC @ J. Sanz & J.M. Juan 117


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP3: Iono. Divergence on Smoothing


5 . Repeat previous plots but using: N=360, N=3600 and compare results. Plot also
the ionospheric delay (from L1-L2) (see more details in [R-1]):
T=100s T=360s T=3600s

C1 C1 C1
STEC

Note that the


PC PC PC y-range in
bottom row
plots is 3 times
larger than in
top plots

gAGE/UPC @ J. Sanz & J.M. Juan 118


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP3: Iono. Divergence on Smoothing
Repeat the previous exercise using the RINEX file amc23030.03o_1Hz
collected for the station amc2 during the Halloween storm. Take N=100
(i.e, filter smoothing time constant W=100 sec).

gAGE/UPC @ J. Sanz & J.M. Juan 119


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP4: Second order Ionospheric Effect


The aim of LWP4 is to build a
combination of carriers
measurements at three
different frequencies to
remove the geometry and the
first order ionosphere effects.
Once this combination is
obtained, its suitability to
depict the second order The assessment will be based
on actual GPS measurements
ionospheric effects will be
at frequencies L1, L2 and L5
analyzed.
gAGE/UPC @ J. Sanz & J.M. Juan 120
Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP4: Second order Ionospheric Effect
First order Ionospheric delay
As commented before, about the 99.9% of the ionospheric 40.3
I1 STEC
delay I1 depends on the inverse of squared frequency: f2
where STEC is the number of electrons per area unit
along ray path (STEC: Slant Total Electron Content).
STEC ³ N ds
e

Ž Its effect on code and carrier is equal but with opposed sign: I1carr  I1code

Second order Ionospheric delay


Previous expression comes from a simplification of the ionospheric delay derivation, where the
dependence of the refraction index with the magnetic field B is neglected. If such dependence is
taken into account, higher order terms appears (but, they represent less than 0.1% of total effect)
7257c 1
ŽThe second order ionospheric term is given by: I 2code ³ N e B cos T ds ; I 2carr  I 2code

f 3 2
ŽIn global geodetic computations, I2 mainly affects to the satellite clock estimates (cm level) and
orbits (few mm), but the impact on receiver positions is smaller than1mm, (see [R-5] and [R-1]).

gAGE/UPC @ J. Sanz & J.M. Juan 121


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP4: Second order Ionospheric Effect


Second order Ionospheric delay combination
Question
estio 1: Show that there is a unique linear combination of three carriers cancelling
both geometry and (first order) ionospheric refraction. a) Apply results to GPS L1, L2
oth g
and L5 signals. b) Using file l5dt1260.09o depict such combination of carriers.
Hint:
Let ai Li  a j L j  ak Lk be a linear combination of three carrier measurements at frequencies f i , f j , f k .
The coefficients ai , a j , ak , shall verify the conditions:
­ai  a j  ak 0 m geometry-free
°° with
®ai  Eij a j  Eik ak m 1st-oder iono-free
2 2
0 Eij fi / f j
° m 2nd-order iono
°̄ai  Eij a j  Eik ak
3 3
1

Note:
The first equation cancels all non-frequency dependent effects (geometric range, clocks, troposphere…)
The second equation cancels all effects that depends of inverse squared frequency (1st-order: ionosphere and
instrumental delays).
The last equation is to normalize the coefficients giving the combination in delay units at frequencyf i .

gAGE/UPC @ J. Sanz & J.M. Juan


122
Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP4: Second order Ionospheric Effect
Answer to question 1a:
Show that there is a unique linear combination of three carriers cancelling both
the geometry and the (first order) ionospheric refraction. Apply results to the L1,
L2 and L5 signals.

Applying previous equations system to GPS signals f1 154 f 0 , f 2 120 f 0 , f5 115 f 0 .

­a1  a2  a5 0 with a1 6.287


°
®a1  E12 a2  E15 a5 0
2 2
E12 154 /120 a2 34.084
° E15 154 /115 27.797
¯a1  E12 a j  E15 a5 1
3 3 a3

Thence, the combination is: LI2 { 6.287 L1  34.084 L2  27.797 L5 (in delay units at f1 frequency).

On the other hand, assuming the carriers Li uncorrelated and with the same V L , the noise
associated to this combination is given by: V LI2 44.4V L
1
Note: As I 2code  I 2carr , the combination of codes is given by:
2
PI2 { 3.144C1  17.042C2  13.899C5 ; V PI2 22.2V C

gAGE/UPC @ J. Sanz & J.M. Juan


123
Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP4: Second order Ionospheric Effect


Answer to question 1b:
Make a plot to depict the geometry-free and first-order ionosphere-free
combination of GPS carrier phase measurements [L1,L2,L5].
Use files l5dt1260.09o, l5dt1260.09n [*] (and satellite PRN01).

1. Using the configuration file meas.cfg, READ the RINEX and generate the MEAS file with content:
[MEAS YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2C L2C C2P L2P C5X L5X ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

gLAB_linux -input:cfg meas.cfg -input:obs l5dt1260.09o -input:nav l5dt1260.09n


-pre:dec 0| grep GPS > l5dt.meas
[sec LI2 elev]
2. From l5dt9.meas file, generate a file with the following content:
1 2 3

gawk '{if ($6==01) {print $4,6.287*$14-34.084*$18+27.797*$20,$7}}' l5dt.meas >


LI2.dat

[*] Note, although the elevation is not needed for this exercise (and thence the broadcast orbit file
l5dt1260.09n, it is computed because it will be useful for a further study).

gAGE/UPC @ J. Sanz & J.M. Juan 124


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP4: Second order Ionospheric Effect

3.- Plotting results:


graph.py -f LI2.dat -x1 -y2--l "LI2[125]"
--xn 29700 --xx 49200 --yn 5128 --yx 5134
--xl "time (s)" --yl "meters of L1 delay"

Discussion:
1. What is the order of magnitude of the second
order ionospheric effect?
2. Is the pattern seen in the figure due to the
2nd order ionospheric effect or it is related to
other phenomena?
Hint:
Add the elevation in the previous plot and explore
if the pattern could be related to the antenna
phase centers of the different signals.

gAGE/UPC @ J. Sanz & J.M. Juan 125


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP4: Second order Ionospheric Effect


3.- Plotting results with the elevation added:
graph.py -f LI2.dat -x1 -y'($2-5133)' –s- --l "LI2[125]"
-f LI2.dat -x1 -y'($3/10)' –s- --l "Elev/10" –s-
--xn 29700 --xx 49200 --yn -7 --yx 7
--xl "time (s)" --yl "meters of L1 delay"

Note:
The figure is shifted (by 5133m) to align
with the x-axis.
This bias is due to the carrier ambiguity
(see HW1).

gAGE/UPC @ J. Sanz & J.M. Juan 126


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP4: Second order Ionospheric Effect
Answers to the previous discussion:
1. What is the order of magnitude of the second order ionospheric effect?
2. Is the pattern seen in the figure due to the 2nd order ionospheric effect
or it is related to other phenomena?
The I2 effect on ground measurements is typically less than 2cm of L1 delay(see HW3 or
[R-5]). Thence, the pattern must be related to another phenomena, as explained as
follows:
• In the derivation of previous combination LI2, the antenna phase center (APC) correction
for the GPS signals has not been taken into account. Indeed, as L1, L2 and L5 have
different APCs, the geometric range for such signals is slightly different, producing an
elevation dependent error if it is not modelled.
• In HW1 it is shown that, assuming only APC correction in the UP component, the APC
effect can be removed from LI2 as:
where ai , a j , ak are the combination coefficients,

LI2+ ai ' iUP  a j ' jUP  ak ' kUP sin H ' iUP ,' jUP ,' kUP are the antenna phase centres for
the different signals and H is the elevation of ray

gAGE/UPC @ J. Sanz & J.M. Juan 127


Research group of Astronomy & Geomatics
Technical University of Catalonia

LWP4: Second order Ionospheric Effect


Question 2: Using the following values for the APCs '1 0.09, ' 2 0.12, ' 5
UP UP UP
0.28
(in meters, see HW1) plot the previous expression and discuss results.
Now the combination to plot is:
LI2_corr { 6.287( L1  0.09sin H )  34.084( L2  0.12sin H )  27.797( L5  0.28sin H )

1.- Using previous file l5dt.meas, generate a file content: [sec LI2corr elev]
1 2 3

gawk '{if ($6==01) {s=sin($7*3.14/180);


print $4,6.287*($14+0.09*s)- 34.084*($18+0.12*s)+27.797*($20+0.28*s),$7}}'
l5dt.meas > LI2corr.dat

2.- Plot results:


raph.py -f LI2corr.dat -x1 -y'($2-5133)' -s- --l "LI2[125]"
-f LI2.dat -x1 -y'($3/10)' --l "Elev/10" -s-
--xn 29700 --xx 49200 --yn -7 --yx 7 --xl "time (s)" --yl “L1 meters"

gAGE/UPC @ J. Sanz & J.M. Juan 128


Research group of Astronomy & Geomatics
Technical University of Catalonia
LWP4: Second order Ionospheric Effect
Final questions:
1. Discuss if the second-order
ionospheric effect can be
depicted from GPS data.
Hint:
1. The expected I2 effect on a
ground receiver is less than 2cm
in L1 delay (see HW3)
2. The estimation noise of LI2 is
V LI2 44.4V.L .Thence even in an
ideal case without APC errors
and no carrier multipath (take
for instance V L  2mm ), the
noise will be over the
phenomena threshold.
2.- The same question for Galileo
data (see HW2).

gAGE/UPC @ J. Sanz & J.M. Juan 129


Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
Ž Introduction
Ž The gLAB tool suite
Ž Examples of GNSS processing using gLAB
Ž Laboratory session organization
LABORATORY Session
Ž Starting up your laptop
Ž Basic: Introductory lab exercises: Iono & Posit, SF, storm,TIDs
Ž Medium: Laboratory Work Projects: LWP1 to LWP4
¾ Advanced: Homework

gAGE/UPC @ J. Sanz & J.M. Juan 130


Research group of Astronomy & Geomatics
Technical University of Catalonia
Home Work
Aim

Different complementary
questions (theoretical and
experimental) related to the
LW4 are asked in this
homework section.
The assessment will be based
The aim is to analyze in depth in actual GPS measurements
the combinations of three at frequencies L1, L2 and L5,
frequency signals. as well as Galileo at E1, E5
and E5b frequencies

gAGE/UPC @ J. Sanz & J.M. Juan 131


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW1: APC effect on the LI2 combination.


Question 1: Study the effect of the Antenna Phase Centre (APC) on the
LI2 combination in order to analyze the elevation dependent pattern seen
in previous of LWP2 and HW1 plots for the GPS signals (see [R-1]).
Answer :
GNSS signals at different frequencies (e.g., L1, L2, L5) have, in general, different APCs
and they can produce an elevation dependent effect in the LI2 combination.
Indeed, referring the geometric range to a common reference (the Antenna Reference
Point [ARP]) and assuming only APC in the UP component, it follows (see figure):

U U k  'U k where: 'U k ' kUP sin H


Uk
Thence, the APC correction to apply to LI2 combination
APC(Lk ) is given by:
Uk
' ¦D k Lk  ¦ D k ' kUP sin H bias
U k

k

' kUP
k
U APC correction term

where the bias term is due to the carrier ambiguities.

Note:gAGE/UPC
the satellite APC is not considered as the deviation angle @ J. Sanz & J.M. Juan 132
from the direction pointing to the Earth centre is less than 14º.
Research group of Astronomy & Geomatics
Technical University of Catalonia
HW1: APC effect on the LI2 combination.

Question 2: Knowing the L1 and L2 signals APCs, estimate the L5 APC.


a) The file l5dt1260.09o has been collected by a TRIMBLE NETR8 receiver with
TRM59800.00 antenna. According the ANTEX file igs05_1525.atx the antenna
phase centers of L1 and L2 are given by:
# TRM59800.00 NONE TYPE / SERIAL NO
# G01 START OF FREQUENCY
# 0.37 0.86 90.02 NORTH / EAST / UP
# G02 START OF FREQUENCY
# 0.09 0.01 119.89 NORTH / EAST / UP

Taking into account previous results, estimate the APC of L5 signal.

Note: Neglect the North/East components against the UP component.


According previous table Î '1 0.09002m, ' 2 0.11989m
UP UP

gAGE/UPC @ J. Sanz & J.M. Juan 133


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW1: APC effect on the LI2 combination.


Answer to Question 2: (Knowing the L1 and L2 APCs, estimate the L5 APC.)

The APC of L5 signal, together with the carrier ambiguity (bias), can be estimated from
carrier measurements along a continuous data arch (for the three carriers) as follows:

¦D L
k
k k  ' kUP sin H bias

D1 L1 (t )  D 2 L2 (t )  D 5 L5 (t )  (D1'1  D 2 ' 2 ) sin H (t ) bias  >D 5 sin H (t ) @ ' 5




UP UP

UP

y (t )

ª y (t1 ) º ª1 D 5 sin H (t1 ) º


« # » «# » ªbias º ªbias º
A A
1
« » « # » « '5 » Ÿ « T
y
' »
«¬ y (tn ) »¼ «¬1 D 5 sin H (tn ) »¼ ¬ UP ¼ ¬ UP ¼
5



y A

gAGE/UPC @ J. Sanz & J.M. Juan 134


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW1: APC effect on the LI2 combination.
Numerical application to L1, L2 and L5 signals:

Applying the values a1 6.287, a2 34.084, a3 27.797, '1UP 0.09002, ' 2UP 0.11989
to previous equation, it follows:

6.287 L1 (t )  34.084 L2 (t )  27.797 L5 (t )  43.505sin H (t ) bias  > 27.797 sin H (t ) @ ' 5UP


y (t )

ª y (t1 ) º ª1 27.797 sin H (t1 ) º ªbias º


» ªbias º A A y Ÿ ' 5UP 0.283m
1
« # » «# # o« »
T

« » « » « '5 » ¬ ' 5UP ¼ bias 5133.1m


«¬ y (tn ) »¼ «¬1 27.797 sin H (tn ) »¼ ¬ UP ¼



y A
Using the L1, L2, L5 values of file l5dt1260.09o in the time interval 30000<t <49000 sec.
(see details in the notepad).

gAGE/UPC @ J. Sanz & J.M. Juan 135


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW1: APC effect on the LI2 combination.


b) Plot the LI2 combination corrected by the antenna phase
center values: '1 0.09, ' 2 0.12, '5 0.28 (in meters)
UP UP UP

Now the combination to plot is:

LI2_corr { 6.287( L1  0.09sin H )  34.084( L2  0.12sin H )  27.797( L5  0.28sin H )

1.- Using previous file l5dt.meas, generate a file content: [sec LI2corr elev]
1 2 3

gawk '{if ($6==01) {s=sin($7*3.14/180); print $4,6.287*($14+0.09*s)-


34.084*($18+0.12*s)+27.797*($20+0.28*s)-5133,$7}}' l5dt.meas > LI2c.dat

2.- Plot results:


graph.py -f LI2c.dat -x1 -y2 -s- --l "LI2[125]"
-f LI2c.dat -x1 -y'($3/10)' -s- --l "Elev/10"
--xn 29700 --xx 49200 --yn -7 --yx 7 --xl "time (s)" --yl "L1 meters"
gAGE/UPC @ J. Sanz & J.M. Juan 136
Research group of Astronomy & Geomatics
Technical University of Catalonia
HW1: APC effect on the LI2 combination.

gAGE/UPC @ J. Sanz & J.M. Juan 137


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.

This HP2 is an extension of previous LWP2 and it is devoted to analysing the three
different combinations of three frequency signals (see [R-1]):

1.The first and second order ionosphere-free combination (LC2, PC2).


2.The geometry-free and second-order ionosphere-free combination (LI1, PI1).
3.The geometry-free and first-order ionosphere-free combination (LI2, PI2).

The target is to analyze the suitability (or not) of such combinations to provide:
• [LC2, PC2]: A measurement free from 1st and 2nd order ionospheric effects.
• [LI1, PI1]: A direct measurement of the 1st order ionosphere (free from 2nd order).
• [LI2, PI2]: A direct measurement of the 2nd order ionospheric effect.

The last case, i.e. LI2, PI2, has been already studied in the previous LWP2 for the
GPS signals L1,L2,L5. This study will be extended here to the Galileo signals.

gAGE/UPC @ J. Sanz & J.M. Juan 138


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.
Preliminar: Combinations of three-frequency signals derivation:
et Li , L j , Lk the carrier measurements at frequencies f i , f j , f k , and I1i , I 2i the first and
Let
second
seco order ionospheric effects at the frequency f i (including instrumental delay terms).
Show the following expressions, where U is the geometrical range plus all other non
dispersive terms and the carrier ambiguity:

­ Li U  I1i  I 2i
f / fj
2
°° with J ij
U  J ij I1i  J ij 3/2 I 2i
i
®Lj
°
°̄ Lk U  J ik I1i  J ij 3/2 I 2i

Consider the GPS carriers (L1, L2, L5). Show that

­LC2 7.08 L1  26.130 L2  20.050 L5 ; V LC2 33.7V L Note:


°
®LI1 12.368 L1  60.215 L2  47.847 L5 ; V LI1 77.9V L f1 154 f 0 , f 2 120 f 0 , f5 115 f 0 .
°LI2 6.287 L  34.084 L  27.797 L ; V LI2 44.4V L
¯ 1 2 5

being LC2 l U ; LI1 l I1i ; LI2 l I 2i . The carriers Li are assumed uncorrelated and with the same V L

gAGE/UPC @ J. Sanz & J.M. Juan


139
Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


Note: The previous expressions correspond to:
Ž [U ] : LC2 : First order and Second order Ionosphere Free combination.
Ž [I1i ] : LI1 : Geometry-free and Second order Ionosphere Free combination.
Ž [I 2i ] : LI2 : Geometry-free and First order Ionosphere Free combination.

Hint:
Let y A x the previous equations system, where y [ Li , L j , Lk ] , x [ U , I1i , I 2i ] and A is the
T T

associated matrix, evaluated at the given frequencies. Thence, the coefficients of [LC2, LI1, LI2]
are given by A -1 . The sigmas are the square-root of diagonal elements of matrix ( AT A )-1 .

The same question for GPS codes (C1, C2, C5). Show that:

­C1 U  I11  2 I 21 ­PC2 7.081C1  26.130C2  20.050C5 ; V PC2 33.7V C


°
®C2 U  J 12 I11  2 J 12 I 21
3/2
Ÿ °
®PI1 12.368C1  60.215C2  47.847C5 ; V PI1 77.9V C
° °PI2 3.144C  17.042C  13.899C
¯C5 U  J 15 I11  2 J 15 I 21
3/2
¯ 1 2 5 ; V PI2 22.2V C

gAGE/UPC @ J. Sanz & J.M. Juan


140
Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.

The same question for Galileo carriers (E1, E7, E8) and codes (C1, C7, C8). Show that:

­ L1 U  I11  I 21 ­LC2 6.694 L1  78.318 L2  72.354 L5 ; V LC2 106.8V L


° °
® L7
°
U  J 17 I11  J 17 3/2 I 21 Ÿ ®LI1 12.110 L1  182.385 L2  170.275 L5 ; V LI1 249.8V L
°LI2 6.146 L  104.067 L  97.921L
U  J 18 I11  J 183/2 I 21 ¯ ; V LI2 143.0V L
¯ L8 1 2 5

­C1 U  I11  2 I 21 ­PC2 6.964C1  78.318C7  72.354C8 ; V PC2 106.8V C


°
®C7 U  J 17 I11  2 J 17 I 21
3/2
Ÿ °
®PI1 12.110C1  182.385C7  170.275C8 ; V PI1 249.8V C
° °PI2 3.073C  52.033C  48.960C
¯C8 U  J 18 I11  2 J 18 I 21
3/2
¯ 1 7 8 ; V PI2 71.5V C

Note:
f1 { f E1 154 f 0 , f 7 { f E 5b 118 f 0 , f8 { f E 5 116.5 f 0 .

gAGE/UPC @ J. Sanz & J.M. Juan


141
Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.

A) First order and Second order Iono-Free combination analysis


Questions: analyse the suitability of the combinations PC2 and LC2, obtained in the
previous exercises, to navigate:
1. Calculate the theoretical noise of the (first order)-ionosphere-free combinations
PC and LC and compare with the noise of first-order and second-order
ionosphere- free combinations (LC2 and PC2) found in the previous exercise.
Consider the Galileo signals [E1,E7] and [E1,E7,E8]. Which combinations are
more suitable to navigate, the PC/LC or PC2/LC2?
2. Using files gien327sw.09o and orb15591.sp3, make a plot to compare the code
noise of the first-order-ionosphere free combination of Galileo signals [E1,E7] and
the first-order and second-order iono-free combination of signals [E1,E7,E8].
3. The same questions using files l5dt1260.09o, l5dt1260.09n for the GPS
signals L1, L2, L5.

gAGE/UPC @ J. Sanz & J.M. Juan 142


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.
Answer to question A.1:
Calculate the theoretical noise of the (first-order) ionosphere-free combinations
PC and LC and compare with the noise of first-order and second-order
ionosphere- free combinations (LC2 and PC2)?

Assuming uncorrelated and with the same V P or V L :


J ij Pi  Pj J ij2  1
Ÿ V PC [ij ] VP
f / fj
PC[ij ] 2
J ij  1 J ij  1 .Idem : J ij i

J ij Li  Lj J ij2  1
LC[ij ] Ÿ V LC [ij ] VL
J ij  1 J ij  1

Thence, for the Galileo signals [C1,C7] and [C1,C7,C8], it follows:


V PC [17] 2.81V P V PC2[178] 106.8V C Results show that the LC2 and PC2 are
two orders of magnitude noisier than the
V LC [17] 2.81V L V LC2[178] 106.8V L
original measurements. Thus, they are
f1 / f 7 154 /118
2 2
J 17 1.703 not suitable to navigate.

gAGE/UPC @ J. Sanz & J.M. Juan 143


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


Answer to question A.2:
Make a plot to compare the code noise of the first-order ionosphere-free
combination of Galileo signals [E1,E7] and the first-order and second-order
ionosphere-free combination of Galileo signals [E1,E7,E8].

1. Using the configuration file meas.cfg, READ the RINEX and generate the MEAS message
with content:
[MEAS YY Doy sec GAL PRN el Az N. list C1B L1B C1C L1C C7Q L7Q C8Q L8Q]
Execute: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

gLAB_linux -input:cfg meas.cfg -input:obs gien327sw.09o -input:sp3 orb15591.sp3> gien.meas

2. From gien327.09.meas file, generate a file with the following content: [sec PC-LC PC2-LC2]
(select the Galileo satellite PRN16, as well): 1 2 3

gawk '{if ($5=="GAL" && $6==16){print $4,$11-1.42*($15-$11)-($12+1.42*($12-$16)),


6.96*($11-$12)-78.32*($15-$16)+72.35*($17-$18)}}' gien.meas > gienPc2Lc2.dat

Note: The following expressions have been used to compute PC and LC


J ij Pi  Pj 1 J ij Li  Lj 1
PC[ij ]
J ij  1
Pi  P  P Ÿ PC[17]
J ij  1 j i
P1  1.42 P7  P1 ; LC[ij ]
J ij  1
Pi 
J ij  1
L  L
i j Ÿ LC[17] L1  1.42 L1  L7

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 144
HW2: Combinations of three-frequency measur.

3.- Plotting results:


graph.py -f gienPc2Lc2.dat -x1 -y3 --l "PC2-LC2[178]"
-f gienPc2Lc2.dat -x1 -y2 --l "PC-LC[17]"
--cl r --yn -100 --yx 100 --xl "time (s)" --yl "meters"

As expected from the theoretical results,


the measurement noise and mutipath are
strongly amplified in the PC2 combination.
Thence, it makes no sense to remove the
second-order ionospheric effect (which is
at the level of few centimetres) using this
noisier combination.
Note:
The theoretical noise values found are:
V PC [17] 2.81V C ; V PC2[178] 106.8V C

gAGE/UPC @ J. Sanz & J.M. Juan 145


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


Answer to Question A.3:
Repeat the previous exercise, for the GPS signals L1, L2, L5, using the files
l5dt1260.09o, l5dt1260.09n (and satellite PRN01).

Resolution:
1. Using the configuration file meas.cfg, READ the RINEX and generate the MEAS file with content:
[MEAS YY Doy sec GPS PRN el Az N. list C1C L1C C1P L1P C2C L2C C2P L2P C5X L5X ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

gLAB_linux -input:cfg meas.cfg -input:obs l5dt1260.09o -input:nav l5dt1260.09n


-pre:dec 0| grep GPS > l5dt.meas

[sec PC-LC PC2-LC2]


2.From l5dt126.09.meas file, generate a file with the following content:
1 2 3

gawk '{if ($6==01) {print $4,$13-1.55*($17-$13)-($14+1.55*($14-$18)),7.08*($13-$14)-


26.13*($17-$18)+20.05*($19-$20)}}' l5dt.meas > l5dtPc2Lc2.dat

gAGE/UPC @ J. Sanz & J.M. Juan 146


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.

3.- Plotting results:


graph.py -f l5dtPc2Lc2.dat -x1 -y'($3+5140)' --l "PC2-LC2[125]"
-f l5dtPc2Lc2.dat -x1 -y2 --l "PC-LC[12] " --cl r
--xn 29700 --xx 49200 --yn -100 --yx 100 --xl "time(s)" --yl "m"

Although the noise is lower than in previous


case with the Galileo C1, C7 and C8 signals,
it does not make sense to use the PC2
combination to navigate.

Note:
The theoretical noise values found are:
V PC [12] 2.98V C ; V PC2[125] 33.7V C

gAGE/UPC @ J. Sanz & J.M. Juan 147


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


B) Geometry-free & Second-order Iono-Free combination analysis
Questions: analyse the suitability of the combinations PI1 and LI1, obtained in the
previous exercises, to estimate the STEC:
1. Calculate the theoretical noise of the geometry-free combinations PI=P2-P1 and
LI=L1-L2 and compare with the noise PI1 and LI1 combinations found in the
previous exercise. Consider the Galileo signals [E1,E7] and [E1,E7,E8]. Which
combinations are more suitable to navigate, the PI/LI or PI1/LI1?

2. Using files gien327sw.09o and orb15591.sp3, make a plot to compare the code
noise of the geometry-free combination of Galileo signals [E1,E7] and the
geometry-free and first-order ionosphere-free combination of signals [E1,E7,E8].

3. The same questions using files l5dt1260.09o, l5dt1260.09n for the GPS
signals L1, L2, L5.

gAGE/UPC @ J. Sanz & J.M. Juan 148


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.
Answer to questions:

Question B.1: Measurement noise:


GAL: E1, E7, E8 GPS: L1, L2, L5

PI[ij ] Pj  Pi Ÿ V PI [ ij ] 2V P V PI 2V C V PI [12 ]
2V C
[17 ]

LI[ij ] Pi  L j Ÿ V LI [ij ] 2V L V LI 2V L V LI[12 ]


2V L
[17 ]

From previous results, V PI1 [178]


249.8V C V PI1[125] 77.9V C
seen at the beginning of V LI1 249.8V L V LI1[125] 77.9V L
this exercise. [178]

Thence, the measurement noise is strongly amplified in these combinations as in


the previous case.

gAGE/UPC @ J. Sanz & J.M. Juan 149


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


Question B.2: LI1, PI1 Plots: Following a similar procedure as in previous cases
(see detailed instructions in the notepad):
Galileo: E1, E7, E8 signals

Codes Carriers

gAGE/UPC @ J. Sanz & J.M. Juan 150


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.
Question B.3: LI1, PI1 Plots: Following a similar procedure as in previous cases
(see detailed instructions in the notepad): :
GPS: L1, L2, L5 signals

Codes Carriers

Why does this pattern appear in LI1/PI1? (see exercise HW1)


gAGE/UPC @ J. Sanz & J.M. Juan 151
Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


C) Geometry-Free & First-order Iono-Free combination analysis
Questions: analyse the suitability of the combinations PI2 and LI2, obtained in
the previous exercises, to estimate the second-order ionosphere effect.
1. Make a plot to show the “geometry-free and first-order ionosphere-free
combination (LI2) of Galileo carrier phase measurements [E1,E7,E8]. Use the
files gien327sw.09o and orb15591.sp3 (and satellite PRN16). Discuss the
results taking into account the theoretical noise figures found at the beginning
of this exercise.

2. The same question for GPS carrier phase measurements [L1,L2,L5]. Use the
files l5dt1260.09o, l5dt1260.09n (and satellite PRN01).

3. Discuss if the second-order ionospheric effect can be depicted from Galileo or


GPS data.

gAGE/UPC @ J. Sanz & J.M. Juan 152


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.
Answer to questions:

Question C.1: Measurement noise:


GAL: E1, E7, E8 GPS: L1, L2, L5

From previous results, V PI2 71.5V C V PI2[125] 22.2V C


[178]
seen at the beginning of
V LI2 143.0V L V LI2[125] 44.4V L
this exercise. [178]

Thence, the measurement noise is strongly amplified in these combinations as in


the previous case.

gAGE/UPC @ J. Sanz & J.M. Juan 153


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


Questions C.2 and C3 : LI2 Plots: Following a similar procedure as in previous
cases (see detailed instructions in the notepad):

Galileo: E1, E7, E8 signals GPS: L1, L2, L5 signals


g

Carriers
Carriiers Carriers
Carrie
ers

gAGE/UPC @ J. Sanz & J.M. Juan 154


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW2: Combinations of three-frequency measur.
Comment 1:
In previous plot of GPS LI2 combination a clear pattern of about 2m appears (see
this plot generation in LWP2).

This pattern is an elevation dependent


effect due to the different Antenna
Phase Centres (APC) of the L1, L2, L5
signals.

The study of this effect was done in the


previous Home Work exercise (HW1).

gAGE/UPC @ J. Sanz & J.M. Juan 155


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW2: Combinations of three-frequency measur.


Comment 2:
After removing the error due to the APCs, the following plot is found (see this plot
generation in exercise LWP2).

Nevertheless, the noise in the


combination (in both cases, GPS and
Galileo) is over the expected value
for the 2nd order ionospheric effect
(which is less than 2cm, see HW3 or
[R-5]).

gAGE/UPC @ J. Sanz & J.M. Juan 156


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW3: Theoretical exercises on 2nd order iono
Question 1:

Show that the second-order ionospheric delay on the L1 carrier produced by


10 TECU of STEC is less than 2 millimetres. Which values would reach I2 in the
Halloween Ionospheric Storm (October 30, 2003) analyzed in exercise 3?.

Hint:
Consider the next expression where a single thin ionospheric layer approximation has been taken for
the second term: 7257c sat 7427cB0 cos T
3 ³rec
I 2 L1  N e B cos T ds   STEC
2 f1 2 f13
Where c is the light speed, B is the module of the earth magnetic field and o is the angle between B
and the propagation direction. Units are in the International System (SI).
5
The value B0  4 ˜10 Tesla can be taken for magnetic field module at the pierce point of the satellite-
receiver ray with the ionospheric layer, the Ionospheric Pierce Point (IPP), (assumed at about 400 km in
height).
Note: f1 1575.420 ˜106 Hz; c 2.99792458 ˜108 m / s, 1 TECU 1016 e  / m 2

gAGE/UPC @ J. Sanz & J.M. Juan 157


Research group of Astronomy & Geomatics
Technical University of Catalonia

HW3: Theoretical exercises on 2nd order iono


Question 2:

Assuming that the STEC can be estimated from smoothed code PI, after
removing the DCBs [1], with an accuracy better than 5 TECUs, and assuming
a negligible error in the magnetic field B value [2], show that the second
order I2 effect can be calculated from the expression given in previous
question 1 with an error less than 1 millimetre of delay in the L1 carrier.

Note:
[1] The DCBs can be obtained from the IONEX files available at the IGS site
ftp://cddis.gsfc.nasa.gov/gps/products/ionex/

[2] The subroutines International Geomagnetic Reference Field (IGRF) could be used as well to
compute the magnetic field.

gAGE/UPC @ J. Sanz & J.M. Juan 158


Research group of Astronomy & Geomatics
Technical University of Catalonia
HW3: Theoretical exercises on 2nd order iono

Question 3:

Taking into account the previous results of HW2 and HW3, and thinking of
high accuracy geodetic positioning, discuss what is more suitable to remove
this effect on the (first-order) ionosphere-free combination LC: To use a
model or to remove this effect from a linear combination of three frequency
signals?

Question 4:

The previous expressions give the I2 effect in L1 delay units. Show the
following relation between the I2 delay in the L1 carrier and in the (first order)
ionosphere-free combination LC[12] : I 2 LC J 12
I 2 L1
1  J 12
f / fj
[12 ]
2
J ij i

gAGE/UPC @ J. Sanz & J.M. Juan 159


Research group of Astronomy & Geomatics
Technical University of Catalonia

Thank you for


your attention

gAGE/UPC @ J. Sanz & J.M. Juan 160


Research group of Astronomy & Geomatics
Technical University of Catalonia
Bibliography
ƒ R-1: J. Sanz-Subirana, J.M. Jaun-Zoroza, M. Hernández-Pajares. GNSS Data processing.
Volume-I and Volume-II. ESA Publications Division, 2012.
ƒ R-2: J. Sanz-Subirana, J.M. Jaun-Zoroza, M. Hernández-Pajares. Tutorial on GNSS Data
Processing Laboratory Exercises. ESAInternational Summer School on GNSS, 2010.
ƒ R-3: Hernández-Pajares M., J.M. Juan, J. Sanz, "EGNOS Test Bed Ionospheric
Corrections Under the October and November 2003 Storms", IEEE Transactions on
Geoscience and Remote Sensing, Vol.43(10), pp.2283-2293, 2005.
ƒ R-4: Hernández-Pajares M., J.M. Juan, J. Sanz, "Medium Scale Traveling Disturbances
Affecting GPS Measurements: Spatial and Temporal Analysis", Journal of Geophysical
Research, Space Physics, Vol.111, A07-S11, 2006, (doi:10.1029/2005JA011471).
ƒ R-5: Hernández-Pajares M., J.M. Juan, J. Sanz, "Second-order ionospheric term in GPS:
Implementation and impact on geodetic estimates", Journal of Geophysical Research,
Solid Earth, Vol.112, pp.1-16, 2007, (doi:10.1029/2006JB004707).
ƒ R-6: Hernández-Pajares M., J.M. Juan, J. Sanz, "Improving the Abel inversion by adding
ground data LEO to radio occultations in the ionospheric sounding", Geophysical
Research Letters Vol. 27(16), pp. 2743-2746, 2000.
ƒ R-7: Hajj GA, Kursinsky ER, Romans, LJ, Bertier WI, Leroy SS. “ A technical description
of atmospheric sounding by GPS occultation”. JASTP, Vo.l 64, pp 451-469, 2002.

gAGE/UPC @ J. Sanz & J.M. Juan 161


Research
Rese group of Astronomy & Geomatics
Technical University of Catalonia

Acknowledgements
Ž The ESA/UPC GNSS-Lab Tool suite (gLAB) has been developed under the ESA
Education Office contract N. P1081434.
Ž The other data files used in this study were acquired as part of NASA's Earth Science
Data Systems and archived and distributed by the Crustal Dynamics Data Information
System (CDDIS). To the NSPO/UCAR Agency for the FORMOSAT-3/COSMIC data.
Ž To Adrià Rovira-Garcia for his contribution to the editing of this material and gLAB
updating and integrating this learning material into the GLUE.

gAGE/UPC @ J. Sanz & J.M. Juan 162


Research group of Astronomy & Geomatics
Technical University of Catalonia
Tutorial 6
Differential Positioning and
carrier ambiguity fixing
Contact: [email protected]
Web site: http://www.gage.upc.edu

Slides associated to
gLAB version 2.0.0

gAGE/UPC @ J. Sanz & J.M. Juan 1


Research group of Astronomy & Geomatics
Technical University of Catalonia

Authorship statement

The authorship of this material and the Intellectual Property Rights are owned by
J. Sanz Subirana and J.M. Juan Zornoza.

These slides can be obtained either from the server http://www.gage.upc.edu,


or [email protected]. Any partial reproduction should be previously
authorized by the authors, clearly referring to the slides used.

This authorship statement must be kept intact and unchanged at all times.

5 March 2017

gAGE/UPC @ J. Sanz & J.M. Juan 2


Research group of Astronomy & Geomatics
Technical University of Catalonia
Aim of this tutorial
Ž This tutorial is devoted to analysing and assessing the differential positioning with
carrier phase measurements (L1, L2 and LC). Five different receivers and three
baselines (of 7m, 18m and 15km) are considered.

Ž This study includes ambiguity fixing with the LAMBDA method and the analysis of
different effects such as the geometry diversity and atmospheric propagation errors
(troposphere and ionosphere).

Ž Two different implementations of differential positioning are considered:


• Using time-tagged measurements the baseline vector is directly estimated.
• Using computed differential corrections a user receiver is positioned.
The effect of synchronization errors between the reference station and the user is
also analysed for both implementations.
Ž All software tools (including gLAB) and associated files for the laboratory session
are included in the CD-ROM or USB stick associated with this tutorial.

gAGE/UPC @ J. Sanz & J.M. Juan 3


Research group of Astronomy & Geomatics
Technical University of Catalonia

OVERVIEW
Ž Introduction: gLAB processing in command line
Ž Preliminary computations: data files & reference values
Ž Session A: Differential positioning of IND2-IND3 receivers
(baseline: 18 metres)

Ž Session B: Differential positioning of IND1-IND2 receivers


(baseline: 7 metres, but synchronization errors)

Ž Session C: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Night time): tropospheric effects

Ž Session D: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Day time): tropospheric and Ionospheric effects

gAGE/UPC @ J. Sanz & J.M. Juan 4


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
¾ Introduction: gLAB processing in command line
Ž Preliminary computations: data files & reference values
Ž Session A: Differential positioning of IND2-IND3 receivers
(baseline: 18 metres)

Ž Session B: Differential positioning of IND1-IND2 receivers


(baseline: 7 metres, but synchronization errors)

Ž Session C: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Night time): tropospheric effects

Ž Session D: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Day time): tropospheric and Ionospheric effects

gAGE/UPC @ J. Sanz & J.M. Juan 5


Research group of Astronomy & Geomatics
Technical University of Catalonia

gLAB processing in command line

A “notepad”
with the
command
line sentence
is provided to
facilitate the
sentence
writing: just
“copy” and
“ paste”
Console to execute
from
“command line” notepad to
sentences the working
terminal.

gAGE/UPC @ J. Sanz & J.M. Juan 6


Research group of Astronomy & Geomatics
Technical University of Catalonia
gLAB processing in command line
The different messages provided by
gLAB and its content can be found
in the [OUTPUT] section.

By placing the mouse on a given


message name, a tooltip appears
describing the different fields.

In console mode: execute

gLAB_linux -messages

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 7

OVERVIEW
Ž Introduction: gLAB processing in command line
¾ Preliminary computations: data files & reference values
Ž Session A: Differential positioning of IND2-IND3 receivers
(baseline: 18 metres)

Ž Session B: Differential positioning of IND1-IND2 receivers


(baseline: 7 metres, but synchronization errors)

Ž Session C: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Night time): tropospheric effects

Ž Session D: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Day time): tropospheric and Ionospheric effects

gAGE/UPC @ J. Sanz & J.M. Juan 8


Research group of Astronomy & Geomatics
Technical University of Catalonia
Previous

Preliminary Computations

gAGE/UPC @ J. Sanz & J.M. Juan 9


Research group of Astronomy & Geomatics
Technical University of Catalonia

P. Preliminary computations
Ž This section is devoted to computing the reference values (receivers coordinates)
and to preparing the data files to be used in the exercises.

Ž These data files will include the code and carrier measurements and the model
components: geometric range, nominal troposphere and ionosphere corrections,
satellite elevation and azimuth from each receiver…

Ž This data processing will be done with gLAB for each individual receiver.

Ž This preliminary processing will provide the baseline data files to perform
computations easily using basic tools (such as awk for data files handling, to
compute Double Differences of measurements) or using octave (MATLAB) scripts
for the LAMBDA method implementation.

Ž Detailed guidelines for self learning students are provided in this tutorial and in
its associated notepad text file.

gAGE/UPC @ J. Sanz & J.M. Juan 10


Research group of Astronomy & Geomatics
Technical University of Catalonia
P. Preliminary computations
P.1. Computation of reference values of receiver coordinates
Using gLAB and precise orbits and clocks, compute the PPP solution:
Note: the receivers were not moving (static receivers) during the data collection.
• Data files:
- Measurements: PLAN0540.13O, GARR0540.13O, IND10540.13O, IND20540.13IO, IND30540.13O.
- Orbits and clocks: brdc0540.13n, igs17286.sp3, igs17286.clk
- ANTEX: igs08_1719.atx.
- Configuration file (to compute LC APC coordinates): gLAB_2files_APC.cfg

• Computation example:
gLAB_linux -input:cfg gLAB_2files_APC.cfg -input:obs PLAN0540.13O
-input:orb igs17286.sp3 -input:clk igs17286.clk -input:ant igs08_1719.atx

grep OUTPUT gLAB.out | tail -1|gawk '{print "PLAN",$6,$7,$8,$15,$16,$17}' >> sta.pos

gAGE/UPC P.1. Computation of reference @ J. Sanz & J.M. Juan 11


Research group of Astronomy & Geomatics
Technical University of Catalonia
values of receiver coordinates

P. Preliminary computations
Toulouse

GARR

INDx

PLAN
Barcelona
IND1

IND1-IND2: 7.197 m IND2


IND2-IND3: 18.380 m
PLAN-GARR: 15.228 km

gAGE/UPC P.1. Computation of reference IND3 @ J.


J. Sanz
San
Sa
San
anz & J.M.
J.M. Juan
Jua
ua
an 12
12
Research group of Astronomy & Geomatics
Technical University of Catalonia
values of receiver coordinates
P. Preliminary computations
P.1. Computation of reference values of receiver coordinates
Plotting results:
graph.py -f gLAB.out -x4 -y18 -s.- -c '($1=="OUTPUT")' -l "North error"
-f gLAB.out -x4 -y19 -s.- -c '($1=="OUTPUT")' -l "East error"
-f gLAB.out -x4 -y20 -s.- -c '($1=="OUTPUT")' -l "UP error"
--yn -.5 --yx .5 --xl "time (s)" --yl "error (m)" -t "PPP"

Note: the values of "APPROXIMATE COORDINATES


written in RINEX files correspond to the precise APC
of LC coordinates.

As a starting point, assume


the same APC for L1 and LC

gAGE/UPC P.1. Computation of reference @ J. Sanz & J.M. Juan 13


Research group of Astronomy & Geomatics
Technical University of Catalonia
values of receiver coordinates

P. Preliminary computations
P.1. Computation of reference values of receiver coordinates
Plotting results:

more sta.pos

PLAN 4787328.7916 166086.0719 4197602.8893 41.418528940 1.986956885 320.0721


GARR 4796983.5170 160309.1774 4187340.3887 41.292941948 1.914040816 634.5682
IND1 4787678.1496 183409.7131 4196172.3056 41.403026173 2.193853893 109.5681
IND2 4787678.9809 183402.5915 4196171.6833 41.403018646 2.193768411 109.5751
IND3 4787689.5146 183392.8859 4196160.1653 41.402880392 2.193647610 109.5743

Question:
What is the expected accuracy of
the computed coordinates?

gAGE/UPC P.1. Computation of reference @ J. Sanz & J.M. Juan 14


Research group of Astronomy & Geomatics
Technical University of Catalonia
values of receiver coordinates
P. Preliminary computations
P.1. Computation of reference values of receiver coordinates
Using octave (or MATLAB), compute the baseline length between the different
receivers:

• Computation example:
octave Results:

IND1=[ 4787678.1496 183409.7131 4196172.3056 ] IND1-IND2: 7.197 m


IND2=[ 4787678.9809 183402.5915 4196171.6833] IND2-IND3: 18.380 m
IND1-IND3: 23.658 m
norm(IND1-IND2,2) PLAN-GARR: 15.228 km
ans = 7.1969 PLAN-IND1: 17.386 km
IND1-GARR: 26.424 km
exit

gAGE/UPC P.1. Computation of reference @ J. Sanz & J.M. Juan 15


Research group of Astronomy & Geomatics
Technical University of Catalonia
values of receiver coordinates

P. Preliminary computations
P.2. Model Components computation
• The script "ObsFile.scr" generates a data file with the following content

1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

• Run this script for all receivers:


ObsFile.scr PLAN0540.13O brdc0540.13n
ObsFile.scr GARR0540.13O brdc0540.13n
ObsFile.scr IND10540.13O brdc0540.13n
ObsFile.scr IND20540.13O brdc0540.13n
ObsFile.scr IND30540.13O brdc0540.13n

• Merge all files into a single file:


cat ????.obs > ObsFile.dat

gAGE/UPC P.2. Model components computation @ J. Sanz & J.M. Juan 16


Research group of Astronomy & Geomatics
Technical University of Catalonia
P. Preliminary computations
Selecting measurements: Time interval [14500:16500]
• To simplify computations, a time interval with always the same set of
satellites in view and without cycle-slips is selected.
• Moreover an elevation mask of 10 degrees will be applied.

If the satellites change or cycle-slips appear during the data processing


interval, care with the associated parameters handling must be taken in
the navigation filter. Set up new parameters when new satellites appear
and treat the ambiguities as constant between cycle-slips and white
noise when a cycle-slip happens.

gAGE/UPC P.2. Model components computation @ J. Sanz & J.M. Juan 17


Research group of Astronomy & Geomatics
Technical University of Catalonia

P. Preliminary computations
Selecting measurements: Time interval [14500:16500]
• Select the satellites with elevation over 10º in the time interval [14500:16500]

cat ObsFile.dat|gawk '{if ($4>=14500 && $4<=16500 && $12>10) print $0}' >
obs.dat

• Reference satellite (over the time interval [14500:16500])

Confirm that the satellite PRN06 is the satellite with the highest elevation
(this satellite will be used as the reference satellite)

obs.dat Î
1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

gAGE/UPC P.2. Model components computation @ J. Sanz & J.M. Juan 18


Research group of Astronomy & Geomatics
Technical University of Catalonia
OVERVIEW
Ž Introduction: gLAB processing in command line
Ž Preliminary computations: data files & reference values
¾ Session A: Differential positioning of IND2-IND3 receivers
(baseline: 18 metres)

Ž Session B: Differential positioning of IND1-IND2 receivers


(baseline: 7 metres, but synchronization errors)

Ž Session C: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Night time): tropospheric effects

Ž Session D: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Day time): tropospheric and Ionospheric effects

gAGE/UPC @ J. Sanz & J.M. Juan 19


Research group of Astronomy & Geomatics
Technical University of Catalonia

Session A

Differential positioning of
IND2- IND3 receivers
(baseline: 18 metres)

gAGE/UPC @ J. Sanz & J.M. Juan 20


Research group of Astronomy & Geomatics
Technical University of Catalonia
A. IND2- IND3 Differential positioning
A.1. Double differences between receivers and satellites computation
The script "DDobs.scr" computes the double differences between receivers
and satellites from file obs.dat. 1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

For instance, the following sentence:


DDobs.scr obs.dat IND2 IND3 06 03
generates the file
------------------- DD_{sta1}_{sta2}_{sat1}_{sat2}.dat ----------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[sta1 sta2 sat1 sat2 DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2]
<---- sta2 ---->
------------------------------------------------------------------------------------

Where the elevation (EL) and azimuth (AZ) are taken from station #2.
and where (EL1, AZ1) are for satellite #1 and (EL1, AZ1) are for satellite #2.

gAGE/UPC A.1. Double Differences computation @ J. Sanz & J.M. Juan 21


Research group of Astronomy & Geomatics
Technical University of Catalonia

A. IND2- IND3 Differential positioning


Compute the double differences between receivers IND2 (reference) and
IND3 and satellites PRN06 (reference) and [PRN 03, 07,11, 16, 18, 19,
21, 22, 30]
DDobs.scr obs.dat IND2 IND3 06 03
DDobs.scr obs.dat IND2 IND3 06 07
DDobs.scr obs.dat IND2 IND3 06 11
DDobs.scr obs.dat IND2 IND3 06 16
DDobs.scr obs.dat IND2 IND3 06 18
DDobs.scr obs.dat IND2 IND3 06 19
DDobs.scr obs.dat IND2 IND3 06 21
DDobs.scr obs.dat IND2 IND3 06 22
DDobs.scr obs.dat IND2 IND3 06 30

Merge the files in a single file and sort by time:


cat DD_IND2_IND3_06_??.dat|sort -n -k +6 > DD_IND2_IND3_06_ALL.dat

gAGE/UPC A.1. Double Differences computation @ J. Sanz & J.M. Juan 22


Research group of Astronomy & Geomatics
Technical University of Catalonia
A. IND2- IND3 Differential positioning
----------------------------- DD_IND2_IND3_06_ALL.dat --------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[IND2 IND3 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2]
<---- IND3 ---->
---------------------------------------------------------------------------------

OUTPUT file PRN06 (ref)


PRNXX

Where the elevation (EL) and azimuth (AZ)


are taken from station IND3 (the user)

and where, (EL1, AZ1) are for satellite


PNR06 (reference) and (EL1, AZ1) are for
satellite PRNXX

IND2 (ref) IND3 (user)

gAGE/UPC A.1. Double Differences computation @ J. Sanz & J.M. Juan 23


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.2. IND2-IND3 Baseline vector estimation with P1 code


(using the time-tagged reference station measurements)

Ž In this exercise we will considerer an implementation of differential


positioning where the user estimates the baseline vector using the
time-tagged measurements of the reference station.

Ž This approach is usually referred to as relative positioning and


can be applied in some applications where the coordinates of the
reference station are not accurately known and where the relative
position vector between the reference station and the user is the
main interest. Examples are formation flying, automatic shipboard
landing…

Ž Of course, the knowledge of the reference receiver location would


allow the user to compute its absolute coordinates.

gAGE/UPC @ J. Sanz & J.M. Juan 24


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.2. IND2-IND3 Baseline vector estimation with P1 code
(using the time-tagged reference station measurements)

Ž This is a simple approach, but synchronism delays between the time


tag measurements of the reference station and the user must be
taken into account for real-time positioning.

Ž We will start positioning with the code C1 measurements, which is


the simplest approach. Afterwards we will focus on positioning with
L1 carrier by floating and fixing ambiguities.

Ž As the target is to perform differential positioning with carrier and


carrier ambiguity fixing, we will work with double differences of
measurements from the beginning (to have integer ambiguities),
although these are not needed for code positioning.

gAGE/UPC @ J. Sanz & J.M. Juan 25


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.2. IND2-IND3 Baseline vector estimation with P1 code


(using the time-tagged reference station measurements)

Preliminary: Using octave (or MATLAB), and the receiver coordinates


estimated before, compute the baseline vector between IND2-IND3.
Give the results in the ENU local system (at IND3).

IND2=[4787678.9809 183402.5915 4196171.6833]


IND3=[4787689.5146 183392.8859 4196160.1653]

IND3-IND2
ans= 10.5337 -9.7056 -11.5180 (XYZ)

R=[ -sin(l) cos(l) 0 ;


IND3 (lat and long): -cos(l)*sin(f) -sin(l)*sin(f) cos(f);
cos(l)*cos(f) sin(l)*cos(f) sin(f)]
l=2.193647610*pi/180
f=41.402880392*pi/180 bsl_enu=R*(IND3-IND2)'
ans -10.1017 -15.3551 -0.0008 (ENU)

gAGE/UPC @ J. Sanz & J.M. Juan 26


Research group of Astronomy & Geomatics
Technical University of Catalonia
From ECEF (x,y,z) to Local (e,n,u) coordinates

gAGE/UPC
Research group of Astronomy & Geomatics
Technical University of Catalonia
Backup @ J. Sanz & J.M. Juan 27

A.2. IND2-IND3 Baseline vector estimation with P1 code


(using the time-tagged reference station measurements)

A.2.1 Estimate the baseline vector between IND2 and IND3 receivers
using the code measurements of file (DD_IND2_IND3_06_ALL.dat).
Note: Use the entire file (i.e. time interval [14500:16500]).

[DDP1]=[Los_k - Los_06]*[baseline]

Notation
r { Baseline vector
ª  ρˆ 3  ρˆ 6 T º
ª DDP163 º « »
« 67 » « ˆ7 ˆ6 » DDP1 k j { DDP1(involving satellites j and k )
«  ρ  ρ » r
T
« DDP1 »
« » « » ρˆ k { Line-Of-Sight unit vector to satelite k
« 630 » « »
«¬ DDP1 »¼ «  ρˆ 30  ρˆ 6 » ρˆ { >cos( Elk )sin( Azk ), cos( Elk ) cos( Azk ), sin( Elk )@
T k

¬ ¼
gAGE/UPC A.2.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 28
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)
A.2. IND2-IND3 Baseline vector estimation with P1 code
(using the time-tagged reference station measurements)

A.2.1 Estimate the baseline vector between IND2 and IND3 receivers
using the code measurements of file (DD_IND2_IND3_06_ALL.dat).
Note: Use the entire file (i.e. time interval [14500:16500]).

[DDP1]=[Los_k - Los_06]*[baseline]

Notation DDP1 k j { DDP1(involving satellites j and k )


ª  ρˆ 3  ρˆ 6 T º
ª DDP163 º « » DDP1 k j DP1,kusrj  DP1,krefj
« 67 » « ˆ7 ˆ6 »
«  ρ  ρ » r P  P1,kusr  P1,jref  P1,kref
T
« DDP1 » j
1,usr
« » « »
« 630 » « »
«¬ DDP1 »¼ «  ρˆ 30  ρˆ 6 »
T
P1,jref Measurements broadcast
¬ ¼ by the reference station.

gAGE/UPC A.2.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 29
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)

A.2. IND2-IND3 Baseline vector estimation with P1 code


(using the time-tagged reference station measurements)

A.2.1 Estimate the baseline vector between IND2 and IND3 receivers
using the code measurements of file (DD_IND2_IND3_06_ALL.dat).
Note: Use the entire file (i.e. time interval [14500:16500]).

[DDP1]=[Los_k-Los_06]*[baseline]
PRN06 (ref) PRN j

ª  ρˆ 3  ρˆ 6 T º
ª DDP163 º « »
« 67 » « ˆ7 ˆ6 »
«  ρ  ρ » r
T
« DDP1 »
« » « » ρ̂ 6 ρˆ j
« 630 » « »
«¬ DDP1 »¼ «  ρˆ  ρˆ »
30 6 T r
¬ ¼
ρˆ j { ª¬cos( El j )sin( Az j ), cos( El j ) cos( Az j ), sin( El j ) º¼
IND2 (ref) IND3 (user)

gAGE/UPC A.2.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 30
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)
A.2. IND2-IND3 Baseline vector estimation with P1 code
(using the time-tagged reference station measurements)

Justify that the next sentence builds the navigation equations system
See file content
in slide #21
[DDP1]=[Los_k - Los_06]*[baseline]

cat DD_IND2_IND3_06_ALL.dat | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$7, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat

ª  ρˆ 3  ρˆ 6 T º
ª DDP º 1
63
« » [DDP1] [ Los_k - Los_06]
« » « ˆ7 ˆ6 »
«  ρ  ρ » r
67 T ------ --------------------
« DDP » 1
-3.3762 0.3398 -0.1028 0.0714
« » « »
« -7.1131 0.1725 0.5972 0.0691
630 » « »
«¬ DDP1 »¼ «  ρˆ 30  ρˆ 6 T » 4.3881 -0.6374 0.0227 0.2725
¬ ¼

gAGE/UPC ρˆ k { > cos( Elk )sin( Azk ), cos( Elk ) cos( Azk ), sin( Elk ) @ @ J. Sanz & J.M. Juan 31
Research group of Astronomy & Geomatics
Technical University of Catalonia

A.2. IND2-IND3 Baseline vector estimation with P1 code


(using the time-tagged reference station measurements)

The receiver was not moving (static) during the data collection.
Thence, we can merge all the epochs in a single system to compute the static
LS solution: T
ª  ρˆ 3 (t )  ρˆ 6 (t ) º
« 1 1
»
ª DDP16,3 (t1 ) º « T »
«  ρˆ (t1 )  ρˆ (t1 ) »
7 6
« 6,7 »
« DDP1 (t1 ) » « »
« » « »
« 6,30
» «  ρˆ 30 (t )  ρˆ 6 (t ) T »
« DDP1 (t1 ) » « 1 1
»
« » « » r
« » « »
y=Gx
« DDP16,3 (tn ) » «  ρˆ 3 (tn )  ρˆ 6 (tn ) »
T

« » « »
6,7
« DDP1 (tn ) » Least Squares Solution
«  ρˆ 7 (t )  ρˆ 6 (t ) T »
« » « n n
»
« 6,30
» « » x = (G TG)-1 G T y
«¬ DDP1 (tn ) »¼ « »
«  ρˆ 30 (tn )  ρˆ 6 (tn ) »
T

¬ ¼ P = (G TG)-1

gAGE/UPC [DDP1]=[Los_k - Los_06]*[baseline] @ J. Sanz & J.M. Juan 32


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.2. IND2-IND3 Baseline vector estimation with P1 code
(using the time-tagged reference station measurements)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:

octave

load M.dat bsl_enu =[-10.1017 -15.3551 -0.0008]

y=M(:,1); Estimation error:


G=M(:,2:4);
x(1:3)-bsl_enu'
x=inv(G'*G)*G'*y -0.1891639885218108
x(1:3)' -0.0304617199913011
-10.2909 -15.3856 -0.6511 -0.6502684114849081

gAGE/UPC A.2.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 33
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using all epochs)

A.2. IND2-IND3 Baseline vector estimation with P1 code


(using the time-tagged reference station measurements)

A.2.2. Repeat the previous computation, but using just the two
epochs: t1=14500 and t2=14515.
• Selecting the two epochs:
cat DD_IND2_IND3_06_ALL.dat|gawk '{if ($6==14500||$6==14515) print $0}‘ >tmp.dat

• Building the equations system:


cat tmp.dat | gawk 'BEGIN{g2r=atan2(1,1)/45}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$7, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat

gAGE/UPC A.2.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 34
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using all epochs)
A.2. IND2-IND3 Baseline vector estimation with P1 code
(using the time-tagged reference station measurements)

Solving the equations system using octave (or MATLAB) and


assessing the estimation error:
octave

load M.dat
bsl_enu =[-10.1017 -15.3551 -0.0008]
y=M(:,1);
G=M(:,2:4);
x(1:3)-bsl_enu'
-0.850763748698302
x=inv(G'*G)*G'*y
0.618803236835673
x(1:3)'
-1.777167174810606
-10.9525 -14.7363 -1.7780

Questions:
1.- What is the level of accuracy?
2.- Why does the solution degrade when taking only two epochs?

gAGE/UPC A.2.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 35
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

A.3.1 Estimate the baseline vector between IND2 and IND3 receivers using the
L1 carrier measurements of file (DD_IND2_IND3_06_ALL.dat).
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14515

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding directly the floated solution
and by rounding the solution after decorrelation.
3. Repair the DDL1 carrier measurements with the DDN1 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 36
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

A.3.1 Estimate the baseline vector between IND2 and IND3 receivers using the
L1 carrier measurements of file (DD_IND2_IND3_06_ALL.dat).

[DDL1]= [Los_k - Los_06]*[baseline] + [ A ]*[lambda1*DDN1]

Notation (for each epoch t)


y=Gx
ª DDL º «
ª  ρˆ  ρˆ º 3 6 T
6,3
1 » ª1 0 0 º ª O1 DDN º 1
6,3

« » « «0 1 « »
« DDL » «  ˆ
ρ 
6,7
ˆ
ρ » 7 6 T
0 »» « O1 DDN » 6,7
Where the vector of
1 »r  « 1
« » « » « »« » unknowns x includes
« 6,30 » « » « »« » the user coordinates
¬« DDL1 ¼» «  ρˆ  ρˆ »
30 6 T ¬0 0 0 1 ¼ ¬« O1 DDN16,30 ¼»
¬ ¼ and ambiguities

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 37
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

The receiver was not moving (static) during the data collection.
Therefore, for each epoch we have the equations system:
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t1 ) º
6,3
1 « 1 1
» ª1 0 0 º ª O1 DDN16,3 º
« » « « »
« ˆ7 0 »» « O1 DDN16,7 »
T »
«  ρ (t1 )  ρˆ (t1 ) » r  « y1 = G1 x
6,7
« DDL (t1 ) »
1
6
0 1
« » « » « »« »
« » « » « »« 6,30 »
6,30
«¬ DDL1 (t1 ) »¼ «  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ «¬ O1 DDN1 »¼ y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t2 ) º
6,3
1 « 2 2
» ª1 0 0 º ª O1 DDN16,3 º
« » « »
6,7
« DDL (t2 ) »
1
« ˆ7 T »
«  ρ (t2 )  ρˆ (t2 ) » r  «
6 «0 1 0 »» « O1 DDN16,7 » y2 = G2 x
« » « » « »« »
« » « » « »« »
6,30
«¬ DDL1 (t2 ) »¼ «  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ «¬ O1 DDN16,30 »¼ y2:=y[t2]
¬ 2 2 ¼
G2:=G[t2]

gAGE/UPC
[DDL1]=[Los_k - Los_06]*[baseline] + [ A ]*[lambda1*DDN1] @ J. Sanz & J.M. Juan 38
Research group of Astronomy & Geomatics
Technical University of Catalonia
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

In the previous computation we have not taken into account the


correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL1 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 39
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

The script MakeL1BslMat.scr builds the equations system


[DDL1]=[ Los_k- Los_06]*[baseline] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=14515, using the input
file DD_IND2_IND3_06_ALL.dat generated before.

Execute:
MakeL1BslMat.scr DD_IND2_IND3_06_ALL.dat 14500 14515
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 40
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied

octave
P=inv(G1'*W*G1+G2'*W*G2);
load M1.dat x=P*(G1'*W*y1+G2'*W*y2);
load M2.dat
x(1:3)'
y1=M1(:,1);
-8.9463 -15.9102 -0.78636
G1=M1(:,2:11);
y2=M2(:,1); bsl_enu =[-10.1017 -15.3551 -0.0008]
G2=M2(:,2:11);
Py=(diag(ones(1,7))+ones(7))*2e-4; x(1:3)'-bsl_enu
W=inv(Py); ans= 1.1554 -0.555 -0.78556

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 41
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found:

Decorrelation and integer LS search solution


octave
[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 3.31968973623500
a=x(4:10)/lambda1; afixed(:,1)'
Q=P(4:10,4:10); -8 20 -9 -8 -10 0 -8

Rounding directly the floated solution Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az);
-10 21 -4 -11 -4 5 -3 -8 20 -9 -8 -10 0 -8

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 42
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

3. Repair the DDL1 carrier measurements with the DDN1 FIXED ambiguities
and plot results to analyze the data.
octave
amb=lambda1*afixed(:,1);
save ambL1.dat amb

Using the previous file ambL1.dat and "DD_IND2_IND3_06_ALL.dat",


generate a file with the following content:
----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND2 IND3 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND3 ---->
------------------------------------------------------------------------------------------

Note: This file is identical to file "DD_IND2_IND3_06_ALL.dat", but with the


ambiguities added in the last field #18.

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 43
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

a) Generate a file with the satellite PRN number and the ambiguities:

grep -v \# ambL1.dat > na1


cat DD_IND2_IND3_06_ALL.dat|gawk '{print $4}'|sort -nu|gawk '{print $1,NR}’ >sat.lst
paste sat.lst na1 > sat.ambL1

b) Generate the "DD_IND2_IND3_06_ALL.fixL1" file:

cat DD_IND2_IND3_06_ALL.dat|
gawk 'BEGIN{for (i=1;i<1000;i++) {getline <"sat.ambL1";A[$1]=$3}}
{printf "%s %02i %02i %s %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f
%14.4f %14.4f %14.4f %14.4f %14.4f %14.4f \n",
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,A[$4]}' >
DD_IND2_IND3_06_ALL.fixL1

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 44
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND2 IND3 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND3 ---->
------------------------------------------------------------------------------------------

c) Make and discuss the following plots

graph.py -f DD_IND2_IND3_06_ALL.fixL1 -x6 -y'($8-$18-$11)'


-so --yn -0.06 --yx 0.06 -l "(DDL1-lambda1*DDN1)-DDrho" --xl "time (s)" --yl "m"

graph.py -f DD_IND2_IND3_06_ALL.fixL1 -x6 -y'($8-$11)'


-so --yn -5 --yx 5 -l "(DDL1)-DDrho" --xl "time (s)" --yl "metres"

graph.py -f DD_IND2_IND3_06_ALL.fixL1 -x6 -y'($8-$18)'


-so --yn -20 --yx 20 -l "(DDL1-lambda1*DDN1)" --xl "time (s)" --yl "metres"

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 45
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND2 IND3 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND3 ---->
------------------------------------------------------------------------------------------

graph.py -f DD_IND2_IND3_06_ALL.fixL1
-x6 -y'($8-$18-$11)'
-so --yn -0.06 --yx 0.06
-l "(DDL1-O DDN1)-DDrho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 46
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND2 IND3 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND3 ---->
------------------------------------------------------------------------------------------

graph.py -f DD_IND2_IND3_06_ALL.fixL1
-x6 -y'($8-$11)'
-so --yn -5 --yx 5
-l "DDL1-DDrho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 47
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND2 IND3 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND3 ---->
------------------------------------------------------------------------------------------

graph.py -f DD_IND2_IND3_06_ALL.fixL1
-x6 -y'($8-$18)'
-so --yn -20 --yx 20
-l "(DDL1-O DDN1)"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 48
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

1. Computing the FIXED solution (after FIXING ambiguities).


The following procedure can be applied
a) Build the equations system

[DDL1-lambda1*DDN1]=[Los_k - Los_06]*[baseline]

Note: it is the same system as with the code DDP1, but using
“DDL1-lambda1*DDN1” instead of “DDP1”

cat DD_IND2_IND3_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$8-$18, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), sin(e2)+sin(e1)}' > M.dat

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 49
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:

octave

load M.dat bsl_enu =[-10.1017 -15.3551 -0.0008]

y=M(:,1); Estimation error:


G=M(:,2:4);
x(1:3)-bsl_enu'
x=inv(G'*G)*G'*y -0.01274540575222005
x(1:3)' -0.00642705764942164
-10.1144 -15.3615 0.0031 0.00386638285676705

gAGE/UPC A.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 50
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

A.3.2. Using the DDL1 carrier with the ambiguities FIXED, compute the LS single
epoch solution for the whole interval 145000< t <165000 with the program LS.f

Note: The program LS.f computes the Least Square solution for each
measurement epoch of the input file (see the FORTRAN code LS.f)

The following procedure can be applied:


a) generate a file with the following content;

[Time], [DDL1-lambda1*DDN1], [ Los_k - Los_06]

where:
Time= seconds of day
DDL1-lambda1*DDN1= Prefit residulas (i.e., "y" values in program LS.f)
Los_k-Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC A.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 51
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

[Time], [DDL1-lambda1*DDN1], [Los_k - Los_06]

The following sentence can be used

cat DD_IND2_IND3_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution

cat L1model.dat |LS > L1fix.pos

gAGE/UPC A.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 52
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
A.3. IND2-IND3 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

Plot the baseline estimation error

graph.py -f L1fix.pos -x1 -y'($2+10.1017)' -s.- -l "North error"


-f L1fix.pos -x1 -y'($3+15.3551)' -s.- -l "East error"
-f L1fix.pos -x1 -y'($4+0.0008)' -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "Baseline error”

Note:
bsl_enu =[-10.1017 -15.3551 -0.0008]

gAGE/UPC A.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 53
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

A.3. IND2-IND3 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

Baseline
estimation error
after fixing
ambiguities

gAGE/UPC A.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 54
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
A.3. IND2-IND3 Baseline vector estimation
(using the time-tagged reference station measurements)

A.3.3. Repeat previous computations, but using the Unsmoothed code P1.
i.e., compute the LS single epoch solution for the whole interval
145000< t <165000 with the program LS.f

The same procedure as in previous case can be applied, but using the code
DDP1 instead of the carrier “DDL1-lambda1*DDN1”
a) generate a file with the following content;

[Time], [DDP1], [ Los_k - Los_06]

where:
Time= seconds of day
DDP1= Prefit residulas (i.e., "y" values in program lms1)
Los_k-Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC A.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 55
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (single epoch LS, whole interval)

A.3. IND2-IND3 Baseline vector estimation


(using the time-tagged reference station measurements)

[Time], [DDP1], [Los_k – Los_06]

The following sentence can be used

cat DD_IND2_IND3_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$7,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > P1model.dat

b) Compute the Least Squares solution

cat P1model.dat |LS > P1.pos

gAGE/UPC A.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 56
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (single epoch LS, whole interval)
A.3. IND2-IND3 Baseline vector estimation
(using the time-tagged reference station measurements)

Baseline
estimation error
with the
unsmoothed
code
Questions:
1.- Discuss the results by
comparing them with
the previous ones with
DDL1 carrier.
2.- Discuss the pattern
seen in the plot.

gAGE/UPC A.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 57
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (single epoch LS, whole interval)

A.4. IND2- IND3 Baseline vector estimation


Geometric diversity effect

Repeat the previous computations A.3., but using two epochs more
distant in time : t1=14500 and t2=14600 (instead of t2=14515).

Execute:
MakeL1BslMat.scr DD_IND2_IND3_06_ALL.dat 14500 14600
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.

Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC A.3.1. Baseline estimation with L1 @ J. Sanz & J.M. Juan 58


Research group of Astronomy & Geomatics
Technical University of Catalonia
Geometry diversity effect.
A.4. IND2- IND3 Baseline vector estimation
Geometric diversity effect

Solving the equations system using octave (or MATLAB) and


assessing the estimation error:
octave

load M1.dat
load M2.dat
bsl_enu =[-10.1017 -15.3551 -0.0008]
y1=M1(:,1);
G1=M1(:,2:11); x(1:3)-bsl_enu'
0.3316932664829917
y2=M2(:,1);
G2=M2(:,2:11); 0.1688471989256399
-0.0813273504816880
W=inv(diag(ones(1,7))+ones(7))*2*1e-4;
P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
10.9525 -14.7363 -1.7780

gAGE/UPC A.3.1. Baseline estimation with L1 @ J. Sanz & J.M. Juan 59


Research group of Astronomy & Geomatics
Technical University of Catalonia
Geometry diversity effect.

A.4. IND2- IND3 Baseline vector estimation


Geometric diversity effect

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found:

Decorrelation and integer LS search solution


octave
[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 34.4801936204742
a=x(4:10)/lambda1; afixed(:,1)'
Q=P(4:10,4:10); -8 20 -9 -8 -10 0 -8

Rounding directly the floated solution Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az);
-8 19 -8 -9 -8 0 -9 -8 20 -9 -8 -10 0 -8

gAGE/UPC A.3.1. Baseline estimation with L1 @ J. Sanz & J.M. Juan 60


Research group of Astronomy & Geomatics
Technical University of Catalonia
Geometry diversity effect.
A.4. IND2- IND3 Baseline vector estimation
Geometric diversity effect

Optional:
Repeat the computation taking t1=14500 and t2=15000

Questions:
1.- Has the accuracy improved?
2.- Are the ambiguities well fixed?
3.- Has the reliability improved? Why?

gAGE/UPC A.3.1. Baseline estimation with L1 @ J. Sanz & J.M. Juan 61


Research group of Astronomy & Geomatics
Technical University of Catalonia
Geometry diversity effect.

A.5. IND2-IND3 differential positioning with P1 code


(using the computed differential corrections)

Ž In the previous exercise we have considered an implementation of


differential positioning where the user estimates the baseline vector
from the time-tagged measurements of the reference station.

Ž In the next exercises, we will consider the common implementation


of Differential positioning, where the reference receiver coordinates
are accurately known and used to compute range corrections for
each tracked satellite in view. Then, the user applies these
corrections to improve the positioning.

Ž In the next example, a short baseline is processed (18 metres) and


the range corrections are given as the measurements corrected by
the geometric range. The differential atmospheric propagation errors
can be assumed as zero for this very short baseline.

gAGE/UPC A.5.1. Differential positioning with @ J. Sanz & J.M. Juan 62


Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)
A.5. IND2-IND3 differential positioning with P1 code
(using the computed differential corrections)

Ž Unlike in the previous implementation, the synchronism errors


between the time-tagged measurements will be not critical in this
approach, as the differential corrections vary slowly.

Ž We will start positioning with the code C1 measurements, which is


the simplest approach. Afterwards we will focus on positioning with
L1 carrier by floating and fixing ambiguities.

Ž As the target is to perform differential positioning with carrier and


carrier ambiguity fixing, we will work with double differences of
measurements from the beginning (to have integer ambiguities),
although they are not needed for code positioning.

gAGE/UPC @ J. Sanz & J.M. Juan 63


Research group of Astronomy & Geomatics
Technical University of Catalonia

A.5. IND2-IND3 differential positioning with P1 code


(using the computed differential corrections)

A.5.1 Using code DDP1 measurements, estimate the coordinates of


receiver IND3 taking IND2 as a reference receiver.
Justify that the associated equations system is given by:

[DDP1-DDRho]=[Los_k - Los_06]*[dr]

Notation
dr rIND3 - r0, IND3
ª  ρˆ 3  ρˆ 6 T º
ª DDP16,3  DD U 6,3 º « » DDP1 k j { DDP1(involving satellites j and k )
« 6,7 » « ˆ7 ˆ6 T »
« DDP1  DD U » «  ρ  ρ » dr
6,7
ρˆ k { Line-Of-Sight unit vector to satelite k
« » « »
« 6,30 » « »
«¬ DDP1  DD U »¼
6,30
«  ρˆ  ρˆ »
30 6 T
ρˆ k { > cos( Elk )sin( Azk ) cos( Elk ) cos( Azk ) sin( Elk ) @
¬ ¼

gAGE/UPC A.5.1. Differential positioning with @ J. Sanz & J.M. Juan 64


Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)
A.5. IND2-IND3 differential positioning with P1 code
(using the computed differential corrections)

A.5.1 Using code DDP1 measurements, estimate the coordinates of


receiver IND3 taking IND2 as a reference receiver.
Justify that the associated equations system is given by:

[DDP1-DDRho]=[Los_k - Los_06]*[dr]

Notation DDP1 k j { DDP1(involving satellites j and k )

ª  ρˆ 3  ρˆ 6 T º
DDP1 k j  DD U k j D P1,kusrj  Uusr k j

 D P1,krefj  Urefk j
ª DDP  DD U º
6,3 6,3
« »

1
« 6,7 » « ˆ7 ˆ6 T » ª P1,jusr  Uusrj  P1,kusr  Uusr º  ª P1,jref  Urefj  P1,kref  Urefk º
« » dr
k

« DDP  DD U »   ¬ ¼ ¬ ¼
6,7
1 ρ ρ
« » « »
« 6,30 » « » Computed corrections
«¬ DDP1  DD U »¼
6,30
«  ρˆ 30  ρˆ 6 T »
¬ ¼ PRC1 { P1,ref  U ref broadcast by the
j j j

reference station.

gAGE/UPC A.5.1. Differential positioning with @ J. Sanz & J.M. Juan 65


Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)

A.5. IND2-IND3 differential positioning with P1 code


(using the computed differential corrections)

A.5.1 Using code DDP1 measurements, estimate the coordinates of


receiver IND3 taking IND2 as a reference receiver.
Note: Use the entire file (i.e. time interval [14500:16500]).

[DDP1-DDRho]=[Los_k-Los_06]*[dr] PRN06 (ref) PRN j

ª  ρˆ 3  ρˆ 6 T º
ª DDP  DD U º1
6,3 6,3
« »
« 6,7 » « ˆ7 ˆ6 »
«  ρ  ρ » dr
T
« DDP  DD U »
6,7
1
« » « »
« 6,30 » « » ρ̂ 6 ρˆ j
¬« DDP1  DD U ¼»
6,30
«  ρˆ 30  ρˆ 6 T »
¬ ¼
dr rIND3 - r0,IND3
ρˆ j { ª¬cos( El j )sin( Az j ), cos( El j ) cos( Az j ), sin( El j ) º¼
IND2 (ref) IND3 (user)

gAGE/UPC A.5.1. Differential positioning with @ J. Sanz & J.M. Juan 66


Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)
A.5. IND2-IND3 differential positioning with P1 code
(using the computed differential corrections)

Justify that the next sentence builds the navigation equations system
See file content
in slide #21
[DDP1-DDRho]=[Los_k - Los_06]*[dr]

cat DD_IND2_IND3_06_ALL.dat | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$7-$11, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat

ª  ρˆ 3  ρˆ 6 T º
ª DDP  DD U º
1
6,3 6,3
« » [DDP1-DDRho] [Los_k - Los_REF]
« 6,7 » « ˆ7 ˆ6 T »
«  ρ  ρ » dr
------ --------------------
« DDP  DD U »
6,7
1
-3.3762 0.3398 -0.1028 0.0714
« » « »
« -7.1131 0.1725 0.5972 0.0691
6,30 » « »
¬« DDP1  DD U ¼»
6,30
«  ρˆ 30  ρˆ 6 T » 4.3881 -0.6374 0.0227 0.2725
¬ ¼

gAGE/UPC ρˆ k { > cos( Elk )sin( Azk ) cos( Elk ) cos( Azk ) sin( Elk ) @ @ J. Sanz & J.M. Juan 67
Research group of Astronomy & Geomatics
Technical University of Catalonia

A.5. IND2-IND3 differential positioning with P1 code


(using the computed differential corrections)

The receiver was not moving (static) during the data collection.
Therefore, we can merge all the epochs in a single system to compute the static
LS solution:
T
ª  ρˆ 3 (t )  ρˆ 6 (t ) º
« 1 1
»
ª DDP16,3 (t1 )  DD U 6,3 (t1 ) º « T »
«  ρˆ (t1 )  ρˆ (t1 ) »
7 6
« »
« DDP1 (t1 )  DD U (t1 ) »
6,7 6,7
« »
« » « »
« » «  ρˆ 30 (t )  ρˆ 6 (t ) T »
« DDP1 (t1 )  DD U (t1 ) »
6,30 6,30
« 1 1
»
« » « » dr
« » « »
y=Gx
« DDP16,3 (tn )  DD U 6,3 (t1 ) » «  ρˆ 3 (tn )  ρˆ 6 (tn ) »
T

« » « »
« DDP1 (tn )  DD U (t1 ) »
6,7 6,7
«  ρˆ 7 (t )  ρˆ 6 (t ) T »
Least Squares Solution
« » « n n
»
« » « » x = (G TG)-1 G T y
«¬ DDP1 (tn )  DD U (t1 ) »¼
6,30 6,30
« »
«  ρˆ 30 (tn )  ρˆ 6 (tn ) »
T

¬ ¼ P = (G TG)-1

gAGE/UPC [DDPL1]=[Los_k - Los_06]*[baseline] @ J. Sanz & J.M. Juan 68


Research group of Astronomy & Geomatics
Technical University of Catalonia
A.5. IND2-IND3 differential positioning with P1 code
(using the computed differential corrections)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:
octave Absolute coordinates of IND3.

load M.dat Taking into account that the ”a priori” coordinates


of IND3 are:
y=M(:,1); IND3=[4787689.5146 183392.8859 4196160.1653 ]
G=M(:,2:4);
Therefore the estimated absolute coordinates
x=inv(G'*G)*G'*y of IND3 are:
x' IND3+ x(1:3)'
-0.1892 -0.0305 -0.6504 ans= 4787689.3254 183392.8554 4196159.5149

Note: as we have used the true coordinates of IND3 as the ”a priori” to linerize the
model, the vector x provides the estimation error directly.

gAGE/UPC A.5.1. Differential positioning with @ J. Sanz & J.M. Juan 69


Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)

A.5. IND2-IND3 differential positioning with P1 code


(using the computed differential corrections)

A.5.2. Repeat the previous computation, but using just the two
epochs: t1=14500 and t2=14515.
• Selecting the two epochs:
cat DD_IND2_IND3_06_ALL.dat|gawk '{if ($6==14500||$6==14515) print $0}‘ >tmp.dat

• Building the equations system:


cat tmp.dat | gawk 'BEGIN{g2r=atan2(1,1)/45}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$7-$11, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > M.dat

gAGE/UPC A.5.2. Estimate baseline vector with @ J. Sanz & J.M. Juan 70
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using only two epochs)
A.5. IND2-IND3 differential positioning with P1 code
(using the computed differential corrections)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:
octave Absolute coordinates of IND3.

load M.dat Taking into account that the ”a priory” coordinates


of IND3 are:
y=M(:,1); IND3=[4787689.5146 183392.8859 4196160.1653 ]
G=M(:,2:4);
Thence the estimated absolute coordinates of
x=inv(G'*G)*G'*y IND3 are:
x(1:3)' IND3+ x(1:3)'
-0.8509 0.6190 -1.7783 ans= 4787688.6637 183393.5049 4196158.3870

Questions:
What is the level of accuracy?
Why does the solution degrade when taking only two epochs?

gAGE/UPC A.5.2. Differential positioning with @ J. Sanz & J.M. Juan 71


Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (using with all epochs)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

A.6.1 Using DDL1 carrier measurements, estimate the coordinates of receiver


IND3 taking IND2 as a reference receiver.
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14515.

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding directly the floated solution
and by rounding the solution after decorrelation.
3. Repair the DDL1 carrier measurements with the DDN1 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 72
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

A.6.1 Estimate the coordinates of receiver IND3 taking IND2 as reference


receiver, using the L1 carrier measurements of file (DD_IND2_IND3_06_ALL.dat)

[DDL1-DDRho]= [Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1]

Notation
ª  ρˆ 3  ρˆ 6 T º y=Gx
ª DDL  DD U º
6,3
1
6,3
« » ª1 0 0 º ª O1 DDN º 1
6,3

« 6,7 » «0 1 « »
« ˆ7 ˆ6 » 0 »» « O1 DDN » Where the vector of
«  ρ  ρ » dr  «
T
« DDL 1
6,7
DD U »
6,7
1
« » « » « »« »
« 6,30 » « » « »« » unknowns x includes
¬« DDL1  DD U ¼» 1 ¼ ¬« O1 DDN16,30 ¼» the user coordinates
6,30
«  ρˆ  ρˆ »
30 6 T ¬0 0 0
¬ ¼ and ambiguities

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 73
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

The receiver was not moving (static) during the data collection.
Thence, for each epoch we have the equations system:

ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,3 (t1 )  DD U 6,3 (t1 ) º « 1 1
» ª1 0 0 º ª O1 DDN16,3 º
«
« DDL1 (t1 )  DD U (t1 ) »
6,7 6,7 » « ˆ7 6 T » «0 1
«  ρ (t1 )  ρˆ (t1 ) » dr  «
« »
0 »» « O1 DDN16 ,7 » y1 = G1 x
« » « » « »« »
« » « » « »« 6,30 »
¬« DDL1 (t1 )  DD U (t1 ) ¼» 1 ¼ ¬« O1 DDN1 ¼»
6,30 6,30
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,3 (t2 )  DD U 6,3 (t2 ) º « 2 2
» ª1 0 0 º ª O1 DDN16,3 º
«
« DDL1 (t2 )  DD U (t2 ) »
«
6,7 6,7 »
»
« ˆ7
«
6 T »

»
«0 1
«  ρ (t2 )  ρˆ (t2 ) » dr  «
« »«
« »
0 »» « O1 DDN16 ,7 »
»
y2 = G2 x
« » « » « »« 6,30 »
¬« DDL1 (t2 )  DD U (t2 ) ¼» 1 ¼ ¬« O1 DDN1 ¼»
6,30 6,30
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
¬ 2 2 ¼ y2:=y[t2]
G2:=G[t2]

gAGE/UPC
[DDL1-DDRho]=[Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1] @ J. Sanz & J.M. Juan 74
Research group of Astronomy & Geomatics
Technical University of Catalonia
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

In the previous computation we have not taken into account the


correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL1 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 75
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

The script MakeL1DifMat.scr builds the equations system


[DDL1-DDRho]=[ Los_k- Los_06]*[dr] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=14515, using the input
file DD_IND2_IND3_06_ALL.dat generated before.

Execute:
MakeL1DifMat.scr DD_IND2_IND3_06_ALL.dat 14500 14515
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 76
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied
P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
octave
load M1.dat x(1:3)'
load M2.dat 0.9484 -0.3299 -0.8996

y1=M1(:,1); Taking into account that the ”a priori” coordinates


G1=M1(:,2:11); of IND3 are: IND3=[4787689.5146
183392.8859 4196160.1653]
y2=M2(:,1);
G2=M2(:,2:11); Thence the estimated absolute coordinates of
Py=(diag(ones(1,7))+ones(7))*2e-4; IND3 are:
W=inv(Py); IND3+ x(1:3)'
4787690.4630 183392.5560 4196159.2657

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 77
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

2. Applying the LAMBDA method to FIX the ambiguities.


Compare the results with the solution obtained by rounding the floated solution.
The following procedure can be applied (justify the computations done)

Decorrelation and integer LS search solution


octave
[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 4.43344394778937
a=x(4:10)/lambda1; afixed(:,1)'
Q=P(4:10,4:10); -8 20 -9 -8 -10 0 -8

Rounding directly the floated solution Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az);
-10 20 -4 -10 -5 4 -4 -8 20 -9 -8 -10 0 -8

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 78
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

Questions:
1. - Can the ambiguities be well fixed?
2. - Has the reliability improved? Why?
3. - The values found for the ambiguities are
the same than in the previous case?

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 79
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

3. Repair the DDL1 carrier measurements with the DDN1 FIXED ambiguities
and plot results to analyze the data.
octave
amb=lambda1*afixed(:,1);
save ambL1.dat amb

Using the previous file ambL1.dat and "DD_IND2_IND3_06_ALL.dat",


generate a file with the following content:
----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND2 IND3 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND3 ---->
------------------------------------------------------------------------------------------

Note: This file is identical to file "DD_IND2_IND3_06_ALL.dat", but with the


ambiguities added in the last field #18.

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 80
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

a) Generate a file with the satellite PRN number and the ambiguities:

grep -v \# ambL1.dat > na1


cat DD_IND2_IND3_06_ALL.dat|gawk '{print $4}'|sort -nu|gawk '{print $1,NR}’ >sat.lst
paste sat.lst na1 > sat.ambL1

b) Generate the "DD_IND2_IND3_06_ALL.fixL1" file:

cat DD_IND2_IND3_06_ALL.dat|
gawk 'BEGIN{for (i=1;i<1000;i++) {getline <"sat.ambL1";A[$1]=$3}}
{printf "%s %02i %02i %s %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f
%14.4f %14.4f %14.4f %14.4f %14.4f %14.4f \n",
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,A[$4]}' >
DD_IND2_IND3_06_ALL.fixL1

The ambiguities do not change. Therefore, the file DD_IND2_IND3_06_ALL.fixL1


generated in the previous exercise can be used here.

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 81
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

4. Computing the FIXED solution (after FIXING ambiguities).


The following procedure can be applied
a) Build the equations system

[DDL1-DDRho-lambda1*DDN1]=[Los_k - Los_06]*[dr]

Note: this is the same system as with the code DDP1, but using
“DDL1-DDRho-lambda1*DDN1” instead of “DDP1”

cat DD_IND2_IND3_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$8-$11-$18, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 82
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:
octave Absolute coordinates of IND3.

load M.dat Taking into account that the ”a priori” coordinates


of IND3 are:
y=M(:,1); IND3=[4787689.5146 183392.8859 4196160.1653 ]
G=M(:,2:4);
Therefore the estimated absolute coordinates
x=inv(G'*G)*G'*y of IND3 are:
x IND3+ x(1:3)'
-0.01278982304138015 4787689.5018 183392.8795 4196160.1690
-0.00641700591386930
0.00369003097108713 Question:
Is the accuracy similar to that in the previous
case, when estimating the baseline vector?

gAGE/UPC A.6.1. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 83
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

A.6.2. Using the DDL1 carrier with the ambiguities FIXED, compute the LS single
epoch solution for the whole interval 145000< t <165000 with the program LS.f

Note: The program "LS.f" computes the Least Square solution for each
measurement epoch of the input file (see the FORTRAN code "LS.f")

The following procedure can be applied


a) generate a file with the following content;

[Time], [DDL1-DDRho-lambda1*DDN1], [ Los_k - Los_06]

where:
Time= seconds of day
DDL1-DDRho-lambda1*DDN1= Prefit residulas (i.e., "y" values in program LS.f)
Los_k-Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC A.6.2. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 84
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

[Time], [DDL1-DDRho-lambda1*DDN1], [Los_k - Los_06]

The following sentence can be used

cat DD_IND2_IND3_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$11-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution

cat L1model.dat |LS > L1fix.pos

gAGE/UPC A.6.2. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 85
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

A.6. IND2-IND3 differential positioning with L1 carrier


(using the computed differential corrections)

Plot the baseline estimation error

graph.py -f L1fix.pos -x1 –y2 -s.- -l "North error"


-f L1fix.pos -x1 –y3 -s.- -l "East error"
-f L1fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t “IND2-IND3: 18.38m:
L1 ambiguities fixed”

gAGE/UPC A.6.2. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 86
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
A.6. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

Differential
Positioning error
after fixing
ambiguities
Question:
compare this plot with
that obtained previously
when estimating the
baseline from the time-
tagged measurements.
Are the errors similar?

gAGE/UPC A.6.2. Estimate IND3 coordinates with @ J. Sanz & J.M. Juan 87
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

OVERVIEW
Ž Introduction: gLAB processing in command line
Ž Preliminary computations: data files & reference values
Ž Session A: Differential positioning of IND2-IND3 receivers
(baseline: 18 metres)
¾ Session B: Differential positioning of IND1-IND2 receivers
(baseline: 7 metres, but synchronization errors)

Ž Session C: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Night time): tropospheric effects

Ž Session D: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Day time): tropospheric and Ionospheric effects

gAGE/UPC @ J. Sanz & J.M. Juan 88


Research group of Astronomy & Geomatics
Technical University of Catalonia
Session B

Differential positioning of
IND1- IND2 receivers
(baseline 7 metres and
not synchronised receivers)

gAGE/UPC @ J. Sanz & J.M. Juan 89


Research group of Astronomy & Geomatics
Technical University of Catalonia

B. Differential positioning of IND1- IND2 receivers

Ž The same exercises as in previous session will be repeated here for IND1 and
IND2 receivers.
Ž These receivers are located in the same environment as IND2 and IND3 and
the baseline is even shorter (7 metres, instead of 18 metres).
Ž The main difference in the receiver clock offset: IND1
• The receivers IND2 and IND3 apply clock
steering and have a very short clock offset IND2
(just a tenth of nanoseconds), while the
receiver IND1 has a large clock offset drift,
accumulating up to 1 ms.
• The effect of the synchronization errors on
the two different implementations of IND3 90
90
differential positioning used in the previous
session is one of the targets of this IND1-IND2: 7.197 m
laboratory session. IND2-IND3: 18.380 m

gAGE/UPC @ J. Sanz & J.M. Juan 90


Research group of Astronomy & Geomatics
Technical University of Catalonia
B. IND1- IND2 Differential positioning
B.1. Double differences between receivers and satellites computation
The script "DDobs.scr" computes double differences between receivers and
satellites from file obs.dat. 1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

For instance, the following sentence:


DDobs.scr obs.dat IND1 IND2 06 03
generates the file
------------------- DD_{sta1}_{sta2}_{sat1}_{sat2}.dat ----------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[sta1 sta2 sat1 sat2 DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2]
<---- sta2 ---->
------------------------------------------------------------------------------------

Where the elevation (EL) and azimuth (AZ) are taken from station #2.
and where (EL1, AZ1) are for satellite #1 and (EL1, AZ1) are for satellite #2.

gAGE/UPC A.1. Double Differences computation @ J. Sanz & J.M. Juan 91


Research group of Astronomy & Geomatics
Technical University of Catalonia

B. IND1- IND2 Differential positioning


Compute the double differences between receivers IND1 (reference) and
IND2 and satellites PRN06 (reference) and [PRN 03, 07,11, 16, 18, 19,
21, 22, 30]
DDobs.scr obs.dat IND1 IND2 06 03
DDobs.scr obs.dat IND1 IND2 06 07
DDobs.scr obs.dat IND1 IND2 06 11
DDobs.scr obs.dat IND1 IND2 06 16
DDobs.scr obs.dat IND1 IND2 06 18
DDobs.scr obs.dat IND1 IND2 06 19
DDobs.scr obs.dat IND1 IND2 06 21
DDobs.scr obs.dat IND1 IND2 06 22
DDobs.scr obs.dat IND1 IND2 06 30

Merge the files in a single file and sort by time:


cat DD_IND1_IND2_06_??.dat|sort -n -k +6 > DD_IND1_IND2_06_ALL.dat

gAGE/UPC B.1. Double Differences computation @ J. Sanz & J.M. Juan 92


Research group of Astronomy & Geomatics
Technical University of Catalonia
B. IND1- IND2 Differential positioning
----------------------------- DD_IND1_IND2_06_ALL.dat --------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[IND1 IND2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2]
<---- IND2 ---->
---------------------------------------------------------------------------------

OUTPUT file PRN06 (ref)


PRN j

Where the elevation (EL) and azimuth (AZ)


are taken from station IND2 (the user)

and where (EL1, AZ1) are for satellite


PNR06 (reference) and (EL1, AZ1) are for
satellite PRNXX

IND1 (ref) IND2 (user)

gAGE/UPC B.1. Double Differences computation @ J. Sanz & J.M. Juan 93


Research group of Astronomy & Geomatics
Technical University of Catalonia

B.2. IND1-IND2 Baseline vector estimation with P1 code


(using the time-tagged reference station measurements)

Preliminary: Using octave (or MATLAB), and the receiver coordinates


estimated before, compute the baseline vector between IND1-IND2.
Give the results in the ENU local system (at IND2).

IND1=[4787678.1496 183409.7131 4196172.3056]


IND2=[4787678.9809 183402.5915 4196171.6833]

IND2-IND1
ans= 0.8313 -7.1216 -0.6223 (XYZ)

R=[ -sin(l) cos(l) 0 ;


IND2 (lat and long): -cos(l)*sin(f) -sin(l)*sin(f) cos(f);
cos(l)*cos(f) sin(l)*cos(f) sin(f)]
l= 2.193768411 *pi/180
f= 41.403018646 *pi/180 bsl_enu=R*(IND2-IND1)'
ans -7.1482 -0.8359 0.0070 (ENU)

gAGE/UPC @ J. Sanz & J.M. Juan 94


Research group of Astronomy & Geomatics
Technical University of Catalonia
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

B.3.1 Estimate the baseline vector between IND1 and IND2 receivers using the
L1 carrier measurements of file (DD_IND1_IND2_06_ALL.dat).
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14515

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding directly the floated solution
and by rounding the solution after decorrelation.
3. Repair the DDL1 carrier measurements with the DDN1 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC B.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 95
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

B.3.1 Estimate the baseline vector between IND1 and IND2 receivers using the
L1 carrier measurements of file (DD_IND1_IND2_06_ALL.dat).

[DDL1]= [Los_k - Los_06]*[baseline] + [ A ]*[lambda1*DDN1]

Notation
ª  ρˆ 3  ρˆ 6 T º y=Gx
ª DDL º 6,3
1 « » ª1 0 0 º ª O1 DDN º 1
6,3

« » «0 1 « »
« ˆ7 ˆ6 »
0 »» « O1 DDN »
T
« DDL »
6,7
1 «  ρ  ρ »r  «
6,7
1 Where the vector of
« » « » « »« » unknowns x includes
« 6,30 » « » « »« » the user coordinates
¬« DDL1 ¼» «  ρˆ  ρˆ »
30 6 T ¬0 0 0 1 ¼ ¬« O1 DDN16,30 ¼»
¬ ¼ and ambiguities

gAGE/UPC B.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 96
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

The receiver was not moving (static) during the data collection.
Therefore, for each epoch we have the equations system:
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t1 ) º
6,3
1 « 1 1
» ª1 0 0 º ª O1 DDN16,3 º
« » « « »
« ˆ7 0 »» « O1 DDN16,7 »
T »
«  ρ (t1 )  ρˆ (t1 ) » r  « y1 = G1 x
6,7
« DDL (t1 ) »
1
6
0 1
« » « » « »« »
« » « » « »« »
6,30
«¬ DDL1 (t1 ) »¼ «  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ «¬ O1 DDN16,30 »¼ y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL (t2 ) º
6,3
1 « 2 2
» ª1 0 0 º ª O1 DDN16,3 º
« » « »
6,7
« DDL (t2 ) »
1
« ˆ7 »
«  ρ (t2 )  ρˆ (t2 ) » r  «
6 T «0 1 0 »» « O1 DDN16,7 » y2 = G2 x
« » « » « »« »
« » « » « »« »
6,30
¬« DDL1 (t2 ) ¼» «  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0 1 ¼ ¬« O1 DDN16,30 ¼» y2:=y[t2]
¬ 2 2 ¼
G2:=G[t2]

gAGE/UPC
[DDL1]=[Los_k - Los_06]*[baseline] + [ A ]*[lambda1*DDN1] @ J. Sanz & J.M. Juan 97
Research group of Astronomy & Geomatics
Technical University of Catalonia

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

In the previous computation we have not taken into account the


correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL1 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC B.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 98
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

The script MakeL1BslMat.scr builds the equations system


[DDL1]=[ Los_k- Los_06]*[baseline] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=14515, using the input
file DD_IND1_IND2_06_ALL.dat generated before.

Execute:
MakeL1BslMat.scr DD_IND1_IND2_06_ALL.dat 14500 14515
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC B.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 99
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied

octave
P=inv(G1'*W*G1+G2'*W*G2);
load M1.dat x=P*(G1'*W*y1+G2'*W*y2);
load M2.dat
x(1:3)'
y1=M1(:,1);
-8.8883 -2.2187 2.4998
G1=M1(:,2:11);
bsl_enu =[-7.1482 -0.8359 0.0070]
y2=M2(:,1);
G2=M2(:,2:11); x(1:3)'-bsl_enu
Py=(diag(ones(1,7))+ones(7))*2e-4; ans= -1.7401 -1.3828 2.4928
W=inv(Py);

gAGE/UPC B.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 100
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found:

Decorrelation and integer LS search solution


octave
[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 1.61389475957901
a=x(4:10)/lambda1; afixed(:,1)'
Q=P(4:10,4:10); 17 -5 -2 4 -26 0 13

Rounding directly the floated solution Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az);
10 -11 13 -10 -8 7 10 7 -22 16 -18 -3 1 -8

gAGE/UPC B.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 101
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.3. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

Questions:
1. - Can the ambiguities be fixed?
2. - Give a possible explanation about why the
ambiguities cannot be fixed

gAGE/UPC B.3.1. Baseline vector estimation with @ J. Sanz & J.M. Juan 102
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

Repeat previous processing,


but using t1=14500 and
t2=15530

gAGE/UPC B.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 103
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15530)

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

The script MakeL1BslMat.scr builds the equations system


[DDL1]=[ Los_k- Los_06]*[baseline] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=15530, using the input
file DD_IND1_IND2_06_ALL.dat generated before.

Execute:
MakeL1BslMat.scr DD_IND1_IND2_06_ALL.dat 14500 15530
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC B.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 104
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15530)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied

octave
P=inv(G1'*W*G1+G2'*W*G2);
load M1.dat x=P*(G1'*W*y1+G2'*W*y2);
load M2.dat
x(1:3)'
y1=M1(:,1);
-6.78678 -0.7794 -0.2434
G1=M1(:,2:11);
bsl_enu =[-7.1482 -0.8359 0.0070]
y2=M2(:,1);
G2=M2(:,2:11); x(1:3)'-bsl_enu
Py=(diag(ones(1,7))+ones(7))*2e-4; ans= 0.3614 0.0565 -0.2504
W=inv(Py);

gAGE/UPC B.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 105
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15530)

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found:

Decorrelation and integer LS search solution


octave
[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 1.10192131979339
a=x(4:10)/lambda1; afixed(:,1)'
Q=P(4:10,4:10); 9 -16 22 -10 7 9 9

Rounding directly the floated solution Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az);
8 -17 24 -12 9 10 9 8 -17 24 -12 9 10 8

gAGE/UPC B.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 106
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15530)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

Questions:
1. - Can the ambiguities be fixed?
2. - Give a possible explanation about why the
ambiguities cannot be fixed

gAGE/UPC B.3.2. Baseline vector estimation with @ J. Sanz & J.M. Juan 107
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15530)

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

Repeat previous processing,


but using t1=14500 and
t2=15000

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 108
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15000)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

The script MakeL1BslMat.scr builds the equations system


[DDL1]=[ Los_k- Los_06]*[baseline] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=15000, using the input
file DD_IND1_IND2_06_ALL.dat generated before.

Execute:
MakeL1BslMat.scr DD_IND1_IND2_06_ALL.dat 14500 15000
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 109
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15000)

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied

octave
P=inv(G1'*W*G1+G2'*W*G2);
load M1.dat x=P*(G1'*W*y1+G2'*W*y2);
load M2.dat
x(1:3)'
y1=M1(:,1);
-6.7640 -0.7441 -0.2256
G1=M1(:,2:11);
y2=M2(:,1); bsl_enu =[-7.1482 -0.8359 0.0070]
G2=M2(:,2:11);
Py=(diag(ones(1,7))+ones(7))*2e-4; x(1:3)'-bsl_enu
W=inv(Py); ans= 0.3842 0.0918 -0.2326

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 110
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15000)
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found:

Decorrelation and integer LS search solution


octave
[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 1.36905617725904
a=x(4:10)/lambda1; afixed(:,1)'
Q=P(4:10,4:10); 9 -16 22 -10 7 9 9

Rounding directly the floated solution Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az);
8 -17 24 -12 9 10 9 7 -18 26 -14 12 11 8

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 111
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using t=14500, 15000)

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

OPTIONAL:
Repeat taking t1=14500 and t2=17000

Questions:
1. - Have the results improved?
2. - Has the reliability improved?
3. - Why it is not possible to fix the ambiguities?

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 112
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 .
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

Hint:

Check possible synchronism errors between the receivers’ time tags.

For instance, use the following sentence to compute the receiver clocks of IND1,
IND2 and IND3 receivers with gLAB (the last field is the receiver clock offset):

gLAB_linux -input:obs IND10540.13O -input:nav brdc0540.13n -pre:dec 1|grep FILTER


gLAB_linux -input:obs IND20540.13O -input:nav brdc0540.13n -pre:dec 1|grep FILTER
gLAB_linux -input:obs IND30540.13O -input:nav brdc0540.13n -pre:dec 1|grep FILTER

Questions:
Discuss how the relative receiver clock offset can
affect the baseline estimation.

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 113
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 .

B.3. IND1-IND2 Baseline vector estimation with L1 carrier


(using the time-tagged reference station measurements)

Ž In the previous exercise we have shown how the synchronism errors


between the time-tagged measurements affect the ambiguity fixing
when trying to estimate the baseline vector.

PRN06 (ref) PRN j PRN06 (ref) PRN j

ρ̂ 6 ρˆ j ρ̂ 6 ρˆ j
r
dr rIND3 - r0,IND3

IND1(ref)
IND2 (ref) IND2(user)
IND3 (user) IND1(ref)
IND2 (ref) IND3 (user)
IND2(user)

Computed corrections
L j
1, ref
Time-tagged measurements PRC { L
1
j j
1, ref U j
ref
broadcast by the
broadcast by reference station reference station.

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 114
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 .
B.3. IND1-IND2 Baseline vector estimation with L1 carrier
(using the time-tagged reference station measurements)

Ž Next we are going to repeat the differential positioning, but using the
computed differential corrections. In this case, as the corrections vary
slowly, the synchronization errors will not be an issue.

PRN06 (ref) PRN j PRN06 (ref) PRN j

ρ̂ 6 ρˆ j ρ̂ 6 ρˆ j
r
dr rIND3 - r0,IND3

IND2 (ref) IND2(user)


IND3 (user) IND1(ref)
IND2 (ref) IND2(user)
IND3 (user)
IND1(ref)

Computed corrections
L j
1, ref
Time-tagged measurements PRC { L
1
j j
1, ref U j
ref
broadcast by the
broadcast by reference station reference station.

gAGE/UPC B.3.3. Baseline vector estimation with @ J. Sanz & J.M. Juan 115
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 .

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

B.4.1 Using DDL1 carrier measurements, estimate the coordinates of receiver


IND2 taking IND1 as a reference receiver.
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14530

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding the floated solution directly
and by rounding the solution after decorrelation.
3. Repair the DDL1 carrier measurements with the DDN1 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC A.6.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 116
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.4. IND2-IND3 differential positioning with L1 carrier
(using the computed differential corrections)

B.4.1 Estimate the coordinates of receiver IND2 taking IND1 as the reference
receiver, using the L1 carrier measurements of file (DD_IND1_IND2_06_ALL.dat)

[DDL1-DDRho]= [Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1]

Notation
ª  ρˆ 3  ρˆ 6 T º y=Gx
ª DDL  DD U º
6,3
1
6,3
« » ª1 0 0 º ª O1 DDN º 1
6,3

« 6,7 » «0 1 « »
« ˆ7 ˆ6 » 0 »» « O1 DDN » Where the vector of
«  ρ  ρ » dr  «
T
« DDL 1
6,7
DD U »
6,7
1
« » « » « »« »
« 6,30 » « » « »« » unknowns x includes
¬« DDL1  DD U ¼» 1 ¼ ¬« O1 DDN16,30 ¼» the user coordinates
6,30
«  ρˆ  ρˆ »
30 6 T ¬0 0 0
¬ ¼ and ambiguities

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 117
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

The receiver was not moving (static) during the data collection.
Therefore, for each epoch we have the equations system:

ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,3 (t1 )  DD U 6,3 (t1 ) º « 1 1
» ª1 0 0 º ª O1 DDN16,3 º
«
« DDL1 (t1 )  DD U (t1 ) »
6,7 6,7 » « ˆ7 6 T » «0 1
«  ρ (t1 )  ρˆ (t1 ) » dr  «
« »
0 »» « O1 DDN16 ,7 » y1 = G1 x
« » « » « »« »
« » « » « »« 6,30 »
¬« DDL1 (t1 )  DD U (t1 ) ¼» 1 ¼ ¬« O1 DDN1 ¼»
6,30 6,30
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,3 (t2 )  DD U 6,3 (t2 ) º « 2 2
» ª1 0 0 º ª O1 DDN16,3 º
«
« DDL1 (t2 )  DD U (t2 ) »
«
6,7 6,7 »
»
« ˆ7
«
6 T »

»
«0 1
«  ρ (t2 )  ρˆ (t2 ) » dr  «
« »«
« »
0 »» « O1 DDN16 ,7 »
»
y2 = G2 x
« » « » « »« 6,30 »
¬« DDL1 (t2 )  DD U (t2 ) ¼» 1 ¼ ¬« O1 DDN1 ¼»
6,30 6,30
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
¬ 2 2 ¼ y2:=y[t2]
G2:=G[t2]

gAGE/UPC
[DDL1-DDRho]=[Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1] 118 @ J. Sanz & J.M. Juan
Research group of Astronomy & Geomatics
Technical University of Catalonia
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

In the previous computation we have not taken into account the


correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL1 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 119
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

The script MakeL1DifMat.scr builds the equations system


[DDL1-DDRho]=[ Los_k- Los_06]*[dr] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=14530, using the input
file DD_IND1_IND2_06_ALL.dat generated before.

Execute:
MakeL1DifMat.scr DD_IND1_IND2_06_ALL.dat 14500 14530
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC B.41. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 120
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied

P=inv(G1'*W*G1+G2'*W*G2);
octave x=P*(G1'*W*y1+G2'*W*y2);
load M1.dat
x(1:3)'
load M2.dat
0.3132 -0.2648 0.6237
y1=M1(:,1); Taking into account that the ”a priori” coordinates
G1=M1(:,2:11); of IND2 are: IND2=[4787678.9809
183402.5915 4196171.6833]
y2=M2(:,1);
G2=M2(:,2:11); Therefore the estimated absolute coordinates of
Py=(diag(ones(1,7))+ones(7))*2e-4; IND3 are:
W=inv(Py); IND2+ x(1:3)'
4787679.2940 183402.3267 4196172.3070

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 121
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found.

Decorrelation and integer LS search solution


octave
[Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 2.25895684415922
a=x(4:10)/lambda1; afixed(:,1)'
Q=P(4:10,4:10); 9 -17 22 -10 6 10 7

Rounding directly the floated solution Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az);
8 -17 22 -12 5 11 7 9 -17 22 -10 6 10 7

gAGE/UPC A.6.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 122
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

Questions:

1.- Can the ambiguities be fixed now? Why?


2.- Discuss why the synchronism errors affect the
two differential positioning implementations.

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 123
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

3. Repair the DDL1 carrier measurements with the DDN1 FIXED ambiguities
and plot results to analyze the data.
octave
amb=lambda1*afixed(:,1);
save ambL1.dat amb

Using the previous the file ambL1.dat and "DD_IND1_IND2_06_ALL.dat",


generate a file with the following content:
----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND1 IND2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND2 ---->
------------------------------------------------------------------------------------------

Note: This file is identical to file "DD_IND1_IND2_06_ALL.dat", but with the


ambiguities added in the last field #18.

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 124
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

a) Generate a file with the satellite PRN number and the ambiguities:

grep -v \# ambL1.dat > na1


cat DD_IND1_IND2_06_ALL.dat|gawk '{print $4}'|sort -nu|gawk '{print $1,NR}’ >sat.lst
paste sat.lst na1 > sat.ambL1

b) Generate the "DD_IND2_IND3_06_ALL.fixL1" file:

cat DD_IND1_IND2_06_ALL.dat|
gawk 'BEGIN{for (i=1;i<1000;i++) {getline <"sat.ambL1";A[$1]=$3}}
{printf "%s %02i %02i %s %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f
%14.4f %14.4f %14.4f %14.4f %14.4f %14.4f \n",
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,A[$4]}' >
DD_IND1_IND2_06_ALL.fixL1

gAGE/UPC A.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 125
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND1 IND2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND2 ---->
------------------------------------------------------------------------------------------

c) Make and discuss the following plots

graph.py -f DD_IND1_IND2_06_ALL.fixL1 -x6 -y'($8-$18-$11)'


-so --yn -0.06 --yx 0.06 -l "(DDL1-lambda1*DDN1)-DDrho" --xl "time (s)" --yl "m"

graph.py -f DD_IND1_IND2_06_ALL.fixL1 -x6 -y'($8-$11)'


-so --yn -5 --yx 5 -l "(DDL1-Ddrho)" --xl "time (s)" --yl "metres"

graph.py -f DD_IND1_IND2_06_ALL.fixL1 -x6 -y'($8-$18)'


-so --yn -10 --yx 10 -l "(DDL1-lambda1*DDN1)" --xl "time (s)" --yl "metres"

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 126
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND1 IND2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND2 ---->
------------------------------------------------------------------------------------------

graph.py -f DD_IND1_IND2_06_ALL.fixL1
-x6 -y'($8-$18-$11)'
-so --yn -0.06 --yx 0.06
-l "(DDL1-O DDN1)-DDrho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 127
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND1 IND2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND2 ---->
------------------------------------------------------------------------------------------

graph.py -f DD_IND1_IND2_06_ALL.fixL1
-x6 -y'($8-$11)'
-so --yn -5 --yx 5
-l ”(DDL1-DDrho)"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 128
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

----------------------------- DD_IND2_IND3_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[IND1 IND2 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- IND2 ---->
------------------------------------------------------------------------------------------

graph.py -f DD_IND1_IND2_06_ALL.fixL1
-x6 -y'($8-$18)'
-so --yn -10 --yx 10
-l "(DDL1-O DDN1)"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 129
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

4. Computing the FIXED solution (after FIXING ambiguities).


The following procedure can be applied
a) Build the equations system

[DDL1-DDRho-lambda1*DDN1]=[Los_k - Los_06]*[dr]

cat DD_IND1_IND2_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$8-$11-$18, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), sin(e2)+sin(e1)}' > M.dat

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 130
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:
octave Absolute coordinates of IND3.

load M.dat Taking into account that the ”a priori” coordinates


of IND2 are:
y=M(:,1); IND2=[4787678.9809 183402.5915 4196171.6833]
G=M(:,2:4);
Therefore the estimated absolute coordinates
x=inv(G'*G)*G'*y of IND2 are:
x IND2+ x(1:3)'
0.01182339916366036 ans= 4787678.9927 183402.5931 4196171.6753
0.00164435938676216
-0.00799007795850631 Question:
Is the accuracy similar to that in the previous
case, when estimating the baseline vector? Why?

gAGE/UPC B.4.1. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 131
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

B.4.2. Using the DDL1 carrier with the ambiguities FIXED, compute the LS single
epoch solution for the whole interval 14500< t <16500 with the program LS.f

Note: The program "LS.f" computes the Least Square solution for each
measurement epoch of the input file (see the FORTRAN code "LS.f")

The following procedure can be applied


a) generate a file with the following content;

[Time], [DDL1-DDRho-lambda1*DDN1], [ Los_k- Los_06]

where:
Time= seconds of day
DDL1 - DDRho-lambda1*DDN1= Prefit residulas (i.e., "y" values in program LS.f)
Los_k - Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC B.4.2. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 132
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

[Time], [DDL1-DDRho-lambda1*DDN1], [Los_k - Los_06]

The following sentence can be used

cat DD_IND1_IND2_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$11-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution

cat L1model.dat |LS > L1fix.pos

gAGE/UPC B.4.2. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 133
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

Plot the baseline estimation error

graph.py -f L1fix.pos -x1 –y2 -s.- -l "North error"


-f L1fix.pos -x1 –y3 -s.- -l "East error"
-f L1fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "IND1-IND2: 7.20m:
L1 ambiguities fixed"

gAGE/UPC B.4.2. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 134
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

Differential
Positioning error
after fixing
ambiguities
Question:
Discuss the accuracy
achieved and the
possible error sources
that could affect this
result (e.g. Antenna
Phase Centres…)

gAGE/UPC B.4.2. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 135
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

B.4.3. Repeat previous computations, but using the Unsmoothed code P1.
i.e., compute the LS single epoch solution for the whole interval
14500< t <16500 with the program LS.f

The same procedure as in previous case can be applied, but using the code
DDP1 instead of the carrier “DDL1-lambda1*DDN1”
a) generate a file with the following content;

[Time], [DDP1-DDRho], [ Los_k - Los_06]

where:
Time= seconds of day
DDP1 - DDrho= Prefit residuals (i.e., "y" values in program lms1)
Los_k - Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC B.4.3. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 136
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (single epoch LS, whole interval)
B.4. IND1-IND2 differential positioning with L1 carrier
(using the computed differential corrections)

[Time], [DDP1-DDRho], [Los_k – Los_06]

The following sentence can be used

cat DD_IND1_IND2_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$7-$11,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > P1model.dat

b) Compute the Least Squares solution

cat P1model.dat |LS > P1.pos

gAGE/UPC B.4.3. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 137
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (single epoch LS, whole interval)

B.4. IND1-IND2 differential positioning with L1 carrier


(using the computed differential corrections)

Positioning error
with the P1 code

Question:
Discuss the results by
comparing them with the
previous ones with DDL1
carrier in the relative
positioning implementation.

gAGE/UPC B.4.3. Estimate IND2 coordinates with @ J. Sanz & J.M. Juan 138
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDP1 (single epoch LS, whole interval)
B.4. IND1-IND2 differential positioning with L1 carrier

B.4.4. Repeat the previous computations, but for the baseline vector
estimation and using the time-tagged measurements of the reference
station, instead of the differential corrections.
That is, compute the LS single epoch solution for the whole interval
14500< t <16500 with the program LS.f

The same procedure as in previous exercise A.6.2 can be applied,


a) generate a file with the following content;

[Time], [DDL1], [ Los_k - Los_06]

where:
Time= seconds of day
DDL1= Prefit residulas (i.e., "y" values in program lms1)
Los_k - Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC B.4.4. Baseline vector estimation with @ J. Sanz & J.M. Juan 139
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

B.4. IND1-IND2 differential positioning with L1 carrier

[Time], [DDL1-lambda1*DDN1], [Los_k - Los_06]

The following sentence can be used

cat DD_IND2_IND3_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution

cat L1model.dat |LS > L1fix.pos

gAGE/UPC B.4.4. Baseline vector estimation with @ J. Sanz & J.M. Juan 140
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
B.4. IND1-IND2 differential positioning with L1 carrier

Plot the baseline estimation error

graph.py -f L1bslfix.pos -x1 -y'($2+7.1482)' -s.- -l "North error"


-f L1bslfix.pos -x1 -y'($3+0.8359)' -s.- -l "East error"
-f L1bslfix.pos -x1 -y'($4+0.0070)' -s.- -l "UP error"
--yn -.4 --yx .4 --xl "time (s)" --yl "error (m)" -t "Baseline error:
IND1-IND2: 7.20m: L1 ambiguities fixed: synchronism errors”

Note:
bsl_enu =[-7.1482 -0.8359 0.0070]

gAGE/UPC B.4.4. Baseline vector estimation with @ J. Sanz & J.M. Juan 141
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)

B.4. IND1-IND2 differential positioning with L1 carrier

Baseline
estimation error
after fixing
ambiguities
Question:
Discuss why does the
accuracy degrades
respect to the previous
case. Why this large
error appears?

gAGE/UPC B.4.4. Baseline vector estimation with @ J. Sanz & J.M. Juan 142
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (single epoch LS, whole interval)
OVERVIEW
Ž Introduction: gLAB processing in command line
Ž Preliminary computations: data files & reference values
Ž Session A: Differential positioning of IND2-IND3 receivers
(baseline: 18 metres)

Ž Session B: Differential positioning of IND1-IND2 receivers


(baseline: 7 metres, but synchronization errors)
¾ Session C: Differential positioning of PLAN-GARR receivers
(baseline: 15 km, Night time): tropospheric effects

Ž Session D: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Day time): tropospheric and Ionospheric effects

gAGE/UPC @ J. Sanz & J.M. Juan 143


Research group of Astronomy & Geomatics
Technical University of Catalonia

Session C
Differential positioning of
PLAN- GARR receivers
(baseline: 15 km. Night time)
Analysis of differential tropospheric error effects

gAGE/UPC @ J. Sanz & J.M. Juan 144


Research group of Astronomy & Geomatics
Technical University of Catalonia
C. PLAN- GARR Differential positioning
Ž The previous exercises have been done over short baselines (less
than 20 metres), where the errors introduced by the troposphere
and ionosphere completely cancel when making differences of
measurements. Toulouse

Ž In this session we will consider a


larger baseline (15 km) in order
to assess the effect of the
atmosphere on the ambiguity
fixing and positioning.

Ž In this session we will consider Barcelona


Night time data in order to have
a lower ionospheric error.
PLAN-GARR: 15.228 km
gAGE/UPC @ J. Sanz & J.M. Juan 145
Research group of Astronomy & Geomatics
Technical University of Catalonia

C. PLAN- GARR Differential positioning


C.1. Double differences between receivers and satellites computation
The script "DDobs.scr" computes the double differences between receivers
and satellites from file obs.dat. 1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

For instance, the following sentence:


DDobs.scr obs.dat PLAN GARR 06 03
generates the file
------------------- DD_{sta1}_{sta2}_{sat1}_{sat2}.dat ----------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[sta1 sta2 sat1 sat2 DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2]
<---- sta2 ---->
------------------------------------------------------------------------------------

Where the elevation (EL) and azimuth (AZ) are taken from station #2.
and where (EL1, AZ1) are for satellite #1 and (EL1, AZ1) are for satellite #2.

gAGE/UPC C.1. Double Differences computation @ J. Sanz & J.M. Juan 146
Research group of Astronomy & Geomatics
Technical University of Catalonia
C. PLAN- GARR Differential positioning
Compute the double differences between receivers PLAN (reference) and
GARR and satellites PRN06 (reference) and [PRN 03, 07,11, 16, 18, 19,
21, 22, 30]
DDobs.scr obs.dat PLAN-GARR 06 03
DDobs.scr obs.dat PLAN-GARR 06 07
DDobs.scr obs.dat PLAN-GARR 06 11
DDobs.scr obs.dat PLAN-GARR 06 16
DDobs.scr obs.dat PLAN-GARR 06 18
DDobs.scr obs.dat PLAN-GARR 06 19
DDobs.scr obs.dat PLAN-GARR 06 21
DDobs.scr obs.dat PLAN-GARR 06 22
DDobs.scr obs.dat PLAN-GARR 06 30

Merge the files in a single file and sort by time:


cat DD_PLAN_GARR_06_??.dat|sort -n -k +6 > DD_PLAN_GARR_06_ALL.dat

gAGE/UPC C.1. Double Differences computation @ J. Sanz & J.M. Juan 147
Research group of Astronomy & Geomatics
Technical University of Catalonia

C.2. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections)

C.2.1 Using DDL1 carrier measurements, estimate the coordinates of receiver


GARR taking PLAN as a reference receiver.
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14590.

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding the floated solution directly
and by rounding the solution after decorrelation.
3. Repair the DDL1 carrier measurements with the DDN1 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 148
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
C.2. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections)

C.2.1 Estimate the coordinates of receiver GARR taking PLAN as the reference
receiver, using the L1 carrier measurements of file (DD_PLAN_GARR_06_ALL.dat)

[DDL1-DDRho]= [Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1]

Notation
ª  ρˆ 3  ρˆ 6 T º y=Gx
ª DDL  DD U º
6,3
1
6,3
« » ª1 0 0 º ª O1 DDN º 1
6,3

« 6,7 » «0 1 « »
« ˆ7 ˆ6 » 0 »» « O1 DDN » Where the vector of
«  ρ  ρ » dr  «
T
« DDL 1
6,7
DD U »
6,7
1
« » « » « »« »
« 6,30 » « » « »« » unknowns x includes
¬« DDL1  DD U ¼» 1 ¼ ¬« O1 DDN16,30 ¼» the user coordinates
6,30
«  ρˆ  ρˆ »
30 6 T ¬0 0 0
¬ ¼ and ambiguities

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 149
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

C.2. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections)

The receiver was not moving (static) during the data collection.
Therefore for each epoch we have the equations system:

ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,3 (t1 )  DD U 6,3 (t1 ) º « 1 1
» ª1 0 0 º ª O1 DDN16,3 º
«
« DDL1 (t1 )  DD U (t1 ) »
6,7 6,7 » « ˆ7 6 T » «0 1
«  ρ (t1 )  ρˆ (t1 ) » dr  «
« »
0 »» « O1 DDN16 ,7 » y1 = G1 x
« » « » « »« »
« » « » « »« 6,30 »
¬« DDL1 (t1 )  DD U (t1 ) ¼» 1 ¼ ¬« O1 DDN1 ¼»
6,30 6,30
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
y1:=y[t1]
¬ 1 1 ¼
G1:=G[t1]
ª  ρˆ 3 (t )  ρˆ 6 (t ) T º
ª DDL16,3 (t2 )  DD U 6,3 (t2 ) º « 2 2
» ª1 0 0 º ª O1 DDN16,3 º
«
« DDL1 (t2 )  DD U (t2 ) »
«
6,7 6,7 »
»
« ˆ7
«
6 T »

»
«0 1
«  ρ (t2 )  ρˆ (t2 ) » dr  «
« »«
« »
0 »» « O1 DDN16 ,7 »
»
y2 = G2 x
« » « » « »« 6,30 »
¬« DDL1 (t2 )  DD U (t2 ) ¼» 1 ¼ ¬« O1 DDN1 ¼»
6,30 6,30
«  ρˆ 30 (t )  ρˆ 6 (t ) T » ¬0 0 0
¬ 2 2 ¼ y2:=y[t2]
G2:=G[t2]

gAGE/UPC
[DDL1-DDRho]=[Los_k - Los_06]*[dr] + [ A ]*[lambda1*DDN1] 150 @ J. Sanz & J.M. Juan
Research group of Astronomy & Geomatics
Technical University of Catalonia
C.2. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections)

In the previous computation we have not taken into account the


correlations between the double differences of measurements. This
ª2 1 1º
matrix will be used now, as the LAMBDA method will be applied to «
FIX the carrier ambiguities. 2 «1 2 1 »»
P 2V
y
« »
a) Show that the covariance matrix of DDL1 is given by Py « »
¬1 1 1 2¼

b) Given the measurement vectors (y) and Geometry matrices (G) for two epochs
y1:=y[t1] ; G1:=G[t1] ; Py
y2:=y[t2] ; G2:=G[t2] ; Py

show that the user solution and covariance matrix can be computed as:
P=inv(G1'*W*G1+G2'*W*G2);
y = G x; W = Py-1 where: W=inv(Py)
x=P*(G1'*W*y1+G2'*W*y2) ;
T -1 T
x = (G WG) G Wy
(G T WG)-1
P = gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 151
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

C.2. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections)

The script MakeL1DifMat.scr builds the equations system


[DDL1-DDRho]=[ Los_k- Los_06]*[dr] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=14590, using the input
file DD_PLAN_GARR_06_ALL.dat generated before.

Execute:
MakeL1DifMat.scr DD_PLAN_GARR_06_ALL.dat 14500 14590
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 152
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
C.2. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied
P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
octave
load M1.dat x(1:3)'
load M2.dat 0.6879 -0.2712 -0.7924
Taking into account that the ”a priori”
y1=M1(:,1); coordinates of GARR are:
G1=M1(:,2:13); GARR=[4796983.5170 160309.1774
4187340.3887]
y2=M2(:,1);
G2=M2(:,2:13); Therefore the estimated absolute coordinates
Py=(diag(ones(1,9))+ones(9))*2e-4; of GARR are:
W=inv(Py); GARR+ x(1:3)'
4796984.2049 160308.9062 4187339.5963

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 153
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

C.2. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found.
Decorrelation and integer LS search solution
octave [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 1.19278115892607
a=x(4:12)/lambda1; afixed(:,1)'
Q=P(4:12,4:12); -19337 130765326 -1759092 -1498083 130765325
130765316 130765339 122888034 130765336

Rounding the floated solution directly Rounding the decorrelated floated solution
round(a)' -19337 130765326 -1759092 afix=iZ*round(az);
-1498083 130765325 130765316 130765339 -19337 130765326 -1759092 -1498083 130765325
122888034 130765336 130765316 130765339 122888034 130765336

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 154
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
C.2. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections)

Questions:

1. Can the ambiguities be fixed with a certain degree of


confidence?
2. Repeat the computations taking: t= 14500 and 14900.
3. Repeat the computations taking: t= 14500 and 15900.
4. Discuss why the ambiguities cannot be fixed.

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 155
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

C.2. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections)

Hint:

Plot the differential Tropospheric and Ionospheric delays (from the gLAB model) and
discuss their potential impact on the ambiguity fixing.

graph.py -f DD_PLAN_GARR_06_ALL.dat -x6 -y'13'


-so --yn -0.06 --yx 0.06 –cl g -l "DDIono"
-f DD_PLAN_GARR_06_ALL.dat -x6 -y'12'
-so --cl r --yn -0.06 --yx 0.06
-l "DDTropo" --xl "time (s)" --yl "metres"

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 156
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)
C.2. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections)

gAGE/UPC C.2.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 157
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

Repeat the previous exercise, but


correcting the measurements with the
nominal tropospheric correction model.

gAGE/UPC @ J. Sanz & J.M. Juan 158


Research group of Astronomy & Geomatics
Technical University of Catalonia
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

C.3.1 Using DDL1 carrier measurements, estimate the coordinates of receiver


GARR taking PLAN as a reference receiver and correcting troposphere.
Consider only the two epochs used in the previous exercise: t1=14500 and t2=14590

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding the floated solution directly
and by rounding the solution after decorrelation.
3. Repair the DDL1 carrier measurements with the DDN1 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 159
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

The script MakeL1DifTrpMat.scr builds the equations system


[DDL1-DDRho-Trp]=[ Los_k- Los_06]*[dr] + [ A ]*[O1*DDN1]

for the two epochs required t1=14500 and t2=14590, using the input
file DD_PLAN_GARR_06_ALL.dat generated before.

Execute:
MakeL1DifTrpMat.scr DD_PLAN_GARR_06_ALL.dat 14500 14590
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 160
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied
P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
octave
load M1.dat x(1:3)'
load M2.dat 0.2140 -0.1732 0.1535

y1=M1(:,1); Taking into account that the ”a priori”


G1=M1(:,2:13); coordinates of GARR are:
GARR=[4796983.5170 160309.1774
y2=M2(:,1);
4187340.3887]
G2=M2(:,2:13);
Therefore the estimated absolute coordinates
Py=(diag(ones(1,9))+ones(9))*2e-4;
of GARR are:
W=inv(Py);
GARR+ x(1:3)'
4796983.7310 160309.0042 4187340.5422

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 161
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found.
Decorrelation and integer LS search solution
octave [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 2.47022808203678
a=x(4:12)/lambda1; afixed(:,1)'
Q=P(4:12,4:12); -19333 130765338 -1759080 -1498083 130765319
130765324 130765334 122888028 130765333

Rounding the floated solution directly Rounding the decorrelated floated solution
round(a)' -19334 130765336 -1759081 afix=iZ*round(az)
-1498083 130765320 130765323 -19333 130765338 -1759080 -1498083 130765319
130765334 122888029 130765334 130765324 130765334 122888028 130765333

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 162
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections)

Questions:

Can the ambiguities be fixed now?


Discuss, why?

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 163
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using only two epochs)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

3. Repair the DDL1 carrier measurements with the DDN1 FIXED ambiguities
and plot results to analyze the data.
octave
amb=lambda1*afixed(:,1);
save ambL1.dat amb

Using the previous file ambL1.dat and "DD_PLAN_GARR_06_ALL.dat",


generate a file with the following content:
----------------------------- DD_PLAN_GARR_06_ALL.fixL1 ---------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

Note: This file is identical to file "DD_PLAN_GARR_06_ALL.dat", but with the


ambiguities added in the last field #18.

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 164
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

a) Generate a file with the satellite PRN number and the ambiguities:

grep -v \# ambL1.dat > na1


cat DD_PLAN_GARR_06_ALL.dat|gawk '{print $4}'|sort -nu|gawk '{print $1,NR}’ >sat.lst
paste sat.lst na1 > sat.ambL1

b) Generate the "DD_PLAN_GARR_06_ALL.fixL1" file:

cat DD_PLAN_GARR_06_ALL.dat|
gawk 'BEGIN{for (i=1;i<1000;i++) {getline <"sat.ambL1";A[$1]=$3}}
{printf "%s %02i %02i %s %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f
%14.4f %14.4f %14.4f %14.4f %14.4f %14.4f \n",
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,A[$4]}' >
DD_PLAN_GARR_06_ALL.fixL1

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 165
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrp DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

c) Make and discuss the following plots


graph.py -f DD_PLAN_GARR_06_ALL.fixL1 -x6 -y'($8-$18-$11)'
-so --yn -0.6 --yx 0.6 -l "(DDL1-lambda1*DDN1)-DDRho" --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_06_ALL.fixL1 -x6 -y'($8-$18-$11-$12)'


-so --yn -0.6 --yx 0.6 -l "(DDL1-lambda1*DDN1)-DDRho-DDTrp" --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_06_ALL.fixL1 -x6 -y'($8-$18-$12)'


-so --yn -0.06 --yx 0.06 -l "(DDL1-lambda1*DDN1)-DDTrp" --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_06_ALL.fixL1 -x6 -y'($8-$18)'


-so --yn -15000 --yx 15000 -l "(DDL1-lambda1*DDN1)" --xl "time (s)" --yl "m"

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 166
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_06_ALL.fixL1
-x6 -y'($8-$18-$11)'
-so --yn -0.6 --yx 0.6
-l "(DDL1-O DDN1)-DDRho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 167
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_06_ALL.fixL1
-x6 -y'($8-$18-$11-$12)'
-so --yn -0.6 --yx 0.6
-l "(DDL1-O DDN1)-DDRho-DDTrp"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 168
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_06_ALL.fixL1
-x6 -y'($8-$18-$11-$12)'
-so --yn -0.06 --yx 0.06
-l "(DDL1-O DDN1)-DDRho-DDTrp"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 169
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_06_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 06 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_06_ALL.fixL1
-x6 -y'($8-$18)'
-so --yn -15000 --yx 15000
-l "(DDL1-O DDN1)"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 170
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

4. Computing the FIXED solution (after FIXING ambiguities).


The following procedure can be applied
a) Build the equations system

[DDL1-DDRho-DDTrp-lambda1*DDN1]=[Los_k - Los_06]*[dr]

cat DD_IND1_IND2_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$8-$11-$12-$18, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat

gAGE/UPC C.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 171
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:
octave

load M.dat Absolute coordinates of GARR.

y=M(:,1); Taking into account that the ”a priori” coordinates


G=M(:,2:4); of IND2 are:
GARR=[4796983.5170 160309.1774 4187340.3887]
x=inv(G'*G)*G'*y
x Therefore the estimated absolute coordinates
-0.00290189178833524 of GARR are:
0.00354027112026342 GARR+ x(1:3)'
0.04277612243282228 ans= 4796983.5141 160309.1809 4187340.4315

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 172
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

C.3.2. Using the DDL1 carrier with the ambiguities FIXED, compute the LS single
epoch solution for the whole interval 14500< t <16500 with the program LS.f

Note: The program LS.f computes the Least Square solution for each
measurement epoch of the input file (see the FORTRAN code "LS.f")

The following procedure can be applied


a) generate a file with the following content;

[Time], [DDL1-DDRho-Trp-lambda1*DDN1], [Los_k - Los_06]

where:
Time= seconds of day
DDL1 – DDRho –DDTrp – lambda1*DDN1= Prefit residulas (i.e., "y" values in program LS.f)
Los_k – Los_06 = The three components of the geometry matrix (i.e., matrix "a" in program
LS.f)

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 173
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

[Time], [DDL1-DDRho-DDTrp-lambda1*DDN1], [Los_k - Los_06]

The following sentence can be used

cat DD_IND1_IND2_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$11-$12-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution

cat L1model.dat |LS > L1fix.pos

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 174
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

Plot the baseline estimation error

graph.py -f L1fix.pos -x1 –y2 -s.- -l "North error"


-f L1fix.pos -x1 –y3 -s.- -l "East error"
-f L1fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "PLAN-GARR: 15.2
km: L1 ambiguities fixed: No wet tropo estim."

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 175
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

Differential
Positioning error
after fixing
ambiguities

Question:
Discuss the possible
sources of the bias found
in the vertical component.

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 176
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

Remember that the reference coordinates have been taken relative


to the Antenna Phase Centre in the ionosphere-free combination LC
Question:
Taking into account the following parameters of the PLAN and GARR antennas,
calculate the relative error introduced by the difference between the L1 and
LC APC of both receivers in the differential positioning.

According to the RINEX and ANTEX files, we have:


PLAN: TRM55971.00 (millimetres)
G01 1.29 -0.19 66.73 NORTH / EAST / UP
G02 0.38 0.61 57.6
GARR: TRM41249.00 (millimetres)
G01 0.28 0.49 55.91 NORTH / EAST / UP
G02 0.15 0.46 58.00

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 177
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (APC error effect)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

Solution:
GARR: PLAN:
dL1=5.591 cm dL1=6.673 cm
dL2=5.800 cm dL2=5.769 cm
dLC=1/(g-1)*(g*dL1-dL2)=5.3cm dLC=1/(g-1)*(g*dL1-dL2)=8.1cm

Then: Then:
dL1=dLC+0.3 cm dL1=dLC-1.4 cm

L1 (GARR) Then the relative error:


DL1(GARR-PLAN)=+1.7cm
+0.3 cm
LC (PLAN)
LC (GARR)
-1.4 cm
L1 (PLAN)

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 178
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (APC error effect)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

Repeat the positioning error plot, but correcting for the relative
Antenna Phase Centres (APCs):

graph.py -f L1fix.pos -x1 –y2 -s.- -l "North error"


-f L1fix.pos -x1 –y3 -s.- -l "East error"
-f L1fix.pos -x1 –y '($4-0.017)' -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "PLAN-GARR: 15.2
km: L1 amb. fixed: -1.7 cm dAPC_L1: No wet tropo estim."

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 179
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (APC error effect)

C.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

Differential
Positioning error
after fixing
ambiguities

Question:
Discuss on the remaining
error sources which could
explain the error bias found
in the vertical component.

gAGE/UPC C.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 180
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (APC error effect)
C.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

C.3.3. Repeat the previous computations, but using the Unsmoothed code P1.
i.e., compute the LS single epoch solution for the whole interval
145000< t <165000 with the program LS.f

The same procedure as in previous case can be applied, but using the code
DDP1 instead of the carrier “DDL1 – lambda1*DDN1”
a) generate a file with the following content;

[Time], [DDP1-DDRho-DDTrp], [ Los_k - Los_06]

where:
Time= seconds of day
DDP1 – DDRho-DDTrp= Prefit residulas (i.e., "y" values in program lms1)
Los_k – Los_06 = The three components of the geometry matrix
(i.e., matrix "a" in program LS.f)

gAGE/UPC C.3.3. Estimate GARR coordinates @ J. Sanz & J.M. Juan 181
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using tropospheric corrections)

C.3. PLAN-GARR differential positioning


(using the computed differential corrections including troposphere)

[Time], [DDP1-DDRho-DDTrp], [Los_k – Los_06]

The following sentence can be used

cat DD_IND1_IND2_06_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$7-$11-$12,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > P1model.dat

b) Compute the Least Squares solution

cat P1model.dat |LS > P1.pos

gAGE/UPC C.3.3. Estimate GARR coordinates @ J. Sanz & J.M. Juan 182
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using tropospheric corrections)
C.3. PLAN-GARR differential positioning
(using the computed differential corrections including troposphere)

Positioning error
with the
unsmoothed
code

Question:
Discuss the results by
comparing them with the
previous ones with DDL1
carrier.

gAGE/UPC C.3.3. Estimate GARR coordinates @ J. Sanz & J.M. Juan 183
Research group of Astronomy & Geomatics
Technical University of Catalonia
(using tropospheric corrections)

OVERVIEW
Ž Introduction: gLAB processing in command line
Ž Preliminary computations: data files & reference values
Ž Session A: Differential positioning of IND2-IND3 receivers
(baseline: 18 metres)

Ž Session B: Differential positioning of IND1-IND2 receivers


(baseline: 7 metres, but synchronization errors)

Ž Session C: Differential positioning of PLAN-GARR receivers


(baseline: 15 km, Night time): tropospheric effects
¾ Session D: Differential positioning of PLAN-GARR receivers
(baseline: 15 km, Day time): tropospheric and Ionospheric effects

gAGE/UPC @ J. Sanz & J.M. Juan 184


Research group of Astronomy & Geomatics
Technical University of Catalonia
Session D
Differential positioning of
PLAN- GARR receivers
(baseline: 15 km. Day time)
Analysis of differential tropospheric
and Ionospheric error effects

gAGE/UPC @ J. Sanz & J.M. Juan 185


Research group of Astronomy & Geomatics
Technical University of Catalonia

D. Differential positioning of PLAN-GARR receivers

Ž The previous session has been carried out using measurements


collected during the night time, when the effect of the ionosphere is
lower.
Ž The effect of the ionosphere over a baseline of 15km (and in solar
maximum conditions) will be assessed in this session using day-time
measurements.
Ž The exercise will end with the computation of the unambiguous
DDSTEC from dual-frequency carrier measurements (after fixing the
ambiguities in both carriers).
Ž The solutions computed using the DDL1 carrier (with the ambiguity
fixed) corrected by the unambiguous DDSTEC and corrected by the
nominal Klobuchar model will be compared.
Ž Finally, the solution using the unambiguous DDLC carrier (iono-free
combination) will be also computed to compare results.
gAGE/UPC @ J. Sanz & J.M. Juan 186
Research group of Astronomy & Geomatics
Technical University of Catalonia
D.1 Measurements selection
Selecting measurements: Time interval [39000:41300]
• Select the satellites within the time interval [39000:41300]. Exclude satellites
PRN01 and PRN31 in order to have the same satellites over the whole interval

cat ObsFile.dat|gawk '{if ($4>=39000 && $4<=41300 && $2!=01 && $2!=31)
print $0}' > obs.dat

• Reference satellite (over the time interval [39000:41300])


Confirm that the satellite PRN13 is the satellite with the highest elevation
(this satellite will be used as the reference satellite)

obs.dat Î
1 2 3 4 5 6 7 8 9 10 11 12 13
[sta sat DoY sec P1 L1 P2 L2 Rho Trop Ion elev azim]

gAGE/UPC D.1 Model components computation @ J. Sanz & J.M. Juan 187
Research group of Astronomy & Geomatics
Technical University of Catalonia

D.2. Computing Double Differences


Compute the double differences between receivers PLAN (reference) and
GARR and satellites PRN13 (reference) and [PRN 02, 04, 07, 10, 17, 20,
23, 32]
DDobs.scr obs.dat PLAN-GARR 13 02
DDobs.scr obs.dat PLAN-GARR 13 04
DDobs.scr obs.dat PLAN-GARR 13 07
DDobs.scr obs.dat PLAN-GARR 13 10
DDobs.scr obs.dat PLAN-GARR 13 17
DDobs.scr obs.dat PLAN-GARR 13 20
DDobs.scr obs.dat PLAN-GARR 13 23
DDobs.scr obs.dat PLAN-GARR 13 32

Merge the files into a single file and sort by time:


cat DD_PLAN_GARR_13_??.dat|sort -n -k +6 > DD_PLAN_GARR_13_ALL.dat

gAGE/UPC D.2. Double Differences computation @ J. Sanz & J.M. Juan 188
Research group of Astronomy & Geomatics
Technical University of Catalonia
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

D.3.1 Using DDL1 carrier measurements, estimate the coordinates of receiver


GARR taking PLAN as a reference receiver and correcting troposphere.
Consider only the two epochs used in the previous exercise: t1=39000 and t2=40500.

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding the floated solution directly
and by rounding the solution after decorrelation.
3. Repair the DDL1 carrier measurements with the DDN1 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 189
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

The script MakeL1DifTrpMat.scr builds the equations system


[DDL1-DDRho-Trp]=[ Los_k- Los_13]*[dr] + [ A ]*[O1*DDN1]

for the two epochs required t1=39000 and t2=40500, using the input
file DD_PLAN_GARR_13_ALL.dat generated before.

Execute:
MakeL1DifTrpMat.scr DD_PLAN_GARR_13_ALL.dat 39000 40500
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 190
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied
P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
octave
load M1.dat x(1:3)'
load M2.dat -0.3262 0.0268 0.09012
Taking into account that the ”a priori”
y1=M1(:,1); coordinates of GARR are:
G1=M1(:,2:12); GARR=[4796983.5170 160309.1774
4187340.3887]
y2=M2(:,1);
Therefore the estimated absolute coordinates
G2=M2(:,2:12);
of GARR are:
Py=(diag(ones(1,8))+ones(8))*2e-4;
GARR+ x(1:3)'
W=inv(Py);
4796983.1908 160309.2042 4187340.4789

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 191
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found.
Decorrelation and integer LS search solution
octave [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f1=154*f0; sqnorm(2)/sqnorm(1)
lambda1=c/f1 ans = 3.54169992923790
a=x(4:11)/lambda1; afixed(:,1)'
Q=P(4:11,4:11); -1372641 1731966 2313787 592316
-878242 -401400 -475026 1855925

Rounding the floated solution directly Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az)
-1372640 1731967 2313786 592317 -1372641 1731966 2313787 592316
-878241 -401401 -475027 1855923 -878242 -401400 -475026 1855925

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 192
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

3. Repair the DDL1 carrier measurements with the DDN1 FIXED ambiguities
and plot results to analyze the data.
octave
amb=lambda1*afixed(:,1);
save ambL1.dat amb

Using the previous the file ambL1.dat and "DD_PLAN_GARR_13_ALL.dat",


generate a file with the following content:
----------------------------- DD_PLAN_GARR_13_ALL.fixL1 ---------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

Note: This file is identical to file "DD_PLAN_GARR_13_ALL.dat", but with the


ambiguities added in the last field #18.

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 193
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

a) Generate a file with the satellite PRN number and the ambiguities:

grep -v \# ambL1.dat > na1


cat DD_PLAN_GARR_13_ALL.dat|gawk '{print $4}'|sort -nu|gawk '{print $1,NR}’ >sat.lst
paste sat.lst na1 > sat.ambL1

b) Generate the "DD_PLAN_GARR_13_ALL.fixL1" file:

cat DD_PLAN_GARR_13_ALL.dat|
gawk 'BEGIN{for (i=1;i<1000;i++) {getline <"sat.ambL1";A[$1]=$3}}
{printf "%s %02i %02i %s %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f
%14.4f %14.4f %14.4f %14.4f %14.4f %14.4f \n",
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,A[$4]}' >
DD_PLAN_GARR_13_ALL.fixL1

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 194
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrp DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

c) Make and discuss the following plots


graph.py -f DD_PLAN_GARR_13_ALL.fixL1 -x6 -y'($8-$18-$11)'
-so --yn -0.6 --yx 0.6 -l "(DDL1-lambda1*DDN1)-DDRho" --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1 -x6 -y'($8-$18-$11-$12)'


-so --yn -0.6 --yx 0.6 -l "(DDL1-lambda1*DDN1)-DDRho-DDTrp " --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1 -x6 -y'($8-$18-$12)'


-so --yn -0.06 --yx 0.16 -l "(DDL1-lambda1*DDN1)-DDTrp " --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1 -x6 -y'($8-$18)'


-so --yn -15000 --yx 15000 -l "(DDL1-lambda1*DDN1)" --xl "time (s)" --yl "m"

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 195
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1
-x6 -y'($8-$18-$11)'
-so --yn -0.6 --yx 0.6
-l "(DDL1-O DDN1)-DDRho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 196
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1
-x6 -y'($8-$18-$11-$12)'
-so --yn -0.6 --yx 0.6
-l "(DDL1-O DDN1)-DDRho-DDTrp"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 197
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1
-x6 -y'($8-$18-$11-$12)'
-so --yn -0.06 --yx 0.16
-l "(DDL1-O DDN1)-DDRho-DDTrp"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 198
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1 ---------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1]
<---- GARR ---->
------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1
-x6 -y'($8-$18)'
-so --yn -15000 --yx 15000
-l "(DDL1-O DDN1)"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 199
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

4. Computing the FIXED solution for the whole interval


(after FIXING ambiguities).
The following procedure can be applied
a) Build the equations system

[DDL1-DDRho-DDTrp-lambda1*DDN1]=[Los_k - Los_13]*[dr]

cat DD_PLAN_GARR_13_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$8-$11-$12-$18, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat

gAGE/UPC D.3.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 200
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:
octave

load M.dat Absolute coordinates of GARR.

y=M(:,1); Taking into account that the ”a priori” coordinates


G=M(:,2:4); of IND2 are:
GARR=[4796983.5170 160309.1774 4187340.3887]
x=inv(G'*G)*G'*y
x Therefore the estimated absolute coordinates
0.00224133050672853 of GARR are:
0.00948643658103340 GARR+ x(1:3)'
0.04065938792819074 ans= 4796983.5192 160309.1869 4187340.4294

gAGE/UPC D.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 201
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

D.3.2. Using the DDL1 carrier with the ambiguities FIXED, compute the LS single
epoch solution for the whole interval 39000< t <41300 with the program LS.f

Note: The program LS.f computes the Least Square solution for each
measurement epoch of the input file (see the FORTRAN code "LS.f")

The following procedure can be applied


a) generate a file with the following content;

[Time], [DDL1-DDRho-Trp-lambda1*DDN1], [Los_k - Los_13]

where:
Time= seconds of day
DDL1 – DDRho –DDTrp – lambda1*DDN1= Prefit residulas (i.e., "y" values in program LS.f)
Los_k – Los_13 = The three components of the geometry matrix (i.e., matrix "a" in program
LS.f)

gAGE/UPC D.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 202
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

[Time], [DDL1-DDRho-DDTrp-lambda1*DDN1], [Los_k - Los_13]

The following sentence can be used

cat DD_PLAN_GARR_13_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$8-$11-$12-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L1model.dat

b) Compute the Least Squares solution

cat L1model.dat |LS > L1fix.pos

gAGE/UPC D.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 203
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.3. PLAN-GARR differential positioning with L1 carrier


(using the computed differential corrections including troposphere)

Plot the baseline estimation error

graph.py -f L1fix.pos -x1 –y2 -s.- -l "North error"


-f L1fix.pos -x1 –y3 -s.- -l "East error"
-f L1fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "PLAN-GARR: 15.2
km: L1 ambiguities fixed: No wet tropo estim."

gAGE/UPC D.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 204
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)
D.3. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

Differential
Positioning error
after fixing
ambiguities

Question:
Discuss on the remaining
error sources which could
explain the error found in
the North, East and
Vertical components.

gAGE/UPC D.3.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 205
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

Repeat the previous exercise, but


positioning with the L2 carrier

gAGE/UPC @ J. Sanz & J.M. Juan 206


Research group of Astronomy & Geomatics
Technical University of Catalonia
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

D.4.1 Using DDL2 carrier measurements, estimate the coordinates of receiver


GARR taking PLAN as a reference receiver and correcting troposphere.
Consider only the two epochs used in the previous exercise: t1=39000 and t2=40500.

The following procedure can be applied:


1. Compute the FLOATED solution, solving the equations system with
octave. Assess the accuracy of the floated solution.
2. Apply the LAMBDA method to FIX the ambiguities. Compare the
results with the solution obtained by rounding the floated solution directly
and by rounding the solution after decorrelation.
3. Repair the DDL2 carrier measurements with the DDN2 FIXED
ambiguities and plot results to analyze the data.
4. Compute the FIXED solution.

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 207
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

The script MakeL2DifTrpMat.scr builds the equations system


[DDL2-DDRho-Trp]=[ Los_k- Los_13]*[dr] + [ A ]*[O2*DDN2]

for the two epochs required t1=39000 and t2=40500, using the input
file DD_PLAN_GARR_13_ALL.dat generated before.

Execute:
MakeL2DifTrpMat.scr DD_PLAN_GARR_13_ALL.dat 39000 40500
The OUTPUT
are the files M1.dat and M2.dat associated with each epoch.
Where:
the columns of files M.dat are the vector y (first column) and Matrix G (next columns)

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 208
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

1. Computing the FLOATED solution (solving the equations system).


The following procedure can be applied
P=inv(G1'*W*G1+G2'*W*G2);
x=P*(G1'*W*y1+G2'*W*y2);
octave
load M1.dat x(1:3)'
load M2.dat -0.2949 0.0163 0.0567

y1=M1(:,1); Taking into account that the ”a priori”


G1=M1(:,2:12); coordinates of GARR are:
GARR=[4796983.5170 160309.1774
y2=M2(:,1);
4187340.3887]
G2=M2(:,2:12);
Therefore the estimated absolute coordinates
Py=(diag(ones(1,8))+ones(8))*2e-4;
of GARR are:
W=inv(Py);
GARR+ x(1:3)'
4796983.2221 160309.1937 4187340.4454

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 209
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

2. Applying the LAMBDA method to FIX the ambiguities.


The following procedure can be applied (justify the computations done)
Compare the different results found.
Decorrelation and integer LS search solution
octave [Qz,Zt,Lz,Dz,az,iZ] = decorrel (Q,a);
c=299792458; [azfixed,sqnorm] = lsearch (az,Lz,Dz,2);
f0=10.23e+6; afixed=iZ*azfixed;
f2=120*f0; sqnorm(2)/sqnorm(1)
lambda2=c/f2 ans = 15.3627929427384
a=x(4:10)/lambda2; afixed(:,1)'
Q=P(4:10,4:10); -1075655 1343160 938718 468181
-675593 -313616 -356299 1439836

Rounding the floated solution directly Rounding the decorrelated floated solution
round(a)' afix=iZ*round(az)
-1075654 1343161 938718 468182 -1075655 1343160 938718 468181
-675592 -313617 -356299 1439835 -675593 -313616 -356299 1439836

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 210
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

3. Repair the DDL2 carrier measurements with the DDN2 FIXED ambiguities
and plot results to analyze the data.
octave
amb=lambda2*afixed(:,1);
save ambL2.dat amb

Using the previous the file ambL2.dat and "DD_PLAN_GARR_13_ALL.fixL1",


generate the a file with the following content:
----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

Note: This file is identical to file "DD_PLAN_GARR_13_ALL.fixL1", but with the


ambiguities added in the last field #19.

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 211
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

a) Generate a file with the satellite PRN number and the ambiguities:

grep -v \# ambL2.dat > na2


cat DD_PLAN_GARR_13_ALL.dat|gawk '{print $4}'|sort -nu|gawk '{print $1,NR}’ >sat.lst
paste sat.lst na2 > sat.ambL2

b) Generate the "DD_PLAN_GARR_13_ALL.fixL1L2" file:

cat DD_PLAN_GARR_13_ALL.fixL1|
gawk 'BEGIN{for (i=1;i<1000;i++) {getline <"sat.ambL2";A[$1]=$3}}
{printf "%s %02i %02i %s %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f
%14.4f %14.4f %14.4f %14.4f %14.4f %14.4f %14.4f \n",
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,A[$4]}' >
DD_PLAN_GARR_13_ALL.fixL1L2

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 212
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

c) Make and discuss the following plots


graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 -x6 -y'($10-$19-$11)'
-so --yn -0.6 --yx 0.6 -l "(DDL2-lambda2*DDN2)-DDRho" --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 -x6 -y'($10-$19-$11-$12)'


-so --yn -0.6 --yx 0.6 -l "(DDL2-lambda2*DDN2)-DDRho-DDTrp" --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 -x6 -y'($10-$19-$12)'


-so --yn -0.06 --yx 0.16 -l "(DDL2-lambda2*DDN2)-DDTrp" --xl "time (s)" --yl "m"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 -x6 -y'($10-$19)'


-so --yn -15000 --yx 15000 -l "(DDL2-lambda2*DDN2)" --xl "time (s)" --yl "m"

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 213
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2
-x6 -y'($10-$19-$11)'
-so --yn -0.6 --yx 0.6
-l "(DDL2-O DDN2)-DDRho"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 214
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2
-x6 -y'($10-$19-$11-$12)'
-so --yn -0.6 --yx 0.6
-l "(DDL2-O DDN2)-DDRho-DDTrp"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 215
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2
-x6 -y'($10-$19-$11-$12)'
-so --yn -0.06 --yx 0.16
-l "(DDL2-O DDN2)-DDRho-DDTrp"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 216
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L1 carrier
(using the computed differential corrections including troposphere)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2
-x6 -y'($10-$19)'
-so --yn -15000 --yx 15000
-l "(DDL2-O DDN2)"
--xl "time (s)" --yl "m"

Questions:
Explain what is the meaning of
this plot.

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 217
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

4. Computing the FIXED solution (after FIXING ambiguities).


The following procedure can be applied
a) Build the equations system

[DDL2-DDRho-DDTrp-lambda2*DDN2]=[Los_k - Los_06]*[dr]

cat DD_PLAN_GARR_13_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;
printf "%14.4f %8.4f %8.4f %8.4f \n",
$10-$11-$12-$19, -cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1), -sin(e2)+sin(e1)}' > M.dat

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 218
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

Solve the equations system using octave (or MATLAB) and


assess the estimation error:
octave Absolute coordinates of GARR.

load M.dat Taking into account that the ”a priori” coordinates


of IND2 are:
y=M(:,1); GARR=[4796983.5170 160309.1774 4187340.3887]
G=M(:,2:4);
Therefore the estimated absolute coordinates
x=inv(G'*G)*G'*y of GARR are:
x GARR+ x(1:3)'
0.00312473328403573 ans= 4796983.5201 160309.1942 4187340.4517
0.01680339170230549
0.06303852755939099 Question:
Is the accuracy similar to that in the previous
case, when estimating the baseline vector?

gAGE/UPC D.4.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 219
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

D.4.2. Using the DDL2 carrier with the ambiguities FIXED, compute the LS single
epoch solution for the whole interval 39000< t <41300 with the program LS.f

Note: The program LS.f computes the Least Square solution for each
measurement epoch of the input file (see the FORTRAN code "LS.f")

The following procedure can be applied


a) generate a file with the following content;

[Time], [DDL2-DDRho-Trp-lambda2*DDN2], [Los_k - Los_13]

where:
Time= seconds of day
DDL2 – DDRho –DDTrp – lambda2*DDN2= Prefit residulas (i.e., "y" values in program LS.f)
Los_k – Los_13 = The three components of the geometry matrix (i.e., matrix "a" in program
LS.f)

gAGE/UPC D.4.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 220
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

[Time], [DDL2-DDRho-DDTrp-lambda2*DDN2], [Los_k - Los_06]

The following sentence can be used

cat DD_PLAN_GARR_13_ALL.fixL1 | gawk 'BEGIN{g2r=atan2(1,1)/45}


{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;;printf "%s %14.4f
%8.4f %8.4f %8.4f \n",$6,$10-$11-$12-$18,-cos(e2)*sin(a2)+cos(e1)*sin(a1),
-cos(e2)*cos(a2)+cos(e1)*cos(a1),-sin(e2)+sin(e1)}' > L2model.dat

b) Compute the Least Squares solution

cat L2model.dat |LS > L2fix.pos

gAGE/UPC D.4.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 221
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL4 (using tropospheric corrections)

D.4. PLAN-GARR differential positioning with L2 carrier


(using the computed differential corrections including troposphere)

Plot the baseline estimation error

graph.py -f L2fix.pos -x1 –y2 -s.- -l "North error"


-f L2fix.pos -x1 –y3 -s.- -l "East error"
-f L2fix.pos -x1 –y4 -s.- -l "UP error"
--yn -.05 --yx .15 --xl "time (s)" --yl "error (m)" -t "PLAN-GARR: 15.2
km: L2 ambiguities fixed: No wet tropo estim."

gAGE/UPC D.4.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 222
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)
D.4. PLAN-GARR differential positioning with L2 carrier
(using the computed differential corrections including troposphere)

Differential
Positioning error
after fixing
ambiguities

Question:
Discuss the possible
sources of the bias found
in the vertical component.

gAGE/UPC D.4.2. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 223
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL2 (using tropospheric corrections)

D.5.1 PLAN-GARR differential positioning with L1 carrier


(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

Plot the unambiguous DDSTEC as a function of time and elevation, using Klobuchar
model (it corresponds to the field #13 of file DD_PLAN_GARR_13_ALL.fixL1L2).
Execute:
graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 -x6 –y13
-so -l "DDIon (Klobuchar Iono Model)" --xl "time (s)"
--yl "(m L1 delay)" --yn -.1 --yx .1 -t "PLAN-GARR: 15.2 km: DDSTEC"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 –x16 –y13


-so -l "DDIon (Klobuchar Iono Model)" --xl "elevation (deg.)"
--yl "(m L1 delay)" --yn -.1 --yx .1 -t "PLAN-GARR: 15.2 km: DDSTEC"

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 224
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)
D.5.1 PLAN-GARR differential positioning with L1 carrier
(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

Modelled DDIono
(Klobuchar)
as a function of
time

Question:
Discuss this plot

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 225
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)

D.5.1 PLAN-GARR differential positioning with L1 carrier


(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

Modelled DDIono
(Klobuchar) as a
function of elevation
Question:
Why a larger
dispersion is found
at a low elevation?

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 226
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)
D.5.1 PLAN-GARR differential positioning with L1 carrier
(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)
----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

Plot the prefit-residuals:


Prefit= DDL1-DDRho-Lambda1*DDN1-DDTropo+DDIon:

1.- As a function of time

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2
-x6 -y'$8-$11-$18-$12+$13'
-so -l "Prefit DDL1" --xl "time (s)"
--yl "metres" --yn -.1 --yx .1
-t "PLAN-GARR: 15.2 km: DDL1-DDRho-DDTropo+DDIon-Lambda1*DDN1"

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 227
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)

D.5.1 PLAN-GARR differential positioning with L1 carrier


(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

DDL1 Pre-fit
residuals as a
function of time.

Question:
Discuss the noise seen
in the plot.

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 228
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)
D.5.1 PLAN-GARR differential positioning with L1 carrier
(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

D.5.1. Using the DDL1 carrier with the ambiguities FIXED, and correcting from
both troposphere and Klobuchar ionosphere (DDSTEC), compute the LS single
epoch solution for the whole interval 39000< t <41300 with the program LS.f.

Note: this correction (DD) is given in file DD_PLAN_GARR_13_ALL.fixL1L2 on the


field “DDIon” (i.e. #13) in meters of L1 delay.
The following procedure can be applied
a) generate a file with the following content;

[Time], [DDL1-DDRho-DDTrp+DDIon-lambda1*DDN1], [Los_k-Los_13]


where:
Time= seconds of day
DDL1 – DDRho –DDTrp + DDIon– lambda1*DDN1= Prefit residulas
(i.e., "y" values in program LS.f)
Los_k – Los_13= The three components of the geometry matrix,i.e. matrix "a" in LS.f program.

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 229
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)

D.5.1 PLAN-GARR differential positioning with L1 carrier


(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

[Time], [DDL1-DDRho-DDTrp+DDIon-lambda1*DDN1], [Los_k - Los_13]

The following sentence can be used


cat DD_PLAN_GARR_13_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;STEC1=$13;printf "%s %14.4f %8.4f
%8.4f %8.4f \n",$6,$8-$11-$18-$12+STEC1,
-cos(e2)*sin(a2)+cos(e1)*sin(a1),-cos(e2)*cos(a2)+cos(e1)*cos(a1),
-sin(e2)+sin(e1)}' > L1model_Klob.dat

b) Compute the Least Squares solution

cat L1model_Klob.dat |LS > L1fixKlob.pos

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 230
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)
D.5.1 PLAN-GARR differential positioning with L1 carrier
(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

Plot the positioning error

graph.py -f L1fixKlob.pos -x1 –y2 -s.- -l "North error"


-f L1fixKlob.pos -x1 –y3 -s.- -l "East error"
-f L1fixKlob.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "PLAN-GARR: 15.2
km: L1 ambiguities fixed + Tropo + Klobuchar"

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 231
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)

D.5.1 PLAN-GARR differential positioning with L1 carrier


(with ambiguity fixed and correcting from tropo. and Klobuchar iono.)

Differential
Positioning error
with L1,
ambiguities fixed
and troposphere
with ionosphere
(from Klobuchar)
corrections
Question:
Discuss the results.

gAGE/UPC D.5.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 232
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & Iono Klobuchar)
D.6. Unambiguous DDSTEC determination

----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

Using DDL1, DDL2 and the fixed ambiguities DDN1 and DDN2
obtained before, compute and plot the unambiguous DDSTEC as a
function of time and elevation. Execute:
graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 -x6 -y'($8-$18-$10+$19)*1.546'
-so -l "DDL1-Amb1-(DDL2-Amb2)" --xl "time (s)"
--yl "(m L1 delay)" --yn -.1 --yx .1 -t "PLAN-GARR: 15.2 km: DDSTEC"

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 –x16 -y'($8-$18-$10+$19)*1.546'


-so -l "DDL1-Amb1-(DDL2-Amb2)" --xl "elevation (deg.)"
--yl "(m L1 delay)" --yn -.1 --yx .1 -t "PLAN-GARR: 15.2 km: DDSTEC"

gAGE/UPC D.6. Unambiguous DDSTEC determination @ J. Sanz & J.M. Juan 233
Research group of Astronomy & Geomatics
Technical University of Catalonia

D.6. Unambiguous DDSTEC determination

Unambiguous
DDSTEC
as a function of
time

Question:
Discuss the noise seen
in the plot.

gAGE/UPC D.6. Unambiguous DDSTEC determination @ J. Sanz & J.M. Juan 234
Research group of Astronomy & Geomatics
Technical University of Catalonia
D.6. Unambiguous DDSTEC determination

Unambiguous
DDSTEC
as a function
elevation

Question:
Why do we have an
elevation-dependent
pattern?

gAGE/UPC D.6. Unambiguous DDSTEC determination @ J. Sanz & J.M. Juan 235
Research group of Astronomy & Geomatics
Technical University of Catalonia

D.6. Unambiguous DDSTEC determination


----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

Plot the prefit-residuals:


Prefit= DDL1-DDRho-Lambda1*DDN1-DDTropo+alpha1*STEC:

1.- As a function of time D1


f 22 1
1.546
f  f 22
1
2
J 1
2
§ 77 ·
graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2 J ¨ ¸
© 60 ¹
-x6 -y'$8-$11-$18-$12+1.546*($8-$18-$10+$19)'
-so -l "Prefit DDL1" --xl "time (s)"
--yl “metres" --yn -.15 --yx .15
-t "PLAN-GARR: 15.2 km: DDL1-DDRho-Lambda1*DDN1-DDTropo+alpha1*STEC"

gAGE/UPC D.6. Unambiguous DDSTEC determination @ J. Sanz & J.M. Juan 236
Research group of Astronomy & Geomatics
Technical University of Catalonia
D.6. Unambiguous DDSTEC determination

DDL1 Pre-fit
residuals as a
function of time.

Question:
Discuss the noise seen
in the plot.

gAGE/UPC D.6. Unambiguous DDSTEC determination @ J. Sanz & J.M. Juan 237
Research group of Astronomy & Geomatics
Technical University of Catalonia

D.6. Unambiguous DDSTEC determination


----------------------------- DD_PLAN_GARR_13_ALL.fixL1L2 -----------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
PLAN GARR 13 PRN DoY sec DDP1 DDL1 DDP2 DDL2 DDRho DDTrop DDIon El1 Az1 El2 Az2 O DDN1 O DDN2
<---- GARR ---->
----------------------------------------------------------------------------------------------

Plot the prefit-residuals:


Prefit= DDL1-DDRho-Lambda1*DDN1-DDTropo+alpha1*STEC:

2.- As a function of elevation

graph.py -f DD_PLAN_GARR_13_ALL.fixL1L2
-x16 -y'$8-$11-$18-$12+1.546*($8-$18-$10+$19)'
-so -l "Prefit DDL1" --xl "elevation (deg.)"
--yl “metres" --yn -.15 --yx .15
-t "PLAN-GARR: 15.2 km: DL1-DDRho-Lambda1*DDN1-DDTropo+alpha1*STEC"

gAGE/UPC D.6. Unambiguous DDSTEC determination @ J. Sanz & J.M. Juan 238
Research group of Astronomy & Geomatics
Technical University of Catalonia
D.6. Unambiguous DDSTEC determination

DDL1 Pre-fit
residuals as a
function of
elevation.

Question:
Why do we have an
elevation-dependent
pattern?

gAGE/UPC D.6. Unambiguous DDSTEC determination @ J. Sanz & J.M. Juan 239
Research group of Astronomy & Geomatics
Technical University of Catalonia

D.6.1 PLAN-GARR differential positioning with L1 carrier


(with ambiguity fixed and correcting from tropo. and actual Iono.)

D.6.1. Using the DDL1 carrier with the ambiguities FIXED, and correcting from
both troposphere and ionosphere (DDSTEC), compute the LS single epoch
solution for the whole interval 39000< t <41300 with the program LS.f

The following procedure can be applied


a) generate a file with the following content;

[Time], [DDL1-DDRho-DDTrp+D1*DDSTEC-lambda1*DDN1], [Los_k - Los_13]

where:
Time= seconds of day
DDL1 – DDRho –DDTrp + D1*DDSTEC– lambda1*DDN1= Prefit residulas
(i.e., "y" values in program LS.f)
Los_k – Los_13 = The three components of the geometry matrix (i.e., matrix "a" in program
LS.f)

gAGE/UPC D.6.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 240
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & actual Iono.)
D.6. PLAN-GARR differential positioning with L1 carrier
(with ambiguity fixed and correcting from tropo. and DDSTEC)

D1*DDSTEC-lambda1*DDN1], [Los_k - Los_13]


[Time], [DDL1-DDRho-DDTrp+D

The following sentence can be used:


cat DD_PLAN_GARR_13_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;STEC1=1.546*($8-$18-$10+$19);printf
"%s %14.4f %8.4f %8.4f %8.4f \n",$6,$8-$11-$18-$12+STEC1,
-cos(e2)*sin(a2)+cos(e1)*sin(a1),-cos(e2)*cos(a2)+cos(e1)*cos(a1),
-sin(e2)+sin(e1)}' > L1model_stec.dat

b) Compute the Least Squares solution

cat L1model_stec.dat |LS > L1fixStec.pos

gAGE/UPC D.6.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 241
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & DDSTEC corrections)

D.6. PLAN-GARR differential positioning with L1 carrier


(with ambiguity fixed and correcting from tropo. and DDSTEC)

Plot the positioning error

graph.py -f L1fixStec.pos -x1 –y2 -s.- -l "North error"


-f L1fixStec.pos -x1 –y3 -s.- -l "East error"
-f L1fixStec.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "PLAN-GARR: 15.2
km: L1 ambiguities fixed + Tropo + DDSTEC"

gAGE/UPC D.6.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 242
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & DDSTEC corrections)
D.6. PLAN-GARR differential positioning with L1 carrier
(with ambiguity fixed and correcting from tropo. and DDSTEC)

Differential
Positioning error
with L1,
ambiguities fixed
with Tropo and
DDSTEC removed.
Question:
Is any bias expected due to
the L1-LC APCs, when
removing the ionosphere
using the unambiguous
DDSTEC?

gAGE/UPC D.6.1. Estimate GARR coordinates with @ J. Sanz & J.M. Juan 243
Research group of Astronomy & Geomatics
Technical University of Catalonia
DDL1 (using tropo & DDSTEC corrections)

D.7. PLAN-GARR differential positioning with LC carrier


(with ambiguities fixed and correcting troposphere)

Repeat the previous exercise, but using the ionosphere free combination of
carriers DDLC, with the ambiguities fixed.

The following procedure can be applied


a) generate a file with the following content;

[Time], [DD(LC-Amb)-DDRho-DDTrp], [Los_k - Los_13]

where:
Time= seconds of day
DD(LC-Amb) – DDRho –DDTrp = Prefit residulas
(i.e., "y" values in program LS.f)
Los_k – Los_13 = The three components of the geometry matrix (i.e., matrix "a" in program
LS.f)

gAGE/UPC D.7. Estimate GARR coordinates @ J. Sanz & J.M. Juan 244
Research group of Astronomy & Geomatics
Technical University of Catalonia
with DDLC FIXED (using tropo)
D.7. PLAN-GARR differential positioning with LC carrier
(with ambiguities fixed and correcting troposphere)

[Time], [DD(LC-Amb)-DDRho-DDTrp], [Los_k - Los_13]


cat DD_PLAN_GARR_13_ALL.fixL1L2 | gawk 'BEGIN{g2r=atan2(1,1)/45}
The following sentence can be used:
{e1=$14*g2r;a1=$15*g2r;e2=$16*g2r;a2=$17*g2r;g=(77/60)**2;
L1=$8-$18;L2=$10-$19;LC=(g*L1-L2)/(g-1);
printf "%s %14.4f %8.4f %8.4f %8.4f \n", $6,LC-$11-$12,
-cos(e2)*sin(a2)+cos(e1)*sin(a1),-cos(e2)*cos(a2)+cos(e1)*cos(a1),
-sin(e2)+sin(e1)}' > LCmodel.dat

b) Compute the Least Squares solution

cat LCmodel.dat |LS > LCfix.pos

gAGE/UPC D.7. Estimate GARR coordinates @ J. Sanz & J.M. Juan 245
Research group of Astronomy & Geomatics
Technical University of Catalonia
with DDLC FIXED (using tropo)

D.7. PLAN-GARR differential positioning with LC carrier


(with ambiguities fixed and correcting troposphere)

Plot the positioning error

graph.py -f L1fixStec.pos -x1 –y2 -s.- -l "North error"


-f L1fixStec.pos -x1 –y3 -s.- -l "East error"
-f L1fixStec.pos -x1 –y4 -s.- -l "UP error"
--yn -.1 --yx .1 --xl "time (s)" --yl "error (m)" -t "PLAN-GARR: 15.2
km: LC ambiguities FIXED + Tropo"

gAGE/UPC D.7. Estimate GARR coordinates @ J. Sanz & J.M. Juan 246
Research group of Astronomy & Geomatics
Technical University of Catalonia
with DDLC FIXED (using tropo)
D.7. PLAN-GARR differential positioning with LC carrier
(with ambiguities fixed and correcting troposphere)

Differential
Positioning error
with DDLC,
ambiguities fixed.
Question:
Compare this iono-free
solution with that obtained
with DDL1, removing the
troposphere and ionosphere
using the unambiguous
DDSTEC.
Are the results the same?
Why?

gAGE/UPC D.7. Estimate GARR coordinates @ J. Sanz & J.M. Juan 247
Research group of Astronomy & Geomatics
Technical University of Catalonia
with DDLC FIXED (using tropo)

Thanks for your


attention

gAGE/UPC @ J. Sanz & J.M. Juan 248


Research group of Astronomy & Geomatics
Technical University of Catalonia
Acknowledgements

• To the University of Delft for the MATLAB files of LAMBDA method.


• To the INDRA company and Institut Cartogràfic de Catalunya for the
data files of receivers IND1,IND2, IND2 and PLAN, GARR, respectively.
• To Adrià Rovira-Garcia for his contribution to the editing of this material
and gLAB updating and integrating this learning material into the GLUE.

The ESA/UPC GNSS-Lab Tool suite (gLAB) has been developed under the
ESA Education Office contract N. P1081434.

gAGE/UPC @ J. Sanz & J.M. Juan


Research group of Astronomy & Geomatics
Technical University of Catalonia
List of Acronyms

List of Acronyms

AGW Atmospheric Gravity Waves

ANTEX ANTenna EXchange format

APC Antenna Phase Centre

ARP Antenna Reference Point

ASCII American Standard Code for Information Interchange

A/S Anti-Spoofing

C/A Coarse/Acquisition

CDDIS Crustal Dynamics Data Information System

CODE Centre for Orbit Determination in Europe

CRF Celestial Reference Frame

CRS Conventional Celestial Reference System

CS Cycle Slip

DAT Data Analysis Tool

DCB Differential Code Bias

DLL Dynamic Link Library

DLR Deutsches Zentrum für Luft- und Raumfahrt

DOP Dilution Of Precision

DoY Day of Year

DPC Data Processing Core

ECEF Earth-Centred, Earth-Fixed

ECI Earth-Centred Inertial

EMR Energy Mines and Resources

ENU East North Up

ESA European Space Agency

gAGE Research group of Astronomy and Geomatics

319
TM-23/2

GAL GALileo Satellite Identifier

GDOP Geometric Dilution Of Precision

GEO GEOstationary Satellite Identifier

GIPSY GPS Inferred Positioning SYstem

gLAB GNSS-LAB tool suite

GLO Glonass Satellite Identifier

Glonass GLObal NAvigation Satellite System

GNSS Global Navigation Satellite System

GNU GNU’s Not Unix

GPS Global Positioning System

GRACE Gravity Recovery and Climate Experiment

GRAPHIC Group and Phase Ionospheric Calibration

GFree Geometry Free

GUI Graphical User Interface

HDOP Horizontal Dilution Of Precision

HTML HyperText Markup Language

IAC Information Analytical Centre

ICD Interface Control Document

IFree Ionosphere Free

IGL IGS Glonass orbit products

IGRF International Geomagnetic Reference Field

IGS International GNSS Service

IGST IGS Time

IODE Issue Of Data Ephemerides

IODN Issue Of Data Navigation

IONEX IONosphere map EXchange format

IRI International Reference Ionosphere

ITRF International Terrestrial Reference Frame

JPL Jet Propulsion Laboratory

LEO Low Earth Orbit

LS Least Squares

320
List of Acronyms

LSTIDs Large-Scale TIDs

MC Satellite Mass Centre

MCC Mission Control Centre

MJD Modified Julian Day

MM Monument Marker

MSDOS Microsoft Disk Operating System

MSTID Medium-Scale Travelling Ionospheric Disturbance

MSTIDs Medium-Scale Travelling Ionospheric Disturbances

MW Melbourne–Wübbena

NANU Notice Advisory to NAVSTAR Users

NASA National Aeronautics and Space Administration

NEU North East Up

NGA National Geospatial-Intelligence Agency

NSE Navigation System Error

OS Operating System

PCO Phase Centre Offset

PCV Phase Centre Variation

PDOP Precision Dilution Of Precision

PNG Portable Network Graphics

PPP Precise Point Positioning

PRN Pseudo-Random Noise

PVT Position, Velocity, Time

PZ-90 Parametry Zemli 1990 (Parameters of Earth 1990)

RINEX Receiver INdependent EXchange format

RK4 Fourth-order Runge–Kutta

RMS Root Mean Square

RO Radio Occultation

S/A Selective Availability

SBAS Satellite-Based Augmentation System

SED Storm Enhancement Density

SINEX Solution (Software/technique) INdependent EXchange format

321
TM-23/2

SIS Signal In Space

SISRE Signal In Space Range Error

SOHO SOlar Helioscopic Observatory

SP3 Standard Product #3

SPP Standard Point Positioning

SPS Standard Positioning Service

SSI Signal Strength Indicator

STEC Slant Total Electron Content

STROP Slant TROPospheric delay

SU Soviet Union

SV Space Vehicle

SVN Space Vehicle Number

TDOP Time Dilution Of Precision

TEC Total Electron Content

TECU Total Electron Content Unit

TGD Total Group Delay

TID Travelling Ionospheric Disturbance

TRF Terrestrial Reference Frame

TRS Conventional Terrestrial Reference System

TUM Technische Universität München

UPC Technical University of Catalonia

USNO United States Naval Observatory

UTC Coordinated Universal Time

VDOP Vertical Dilution Of Precision

WGS-84 World Geodetic System 84

ZTD Zenith Tropospheric Delay

322

You might also like