You are on page 1of 120

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/237520116

goGPS free and constrained relative kinematic positioning with low cost
receivers

Article · April 2009

CITATIONS READS

24 3,563

1 author:

Eugenio Realini

109 PUBLICATIONS 1,290 CITATIONS

SEE PROFILE

All content following this page was uploaded by Eugenio Realini on 05 June 2014.

The user has requested enhancement of the downloaded file.


POLITECNICO DI MILANO

Doctoral Programs
in Geodesy and Geomatics

goGPS
free and constrained relative kinematic
positioning with low cost receivers

Ph.D. thesis by

Eugenio Realini

Tutor: Prof. Maria Antonia Brovelli

Co-tutor: Dr. Mirko Reguzzoni

Coordinator: Prof. Fernando Sansò

Como, February 2009


goGPS - free and constrained relative kinematic positioning
with low cost receivers

Eugenio Realini

Ph.D. Thesis
Geodesy and Geomatics, XXI cycle
Politecnico di Milano

Department of Environmental, Hydraulic, Infrastructures


and Surveying Engineering
Dipartimento di Ingegneria Idraulica, Ambientale,
Infrastrutture Viarie, Rilevamento

Geomatics Laboratory
Laboratorio di Geomatica

Politecnico di Milano – Polo Regionale di Como


via Valleggio, 11 – 22100 Como (CO) Italy
http://geomatica.como.polimi.it

February, 2009
Abstract
goGPS is a software package designed to enhance the accuracy of standalone GPS receivers by
exploiting networks of GNSS permanent stations to apply real-time relative positioning,
extended Kalman filtering techniques to better model the kinematics of a roving GPS receiver,
digital terrain model observations to mitigate the GPS weakness in the vertical direction and, if
it is known in advance that the receiver is moving along a predefined path (e.g. a railway),
linear paths to constrain the positioning. The principal innovation introduced by goGPS is the
possibility to apply kinematic relative positioning in an effective way on low cost single
frequency GPS receivers, enhancing their accuracy from the usual 2-4 m up to some
decimeters. Though this kind of receivers is the main target for goGPS, also double frequency
receivers are supported.

goGPS positioning capabilities have been assessed by testing it under different conditions of
sky visibility, signal degradation and dynamics of the roving receiver. Since goGPS needs GPS
raw observations (i.e. code pseudorange, phase measurement, signal-to-noise ratio, etc.) the
u-blox AEK-4T evaluation kit was chosen as a roving receiver, since it provides them. goGPS
performance using AEK-4T were compared both with other low cost instruments (eBonTek
eGPS 597, TomTom MKII) and with high level professional receivers (Leica GS20 and Leica GPS
System 1200). The results show that goGPS managed to get higher accuracy than low cost
receivers during all the tests, in some cases obtaining accuracy levels of the same order of
magnitude of those obtained by the single frequency professional receiver (Leica GS20).

goGPS is developed in a MATLAB environment and it can run either in real-time mode,
receiving the low cost receiver data stream on a USB port and the master station data stream
through the Internet, or in post-processing mode, reading master and rover RINEX files or
goGPS data saved during a real-time session.

i
Summary

Abstract .......................................................................................................................................... i
Acknowledgements ....................................................................................................................... iv
List of acronyms .............................................................................................................................v
Index of figures............................................................................................................................. vii
Index of tables ................................................................................................................................x
Introduction .................................................................................................................................. 1
Chapter 1. Basics of GPS positioning ...................................................................................... 3
1.1. Overview on GPS signals and receivers......................................................................... 5
1.2. Absolute positioning ..................................................................................................... 8
1.2.1. Code observation .................................................................................................. 8
1.2.2. Phase observation ............................................................................................... 10
1.2.3. Point positioning by code observations .............................................................. 11
1.2.4. Point positioning by phase observations ............................................................ 12
1.2.5. Ephemerides and reference frame of the positioning ........................................ 13
1.3. Relative positioning ..................................................................................................... 14
1.3.1. Single differences ................................................................................................ 15
1.3.2. Double differences .............................................................................................. 16
1.3.3. Networks of permanent GNSS stations .............................................................. 17
Chapter 2. Low cost GPS receivers........................................................................................ 18
2.1. Receiver architectures ................................................................................................ 18
2.1.1. Antenna ............................................................................................................... 19
2.1.2. RF front-end ........................................................................................................ 21
2.1.3. Acquisition/tracking module ............................................................................... 21
2.1.4. Embedded processor/memory ........................................................................... 22
2.1.5. GPS software ....................................................................................................... 23
Chapter 3. Kalman filtering in goGPS .................................................................................... 25
3.1. Generic KF design ........................................................................................................ 28
3.2. goGPS KF design .......................................................................................................... 31
3.2.1. The state variables .............................................................................................. 33
3.2.2. The dynamic model ............................................................................................. 34
3.2.3. goGPS observation modules ............................................................................... 36

ii
Summary

3.2.4. Initialization ......................................................................................................... 44


3.2.5. Satellite configuration changes ........................................................................... 45
3.2.6. Cycle slips ............................................................................................................ 49
3.3. Generic line-constrained KF design............................................................................. 50
3.4. goGPS line-constrained KF design ............................................................................... 52
3.4.1. Line-constrained initialization ............................................................................. 54
Chapter 4. goGPS test system design ................................................................................... 55
4.1. Rover segment ............................................................................................................ 56
4.2. Master segment .......................................................................................................... 57
4.3. Core segment .............................................................................................................. 59
4.4. Communication formats ............................................................................................. 63
4.4.1. UBX-RXM-RAW through USB COM port.............................................................. 63
4.4.2. RTCM 3.1 via NTRIP through TCP/IP port............................................................ 66
4.5. Stream synchronization .............................................................................................. 70
Chapter 5. Tests and results.................................................................................................. 72
5.1. Instrumentation .......................................................................................................... 72
5.1.1. Leica GPS System 1200........................................................................................ 72
5.1.2. Leica GS20 ........................................................................................................... 73
5.1.3. eBonTek eGPS 597 .............................................................................................. 73
5.1.4. TomTom MKII ...................................................................................................... 74
5.2. Short baseline test ...................................................................................................... 74
5.2.1. Double differenced AEK-4T code quality ............................................................ 77
5.2.2. Double differenced AEK-4T phase quality........................................................... 78
5.2.3. Elevation and C/N0 weight calibration ............................................................... 81
5.3. Basketball field tests ................................................................................................... 87
5.4. Road tests.................................................................................................................... 89
5.4.1. Test 1: good sky view, slow velocity, flat terrain ................................................ 93
5.4.2. Test 2: bad sky view, slow velocity, flat terrain .................................................. 96
5.4.3. Test 3: Normal driving test .................................................................................. 97
Conclusions ............................................................................................................................... 100
References................................................................................................................................. 102

iii
Acknowledgements
First of all, I would like to thank Mirko for all the efforts and time he has spent to make

everything function: his technical skills and his passion in programming have been both

encouraging and inspiring for me. goGPS would have never seen the light of day without him,

and I sincerely hope I will be able to continue working with him on goGPS even when GOCE will

finally blast off!

Then I want to thank Maria for having led me up to here during these three years of doctorate

studies, after having tutored me also for my master’s degree and bachelor’s degree theses. She

has been not only my tutor, but also a good friend for me.

A “thank you all” also to my friends of the Geomatics Laboratory in Como for having put up

with me for all these looong three years. I just wonder who will decide where to go to eat when

I will not be there with you anymore…

I think emi does not need to read this page to know that I’m grateful to her for every single day

we are spending together and for all the patience she has demonstrated during these months

of goGPS testing and thesis writing. Anyway, just in case: I really hope that goGPS will allow me

to take you to Japan for more than a short vacation!

Finally, I thank my family for having given me the opportunity to get to this point and for the

continuous support throughout the years.

iv
List of acronyms

A-GPS Assisted GPS


AGC Automatic Gain Control
C/N0 Carrier-to-Noise Ratio
CPU Central Processing Unit
DD Double Differences
DGPS Differential GPS
DLL Delay-Locked Loop
DOP Dilution Of Precision
DTM Digital Terrain Model
ECEF Earth-Centered Earth-Fixed
EGNOS European Geostationary Navigation Overlay Service
EKF Extended Kalman Filter
FLL Frequency-Locked Loop
FKP Flächenkorrekturparameter (area correction parameters)
FTP File Transfer Protocol
GLONASS GLObal’naya NAvigatsionnaya Sputnikovaya Sistema
(GLObal NAvigation Satellite System)
GNSS Global Navigation Satellite System
GPRS General Packet Radio Service
GPS Global Positioning System
GSM Global System for Mobile communications
HDOP Horizontal Dilution Of Precision
HSDPA High-Speed Downlink Packet Access
IC Integrated Circuits
IGS International GNSS Service
INS Inertial Navigation System
IREALP Istituto di Ricerca per l’Ecologia e l’Economia applicate alle Aree Alpine
(Research Institute for Ecology and Economy applied to Alpine Areas)
ITRF International Terrestrial Reference Frame
KF Kalman Filter
LBS Location Based Services
LiDAR Light Detection And Ranging
LNA Low Noise Amplifier
NGA National Geospatial-intelligence Agency
NIMA National Imagery and Mapping Agency
NMEA National Marine Electronics Association
NTRIP Networked Transport of RTCM via Internet Protocol

v
MATLAB MATrix LABoratory
PDA Personal Digital Assistant
PLL Phase-Locked Loop
PRN Pseudo Random Noise
RAM Random-Access Memory
RF Radio Frequency
RINEX Receiver INdependent EXchange format
RMSE Root Mean Square Error
RTCM Radio Technical Commission for Maritime services
RTK Real-Time Kinematic
SA Selective Availability
SAW Surface Acoustic Wave
SBAS Satellite Based Augmentation System
SNR Signal-to-Noise Ratio
SPI Serial Peripheral Interface
TCP/IP Transmission Control Protocol / Internet protocol
UART Universal Asynchronous Receiver/Transmitter
UKF Unscented Kalman Filter
UMPC Ultra-Mobile PC
UMTS Universal Mobile Telecommunications System
VRS Virtual Reference Station
WAAS Wide Area Augmentation System
WGS84 World Geodetic System 1984

vi
Index of figures
FIGURE 1.1 EXAMPLE OF HIGH COST GPS RECEIVERS ............................................................................... 4
FIGURE 1.2 EXAMPLE OF LOW COST GPS RECEIVERS................................................................................ 5
FIGURE 1.3 GPS MINIATURIZATION ...................................................................................................... 5
FIGURE 1.4 GPS-ENABLED CONSUMER DEVICES...................................................................................... 5
FIGURE 1.5 SCHEMATIC REPRESENTATION OF GPS SIGNALS ...................................................................... 6
FIGURE 2.1 SCHEMATIC DESIGN OF A STANDARD GPS RECEIVER .............................................................. 19
FIGURE 2.2 PATCH ANTENNA............................................................................................................. 20
FIGURE 2.3 HELIX ANTENNA .............................................................................................................. 20
FIGURE 2.4 TOMTOM HELIX ANTENNA ................................................................................................ 20
FIGURE 2.5 MINIATURIZED GPS MODULE WITH HELIX ANTENNA ............................................................. 20
FIGURE 2.6 SCHEMATIC DESIGN OF A STANDARD GPS RECEIVER INTERFACED WITH ITS HOST SYSTEM............. 23
FIGURE 2.7 SCHEMATIC DESIGN OF A PROCESSOR-LESS GPS RECEIVER INTERFACED WITH ITS HOST SYSTEM .... 24
FIGURE 3.1 TYPICAL KALMAN FILTERING CYCLE ..................................................................................... 26
FIGURE 3.2 KF EVOLUTION: INITIALIZATION – FIRST STEP – GENERIC ITERATION ......................................... 31
FIGURE 3.3 LINEAR CONSTRAINT MODELED AS A BROKEN LINE................................................................. 50
FIGURE 4.1 GOGPS TEST SYSTEM SCHEMA ........................................................................................... 55
FIGURE 4.2 GOGPS TEST SYSTEM ARCHITECTURE .................................................................................. 56
FIGURE 4.3 U-BLOX AEK-4T RECEIVER WITH ANN-MS ANTENNA ........................................................... 57
FIGURE 4.4 THE GNSS PERMANENT STATION IN COMO ......................................................................... 58
FIGURE 4.5 GPSLOMBARDIA NETWORK OF PERMANENT GNSS STATIONS................................................. 59
FIGURE 4.6 GOGPS FUNCTIONING FLOW CHART (REAL-TIME MODE) ........................................................ 60
FIGURE 4.7 GOGPS MAIN PANEL........................................................................................................ 62
FIGURE 4.8 GOGPS POSITIONING PLOTTED ON GOOGLE EARTH .............................................................. 63
FIGURE 4.9 UBX MESSAGE STRUCTURE ............................................................................................... 64
FIGURE 4.10 RTCM MESSAGE STRUCTURE .......................................................................................... 67
FIGURE 4.11 GOGPS STREAM INITIALIZATION ...................................................................................... 71
FIGURE 4.12 GOGPS STREAM DETAILS ................................................................................................ 71
FIGURE 5.1 LEICA GPS1200 (LEFT) AND LEICA GS20 (RIGHT) ................................................................ 73
FIGURE 5.2 EBONTEK EGPS597 (LEFT) AND TOMTOM MKII (RIGHT) ...................................................... 73

vii
FIGURE 5.3 AEK-4T ANTENNA POSITIONED FOR SHORT BASELINE TEST ..................................................... 74
FIGURE 5.4 EXAMPLE OF NOISE ANALYSIS ON DD CODE OBSERVATIONS .................................................... 75
FIGURE 5.5 OUTLIERS IN DD CODE ERRORS DUE TO VERY LOW C/N0 ....................................................... 76
FIGURE 5.6 DD CODE ERRORS AFTER OUTLIER REMOVAL ........................................................................ 77
FIGURE 5.7 DD CODE ERROR DISTRIBUTION ......................................................................................... 78
FIGURE 5.8 DISCONTINUITIES OF DD PHASE ERRORS ............................................................................. 79
FIGURE 5.9 EXAMPLE OF DECREASING TREND AFTER DD PHASE ERROR DISCONTINUITY REMOVAL ................. 79
FIGURE 5.10 EXAMPLE OF INCREASING TREND AFTER DD PHASE ERROR DISCONTINUITY REMOVAL ................ 80
FIGURE 5.11 DD PHASE ERROR TIME SERIES FOR SATELLITES 3,6 ............................................................. 80
FIGURE 5.12 DD PHASE ERROR COVARIANCE FUNCTION FOR SATELLITES 3,6 ............................................. 80
FIGURE 5.13 PLOT OF SHORT BASELINE RMSE VALUES COMPUTED BY C/N0 CLASSES ................................. 82
FIGURE 5.14 EXAMPLES OF C/N0 WEIGHTING FUNCTION ...................................................................... 83
FIGURE 5.15 WEIGHTING SURFACE FUNCTION AND RMSE VALUES (BLUE) ................................................ 84
FIGURE 5.16 PLOT OF SHORT BASELINE RMSE VALUES COMPUTED BY ELEVATION CLASSES .......................... 85
FIGURE 5.17 WEIGHTING FUNCTION BEHAVIOR FOR DIFFERENT ELEVATION ANGLES ................................... 86
FIGURE 5.18 WEIGHTING FUNCTION BEHAVIOR FOR DIFFERENT COMBINATIONS OF C/N0 AND ELEVATION ANGLE
............................................................................................................................................ 86
FIGURE 5.19 GOGPS 2D BASKETFIELD RESULTS (NO DTM) .................................................................... 88
FIGURE 5.20 GOGPS 2D BASKETFIELD RESULTS (WITH DTM) ................................................................. 88
FIGURE 5.21 EBONTEK 2D BASKETFIELD RESULTS ................................................................................. 88
FIGURE 5.22 GOGPS 3D BASKETFIELD RESULTS (NO DTM) .................................................................... 88
FIGURE 5.23 GOGPS 3D BASKETFIELD RESULTS (WITH DTM) ................................................................. 88
FIGURE 5.24 EBONTEK 3D BASKETFIELD RESULTS ................................................................................. 89
FIGURE 5.25 GOGPS 2D BASKETFIELD RESULTS (CONSTRAINED) ............................................................. 89
FIGURE 5.26 GOGPS 3D BASKETFIELD RESULTS (CONSTRAINED) ............................................................. 89
FIGURE 5.27 THE INSTRUMENTATION MOUNTED ON THE CAR ROOF......................................................... 90
FIGURE 5.28 ROAD TEST: DEVICE DISPOSITION ..................................................................................... 90
FIGURE 5.29 EXAMPLE OF CAR ATTITUDE AT EACH EPOCH...................................................................... 92
FIGURE 5.30 INSTRUMENTS PREDICTED POSITIONS ............................................................................... 92
FIGURE 5.31 GOGPS (BLACK), GS20 (RED) AND EBONTEK (BLUE) OBSERVED POSITIONS WITH RESPECT TO
PREDICTED POSITIONS (EMPTY SQUARES) .................................................................................... 92

FIGURE 5.32 THE ROUTE DRIVEN DURING TEST 1 (IMAGES TAKEN FROM GOOGLE EARTH) ........................... 94

viii
FIGURE 5.33 TEST 1 3DCQ HISTOGRAM ............................................................................................. 94
FIGURE 5.34 TEST 1 SKYPLOTS WITH DIFFERENT CUTOFF LEVELS .............................................................. 95
FIGURE 5.35 TEST 2 3DCQ HISTOGRAM ............................................................................................. 96
FIGURE 5.36 TEST 2 GOGPS OUTLIERS (BLACK) .................................................................................... 97
FIGURE 5.37 THE ROUTE DRIVEN DURING TEST 3 (IMAGES TAKEN FROM GOOGLE EARTH) ........................... 98
FIGURE 5.38 TERRAIN HEIGHT VARIATION DURING TEST 3 ...................................................................... 98
FIGURE 5.39 TEST 3 3DCQ HISTOGRAM ............................................................................................. 99

ix
Index of tables
TABLE 1.1 IGS PRECISE EPHEMERIDES ................................................................................................. 14
TABLE 4.1 UBX DATA TYPES .............................................................................................................. 64
TABLE 4.2 DESCRIPTION OF THE UBX-RXM-RAW MESSAGE .................................................................. 65
TABLE 4.3 RTCM 3.1 MESSAGES (1001 – 1020) ................................................................................ 67
TABLE 4.4 RTCM 1002 MESSAGE STRUCTURE ..................................................................................... 68
TABLE 4.5 RTCM 1019 MESSAGE STRUCTURE ..................................................................................... 69
TABLE 5.1 OVERALL SHORT BASELINE DD AEK-4T CODE QUALITY ........................................................... 77
TABLE 5.2 SHORT BASELINE DD AEK-4T PHASE QUALITY (ROUGH ESTIMATION) ........................................ 81
TABLE 5.3 SHORT BASELINE RMSE VALUES COMPUTED BY C/N0 CLASSES [M] .......................................... 82
TABLE 5.4 SHORT BASELINE NUMBER OF SAMPLES BY C/N0 CLASSES [M].................................................. 82
TABLE 5.5 SHORT BASELINE RMSE VALUES COMPUTED BY ELEVATION (E) CLASSES ..................................... 84
TABLE 5.6 BASKETBALL FIELD RESULTS ................................................................................................ 87
TABLE 5.7 TEST CHARACTERISTICS AND USED INSTRUMENTATION ............................................................ 93
TABLE 5.8 TEST 1 RESULTS ................................................................................................................ 95
TABLE 5.9 TEST 1 RESULTS (WITH HIGHER CUTOFF) ............................................................................... 95
TABLE 5.10 TEST 2 RESULTS (A) ......................................................................................................... 96
TABLE 5.11 TEST 2 RESULTS (B) ......................................................................................................... 97
TABLE 5.12 TEST 3 RESULTS .............................................................................................................. 99
TABLE 5.13 TEST 3 RESULTS (WITH HIGHER CUTOFF) ............................................................................. 99

x
Introduction

This thesis deals with accurate GPS navigation with low cost devices. Increasing the positioning
accuracy of this kind of devices requires taking some steps beyond geodesy, entering the
neighboring fields of telecommunications, informatics and geomatics. Modern navigation
techniques and tools in fact have to interact with wireless internet connections, web services,
road networks and various kinds of geographic data in order to exploit at best the available
information sources.

The latest efforts in technological advancement are gathering more and more computational
capabilities, wireless connection tools and storage capacity on small devices such as
smartphones, personal digital assistants (PDAs), netbooks and ultra-mobile personal
computers (UMPCs). Nowadays most of these devices incorporate also GPS chipsets, that
allow users to interact spatially with the Web 2.0 by geolocating features and events; this
merging between geographical and digital worlds is giving birth to what is commonly known as
the GeoWeb (Leclerc, 2001). One of the main reasons that drive hardware producing
companies to embed GPS chipsets on more and more mobile devices is to provide users with
Location Based Services (LBSs) where wireless connectivity is available. These embedded GPS
chipsets are usually defined “low cost” in the geodetic community because they are compared
to high level (and high cost) professional receivers, which generally provide accuracies ranging
from 1 m to some centimeters in real-time navigation, while low cost ones usually range from
10 m to 1 m. Anyway, apart from the cost issue, high level GPS receivers could not be
embedded in mobile devices due to physical limitations that usually require miniaturization,
while high precision antennas are often bigger of the mobile devices themselves. Therefore, in
order to increase the localization accuracy of mobile devices, low cost receivers have to be

1
Introduction

exploited at their maximum extent, also by supporting them with information coming from
external sources (Alanen et al., 2006).

Currently low cost GPS receivers are not taking full advantage of the growing wireless internet
access with all the implications and new possibilities that it entails. Especially low cost chipsets
embedded in modern 3G smartphones or PDAs can rely on (nearly) always available wireless
Internet connection that, nowadays, is often broadband too. At the moment the only benefit
that some GPS chipsets draw from the availability of Internet connections are A-GPS (Assisted
GPS) services. These services can aid the GPS positioning in the sense that they can make it
start up faster by providing broadcast ephemeris through the Internet when the receiver is
powered on, but this does not increase the GPS precision or accuracy at all.

One element that can help improving the accuracy of low cost receivers once they have an
Internet connection available are positioning services such as networks of permanent GNSS
stations. By receiving real-time data coming from one or more reference stations low cost
receivers can perform double difference relative positioning that can correct most of the bias
associated to the absolute positioning they usually perform. In order to apply double
differences, raw measurements (i.e. pseudorange and carrier phase) must be available for
both the receiver (rover) and the permanent station (master).

goGPS is a software package we are developing at the Geomatics Laboratory of Politecnico di


Milano, Campus Como, specifically designed to improve the positioning accuracy of low cost
devices in real-time GPS navigation. Currently developed in MATLAB, goGPS applies a Kalman
Filter (KF) on double difference observations, receiving data from a low cost receiver through a
COM port and from a master station, belonging or not to a network of permanent GNSS
stations, through the Internet via NTRIP protocol. goGPS can also exploit DTM data, if
available, in order to improve its accuracy on the vertical direction and it is also able to force
its estimated position on linear paths. At the moment goGPS is designed to obtain GPS raw
data from the low cost receiver u-blox AEK-4T by decoding its proprietary binary stream (UBX
format) and from the master GNSS permanent station in RTCM 3.1 format. goGPS can run in
real-time, synchronizing the rover and master data streams and managing temporary outages
or permanent data losses, applying a free or constrained KF to obtain positions epoch-by-
epoch and displaying data either on a MATLAB figure or on Google Earth.

2
Chapter 1.
Basics of GPS positioning

The Global Positioning System (GPS) was created in the 70s by the U.S. Department of Defense
(DOD). It is the only fully functional Global Navigation Satellite System (GNSS) among those
currently operational (the others are the Russian GLONASS and the Chinese regional
geostationary BEIDOU). Other GNSS are being developed by the European Union (GALILEO),
China (COMPASS or BEIDOU 2), India (IRNSS) and Japan (QZSS).

The GPS is composed by three parts: the space segment, the control segment and the user
segment. The space segment is currently formed by a constellation of 32 satellites, orbiting at
an altitude of approximately 20000 km on six orbital planes, approximately tilted of 55° with
respect to Earth’s equatorial plane. The system was designed to always guarantee the visibility
of at least 4 satellites from every point on the Earth surface with clear sky view. The control
segment includes a Master Control Station located near Colorado Springs and several
monitoring stations located around the world. The purpose of the control segment is to
monitor the satellite transmissions continuously, to predict the satellite ephemerides, to
calibrate the satellite clocks and to periodically update the navigation information that the
satellites carry onboard.

The user segment includes all the receivers used to acquire the satellite signals and compute
positions.

While initially GPS was used exclusively for military applications, during the 80s some of the
GPS signals were opened to civilian use, though the DOD maintained the possibility of

3
Chapter 1 Basics of GPS positioning

intentionally degrading the publicly available signals (i.e. Selective Availability - SA; for more
details see Rocken, 1991) for strategic needs, introducing errors of some tens of meters in the
positioning of civilian receivers. This situation induced civilian users, who started promptly to
use GPS for research and work purposes, to conceive new techniques to reduce the loss of
accuracy due to SA, which resulted in the first applications of Differential GPS (DGPS)
positioning (Brown, 1989). Throughout the 80s and the 90s the civilian use of GPS increased
greatly. Both the continuous refining of the theory of GPS positioning and the advances in
electronic components and computer technology allowed to build smaller and more capable
receivers, expanding the pool of users from highly trained experts to professionals from
various disciplines. Additionally, throughout the 90s the U.S. military was pressured to disable
SA permanently: this was done on May 1, 2000.

Since the late 90s and up to now the use of GPS among professionals has been growing also
thanks to the improvements made to professional receivers (Figure 1.1), which have been
made more and more usable. While still keeping a high cost (thousands of Euros), they achieve
centimeter-level accuracies (or better).

Figure 1.1 Example of high cost GPS receivers

In the last decade a true revolution in the diffusion of GPS devices happened as they were
getting smaller and cheaper (at the expense of accuracy, dropping to some meters). These
devices, that reached the consumer market, are either wired or wireless and are addressed as
low cost receivers since they usually cost less than 100 Euros (Figure 1.2).

4
Chapter 1 Basics of GPS positioning

Figure 1.2 Example of low cost GPS receivers

Nowadays miniaturized low cost GPS receivers (Figure 1.3) have reached the mass market
since they are embedded in car navigation equipment and various kinds of palmtop devices,
ranging from netbooks to smartphones (Figure 1.4).

Figure 1.3 GPS miniaturization Figure 1.4 GPS-enabled consumer devices

These solutions are obviously challenging for both signal acquisition capabilities and
performances of receivers, but they are experiencing so much success and diffusion (see online
references [2] and [3]; anyway a simple visit to any electronic store will confirm this statement)
that the efforts put in their development are huge.

1.1. Overview on GPS signals and receivers


GPS positioning is based on the measurement of the distance between the receiver and the
satellites, derived by the flight time of a signal, which in turn is obtained by correlating the
received signal and an internal replica generated by the receiver itself. Of course satellite
positions have to be known, and they are computed from the available ephemerides.

All GPS satellites transmit at frequencies derived from the fundamental frequency of 10.23
MHz, made available by onboard atomic clocks. There are two main signals broadcast by
satellites, the L1 carrier phase at 1575.42 MHz (154 x 10.23 MHz) and the L2 carrier phase at
1227.60 MHz (120 x 10.23 MHz). Signals coming from different satellites can be distinguished

5
Chapter 1 Basics of GPS positioning

because both carriers are modulated by pseudorandom noise (PRN) sequences, different for
each satellite. Two binary sequences are used: coarse/acquisition (C/A) code with a chipping
rate of 1.023 MHz and precision (P) code with a chipping rate of 10.23 MHz. The C/A codes
belong to the family of Gold codes, which characteristically have low cross-correlation
between all members of the family. This property make them particularly apt to distinguish the
signals received simultaneously from different satellites (Leick, 1995). In particular the L1
carrier is modulated by both codes, while the L2 carrier is modulated just by the P code. The P
code is often called P(Y) because it can be encrypted to Y code for U.S. military needs.

There is also a navigation message (D), modulated on both carriers at a chipping rate of 50 bps,
that contains information on the ephemerides of the satellites, GPS time, clock behavior and
system status messages. See Figure 1.5 for a schematic representation of the signals.

Figure 1.5 Schematic representation of GPS signals

Either codes or carrier phases can be used to measure the satellite-receiver distance (i.e.
pseudorange). Code measurements have a higher noise than phases, namely about 1 m for
C/A code and 0.3 m for P code while for phases it is some millimeters, but the corresponding
pseudorange is easily obtainable with one receiver acquiring the signal from one satellite over
a single epoch. Phase measurements require more complex solutions because of integer
ambiguities: what is measurable is the phase shift between the received signal and the replica

6
Chapter 1 Basics of GPS positioning

over the last cycle; the total number of integer cycles excluding the last one is unknown and it
must be estimated, either as a float or an integer value. Commonly float solutions are used
when it is not possible to obtain integer solutions. When integer solutions are obtained, they
are “fixed” so that ambiguities are known and the full potential of phase measurements can be
exploited. Temporary losses of signal between the receiver and a satellite cause the
corresponding number of integer cycles to be lost, requiring their new estimation: this event is
known as a “cycle slip”. Taking into account that each additional satellite requires its own
ambiguity to be solved, the resolution of ambiguities requires multiple observations over
multiple epochs (e.g. 2 epochs for 5 satellites without cycle slips).

Civilian receivers can be split into two main categories on the basis of which signals they are
able to receive. Those that can receive both the L1 and L2 phases (together with C/A and P
codes) are known as double frequency or geodetic receivers and, since their price is of the
order of some tens of thousands of Euros, they are used mainly by professionals or
universities. They have high quality electronic components, usually not forced into small size
designs, that allow the precise measurement of both codes and phases. This results in the
possibility of obtaining high accuracy positioning, of the order of some millimeters. Single
frequency receivers can acquire only the L1 phase (with C/A code) and their price spans from
some thousands of Euros down to some tens of Euros on the basis of the type and quality of
their electronic components. In particular, receivers with lower cost electronics are usually
affected by more phase measurement errors, because it is more difficult to measure and track
correctly phases than codes. This generally leads to a lower accuracy compared to geodetic
receivers, ranging from some centimeters to some meters.

The expression “low cost receiver” usually refers to a single frequency receiver that costs less
than 100 Euros on the consumer market. They are designed to be small enough to be easily
carried around during everyday use or even to be embedded into palmtop devices. Ever
growing miniaturization needs require GPS receivers designers to face more and more
challenges in order to maintain the signal measurements as accurate as possible.

7
Chapter 1 Basics of GPS positioning

1.2. Absolute positioning


GPS positioning is based on the hypothesis that the signal travel time from a satellite to the
receiver is known. This would imply that the signal transmission and reception epochs with
respect to a reference GPS time are known exactly. Nevertheless, since a perfect synchronism
between either satellite or receiver clocks and GPS time is impossible, the offset between each
clock and GPS time must be taken into account. For satellite and receiver clocks respectively
the offset is defined as

𝑑𝑑𝑡𝑡 𝑠𝑠 = 𝑡𝑡 𝑠𝑠 − 𝑡𝑡𝐺𝐺𝐺𝐺𝐺𝐺 (1.1)

𝑑𝑑𝑡𝑡𝑟𝑟 = 𝑡𝑡𝑟𝑟 − 𝑡𝑡𝐺𝐺𝐺𝐺𝐺𝐺 (1.2)

where 𝑡𝑡 𝑠𝑠 is the satellite clock, 𝑡𝑡𝑟𝑟 is the receiver clock and 𝑡𝑡𝐺𝐺𝐺𝐺𝐺𝐺 is the reference GPS time.

Once the flight time of the signal is known, positioning can be performed by using code or
phase observations. Observation equations slightly differ in the two cases, therefore they will
be presented separately in the next two sections.

1.2.1. Code observation

Each satellite broadcast a unique code PRN sequence that is used to identify the different
satellites. When a satellite signal is received, it is correlated with an internal replica of it
produced by the GPS receiver. In this way the receiver can identify the visible satellites and it
can measure the delay between the real signal and its replica. Let Δ𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) be the delay
observed at epoch 𝑡𝑡 between the signal coming from the satellite 𝑠𝑠 to the receiver 𝑟𝑟. Then the
observation equation is given by

Δ𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) = 𝑡𝑡𝑟𝑟(𝑟𝑟) − 𝑡𝑡 𝑠𝑠(𝑠𝑠) (1.3)

where 𝑡𝑡𝑟𝑟(𝑟𝑟) is the receiving epoch recorded by the receiver 𝑟𝑟 clock and 𝑡𝑡 𝑠𝑠(𝑠𝑠) is the starting
epoch recorded by the satellite 𝑠𝑠 clock. Since both 𝑡𝑡𝑟𝑟(𝑟𝑟) and 𝑡𝑡 𝑠𝑠(𝑠𝑠) are not exactly synchronized
with GPS time, they can be expressed explicitly with the respective offsets as follows

𝑡𝑡𝑟𝑟 (𝑟𝑟) = 𝑡𝑡𝑟𝑟 + 𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) (1.4)

8
Chapter 1 Basics of GPS positioning

𝑡𝑡 𝑠𝑠(𝑠𝑠) = 𝑡𝑡 𝑠𝑠 + 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡) (1.5)

where 𝑡𝑡𝑟𝑟 and 𝑡𝑡 𝑠𝑠 are respectively the starting and receiving epochs in GPS time, while 𝑑𝑑𝑡𝑡𝑟𝑟 and
𝑑𝑑𝑡𝑡 𝑠𝑠 are the receiver and satellite clock offsets - see equations (1.1) and (1.2).

Thus equation (1.3) becomes

Δ𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) = 𝑡𝑡𝑟𝑟 − 𝑡𝑡 𝑠𝑠 + 𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡) = 𝜏𝜏𝑟𝑟𝑠𝑠 + 𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡) (1.6)

where 𝜏𝜏𝑟𝑟𝑠𝑠 is the true signal traveling time from the satellite to the receiver.

By multiplying Δ𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) by the signal propagation velocity in vacuum 𝑐𝑐 the code observation
equation (i.e. pseudorange) is obtained as

𝑃𝑃𝑟𝑟𝑠𝑠 (𝑡𝑡) = 𝑐𝑐Δ𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) = 𝑐𝑐𝜏𝜏𝑟𝑟𝑠𝑠 + 𝑐𝑐�𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡)� (1.7)

Since the signal does not travel in vacuum but it passes through the atmosphere, also
tropospheric and ionospheric delays must be taken into account. Let 𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) be the tropospheric
delay and 𝐼𝐼𝑟𝑟𝑠𝑠 (𝑡𝑡) the ionospheric delay; the code observation equation, taking into account also
the measurement noise 𝜈𝜈𝑟𝑟𝑠𝑠 (𝑡𝑡), becomes

𝑃𝑃𝑟𝑟𝑠𝑠 (𝑡𝑡) = 𝜌𝜌𝑟𝑟𝑠𝑠 (𝑡𝑡) + 𝑐𝑐�𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡)� + 𝐼𝐼𝑟𝑟𝑠𝑠 (𝑡𝑡) + 𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) + 𝜈𝜈𝑟𝑟𝑠𝑠 (𝑡𝑡) (1.8)

where the geometric distance 𝜌𝜌𝑟𝑟𝑠𝑠 (𝑡𝑡) as a function of satellite and receiver positions in
Cartesian coordinates is defined as

𝜌𝜌𝑟𝑟𝑠𝑠 (𝑡𝑡) = �(𝑋𝑋𝑟𝑟 (𝑡𝑡) − 𝑋𝑋 𝑠𝑠 (𝑡𝑡))2 + (𝑌𝑌𝑟𝑟 (𝑡𝑡) − 𝑌𝑌 𝑠𝑠 (𝑡𝑡))2 + (𝑍𝑍𝑟𝑟 (𝑡𝑡) − 𝑍𝑍 𝑠𝑠 (𝑡𝑡))2 (1.9)

The atmospheric delays can be described by standard models, for example the Klobuchar
ionospheric model (Klobuchar, 1987) and the Saastamoinen tropospheric model
(Saastamoinen, 1972, 1973). Summaries can be found on Wellenhof et al. (1992) and Seeber
(1993).

Since the satellite position (𝑋𝑋 𝑠𝑠 , 𝑌𝑌 𝑠𝑠 , 𝑍𝑍 𝑠𝑠 ) is assumed to be known from the ephemerides, the
satellite clock offset (𝑑𝑑𝑡𝑡 𝑠𝑠 ) is modeled and sent in the navigation message (D) and the
atmospheric delays 𝐼𝐼𝑟𝑟𝑠𝑠 (𝑡𝑡) and 𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) are estimated from standard models, there are four
unknowns: the receiver position coordinates 𝑋𝑋𝑟𝑟 , 𝑌𝑌𝑟𝑟 , 𝑍𝑍𝑟𝑟 and the receiver clock offset 𝑑𝑑𝑡𝑡𝑟𝑟 .

9
Chapter 1 Basics of GPS positioning

1.2.2. Phase observation

The phase observation is obtained by measuring the offset between the received carrier phase
and a sinusoid with the same frequency internally generated by the receiver. The observation
equation is defined as follows

Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) = Φ𝑟𝑟 (𝑡𝑡) − Φ𝑟𝑟 ( 𝑟𝑟𝑠𝑠 )(𝑡𝑡) (1.10)

where Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) is the measured offset, Φ𝑟𝑟 (𝑡𝑡) is the internally generated replica and Φ𝑟𝑟 ( 𝑟𝑟𝑠𝑠 )(𝑡𝑡) is
the phase of the satellite 𝑠𝑠 signal received by the receiver 𝑟𝑟 at epoch 𝑡𝑡.

The satellite phase received by 𝑟𝑟 at the epoch 𝑡𝑡 is equal to the phase emitted by the satellite 𝑠𝑠
at the emission epoch, namely

Φ𝑟𝑟 ( 𝑟𝑟𝑠𝑠 )(𝑡𝑡) = Φ 𝑠𝑠 (𝑡𝑡 − 𝜏𝜏𝑟𝑟𝑠𝑠 ) (1.11)

𝑑𝑑Φ
where 𝜏𝜏𝑟𝑟𝑠𝑠 is the signal traveling time. For a stable oscillator with a frequency 𝑓𝑓 = , equation
𝑑𝑑𝑑𝑑

(1.11) can be expressed by a first-order Taylor expansion as follows

𝑑𝑑Φ 𝑠𝑠 𝑠𝑠
Φ 𝑠𝑠 (𝑡𝑡 − 𝜏𝜏𝑟𝑟𝑠𝑠 ) = Φ 𝑠𝑠 (𝑡𝑡) − 𝜏𝜏
𝑑𝑑𝑑𝑑 𝑟𝑟
= Φ 𝑠𝑠 (𝑡𝑡) − 𝑓𝑓𝜏𝜏𝑟𝑟𝑠𝑠 + 𝑁𝑁𝑟𝑟𝑠𝑠 (𝑡𝑡) (1.12)

where 𝑁𝑁𝑟𝑟𝑠𝑠 is the integer number of cycles between the emission epoch and the reception
epoch. 𝑁𝑁𝑟𝑟𝑠𝑠 cannot be observed.

Using equations (1.11) and (1.12), equation (1.10) becomes

Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) = Φ𝑟𝑟 (𝑡𝑡) − Φ 𝑠𝑠 (𝑡𝑡) + 𝑓𝑓𝜏𝜏𝑟𝑟𝑠𝑠 − 𝑁𝑁𝑟𝑟𝑠𝑠 (𝑡𝑡) (1.13)

Taking into account the offsets of receiver and satellite clocks, Φ𝑟𝑟 (𝑡𝑡) and Φ 𝑠𝑠 (𝑡𝑡) are expressed
as follows

Φ𝑟𝑟 (𝑡𝑡) = Φ(𝑡𝑡) + 𝑓𝑓𝑓𝑓𝑡𝑡𝑟𝑟 (𝑡𝑡) (1.14)

Φ 𝑠𝑠 (𝑡𝑡) = Φ(𝑡𝑡) + 𝑓𝑓𝑓𝑓𝑡𝑡 𝑠𝑠 (𝑡𝑡) (1.15)

where Φ(𝑡𝑡) is the phase of an ideal oscillator synchronized with the GPS time and 𝑑𝑑𝑡𝑡𝑟𝑟 , 𝑑𝑑𝑡𝑡 𝑠𝑠 the
clock offsets.

10
Chapter 1 Basics of GPS positioning

Using equations (1.14) and (1.15), equation (1.13) becomes

Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) = 𝑓𝑓𝜏𝜏𝑟𝑟𝑠𝑠 + 𝑓𝑓�𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡)� − 𝑁𝑁𝑟𝑟𝑠𝑠 (𝑡𝑡) (1.16)

By multiplying it by the signal wavelength, introducing the ionospheric and tropospheric delays
and taking into account the phase measurement noise 𝜂𝜂𝑟𝑟𝑠𝑠 (𝑡𝑡), the phase observation equation
is obtained, namely

𝜆𝜆Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) = 𝜌𝜌𝑟𝑟𝑠𝑠 (𝑡𝑡) + 𝑐𝑐�𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡)� − 𝐼𝐼𝑟𝑟𝑠𝑠 (𝑡𝑡) + 𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) − 𝜆𝜆𝜆𝜆𝑟𝑟𝑠𝑠 (𝑡𝑡) + 𝜂𝜂𝑟𝑟𝑠𝑠 (𝑡𝑡) (1.17)

𝑐𝑐
where 𝑓𝑓 = .
𝜆𝜆

The known and unknown terms in the phase observation equation recall those of the code
observation equation (see the final part of section 1.2.1), apart from the additional unknown
𝜆𝜆𝜆𝜆𝑟𝑟𝑠𝑠 , which is called integer ambiguity.

1.2.3. Point positioning by code observations

The estimation of the receiver position (i.e. its coordinates in an Earth-Centered Earth-Fixed
(ECEF) reference frame), just based on the signals received from the satellites, with no addition
of external information, is usually called point positioning.

As seen in section 1.2.1, the code observation equation retains four unknowns: the three
coordinates 𝑋𝑋𝑟𝑟 , 𝑌𝑌𝑟𝑟 , 𝑍𝑍𝑟𝑟 and the clock offset 𝑑𝑑𝑡𝑡𝑟𝑟 . At each epoch of measurement, point
positioning can thus be performed by having at least four observations, which means receiving
signal from at least four satellites. Since it is possible to estimate the receiver position by using
single epoch observation, point positioning by code observations can be effectively used in
kinematic positioning for navigation purposes.

The system of code observation equations is non linear, therefore it is required to linearize it
around an approximate value of the receiver coordinates in order to solve it. An approximation
of the receiver position can be computed by means of deterministic geometric approaches
such as the Bancroft algorithm (Bancroft, 1985).

11
Chapter 1 Basics of GPS positioning

The linearization of the code observation equation with respect to the receiver coordinates for
a single epoch yields

𝑋𝑋�𝑟𝑟 −𝑋𝑋� 𝑠𝑠 𝑌𝑌�𝑟𝑟 −𝑌𝑌 𝑠𝑠 𝑍𝑍�𝑟𝑟 −𝑍𝑍� 𝑠𝑠


𝑃𝑃𝑟𝑟𝑠𝑠 = �𝑟𝑟𝑠𝑠
𝜌𝜌
�𝑋𝑋𝑟𝑟 − 𝑋𝑋�𝑟𝑟 � + �𝑟𝑟𝑠𝑠
𝜌𝜌
�𝑌𝑌𝑟𝑟 − 𝑌𝑌�𝑟𝑟 � + �𝑟𝑟𝑠𝑠
𝜌𝜌
�𝑍𝑍𝑟𝑟 − 𝑍𝑍�𝑟𝑟 � + 𝑐𝑐𝑐𝑐𝑡𝑡𝑟𝑟 + �𝜌𝜌�𝑟𝑟𝑠𝑠 − 𝑐𝑐𝑐𝑐𝑡𝑡̃ 𝑠𝑠 + 𝐼𝐼̃𝑟𝑟𝑠𝑠 + 𝑇𝑇�𝑟𝑟𝑠𝑠 � +

𝜀𝜀(𝑋𝑋 𝑠𝑠 , 𝑌𝑌 𝑠𝑠 , 𝑍𝑍 𝑠𝑠 , 𝑑𝑑𝑡𝑡 𝑠𝑠 , 𝐼𝐼𝑟𝑟𝑠𝑠 , 𝑇𝑇𝑟𝑟𝑠𝑠 ) + 𝜈𝜈𝑟𝑟𝑠𝑠 (1.18)

where �𝑋𝑋�𝑟𝑟 , 𝑌𝑌�𝑟𝑟 , 𝑍𝑍�𝑟𝑟 � are the coordinates of the receiver approximate position, �𝐼𝐼̃𝑟𝑟𝑠𝑠 , 𝑇𝑇�𝑟𝑟𝑠𝑠 � are
computed from standard atmospheric models, �𝑋𝑋� 𝑠𝑠 , 𝑌𝑌� 𝑠𝑠 , 𝑍𝑍� 𝑠𝑠 , 𝑑𝑑𝑡𝑡̃ 𝑠𝑠 � are derived from the
navigational message and 𝜀𝜀(𝑋𝑋 𝑠𝑠 , 𝑌𝑌 𝑠𝑠 , 𝑍𝑍 𝑠𝑠 , 𝑑𝑑𝑡𝑡 𝑠𝑠 , 𝐼𝐼𝑟𝑟𝑠𝑠 , 𝑇𝑇𝑟𝑟𝑠𝑠 ) is a term containing the effects of the
various model approximations.

The system of linearized observation equations for 𝑚𝑚 satellites can be solved by least squares
adjustment for 𝑚𝑚 ≥ 4.

1.2.4. Point positioning by phase observations

Compared to the code observation equation, the phase observation equation (1.17) contains
one additional unknown, the initial phase ambiguity. This term must be estimated for each
satellite in view, therefore it is necessary to increase the number of observation epochs in
order to solve the system with respect to the receiver coordinates. For example, with five
satellites in view over two observation epochs there are ten unknown terms (three receiver
coordinates if the receiver is still, two receiver clock offsets and five initial phase ambiguities)
and ten observations, which makes the system solvable.

Phase observation noise is much lower than that of the code, thus it should provide higher
accuracy results. Anyway, in order to correctly observe phases, high quality receivers are
needed: usually this means high cost receivers provided with good antennas, high precision
oscillators and, in general, sophisticated electronic components. Moreover, point positioning
by phase observations is not feasible in single epoch solutions, unless a first estimation of the
phase ambiguities is performed (e.g. on-the-fly estimation, see Abidin, 1993). For these
reasons, real-time navigation with low cost receivers is generally based on code observations.

12
Chapter 1 Basics of GPS positioning

Nevertheless, low cost receivers are able to acquire the L1 phase, even if moderately
degraded; generally they exploit this information by applying the so-called “phase-smoothed
code” positioning. This technique (Westrop et al., 1989) is used to enhance code observations
by updating them using the variation of phase observations. In the single frequency case the
phase smoothing algorithm is expressed by the following equation (assuming that there are no
cycle slips)

𝑃𝑃𝑟𝑟𝑠𝑠 (𝑡𝑡)𝑠𝑠𝑠𝑠 = 𝑃𝑃𝑟𝑟𝑠𝑠 (0) + 𝜆𝜆[Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) − Φ𝑟𝑟𝑠𝑠 (0)] (1.19)

where 𝑃𝑃𝑟𝑟𝑠𝑠 (𝑡𝑡)𝑠𝑠𝑠𝑠 is the smoothed pseudorange at epoch 𝑡𝑡, 𝑃𝑃𝑟𝑟𝑠𝑠 (0) is the initial code pseudorange
and Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) is the phase measurement at epoch 𝑡𝑡.

1.2.5. Ephemerides and reference frame of the positioning

The reference frame of the receiver estimated coordinates strictly depends on the reference
frame of the satellite positions, thus on the used ephemerides. There are two kinds of
ephemerides: the broadcast and the precise ones. Broadcast ephemerides are predicted by
the NGA (National Geospatial-intelligence Agency, formerly NIMA - National Imagery and
Mapping Agency) and correspond to those transmitted by the satellites. They are available in
real-time and therefore they are used for real-time navigation. Their accuracy is about 2 m.
Precise ephemerides are computed a posteriori and provided via the Internet by various
groups. The precise ephemerides internationally used as a reference are those computed and
provided by the IGS (International GNSS Service). IGS provides three kinds of precise
ephemerides via the Internet: ultra-rapid, rapid and final ones (see Table 1.1 for more details;
source: [7]).

13
Chapter 1 Basics of GPS positioning

Table 1.1 IGS precise ephemerides

GPS Satellite Ephemerides /


Accuracy Latency Updates Sample Interval
satellite & station clocks
orbits ~160 cm
Broadcast real-time --- daily
sat. clocks ~7 ns

Ultra-rapid orbits ~10 cm four times


real-time 15 min.
(predicted half) sat. clocks ~5 ns daily

Ultra-rapid orbits <5 cm four times


3 hours 15 min.
(observed half) sat. clocks ~0.2 ns daily
orbits <5 cm 15 min.
Rapid 17 hours daily
sat./stn. clocks ~0.1 ns 5 min.
orbits <5 cm 15 min.
Final ~13 days weekly
sat./stn. clocks <0.1 ns 5 min.

When using broadcast ephemerides, the reference frame of the positioning is WGS84 (G1150).
When using precise ephemerides computed by IGS the reference frame is the current IGS
realization of the ITRF (International Terrestrial Reference Frame, [18]). The difference due to
the use of different reference frames is of the order of the centimeter.

1.3. Relative positioning


GPS observations are affected by various kinds of errors, such as clock errors on both receiver
and satellites, signal delays due to its transition through the atmosphere, signal reflections (i.e.
multipath), just to name a few. Some of them can be reduced or totally removed by applying a
relative positioning between two receivers. By differentiating the observations of two
receivers (coming from satellites they both can “see”) it is possible to remove satellite and
receiver clock errors and to reduce atmospheric errors (if the two receivers are close enough
to consider the atmospheric effect to be the same).

Relative positioning can be either static or kinematic. In both cases one of the two receivers is
stationing at a location of known coordinates (master station), while the other one is
respectively static or moving (rover). Often GNSS permanent stations (i.e. double frequency

14
Chapter 1 Basics of GPS positioning

receivers permanently positioned at the same location and continuously operating) are used
as master stations. Relative positioning can be applied either in post-processing or in real-time.
The former requires rover data to be collected on the field; master data are downloaded
afterwards and processed together with the rover ones. The latter requires master data to be
provided in real-time, usually through the Internet, so that the rover can acquire them and use
them during the survey. The master station can be either a single receiver or part of a network
of receivers (usually a network of permanent GNSS stations, see section 1.3.3); in the second
case it can be either a physical station (one of those belonging to the network, e.g. the nearest
one) or a virtual station (VRS – Virtual Reference Station), computed by the network control
center to be as near as possible to the rover. When working in real-time, as it is the case for
most navigation applications, the master station can send either its own raw observations or
differential corrections. The former kind of positioning requires the rover to differentiate its
own observations with respect to those of the master station and it is addressed as Real-Time
Kinematic (RTK); the latter requires the rover just to correct its own absolute positioning with
the corrections computed by the master station and it is commonly addressed as Differential
GPS (DGPS) (Brown, 1989).

1.3.1. Single differences

Single differences, which are the first step in the differentiation of GPS observations, involve
the use of two receivers simultaneously observing the same satellite. The differentiation can
be applied either to code or phase observations.

Let the two receivers be 𝑟𝑟 and 𝑚𝑚, both receiving signal from satellite 𝑠𝑠 during epoch 𝑡𝑡.

Code single differences


The differentiation of the two code observation equations yields

𝑠𝑠 (𝑡𝑡)
𝑃𝑃𝑟𝑟𝑟𝑟 = 𝑃𝑃𝑟𝑟𝑠𝑠 (𝑡𝑡) − 𝑃𝑃𝑚𝑚𝑠𝑠 (𝑡𝑡)
𝑠𝑠 (𝑡𝑡) 𝑠𝑠 (𝑡𝑡) 𝑠𝑠 (𝑡𝑡) 𝑠𝑠
= 𝜌𝜌𝑟𝑟𝑟𝑟 + 𝑐𝑐�𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡𝑚𝑚 (𝑡𝑡)� + 𝐼𝐼𝑟𝑟𝑟𝑟 + 𝑇𝑇𝑟𝑟𝑟𝑟 + 𝜈𝜈𝑟𝑟𝑟𝑟 (𝑡𝑡)
(1.20)

15
Chapter 1 Basics of GPS positioning

in which the satellite clock offset is no more present. The subscript 𝑟𝑟𝑟𝑟 indicates the difference
operation between the same terms in relation to the two receivers. The main advantage of
applying single differences is that most of the error related to the satellite cancels (e.g. the
satellite clock error). The single difference observation, though, remain sensitive to both
receiver clock errors 𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) and 𝑑𝑑𝑡𝑡𝑚𝑚 (𝑡𝑡).

Phase single differences


Applying single differences to phase observations yields

𝑠𝑠 (𝑡𝑡)
𝜆𝜆Φ𝑟𝑟𝑟𝑟 = 𝜆𝜆Φ𝑟𝑟𝑠𝑠 (𝑡𝑡) − 𝜆𝜆Φ𝑚𝑚
𝑠𝑠 (𝑡𝑡) 𝑠𝑠 (𝑡𝑡)
= 𝜌𝜌𝑟𝑟𝑟𝑟 + 𝑐𝑐�𝑑𝑑𝑡𝑡𝑟𝑟 (𝑡𝑡) − 𝑑𝑑𝑡𝑡 𝑠𝑠 (𝑡𝑡)� − 𝐼𝐼𝑟𝑟𝑟𝑟
𝑠𝑠 (𝑡𝑡) 𝑠𝑠 (𝑡𝑡)
+ 𝑇𝑇𝑟𝑟𝑟𝑟 +
𝑠𝑠 (𝑡𝑡) 𝑠𝑠
𝜆𝜆𝜆𝜆𝑟𝑟𝑟𝑟 + 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡) (1.21)

1.3.2. Double differences

When two receivers 𝑟𝑟 and 𝑚𝑚 observe two satellites 𝑝𝑝 and 𝑠𝑠 at the same epoch 𝑡𝑡, the following
double difference observation equations are obtained.

Code double differences


The differentiation of two single difference code observations yields

𝑝𝑝𝑝𝑝 𝑝𝑝 𝑠𝑠 (𝑡𝑡) 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) = 𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) − 𝑃𝑃𝑟𝑟𝑟𝑟 = 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝐼𝐼𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝑇𝑇𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜈𝜈𝑟𝑟𝑟𝑟 (𝑡𝑡) (1.22)

in which the receiver clock errors are eliminated, as long as observations to satellites 𝑝𝑝 and 𝑠𝑠
are taken at the same time and the receiver clock drifts between observation epochs are
𝑝𝑝𝑝𝑝
negligible. The term 𝜈𝜈𝑟𝑟𝑟𝑟 (𝑡𝑡) is the measurement noise of code double differences: it contains
the propagation on double differences of the measurement noise of the single observations.

Phase double differences


Double differences on phase observations are written as follows

𝑝𝑝𝑝𝑝 𝑝𝑝 𝑠𝑠 (𝑡𝑡)
𝜆𝜆Φ𝑟𝑟𝑟𝑟 (𝑡𝑡) = 𝜆𝜆Φ𝑟𝑟𝑟𝑟 (𝑡𝑡) − 𝜆𝜆Φ𝑟𝑟𝑟𝑟
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
= 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡) − 𝐼𝐼𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝑇𝑇𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜆𝜆𝜆𝜆𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡)
(1.23)

𝑝𝑝𝑝𝑝
where the term 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡) is the measurement noise of the phase double differences.

16
Chapter 1 Basics of GPS positioning

1.3.3. Networks of permanent GNSS stations

Networks of permanent GNSS stations are composed by multiple permanent GNSS receivers
distributed as uniformly as possible to cover a certain region, continuously operating and
updating their position. The permanent stations are connected to one or more control centers
that guarantee their maintenance, collect and process their data and provide positioning
services to users. The purposes for which these networks are created can be subdivided into
two main categories:

- to maintain a reference system; to provide data for geophysical, atmospheric and, in


general, physical studies, usually to scientific entities;
- to provide cartographic and navigational data and services in real-time, also to private
users.

As for the second category, which is directly related to the aims of this thesis, the real-time
services usually include RTK and DGPS services. RTK services can be based either on FKP
(Flächenkorrekturparameter – area correction parameters) or VRS products. The FKP approach
(Wübbena, 2001) consists in communicating to the rover the estimated parameters of the
function that describes the model errors (e.g. atmospheric effects) of the double differences;
in this way the rover can estimate its model errors and correct its observations. The VRS
approach (Landau, 2002) consists in simulating near the rover a reference station that
generates observations with the same errors of those of the rover receiver; in this way the
model errors are deleted when the double differences are applied.

The communication between the control center and the roving users is generally made
through the Internet. In this way it is possible to transfer information in both directions: for
example, users send to the control center their approximate position, usually in NMEA 0183
format (NMEA, 2002), so that the control center can select the nearest permanent station for
DGPS or compute a VRS in a proper position, and then send to the users differential
corrections or raw observations, typically in RTCM format (RTCM, 2001, 2004, 2006).

17
Chapter 2.
Low cost GPS receivers

2.1. Receiver architectures


It is important to describe at least the basics concepts of low cost GPS receiver architectures
because goGPS (see Chapter 3 for details) requires a non-standard hardware implementation
in order to access and process GPS raw data (standard implementations only output already
processed data, i.e. positions). Moreover, the evolution of host processors in modern palmtop
devices (which are the main target for goGPS) is starting to redefine standard hardware
designs in the sense of shifting as much as possible the computational burden from the
receiver to the host processor to lower even more the receiver costs.

Standard GPS receivers are generally composed by three main parts (Figure 2.1):

 an antenna
 a radio frequency (RF) front-end
 a baseband integrated circuit (IC), which usually includes
o an acquisition / tracking engine
o an embedded processor
o memory
o communication modules (UART, SPI)

18
Chapter 2 Low cost GPS receivers

Figure 2.1 Schematic design of a standard GPS receiver

The next paragraphs will give a quick overview on the most relevant components for this
thesis.

2.1.1. Antenna

The purpose of the antenna is to receive the incoming GPS signals in order to pass them to the
RF/IC section for the processing. GPS antennas come in various sizes and shapes on the basis
of the required functionalities, accuracies and available space. Patch and helix antennas are
the most common in low cost receiver designs. Patch antennas are flat, generally squared and
integrated with the GPS module (Figure 2.2). They are smaller than helix ones, thus they are
more easily integrated inside small devices. Nevertheless these antennas are less sensitive and
they have strong direction selectivity, which make them function better if kept horizontal. On
the contrary, helix antennas are cylindrical, bigger than patch ones and external (Figure 2.3).
They are more suitable for handheld devices, since they are not influenced by the orientation
of the GPS module, they offer a broader antenna angle and it is more difficult to obstruct their
reception.

19
Chapter 2 Low cost GPS receivers

Figure 2.2 Patch antenna Figure 2.3 Helix antenna

The tendency is to try to use helix antennas wherever it is possible, also in standalone
receivers (Figure 2.4), in order to guarantee the best reception in any circumstance. Moreover,
miniaturization is helping in the integration of helix antennas also where the available space is
restricted (the device in Figure 2.5 includes a helix antenna and a GPS module in about 4.8 cm
x 1.5 cm).

Figure 2.4 Tomtom helix antenna Figure 2.5 Miniaturized GPS module with helix antenna

20
Chapter 2 Low cost GPS receivers

2.1.2. RF front-end

The RF section is usually composed by a low-noise amplifier (LNA) to amplify the weak
incoming signal and some filters (often surface acoustic wave - SAW - filters are used) to reject
multipath and interfering signals. The incoming RF signal is then downconverted into an
intermediate frequency (IF) signal by mixing the RF signal with a local oscillator. The resulting
analog IF signal is converted to a digital IF signal by sampling it at discrete times, using
automatic gain control (AGC) to maintain the signal levels within an acceptable range and
quantizing the signal to take discrete values. The digital IF signal is then sent to the
acquisition/tracking module.

2.1.3. Acquisition/tracking module

The acquisition module receives the digitized IF signal and correlates it with a replica of the
C/A code of each satellite. The aim is to detect the visible satellites, the C/A code
measurement and the Doppler shift. Different correlation techniques have been developed
(see Ziedan, 2006 for more details): the conventional hardware acquisition approach searches
for a satellite sequentially at each possible code measurement and Doppler shift (Parkinson,
1996; Misra, 2001); the circular correlation computes the coherent integration for all the code
measurements, at each Doppler shift, in the same processing step by means of fast Fourier
transform (FFT) methods (Tsui, 2000; Van Nee, 1991); the delay-and-multiply approach
eliminates all the Doppler bins: in practice it generates a signal that is independent from the
Doppler shift by multiplying the complex received signal by the complex conjugate of a delayed
version of itself (Tsui, 2000; Lin, 1998).

Once the signal is acquired, approximate code measurement and Doppler shift are obtained
and the acquired signal and its parameters are passed to a tracking module. This module
performs code, phase and Doppler shift tracking to obtain an accurate estimation of the
parameters. The phase and Doppler shift estimates are then used to decode the navigation
message. There are three main types of tracking loops in GPS receivers (see Parkinson, 1996;
Misra, 2001; Kaplan, 1996 for more details about them): delay-locked loop (DLL), phase-locked
loop (PLL) and frequency-locked loop (FLL). GPS signal tracking can be performed either by

21
Chapter 2 Low cost GPS receivers

hardware or software. Hardware tracking uses conventional tracking loops, while software
tracking can be more flexible, using better tracking techniques to increase performances (e.g.
weak GPS signal tracking - Ziedan, 2006).

Correlation units in low cost receivers have a number of parallel channels that has increased
from the twelve of about ten years ago (e.g. [4]), a number related to the maximum number of
visible satellites in an hemisphere, up to the fifty/sixty channels of the latest devices (e.g. [5],
[6]), designed to make acquisition faster.

2.1.4. Embedded processor/memory

The role of the embedded processor is to analyze raw data in order to obtain the receiver
position. Currently low cost receivers feature proprietary black-box algorithms that output
directly the receiver position and few other data, usually in NMEA format, to the serial
interface and thus to the host system.

In order to be able of computing the receiver position, current time and satellite ephemerides
must be known. When a receiver is first powered on, it is forced to cycle through all of the
possible satellite codes until it receives a satellite signal with sufficient SNR to obtain satellite
almanac (i.e. parameters for all GPS satellites that can be used to calculate their approximate
position in orbit), ephemerides and current time (this event is usually addressed as “Cold start”
and it can take from 40 seconds to 1 minute). To limit the occurrence of this event, modern
low cost receivers store the needed data in battery-sustained memory, so that they can reuse
them if they have been switched off for a short period. In particular, if there is still a valid
almanac, the receiver can avoid cycling through all the satellites before obtaining time and
ephemerides (“Warm start” – around 30 seconds). If also time and ephemerides are still valid
(usually 4-6 hours after the last power off), the receiver can directly compute a position when
it is powered on (“Hot start” – around 1 second). In order to accelerate the acquisition of
almanac, ephemerides and time, modern receivers can benefit of Assisted GPS (A-GPS)
services, which provide these data either online (if the receiver has an Internet connection
available) or offline.

22
Chapter 2 Low cost GPS receivers

2.1.5. GPS software

The GPS receiver is then coupled with a host device that receives its output data for further
processing. For the sake of simplicity, let us describe the host system as composed of a
processor, some memory and GPS software. The receiver sends data to the host device
through a serial interface (be it UART, SPI or virtual serial ports for USB or Bluetooth
connections). Commonly processed data that include the receiver position are sent in NMEA
format (Figure 2.6).

The GPS software can be designed to perform different tasks on the basis of which kind of data
it receives as an input.

Figure 2.6 Schematic design of a standard GPS receiver interfaced with its host system

The GPS software portion can have different levels of complexity on the basis of whether or
not it replaces some hardware parts of the receiver and, if it does, down to what level it
replaces them. In order to replace one or more of the previously described hardware levels, it
must be taken into account that the processor of the host device will have a correspondingly
higher computational burden. Nevertheless, palmtop devices are incorporating increasingly
powerful processors, thus there is a tendency in reducing the hardware in favor of software, in
order to reduce the cost of receivers (Söderholm et al., 2008; CellGuide Ltd., 2007).

The most basic level of GPS software uses the information already processed by the receiver
embedded processor, that is, at each epoch, the computed position, the computed velocity,
the satellites used, the horizontal dilution of precision (HDOP) and few other ancillary data.
This information is usually provided in NMEA format or in proprietary binary format. At this

23
Chapter 2 Low cost GPS receivers

level, the operations that can be done are limited to displaying, filtering and analyzing the
computed positions.

By removing the embedded processor from the receiver unit (Figure 2.7), the host system
would receive as input the GPS raw data (pseudorange and phase measurements, Doppler
shift and C/N0). This approach allows both to reduce the hardware cost and to let the host
processor execute the positioning computations by means of proper GPS software. The use of
raw data in input introduces more flexibility on how to perform the positioning: for example,
GPS software developers can choose whether to perform absolute or relative positioning and
they gain more control over the positioning procedures. goGPS is designed to work with this
hardware configuration.

Figure 2.7 Schematic design of a processor-less GPS receiver interfaced with its host system

Also the acquisition/tracking module can be converted to software. In this case, the digital IF
signal would be fed directly to the host system, allowing for software correlation procedures.

24
Chapter 3.
Kalman filtering in goGPS

The Kalman filter (KF) is a recursive algorithm that provides an optimal parametric estimation
method for linear dynamic systems. It is widely used in real-time navigation data processing
because it does not base its estimations just on measurements, but it exploits also information
about how the system has evolved over time (i.e. past information contributes to the
estimation of unknown parameters at the current epoch). All the characteristics needed to
completely describe the system as a function of time are used as state variables. At each epoch
the KF updates the state estimation by combining new measurements with a predicted state
estimation projected from the previous epoch. At the first step the state variables must be
initialized using reasonable values with their associated error covariance matrix. The algorithm
then gets the measurements (observations), updates the predicted state estimations along
with their error covariance on the basis of observation equations, projects them to the next
measurement time and proceeds iteratively (Figure 3.1).

25
Chapter 3 Kalman filtering in goGPS

initialization
update updated state
(first epoch) estimate

approximate measurements state error


(predicted) (each epoch) covariance
state

prediction

Figure 3.1 Typical Kalman filtering cycle

The KF in its basic form is limited to a linear assumption. When nonlinearity is introduced,
associated with system dynamics and/or observations, Extended Kalman Filters (EKF) or
Unscented Kalman Filters (UKF) are used. The EKF gives an approximation of the optimal
estimation by linearizing the dynamic model equations around the state coming from the
previous epoch and/or by linearizing the observation equations around the state predicted by
the dynamic model (Sorenson, 1985). The UKF uses a deterministic sampling technique known
as the unscented transform (Julier and Uhlmann, 1997, 2004) to propagate mean and
covariance information through nonlinear transformations.

Since the KF is a multiple-input, multiple-output algorithm, it is often used to integrate


multiple features that describe or control different elements of a system (e.g. a GPS integrated
with accelerometers, gyroscopes, odometers). Applications of Kalman filtering in relation to
GPS positioning and navigation usually include signal tracking, multi-sensor fusion, ambiguity
resolution and trajectory smoothing.

The most common application of the KF in relation to GPS navigation nowadays consists in the
integration of a GPS receiver with an INS (Inertial Navigation System), in order to aid the GPS
positioning with trajectory information and minimize the effect of signal outages. In practice
the INS provides the predicted state estimations on the basis of the system dynamics to the KF
at each epoch. In this context the KF is usually applied according to loosely coupled or tightly
coupled architectures. If the receiver does not provide raw data but just positions, loosely

26
Chapter 3 Kalman filtering in goGPS

coupled architectures are used: the GPS chipset computes positions independently and the KF
will use GPS positions as inputs, keeping measurements errors in the position domain. On the
contrary, if the receiver provides raw data (i.e. pseudoranges and carrier phases), tightly
coupled architectures can be used in which the KF inputs are the raw data themselves and in
this case measurements errors stay in the range domain. Tightly coupled GPS/INS systems are
usually preferred because they are less sensitive to satellite signal losses and adequate KF
models are simpler and more accurate (Levy, 1997).

Since the purpose of this work is to obtain an accurate positioning with low cost devices, the
drawback with this kind of integrated configuration is that it is usually relatively expensive
even using low cost GPS chipsets, because of the INS. Also substituting the INS with low cost
gyroscopes and odometers would not be very useful in our case, because the highly spread low
cost GPS chipsets are usually embedded in palmtop devices, which do not have space to
embed also these instruments.

This problem can be solved by using a tightly coupled KF configuration where the INS is
substituted by a dynamic model. Since GPS raw data and wireless Internet connection are
available, the limited accuracy provided by low cost devices can be enhanced by including
double difference observations in the KF design. Additional accuracy can then be obtained by
introducing other information sources, on the basis of the navigation context (e.g. DTM height
for terrestrial navigation, linear constraints for receivers moving along predefined paths and so
on).

The main purpose of goGPS is to implement a KF that can take advantage of the availability of
raw GPS data coming from low cost chipsets and the wireless connectivity provided by modern
palmtop devices in order to apply real-time differential positioning with respect to a (network
of) permanent GPS station(s). Both code and phase (single or double frequency) can be used
and when the phase is available the filter continuously updates the ambiguity. The algorithm
can be easily expanded to include other optional observations. At the moment it can exploit
height data coming from a LiDAR (Light Detection And Ranging) DTM where it is available.

27
Chapter 3 Kalman filtering in goGPS

3.1. Generic KF design


A Kalman filter is composed by two main parts: a dynamic model and an observation model.
The former describes the behavior of the state vector from time t to time t+1, the latter
establishes a relationship between measurements and the state vector at each time t.

A generic dynamic model can be described by the following equations

𝑋𝑋𝑡𝑡+1 = 𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡 + 𝜀𝜀𝑡𝑡+1


� (3.1)
𝑋𝑋0 = 𝑋𝑋�0 + 𝜀𝜀0

where 𝑋𝑋𝑡𝑡 is the state of the system at time 𝑡𝑡 ( 𝑋𝑋�0 is the mean value of the initial state), 𝑇𝑇𝑡𝑡+1
is the transition matrix from time t to time t+1 and 𝜀𝜀𝑡𝑡+1 is the model error.

The model error can be described as a zero-mean stochastic process

𝐸𝐸�𝜀𝜀𝑡𝑡 � = 0 , 𝐸𝐸�𝜀𝜀𝑡𝑡 𝜀𝜀𝑡𝑡′+ � = 𝛿𝛿𝑡𝑡𝑡𝑡 ′ 𝐶𝐶𝑡𝑡𝜀𝜀 , 𝐸𝐸�𝜀𝜀0 𝜀𝜀0+ � = 𝐶𝐶0𝜀𝜀 (3.2)

where the Kronecker delta 𝛿𝛿𝑡𝑡𝑡𝑡 ′ equals to one only if 𝑡𝑡 = 𝑡𝑡′, otherwise it equals to zero. 𝐶𝐶𝑡𝑡𝜀𝜀 is
the error covariance matrix at time 𝑡𝑡.

The observation model can be defined as

𝑌𝑌𝑡𝑡 = 𝐻𝐻𝑡𝑡 𝑋𝑋 𝑡𝑡 + 𝜈𝜈 𝑡𝑡 (3.3)

where 𝑌𝑌𝑡𝑡 is the vector of measurements, 𝐻𝐻𝑡𝑡 is the transformation (or design) matrix from the
state variables to the measurements and 𝜈𝜈 𝑡𝑡 is the observation noise, that can be stochastically
described as

𝐸𝐸�𝜈𝜈𝑡𝑡 � = 0 , 𝐸𝐸�𝜈𝜈𝑡𝑡 𝜈𝜈𝑡𝑡′+� = 𝛿𝛿𝑡𝑡𝑡𝑡 ′ 𝐶𝐶𝑡𝑡𝜈𝜈 (3.4)

Since there is no relationship between the measurement process and the dynamic of the
system, the two error types can be considered independent, thus

𝐸𝐸�𝜀𝜀𝑡𝑡 𝜈𝜈𝑡𝑡′+� = 0 (3.5)

The estimate of the state of the system can be modeled as

𝑋𝑋𝑡𝑡|𝑡𝑡 = 𝑋𝑋𝑡𝑡 + 𝑒𝑒𝑡𝑡 (3.6)

28
Chapter 3 Kalman filtering in goGPS

where 𝑋𝑋𝑡𝑡|𝑡𝑡 represents the state estimate at time t using all the information available up to that
time, while 𝑒𝑒𝑡𝑡 is the estimation error, stochastically described as

𝐸𝐸�𝑒𝑒𝑡𝑡 � = 0 , 𝐸𝐸�𝑒𝑒𝑡𝑡 𝑒𝑒𝑡𝑡′+� = 𝐶𝐶𝑡𝑡𝑡𝑡𝑒𝑒 ′ (𝐶𝐶𝑡𝑡𝑡𝑡𝑒𝑒 = 𝐶𝐶𝑡𝑡𝑒𝑒 ) (3.7)

The estimation error 𝑒𝑒𝑡𝑡 depends on both the model error 𝜀𝜀𝑡𝑡 and the observation noise 𝜈𝜈𝑡𝑡 ,
which are in turn linearly independent from 𝜀𝜀𝑡𝑡+1 and 𝜈𝜈𝑡𝑡+1 , therefore

𝐸𝐸�𝑒𝑒𝑡𝑡 𝜀𝜀𝑡𝑡′+� = 0 , 𝐸𝐸�𝑒𝑒𝑡𝑡 𝜈𝜈𝑡𝑡′+� = 0 with 𝑡𝑡 ′ > 𝑡𝑡 (3.8)

In order to gather the above defined equations, a comprehensive analytic description of the KF
at time 𝑡𝑡 + 1 can be written as

𝑋𝑋𝑡𝑡|𝑡𝑡 = 𝑋𝑋𝑡𝑡 + 𝑒𝑒𝑡𝑡


�𝑋𝑋𝑡𝑡+1 = 𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡 + 𝜀𝜀𝑡𝑡+1 (3.9)
𝑌𝑌𝑡𝑡+1 = 𝐻𝐻𝑡𝑡+1 𝑋𝑋𝑡𝑡 + 𝜈𝜈𝑡𝑡+1

The first equation describes the past state of the system, the second equation describes the
evolution of the system from time 𝑡𝑡 to time 𝑡𝑡 + 1 and the third equation represents the
contribution of the observations.

The objective is to minimize the global error properly weighted according to the covariance
information, therefore the following target-function has to be minimized

+ (𝐶𝐶 𝜀𝜀 )−1
𝜙𝜙 = 𝑒𝑒𝑡𝑡+ (𝐶𝐶𝑡𝑡𝑒𝑒 )−1 𝑒𝑒𝑡𝑡 + 𝜀𝜀𝑡𝑡+1 𝑡𝑡+1
+ (𝐶𝐶 𝜈𝜈 )−1
𝜀𝜀𝑡𝑡+1 + 𝜈𝜈𝑡𝑡+1 𝑡𝑡+1 𝜈𝜈𝑡𝑡+1 (3.10)

𝜀𝜀
which becomes (using the simplified notation 𝐶𝐶𝑒𝑒 = 𝐶𝐶𝑡𝑡𝑒𝑒 , 𝐶𝐶𝜀𝜀 = 𝐶𝐶𝑡𝑡+1 𝜈𝜈
, 𝐶𝐶𝜈𝜈 = 𝐶𝐶𝑡𝑡+1 )

𝜙𝜙 = (𝑋𝑋𝑡𝑡|𝑡𝑡 − 𝑋𝑋𝑡𝑡 )+𝐶𝐶𝑒𝑒 −1 (𝑋𝑋𝑡𝑡|𝑡𝑡 − 𝑋𝑋𝑡𝑡 ) + (𝑋𝑋𝑡𝑡+1 − 𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡 )+ 𝐶𝐶𝜀𝜀 −1 (𝑋𝑋𝑡𝑡+1 − 𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡 ) + (𝑌𝑌𝑡𝑡+1 −
𝐻𝐻𝑡𝑡+1 𝑋𝑋𝑡𝑡+1 )+𝐶𝐶𝜈𝜈 −1 (𝑌𝑌𝑡𝑡+1 − 𝐻𝐻𝑡𝑡+1 𝑋𝑋𝑡𝑡+1 ) (3.11)

Minimizing this equation with respect to 𝑋𝑋𝑡𝑡 and 𝑋𝑋𝑡𝑡+1 , the solution 𝑋𝑋�𝑡𝑡+1 = 𝑋𝑋𝑡𝑡+1|𝑡𝑡+1 can be
seen as the updated version of 𝑋𝑋𝑡𝑡|𝑡𝑡 . Therefore, differentiating equation (3.11) with respect to
𝑋𝑋𝑡𝑡 and 𝑋𝑋𝑡𝑡+1 , the following system is obtained

+
[𝑇𝑇𝑡𝑡+1 𝐶𝐶𝜀𝜀 −1 𝑇𝑇𝑡𝑡+1 + 𝐶𝐶𝑒𝑒 −1 ] 𝑋𝑋𝑡𝑡 = 𝐶𝐶𝑒𝑒 −1 𝑋𝑋𝑡𝑡|𝑡𝑡 + 𝑇𝑇𝑡𝑡+1
+
𝐶𝐶𝜀𝜀 −1 𝑋𝑋𝑡𝑡+1
� (3.12)
+
�𝐻𝐻𝑡𝑡+1 𝐶𝐶𝜈𝜈 −1 𝐻𝐻𝑡𝑡+1 + 𝐶𝐶𝜀𝜀 −1 � 𝑋𝑋𝑡𝑡+1 = 𝐻𝐻𝑡𝑡+1
+
𝐶𝐶𝜈𝜈 −1 𝑌𝑌𝑡𝑡+1 + 𝐶𝐶𝜀𝜀 −1 𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡

29
Chapter 3 Kalman filtering in goGPS

from which the optimal estimation 𝑋𝑋�𝑡𝑡+1 is obtained as


−1
+
� 𝐻𝐻𝑡𝑡+1 𝐶𝐶𝜈𝜈 −1 𝐻𝐻𝑡𝑡+1 + 𝐶𝐶𝜀𝜀 −1 − 𝐶𝐶𝜀𝜀 −1 𝑇𝑇𝑡𝑡+1 �𝐶𝐶𝑒𝑒 −1 + 𝑇𝑇𝑡𝑡+1
+
𝐶𝐶𝜀𝜀 −1 𝑇𝑇𝑡𝑡+1 � +
𝑇𝑇𝑡𝑡+1 𝐶𝐶𝜀𝜀 −1 � 𝑋𝑋�𝑡𝑡+1 =
+
𝐻𝐻𝑡𝑡+1 𝐶𝐶𝜈𝜈 −1 𝑌𝑌𝑡𝑡+1 + 𝐶𝐶𝜀𝜀 𝑇𝑇𝑡𝑡+1 (𝐶𝐶𝑒𝑒 + 𝑇𝑇𝑡𝑡+1
+
𝐶𝐶𝜀𝜀 −1 𝑇𝑇𝑡𝑡+1 )−1 𝐶𝐶𝑒𝑒 −1 𝑋𝑋𝑡𝑡|𝑡𝑡 (3.13)

However, since the covariance matrix 𝐶𝐶𝜀𝜀 can be singular, some simplifications are needed.
Defining 𝐾𝐾𝑡𝑡+1 (i.e. the error covariance matrix of the state prediction based on the system
dynamics only, 𝑋𝑋𝑡𝑡+1|𝑡𝑡 = 𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡|𝑡𝑡 ) as

+
𝐾𝐾𝑡𝑡+1 = 𝐶𝐶𝜀𝜀 + 𝑇𝑇𝑡𝑡+1 𝐶𝐶𝑒𝑒 𝑇𝑇𝑡𝑡+1 (3.14)

the optimal estimation 𝑋𝑋�𝑡𝑡+1 = 𝑋𝑋𝑡𝑡+1|𝑡𝑡+1 is expressed as

𝑋𝑋𝑡𝑡+1|𝑡𝑡+1 =
+
[ 𝐻𝐻𝑡𝑡+1 𝐶𝐶𝜈𝜈 −1 𝐻𝐻𝑡𝑡+1 + 𝐾𝐾𝑡𝑡+1 ] 𝐻𝐻𝑡𝑡+1 𝐶𝐶𝜈𝜈 −1 𝑌𝑌𝑡𝑡+1 + [ 𝐻𝐻𝑡𝑡+1
−1 −1 + +
𝐶𝐶𝜈𝜈 −1 𝐻𝐻𝑡𝑡+1 + 𝐾𝐾𝑡𝑡+1
−1 −1 −1
] 𝐾𝐾𝑡𝑡+1 𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡|𝑡𝑡 (3.15)

Defining the matrix 𝐺𝐺𝑡𝑡+1 , known as Kalman gain matrix, as

+ + −1
𝐺𝐺𝑡𝑡+1 = 𝐾𝐾𝑡𝑡+1 𝐻𝐻𝑡𝑡+1 [𝐶𝐶𝜈𝜈 + 𝐻𝐻𝑡𝑡+1 𝐾𝐾𝑡𝑡+1 𝐻𝐻𝑡𝑡+1 ] (3.16)

the following equation is obtained

𝑋𝑋𝑡𝑡+1|𝑡𝑡+1 = 𝐺𝐺𝑡𝑡+1 𝑌𝑌𝑡𝑡+1 + (𝐼𝐼 − 𝐺𝐺𝑡𝑡+1 𝐻𝐻𝑡𝑡+1 )𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡|𝑡𝑡 (3.17)

This equation allows to update the state vector 𝑋𝑋𝑡𝑡|𝑡𝑡 to 𝑋𝑋𝑡𝑡+1|𝑡𝑡+1 exploiting the new
observations 𝑌𝑌𝑡𝑡+1 .

The following diagram (Figure 3.2) shows the evolution of the KF from the initial time 𝑡𝑡 = 0
(initialization) to the first step 𝑡𝑡 = 1 and then to the generic iteration 𝑡𝑡 + 1.

30
Chapter 3 Kalman filtering in goGPS

𝒕𝒕 = 𝟎𝟎

𝑋𝑋�0 = 𝑋𝑋0|0 , 𝐶𝐶0𝑒𝑒 = 𝐶𝐶0𝜀𝜀

𝐶𝐶0𝑒𝑒 = 𝐶𝐶0𝜀𝜀

𝒕𝒕 = 𝟏𝟏

𝐾𝐾1 = 𝑇𝑇1 𝐶𝐶0𝜀𝜀 𝑇𝑇1+ + 𝐶𝐶1𝜀𝜀

𝐺𝐺1 = 𝐾𝐾1 𝐻𝐻1+ [𝐶𝐶1𝜈𝜈 + 𝐻𝐻1 𝐾𝐾1 𝐻𝐻1+ ]−1

𝑋𝑋�1 = 𝑋𝑋1|1 = 𝐺𝐺1 𝑌𝑌1 + (𝐼𝐼 − 𝐺𝐺1 𝐻𝐻1 )𝑇𝑇1 𝑋𝑋0|0

𝐶𝐶1𝑒𝑒 = 𝐾𝐾1 − 𝐺𝐺1 𝐻𝐻1 𝐾𝐾1

𝒕𝒕 + 𝟏𝟏

𝜀𝜀 + 𝜀𝜀
𝐾𝐾𝑡𝑡+1 = 𝐶𝐶𝑡𝑡+1 + 𝑇𝑇𝑡𝑡+1 [𝐾𝐾𝑡𝑡 − 𝐺𝐺𝑡𝑡 𝐻𝐻𝑡𝑡 𝐾𝐾𝑡𝑡 ] 𝑇𝑇𝑡𝑡+1 = 𝐶𝐶𝑡𝑡+1 +
+ 𝑇𝑇𝑡𝑡+1 𝐶𝐶𝑡𝑡𝑒𝑒 𝑇𝑇𝑡𝑡+1

+ [𝐶𝐶 𝜈𝜈 + −1
𝐺𝐺𝑡𝑡+1 = 𝐾𝐾𝑡𝑡+1 𝐻𝐻𝑡𝑡+1 𝑡𝑡+1 + 𝐻𝐻𝑡𝑡+1 𝐾𝐾𝑡𝑡+1 𝐻𝐻𝑡𝑡+1 ]

𝑋𝑋�𝑡𝑡+1 = 𝑋𝑋𝑡𝑡+1|𝑡𝑡+1 = 𝐺𝐺𝑡𝑡+1 𝑌𝑌𝑡𝑡+1 + (𝐼𝐼 − 𝐺𝐺𝑡𝑡+1 𝐻𝐻𝑡𝑡+1 )𝑇𝑇𝑡𝑡+1 𝑋𝑋𝑡𝑡|𝑡𝑡

𝑒𝑒
𝐶𝐶𝑡𝑡+1 = 𝐾𝐾𝑡𝑡+1 − 𝐺𝐺𝑡𝑡+1 𝐻𝐻𝑡𝑡+1 𝐾𝐾𝑡𝑡+1

Figure 3.2 KF evolution: initialization – first step – generic iteration

3.2. goGPS KF design


The basic way of using a KF for GPS-only navigation is to apply it directly on the estimated
positions. The positioning is computed as usual from code and phase measurements and the
KF acts a posteriori with a smoothing effect on the estimated trajectory. This approach with
low cost devices results in a positioning as accurate as that provided by performing absolute
positioning using phase-smoothed code measurements (5 - 10 m of error). This means that
atmospheric delays and receiver clock errors cannot be efficiently corrected, because this kind
of receivers is usually not designed for relative positioning, and computed trajectories are
often affected by large biases.

31
Chapter 3 Kalman filtering in goGPS

The KF implemented in goGPS is not applied on estimated positions, but on double difference
observations with respect to a reference station (i.e. relative positioning). This allows us to
remove most of the bias associated to absolute positioning, obtaining accuracies of less than 1
m. Its use in real-time obviously requires a wireless connection to the Internet in order to
receive the master station observations and a GPS chipset that provides raw measurements as
output.

The goGPS KF is “modular”, in the sense that it is conceived in such a way that it can be easily
integrated with additional components. This means that new sources of measurements (i.e.
observations) can be added or disabled without major changes in the algorithm. In its current
state goGPS includes a first observation module applied to code double differences, a second
one applied to phase double differences and a third one that exploits the information coming
from a DTM.

goGPS main targets are single-frequency low cost devices, but its code and phase modules are
designed to work either in single-frequency or double-frequency mode. Therefore, it can be
used also with double-frequency receivers, if it is needed.

Finally, goGPS includes also an alternative version of its main KF algorithm, designed to obtain
line-constrained positioning (e.g. to navigate on a network of roads). In this case the DTM
information is not used anymore, because the constraint is already three-dimensional.

In this paragraph the goGPS KF is described by steps, introducing at first its general framework,
then a description of each observation module, followed by the management of special events
(satellite loss, cycle slips, etc.). The next two paragraphs describe respectively a generic line-
constrained KF and the one implemented in goGPS.

32
Chapter 3 Kalman filtering in goGPS

3.2.1. The state variables

In the goGPS KF the quantities used as state variables for double difference observations are
position, velocity and ambiguities, thus the state vector 𝑋𝑋𝑡𝑡 is expressed as

𝑋𝑋𝑟𝑟 (𝑡𝑡)
⎡ ⎤
⎢ 𝑋𝑋̇𝑟𝑟 (𝑡𝑡) ⎥
⎢ ⎥
𝑌𝑌 (𝑡𝑡)
⎢ 𝑟𝑟 ⎥
⎢ 𝑌𝑌𝑟𝑟̇ (𝑡𝑡) ⎥
⎢ ⎥
𝑋𝑋 𝑡𝑡 = ⎢ 𝑍𝑍𝑟𝑟 (𝑡𝑡) ⎥ (3.18)
⎢ 𝑍𝑍̇𝑟𝑟 (𝑡𝑡) ⎥
⎢ 𝑝𝑝1 ⎥
⎢𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)⎥
⎢ ⋮ ⎥
⎢ ⎥
𝑝𝑝𝑝𝑝
⎣𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)⎦

where

 r stands for “rover”


 m stands for “master”
 p stands for “pivot satellite” (i.e. the satellite with the maximum elevation)
 s ={1,2,…,32} represents the PRN (Pseudo Random Number) of the satellites
 𝑋𝑋𝑟𝑟 , 𝑌𝑌𝑟𝑟 , 𝑍𝑍𝑟𝑟 are the rover cartesian coordinates with respect to a global geocentric
reference frame
 𝑋𝑋̇𝑟𝑟 , 𝑌𝑌̇𝑟𝑟 , 𝑍𝑍̇𝑟𝑟 are the rover velocity components
𝑝𝑝𝑝𝑝 𝑝𝑝 𝑝𝑝
 𝑁𝑁𝑟𝑟𝑟𝑟 = �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � − (𝑁𝑁𝑟𝑟𝑠𝑠 − 𝑁𝑁𝑚𝑚𝑠𝑠 ) represents the number of cycles of the double
differenced ambiguities for each satellite 𝑠𝑠

Notice that ambiguities are treated as state variables, therefore they are never fixed, but their
estimation constantly evolve with the system (hopefully with a decreasing variability).

33
Chapter 3 Kalman filtering in goGPS

3.2.2. The dynamic model

The dynamic model under the hypotheses of constant velocity and 1 Hz update rate is

𝑋𝑋 (𝑡𝑡 + 1) = 𝑋𝑋𝑟𝑟 (𝑡𝑡) + 𝑋𝑋̇𝑟𝑟 (𝑡𝑡)


⎧ 𝑟𝑟
⎪𝑋𝑋̇𝑟𝑟 (𝑡𝑡 + 1) = 0 + 𝑋𝑋̇𝑟𝑟 (𝑡𝑡) + 𝜀𝜀𝑋𝑋𝑋𝑋̇ (𝑡𝑡 + 1)

⎪𝑌𝑌𝑟𝑟 (𝑡𝑡 + 1) = 𝑌𝑌𝑟𝑟 (𝑡𝑡) + 𝑌𝑌𝑟𝑟̇ (𝑡𝑡)

⎪𝑌𝑌𝑟𝑟̇ (𝑡𝑡 + 1) = 0 + 𝑌𝑌𝑟𝑟̇ (𝑡𝑡) + 𝜀𝜀𝑌𝑌𝑌𝑌̇ (𝑡𝑡 + 1)
⎪ ̇
⎪𝑍𝑍𝑟𝑟 (𝑡𝑡 + 1) = 𝑍𝑍𝑟𝑟 (𝑡𝑡) + 𝑍𝑍𝑟𝑟 (𝑡𝑡)
𝑍𝑍̇𝑟𝑟 (𝑡𝑡 + 1) = 0 + 𝑍𝑍̇𝑟𝑟 (𝑡𝑡) + 𝜀𝜀𝑍𝑍𝑍𝑍̇ (𝑡𝑡 + 1) (3.19)
⎨ 𝑝𝑝1 𝑝𝑝1
⎪𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 + 1) = 𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)

⎪⋮
⎪𝑁𝑁 𝑝𝑝𝑝𝑝 (𝑡𝑡 + 1) = 𝑁𝑁 𝑝𝑝𝑝𝑝 (𝑡𝑡)
⎪ 𝑟𝑟𝑟𝑟 𝑟𝑟𝑟𝑟
⎪⋮

𝑝𝑝32 𝑝𝑝32
⎩𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 + 1) = 𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)

where it is assumed that ambiguities stay constant over time (apart from the case of cycle-
slips, which will be discussed later on).

Therefore, the transition matrix 𝑇𝑇 is stationary (i.e. it does not change over time) and it is
defined as

1 1 0 0 0 0 0 ⋯ 0
⎡ ⎤
0 1 0 0 0 0 0 ⋯ 0
⎢ ⎥
⎢ ⎥
0 0 1 1 0 0 0 ⋯ 0
⎢ ⎥
⎢0 0 0 1 0 0 0 ⋯ 0⎥
⎢ ⎥
𝑇𝑇 = ⎢0 0 0 0 1 1 0 ⋯ 0⎥ = �𝑇𝑇 0� (3.20)
0 I
⎢0 0 0 0 0 1 0 ⋯ 0⎥
⎢ ⎥
⎢0 0 0 0 0 0 1 ⋯ 0⎥
⎢ ⎥
⎢⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ⋮⎥
⎣0 0 0 0 0 0 0 0 1⎦

and the associated covariance matrix 𝐶𝐶𝑡𝑡𝜀𝜀 , for 𝑡𝑡 > 0 without cycle-slips and satellite
configuration changes, can be expressed as

34
Chapter 3 Kalman filtering in goGPS

0 0 0 0 0 0 0 ⋯ 0
⎡ ⎤
0 𝜎𝜎𝑥𝑥̇2 0 0 0 0 0 ⋯ 0
⎢ ⎥
⎢ 0 0 0 0 0 0 0 ⋯ 0⎥
⎢0 0 0 𝜎𝜎𝑦𝑦̇2 0 0 0 ⋯ 0⎥
⎢ 0⎥
𝐶𝐶𝑡𝑡𝜀𝜀 = ⎢ 0 0 0 0 0 0 0 ⋯
⎥ (3.21)
⎢0 0 0 0 0 𝜎𝜎𝑧𝑧̇2 0 ⋯ 0⎥
⎢ ⎥
⎢0 0 0 0 0 0 0 ⋯ 0⎥
⎢⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ 0⎥
⎣0 0 0 0 0 0 0 0 0⎦

which introduces a variability in the rover velocity.

The model described up to now is a constant velocity model, but it can be changed easily in
goGPS by changing the dynamic model order. This can be useful to satisfy the needs of diverse
applications (e.g. pedestrian navigation versus car navigation).

A generic nth-order dynamic model can be written as

𝑋𝑋 (𝑡𝑡 + 1) = 𝑋𝑋𝑟𝑟 (𝑡𝑡) + 𝑋𝑋̇𝑟𝑟 (𝑡𝑡)


⎧ 𝑟𝑟
⎪𝑋𝑋̇𝑟𝑟 (𝑡𝑡 + 1) = 𝑋𝑋̇𝑟𝑟 (𝑡𝑡) + 𝑋𝑋̈𝑟𝑟 (𝑡𝑡)

⎪⋮
⎪𝑋𝑋𝑟𝑟(𝑛𝑛) (𝑡𝑡 + 1) = 0 + 𝑋𝑋𝑟𝑟(𝑛𝑛) (𝑡𝑡) + 𝜀𝜀 (𝑛𝑛 ) (𝑡𝑡 + 1)
𝑋𝑋𝑟𝑟

(𝑡𝑡
⎪𝑌𝑌𝑟𝑟 + 1) = 𝑌𝑌𝑟𝑟 (𝑡𝑡) ̇
+ 𝑌𝑌𝑟𝑟 (𝑡𝑡)
⎪𝑌𝑌̇ (𝑡𝑡 + 1) = 𝑌𝑌̇ (𝑡𝑡) + 𝑌𝑌̈ (𝑡𝑡)
⎪ 𝑟𝑟 𝑟𝑟 𝑟𝑟

⎪⋮
⎪ (𝑛𝑛) (𝑛𝑛)
𝑌𝑌 (𝑡𝑡 + 1) = 0 + 𝑌𝑌𝑟𝑟 (𝑡𝑡) + 𝜀𝜀𝑌𝑌 (𝑛𝑛 ) (𝑡𝑡 + 1)
⎪ 𝑟𝑟 𝑟𝑟

𝑍𝑍𝑟𝑟 (𝑡𝑡 + 1) = 𝑍𝑍𝑟𝑟 (𝑡𝑡) + 𝑍𝑍̇𝑟𝑟 (𝑡𝑡) (3.22)



⎪𝑍𝑍̇𝑟𝑟 (𝑡𝑡 + 1) = 𝑍𝑍̇𝑟𝑟 (𝑡𝑡) + 𝑍𝑍̈𝑟𝑟 (𝑡𝑡)
⎪⋮

(𝑛𝑛) (𝑛𝑛)
⎪𝑍𝑍𝑟𝑟 (𝑡𝑡 + 1) = 0 + 𝑍𝑍𝑟𝑟 (𝑡𝑡) + 𝜀𝜀𝑍𝑍 (𝑛𝑛 ) (𝑡𝑡 + 1)
𝑟𝑟
⎪ 𝑝𝑝1 𝑝𝑝1
⎪𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 + 1) = 𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)
⎪⋮
⎪ 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
⎪𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 + 1) = 𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)
⎪⋮

𝑝𝑝32 𝑝𝑝32
⎩𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 + 1) = 𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)

where 𝐾𝐾 (𝑛𝑛) stands for the nth-order derivative of 𝐾𝐾.

35
Chapter 3 Kalman filtering in goGPS

Various types of motion can be modeled by using different values for 𝑛𝑛, therefore

𝑛𝑛 = 0 means “rover is still”

𝑛𝑛 = 1 means “constant velocity”

𝑛𝑛 = 2 means “constant acceleration”

and so on.

The transition matrix 𝑇𝑇 will consequently be defined as follows

𝑇𝑇 = �𝑇𝑇 0� (3.23)
0 I

with

𝑇𝑇𝑛𝑛 0 0
𝑇𝑇 = � 0 𝑇𝑇𝑛𝑛 0� (3.24)
0 0 𝑇𝑇𝑛𝑛

and

1 1 0 ⋯ ⋯ 0
⎡0 1 1 ⋱ ⋮⎤
⎢ ⎥
⋮ ⋱ 1 1 ⋱ ⋮⎥
𝑇𝑇𝑛𝑛 = ⎢ (3.25)
⎢⋮ ⋱ ⋱ ⋱ 0⎥
⎢⋮ ⋱ ⋱ 1⎥
⎣0 ⋯ ⋯ ⋯ 0 1⎦

3.2.3. goGPS observation modules

The assembly of different modules into the goGPS KF is treated as subsequent additions of
observation equations. These additions mainly reflect in the insertion of new blocks in the
transformation matrix 𝐻𝐻 and in the observations covariance matrix 𝐶𝐶𝑡𝑡𝜈𝜈 (neglecting cross-
covariances among blocks).

36
Chapter 3 Kalman filtering in goGPS

Code module
The first module introduces code double differences. The observation equation that describes
the pseudorange obtained by combining master and rover observations, with respect to the
pivot satellite 𝑝𝑝 and each satellite 𝑠𝑠, is given by

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) = 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝐼𝐼𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝑇𝑇𝑟𝑟𝑟𝑟 (𝑡𝑡) + ν𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.26)

where

𝑝𝑝𝑝𝑝 𝑝𝑝 𝑝𝑝
 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡) = �𝜌𝜌𝑟𝑟 (𝑡𝑡) − 𝜌𝜌𝑚𝑚 (𝑡𝑡)� − [𝜌𝜌𝑟𝑟𝑠𝑠 (𝑡𝑡) − 𝜌𝜌𝑚𝑚
𝑠𝑠 (𝑡𝑡)]
(3.27)

𝑗𝑗 2 2 2
with 𝜌𝜌𝑖𝑖 = ��𝑋𝑋𝑖𝑖 − 𝑋𝑋𝑗𝑗 � + �𝑌𝑌𝑖𝑖 − 𝑌𝑌𝑗𝑗 � + �𝑍𝑍𝑖𝑖 − 𝑍𝑍𝑗𝑗 � (3.28)

𝑝𝑝𝑝𝑝 𝑝𝑝 𝑝𝑝
 𝐼𝐼rm (𝑡𝑡) = �𝐼𝐼𝑟𝑟 (𝑡𝑡) − 𝐼𝐼𝑚𝑚 (𝑡𝑡)� − [𝐼𝐼𝑟𝑟𝑠𝑠 (𝑡𝑡) − 𝐼𝐼𝑚𝑚
𝑠𝑠 (𝑡𝑡)]
≅ 0 and (3.29)
𝑝𝑝𝑝𝑝 𝑝𝑝 𝑝𝑝
𝑇𝑇𝑟𝑟𝑟𝑟 (𝑡𝑡) = �𝑇𝑇𝑟𝑟 (𝑡𝑡) − 𝑇𝑇𝑚𝑚 (𝑡𝑡)� − [𝑇𝑇𝑟𝑟𝑠𝑠 (𝑡𝑡) − 𝑇𝑇𝑚𝑚𝑠𝑠 (𝑡𝑡)] ≅ 0 (3.30)

𝑗𝑗 𝑗𝑗 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
with 𝐼𝐼𝑖𝑖 and 𝑇𝑇𝑖𝑖 the ionospheric and tropospheric corrections respectively. 𝐼𝐼𝑟𝑟𝑟𝑟 and 𝑇𝑇𝑟𝑟𝑟𝑟
can be assumed to be close to zero under the hypothesis that the distance between
master and rover is not greater than 10 km
𝑝𝑝𝑝𝑝
 ν𝑟𝑟𝑟𝑟 (𝑡𝑡) is the code measurement noise.

Therefore, equation (3.26) can be simplified as

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) = 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡) + ν𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.31)

In order to linearize this equation, let us define the following variables

 𝑋𝑋 𝑠𝑠 (𝑡𝑡), 𝑌𝑌 𝑠𝑠 (𝑡𝑡), 𝑍𝑍 𝑠𝑠 (𝑡𝑡) as the coordinates of the satellite 𝑠𝑠 at the epoch 𝑡𝑡, computed
from ultra-rapid ephemerides
 𝑋𝑋𝑚𝑚 , 𝑌𝑌𝑚𝑚 , 𝑍𝑍𝑚𝑚 as the fixed coordinates of the master (not time-dependent)
 𝑋𝑋𝑟𝑟 (𝑡𝑡), 𝑌𝑌𝑟𝑟 (𝑡𝑡), 𝑍𝑍𝑟𝑟 (𝑡𝑡) as the unknown coordinates of the rover
 𝑋𝑋�𝑟𝑟 (𝑡𝑡) = 𝑋𝑋𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) = 𝑇𝑇𝑋𝑋�𝑟𝑟 (𝑡𝑡 − 1) = 𝑇𝑇𝑇𝑇(𝑡𝑡 − 1|𝑡𝑡 − 1),
𝑌𝑌�𝑟𝑟 (𝑡𝑡) = 𝑌𝑌𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) = 𝑇𝑇𝑌𝑌�𝑟𝑟 (𝑡𝑡 − 1) = 𝑇𝑇𝑇𝑇(𝑡𝑡 − 1|𝑡𝑡 − 1),
𝑍𝑍�𝑟𝑟 (𝑡𝑡) = 𝑍𝑍𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) = 𝑇𝑇𝑍𝑍̂𝑟𝑟 (𝑡𝑡 − 1) = 𝑇𝑇𝑇𝑇(𝑡𝑡 − 1|𝑡𝑡 − 1),
as the approximated coordinates for the linearization, that represent the coordinates
predicted from those at time 𝑡𝑡 − 1, on the basis of the dynamic model;
 𝜌𝜌�𝑟𝑟𝑠𝑠 (𝑡𝑡) is the distance from the rover to the satellite 𝑠𝑠, using the rover approximate
coordinates.

37
Chapter 3 Kalman filtering in goGPS

The pseudorange linearized equation can be written as

𝑝𝑝𝑝𝑝 𝑋𝑋�𝑟𝑟 (𝑡𝑡)− 𝑋𝑋 𝑝𝑝 (𝑡𝑡) 𝑋𝑋� (𝑡𝑡)− 𝑋𝑋 𝑠𝑠 (𝑡𝑡)


𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) = � 𝑝𝑝
�𝑟𝑟 (𝑡𝑡)
𝜌𝜌
− 𝑟𝑟 𝜌𝜌� 𝑠𝑠 (𝑡𝑡) � �𝑋𝑋𝑟𝑟 (𝑡𝑡) − 𝑋𝑋�𝑟𝑟 (𝑡𝑡)� +
𝑟𝑟

𝑌𝑌�𝑟𝑟 (𝑡𝑡)− 𝑌𝑌 𝑝𝑝 (𝑡𝑡) 𝑌𝑌�𝑟𝑟 (𝑡𝑡)− 𝑌𝑌 𝑠𝑠 (𝑡𝑡) 𝑍𝑍 � (𝑡𝑡)− 𝑍𝑍 𝑝𝑝 (𝑡𝑡) 𝑍𝑍�𝑟𝑟 (𝑡𝑡)− 𝑍𝑍 𝑠𝑠 (𝑡𝑡)
� 𝑝𝑝
�𝑟𝑟 (𝑡𝑡)
𝜌𝜌
− �𝑟𝑟𝑠𝑠 (𝑡𝑡)
𝜌𝜌
� �𝑌𝑌𝑟𝑟 (𝑡𝑡) − 𝑌𝑌�𝑟𝑟 (𝑡𝑡)� + � 𝑟𝑟 𝑝𝑝
�𝑟𝑟 (𝑡𝑡)
𝜌𝜌
− �𝑟𝑟𝑠𝑠 (𝑡𝑡)
𝜌𝜌
� �𝑍𝑍𝑟𝑟 (𝑡𝑡) − 𝑍𝑍�𝑟𝑟 (𝑡𝑡)� +
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝜌𝜌�𝑟𝑟𝑟𝑟 (𝑡𝑡) + ν𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.32)

�𝑟𝑟 (𝑡𝑡)− 𝐾𝐾 𝑝𝑝 (𝑡𝑡)


𝐾𝐾 �𝑟𝑟 (𝑡𝑡)− 𝐾𝐾 𝑠𝑠 (𝑡𝑡)
𝐾𝐾
which becomes, imposing 𝑎𝑎𝑘𝑘 = � 𝑝𝑝
�𝑟𝑟 (𝑡𝑡)
− �𝑟𝑟𝑠𝑠 (𝑡𝑡)
𝜌𝜌

𝜌𝜌

𝑝𝑝𝑝𝑝
𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) = 𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡)[𝑋𝑋𝑟𝑟 (𝑡𝑡) − 𝑋𝑋�𝑟𝑟 (𝑡𝑡)] + 𝑎𝑎𝑦𝑦 𝑝𝑝𝑝𝑝 (𝑡𝑡)[𝑌𝑌𝑟𝑟 (𝑡𝑡) − 𝑌𝑌�𝑟𝑟 (𝑡𝑡)] + 𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡)[𝑍𝑍𝑟𝑟 (𝑡𝑡) − 𝑍𝑍�𝑟𝑟 (𝑡𝑡)] +
𝑟𝑟
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝜌𝜌�𝑟𝑟𝑟𝑟 (𝑡𝑡) + ν𝑟𝑟𝑟𝑟 (3.33)

It is important to point out that the linearized observation does not depend just on the state
variable at time 𝑡𝑡, but also on the 𝑡𝑡 − 1 estimation, and this contradicts the KF observation
model. However, this dependency is not taken into account, since the 𝑡𝑡 − 1 estimation is used
just for linearization purpose.

The linearized equation thus becomes

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝑟𝑟
𝑋𝑋�𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑦𝑦 𝑝𝑝𝑝𝑝 𝑌𝑌�𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝 � (𝑡𝑡) − 𝜌𝜌�𝑟𝑟𝑟𝑟
𝑟𝑟 𝑍𝑍𝑟𝑟
(𝑡𝑡) = 𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡)𝑋𝑋𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑦𝑦 𝑝𝑝𝑝𝑝 𝑌𝑌𝑟𝑟 (𝑡𝑡) +
𝑟𝑟 𝑟𝑟
𝑝𝑝𝑝𝑝
𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝
𝑟𝑟 𝑍𝑍𝑟𝑟
(𝑡𝑡) + ν𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.34)

and the observation vector can be expressed as


𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
(𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 )
𝑌𝑌𝑡𝑡 = �𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝑟𝑟
𝑋𝑋�𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑦𝑦 𝑟𝑟𝑝𝑝𝑝𝑝 𝑌𝑌�𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝 � (𝑡𝑡) − 𝜌𝜌�𝑟𝑟𝑟𝑟
𝑟𝑟 𝑍𝑍𝑟𝑟
(𝑡𝑡)� (3.35)

∀𝑠𝑠 ≠ 𝑝𝑝 , where 𝑠𝑠 represents visible satellites.

Recalling that code observations do not depend on phase ambiguities, the transformation
matrix 𝐻𝐻 related to code double differences is

⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮
𝑝𝑝𝑝𝑝 (𝑡𝑡) 𝑝𝑝𝑝𝑝 (𝑡𝑡)
𝐻𝐻𝑡𝑡 (𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 ) 𝑎𝑎
= � 𝑥𝑥 𝑟𝑟 0 𝑎𝑎𝑦𝑦 𝑟𝑟 0 𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡) 0 0 0 ⋯ 0� (3.36)
⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮

and its corresponding covariance matrix

38
Chapter 3 Kalman filtering in goGPS

1 0.5 ⋯ 0.5
) 0.5 ⋱ ⋱ ⋮
𝐶𝐶t𝜈𝜈(𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 = 𝜎𝜎𝜈𝜈2𝑝𝑝𝑝𝑝 � � (3.37)
𝑟𝑟𝑟𝑟 ⋮ ⋱ ⋱ 0.5
0.5 ⋯ 0.5 1

assuming that all observations are independent and have the same accuracy.

A more sophisticated way of weighting observations, introducing information like satellite


elevation and/or C/N0 will be discussed in section 5.2.3.

Phase module
goGPS second module applies phase double differences. The phase observation equation that
combines master and rover observations, with respect to the pivot satellite 𝑝𝑝 and each
satellite 𝑠𝑠, is written as

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


𝜆𝜆Φ𝑟𝑟𝑟𝑟 (𝑡𝑡) = 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡) − 𝜆𝜆𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡) − 𝐼𝐼𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝑇𝑇𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.38)

where
𝑝𝑝𝑝𝑝
 𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡) is the ambiguity value combined for rover and master according to the
following formula
𝑝𝑝𝑝𝑝 𝑝𝑝 𝑝𝑝
𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡) = �𝑁𝑁𝑟𝑟 (𝑡𝑡) − 𝑁𝑁𝑚𝑚 (𝑡𝑡)� − [𝑁𝑁𝑟𝑟𝑠𝑠 (𝑡𝑡) − 𝑁𝑁𝑚𝑚𝑠𝑠 (𝑡𝑡)] (3.39)

 𝜆𝜆 is the L1 wavelength
𝑝𝑝𝑝𝑝
 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡) is the phase measurement noise.
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡), 𝐼𝐼𝑟𝑟𝑟𝑟 (𝑡𝑡), 𝑇𝑇𝑟𝑟𝑟𝑟 (𝑡𝑡) are defined as in equation (3.26).

For baselines not longer than 10 km, equation (3.38) can be approximated as

𝑝𝑝𝑠𝑠 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


𝜆𝜆Φ𝑟𝑟𝑟𝑟 (𝑡𝑡) = 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡) − 𝜆𝜆𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.40)

After linearization the following equation is obtained

𝑝𝑝𝑝𝑝
𝜆𝜆Φ𝑟𝑟𝑟𝑟 (𝑡𝑡) ≅ 𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡)[𝑋𝑋𝑟𝑟 (𝑡𝑡) − 𝑋𝑋�𝑟𝑟 (𝑡𝑡)] + 𝑎𝑎𝑦𝑦 𝑝𝑝𝑝𝑝 (𝑡𝑡)[𝑋𝑋𝑟𝑟 (𝑡𝑡) − 𝑋𝑋�𝑟𝑟 (𝑡𝑡)] + 𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡)[𝑋𝑋𝑟𝑟 (𝑡𝑡) − 𝑋𝑋�𝑟𝑟 (𝑡𝑡)] −
𝑟𝑟
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝜆𝜆𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜌𝜌�𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.41)

that can be written as

39
Chapter 3 Kalman filtering in goGPS

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝜆𝜆Φ𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝑟𝑟
𝑋𝑋�𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑦𝑦 𝑝𝑝𝑝𝑝 𝑌𝑌�𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝 � (𝑡𝑡) − 𝜌𝜌�𝑟𝑟𝑟𝑟
𝑟𝑟 𝑍𝑍𝑟𝑟
(𝑡𝑡) = 𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡)𝑋𝑋𝑟𝑟 (𝑡𝑡) + 𝑎𝑎𝑦𝑦 𝑝𝑝𝑝𝑝 𝑌𝑌𝑟𝑟 (𝑡𝑡) +
𝑟𝑟 𝑟𝑟
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝
𝑟𝑟 𝑍𝑍𝑟𝑟
(𝑡𝑡) − 𝜆𝜆𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜂𝜂𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.42)

Therefore, the observation vector is


(𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) 𝑝𝑝𝑝𝑝
𝑌𝑌𝑡𝑡 = �𝜆𝜆Φ𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝛼𝛼𝑟𝑟𝑝𝑝𝑝𝑝 𝑋𝑋�𝑟𝑟 (𝑡𝑡) + 𝛽𝛽𝑟𝑟𝑝𝑝𝑝𝑝 𝑌𝑌�𝑟𝑟 (𝑡𝑡) + 𝛾𝛾𝑟𝑟𝑝𝑝𝑝𝑝 𝑍𝑍�𝑟𝑟 (𝑡𝑡) − 𝜌𝜌�𝑟𝑟𝑟𝑟
𝑝𝑝𝑝𝑝
(𝑡𝑡)� (3.43)

∀𝑠𝑠 ≠ 𝑝𝑝, where 𝑠𝑠 represents visible satellites; consequently the transformation matrix 𝐻𝐻
becomes

⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮
(𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) 𝑝𝑝𝑝𝑝 (𝑡𝑡) 𝑝𝑝𝑝𝑝 (𝑡𝑡) 𝑝𝑝𝑝𝑝 (𝑡𝑡)
𝐻𝐻𝑡𝑡 𝑎𝑎
= � 𝑥𝑥 𝑟𝑟 0 𝑎𝑎𝑦𝑦 𝑟𝑟 0 𝑎𝑎𝑧𝑧 𝑟𝑟 0 0 ⋯ 𝜆𝜆 0� (3.44)
⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮

with a 𝜆𝜆 value in the column corresponding to the satellite 𝑠𝑠.

The phase measurements noise covariance matrix is expressed as

1 0.5 ⋯ 0.5
𝜈𝜈 (𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) 0.5 ⋱ ⋱ ⋮
𝐶𝐶t = 𝜎𝜎𝜂𝜂2𝑝𝑝𝑝𝑝 � � (3.45)
𝑟𝑟𝑟𝑟 ⋮ ⋱ ⋱ 0.5
0.5 ⋯ 0.5 1

Also for phase observations, a more sophisticated approach to weights will be discussed in
section 5.2.3.

DTM module
The third module that has been integrated in goGPS so far introduces the height extracted
from a DTM as an additional observation. When using low cost GPS devices the error in the
vertical direction can be very high. If the DTM accuracy is better than the one expected from
the GPS positioning in the vertical direction, the introduction of this additional observation in
the goGPS KF improves the positioning accuracy without actually constraining the estimated
position on the DTM surface.

At the moment it is necessary to store the available DTM data locally, in a directory that goGPS
can access. Since this kind of data is usually very large and the real-time functioning of goGPS
requires fast load times, a procedure has been implemented that divides the DTM in multiple

40
Chapter 3 Kalman filtering in goGPS

tiles, compressed in MATLAB binary format. When the KF predicts a new position, its
coordinates are used to load the tile that contains them, together with a buffer of the
surrounding eight tiles. A bilinear interpolation is then performed to obtain the height at the
predicted position.

A problem arises from the fact that DTMs are usually provided in cartographic (projected) or
geodetic coordinates, while goGPS works with cartesian geocentric coordinates. Therefore, the
height ℎ𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) must be expressed as a function of the approximate position 𝑋𝑋�𝑟𝑟 (𝑡𝑡), 𝑌𝑌�𝑟𝑟 (𝑡𝑡), 𝑍𝑍�𝑟𝑟 (𝑡𝑡)
(𝑑𝑑𝑑𝑑𝑑𝑑 )
in order to be able to build the 𝑌𝑌𝑡𝑡 and 𝐻𝐻𝑡𝑡 (𝑑𝑑𝑑𝑑𝑑𝑑 ) matrices.

Expressing the differential of the position vector as a function of the differentials of the
geodetic coordinates 𝑑𝑑𝑑𝑑, 𝑑𝑑𝑑𝑑, 𝑑𝑑ℎ (Sansò, 2006)

𝑑𝑑𝑑𝑑
�𝑑𝑑𝑑𝑑 � = (𝒩𝒩 + ℎ) cos𝜑𝜑 𝑒𝑒𝜆𝜆 𝑑𝑑𝑑𝑑 + (ℳ + ℎ)𝑒𝑒𝜑𝜑 𝑑𝑑𝑑𝑑 + 𝜈𝜈𝑑𝑑ℎ (3.46)
𝑑𝑑𝑑𝑑

where

 𝑒𝑒𝜆𝜆 , 𝑒𝑒𝜑𝜑 , 𝜈𝜈 are the unit vectors of a Cartan local (mobile) frame
 𝒩𝒩 is the radius of curvature of the prime vertical, defined as
𝑎𝑎
𝒩𝒩 = (3.47)
�1−𝑒𝑒 2 sin 2 φ

where 𝑒𝑒 represents the eccentricity and 𝑎𝑎 the semi-major axis of the reference
ellipsoid
 ℳ is defined as
1−𝑒𝑒 2
ℳ = 𝒩𝒩 1−𝑒𝑒 2 sin 2 𝜑𝜑 (3.48)

the following equation is obtained

𝑑𝑑𝑑𝑑 (𝒩𝒩 + h)cos 𝜑𝜑 0 0 𝑑𝑑𝑑𝑑


�𝑑𝑑𝑑𝑑 � = 𝑅𝑅 � 0 (ℳ + ℎ) 0� �𝑑𝑑𝑑𝑑� (3.49)
𝑑𝑑𝑑𝑑 0 0 1 𝑑𝑑ℎ

where 𝑅𝑅 is the rotation matrix from the cartesian geocentric frame (𝑋𝑋, 𝑌𝑌, 𝑍𝑍) to the Cartan local
frame, namely

41
Chapter 3 Kalman filtering in goGPS

− sin 𝜆𝜆 − sin 𝜑𝜑 cos 𝜆𝜆 cos 𝜑𝜑 cos 𝜆𝜆


𝑅𝑅 = [𝑒𝑒𝜆𝜆 𝑒𝑒𝜑𝜑 𝜈𝜈 ] = � cos 𝜆𝜆 − sin 𝜑𝜑 sin 𝜆𝜆 cos 𝜑𝜑 sin 𝜆𝜆 � (3.50)
0 cos 𝜑𝜑 sin 𝜑𝜑

Therefore 𝑑𝑑ℎ can be expressed as

𝑑𝑑𝑑𝑑
𝑑𝑑ℎ = 𝜈𝜈 + �𝑑𝑑𝑑𝑑 � = cos 𝜑𝜑 cos 𝜆𝜆 𝑑𝑑𝑑𝑑 + cos 𝜑𝜑 sin 𝜆𝜆 𝑑𝑑𝑑𝑑 + sin 𝜑𝜑 𝑑𝑑𝑑𝑑 (3.51)
𝑑𝑑𝑑𝑑

The height equation reads

ℎ𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) = cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) cos 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) [𝑋𝑋𝑟𝑟 (𝑡𝑡) − 𝑋𝑋�𝑟𝑟 (𝑡𝑡)] + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) sin 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) [𝑌𝑌𝑟𝑟 (𝑡𝑡) − 𝑌𝑌�𝑟𝑟 (𝑡𝑡)] +
sin 𝜑𝜑�𝑟𝑟 (𝑡𝑡) [𝑍𝑍𝑟𝑟 (𝑡𝑡) − 𝑍𝑍�𝑟𝑟 (𝑡𝑡)] + ℎ�𝑟𝑟 (𝑡𝑡) + 𝜁𝜁𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) (3.52)

where

 𝜆𝜆̃𝑟𝑟 (𝑡𝑡), 𝜑𝜑�𝑟𝑟 (𝑡𝑡), ℎ�𝑟𝑟 (𝑡𝑡) are the geodetic coordinates of the rover predicted position
 ℎ𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) is the interpolated height value at the rover predicted position
 𝜁𝜁𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) is the DTM noise

(𝑑𝑑𝑑𝑑𝑑𝑑 )
In order to build the 𝑌𝑌𝑡𝑡 vector, this equation can be rearranged as

ℎ𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) cos 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 𝑋𝑋�𝑟𝑟 (𝑡𝑡) + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) cos 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 𝑌𝑌�𝑟𝑟 (𝑡𝑡) + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) cos 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 𝑍𝑍�𝑟𝑟 (𝑡𝑡) −
ℎ�𝑟𝑟 (𝑡𝑡) = cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) cos 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 𝑋𝑋𝑟𝑟 (𝑡𝑡) + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) cos 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 𝑌𝑌𝑟𝑟 (𝑡𝑡) + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡) cos 𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 𝑍𝑍𝑟𝑟 (𝑡𝑡) +
𝜁𝜁𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) (3.53)

obtaining

(𝑑𝑑𝑑𝑑𝑑𝑑 )
𝑌𝑌𝑡𝑡 = �ℎ𝑑𝑑𝑑𝑑𝑑𝑑 (𝑡𝑡) + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡)cos𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 𝑋𝑋�𝑟𝑟 (𝑡𝑡) + cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡)sin𝜆𝜆̃𝑟𝑟 (𝑡𝑡)𝑌𝑌�𝑟𝑟 (𝑡𝑡) + sin𝜑𝜑�𝑟𝑟 (𝑡𝑡)𝑍𝑍�𝑟𝑟 (𝑡𝑡) −
ℎ�𝑟𝑟 (𝑡𝑡)] (3.54)

𝐻𝐻𝑡𝑡 (𝑑𝑑𝑑𝑑𝑑𝑑 ) = [cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡)cos𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 0 cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡)sin𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 0 sin 𝜑𝜑�𝑟𝑟 (𝑡𝑡) 0 ⋯ 0] (3.55)

𝜈𝜈 (𝑑𝑑𝑑𝑑𝑑𝑑 )
with 𝐶𝐶𝑡𝑡 = σ2ζ ≅ 0.09 m2 in the case of the LiDAR DTM we have used in our experiments.
Note that the accuracy of the DTM is assumed to be the same for every node, which can be a
strong approximation in case of DTMs derived from DSMs (after the removal of features above
the ground).

42
Chapter 3 Kalman filtering in goGPS

Combination of modules
In order to integrate observation modules in the goGPS KF, it is sufficient to build new 𝑌𝑌 and
𝐻𝐻 matrices using those described up to now as blocks.

For example, the observation vector 𝑌𝑌𝑡𝑡 is built up as

(𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 )
⎡𝑌𝑌𝑡𝑡 ⎤
⎢ (𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) ⎥
𝑌𝑌𝑡𝑡 = 𝑌𝑌𝑡𝑡 (3.56)
⎢ (𝑑𝑑𝑑𝑑𝑑𝑑 ) ⎥
⎣𝑌𝑌𝑡𝑡 ⎦

and the transformation matrix 𝐻𝐻𝑡𝑡 as

(𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 ) �
⎡𝐻𝐻𝑡𝑡 ⎤ 𝐻𝐻 0
𝐻𝐻𝑡𝑡 = ⎢𝐻𝐻𝑡𝑡(𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) ⎥ = �𝐻𝐻
� 𝐻𝐻𝜆𝜆 � (3.57)
⎢ (𝑑𝑑𝑑𝑑𝑑𝑑 ) ⎥
⎣𝐻𝐻 ⎦ �dtm
𝐻𝐻 0
𝑡𝑡

where

⋮ ⋮ ⋮ ⋮ ⋮
� = �𝑎𝑎𝑥𝑥 𝑝𝑝𝑝𝑝
𝐻𝐻 𝑟𝑟
(𝑡𝑡) 0 𝑎𝑎 𝑝𝑝𝑝𝑝 (𝑡𝑡)
𝑦𝑦 𝑟𝑟 0 𝑎𝑎𝑧𝑧 𝑝𝑝𝑝𝑝
𝑟𝑟
(𝑡𝑡)� (3.58)
⋮ ⋮ ⋮ ⋮ ⋮

�dtm = [cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡)cos𝜆𝜆̃r (𝑡𝑡) 0


𝐻𝐻 cos 𝜑𝜑�𝑟𝑟 (𝑡𝑡)sin𝜆𝜆̃𝑟𝑟 (𝑡𝑡) 0 sin 𝜑𝜑�𝑟𝑟 (𝑡𝑡)] (3.59)

⋮ ⋮ ⋮ ⋮ ⋮
0 −𝜆𝜆 0 0 0
𝐻𝐻𝜆𝜆 = � � (3.60)
0 0 0 −𝜆𝜆 0
⋮ ⋮ ⋮ ⋮ ⋮

with a – 𝜆𝜆 on the column that corresponds to the satellite the phase observation refers to.

Assuming that the observation blocks are uncorrelated among each other, the covariance
matrix becomes

𝜈𝜈 (𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 )
⎡𝐶𝐶𝑡𝑡 0 0 ⎤
𝐶𝐶𝑡𝑡𝜈𝜈 = ⎢ 0 𝐶𝐶𝑡𝑡𝜈𝜈
(𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 )
0 ⎥ (3.61)
⎢ 𝜈𝜈 (𝑑𝑑𝑑𝑑𝑑𝑑 )

⎣ 0 0 𝐶𝐶𝑡𝑡 ⎦

It is important to notice that this KF design, besides providing a straightforward way to add
new modules, is also very flexible and adaptive. For example, if the navigating body moves

43
Chapter 3 Kalman filtering in goGPS

(𝑑𝑑𝑑𝑑𝑑𝑑 )
beyond the borders of the DTM, the software just leaves the matrices 𝑌𝑌𝑡𝑡 and 𝐻𝐻𝑡𝑡 (𝑑𝑑𝑑𝑑𝑑𝑑 )
empty (which does not mean full of zeros!). In this way, the goGPS KF runs as if the DTM
module was not existing at all.

3.2.4. Initialization

The initialization of the goGPS KF starts with a first estimation of the rover position using the
Bancroft algorithm (Bancroft, 1985), with an error of some meters. The result is then used as
an approximate position to apply twice a linearized least-squares adjustment on code double
difference. This position, obtained with an error of some tens of centimeters, is then passed to
the KF algorithm as 𝑋𝑋𝑟𝑟 (0), 𝑌𝑌𝑟𝑟 (0), 𝑍𝑍𝑟𝑟 (0) state variables. The velocities 𝑋𝑋̇𝑟𝑟 (0), 𝑌𝑌𝑟𝑟̇ (0), 𝑍𝑍̇𝑟𝑟 (0)
can be initialized to zero, under the hypothesis that the rover starts its motion from a
stationary state, or to a constant value equal to the cruise velocity of the rover.

𝑝𝑝𝑝𝑝
As for the initialization of ambiguities, the first number of cycles 𝑁𝑁𝑟𝑟𝑟𝑟 is roughly obtained from
equation (3.42) as

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


𝑝𝑝𝑝𝑝 𝜌𝜌 𝑟𝑟𝑟𝑟 −𝜆𝜆Φ 𝑟𝑟𝑟𝑟 𝜂𝜂 𝑟𝑟𝑟𝑟
𝑁𝑁𝑟𝑟𝑟𝑟 = 𝜆𝜆
+ 𝜆𝜆
(3.62)

𝑝𝑝𝑝𝑝
in which 𝜌𝜌𝑟𝑟𝑟𝑟 can be estimated in two ways

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


 𝜌𝜌𝑟𝑟𝑟𝑟 = 𝑃𝑃𝑟𝑟𝑟𝑟 − ν𝑟𝑟𝑟𝑟 , where 𝑃𝑃𝑟𝑟𝑟𝑟 is the combined pseudorange from code measurements
𝑝𝑝𝑝𝑝
and ν𝑟𝑟𝑟𝑟 is the code double difference noise
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
 𝜌𝜌𝑟𝑟𝑟𝑟 = 𝜌𝜌�𝑟𝑟𝑟𝑟 − 𝑒𝑒𝑟𝑟𝑟𝑟 , where 𝜌𝜌�𝑟𝑟𝑟𝑟 is the combined distance obtained using the
𝑝𝑝𝑝𝑝
approximate position on the ground (obtained as described above) and 𝑒𝑒𝑟𝑟𝑟𝑟 is the
corresponding estimation error obtained from an approximate propagation of the
coordinate errors.

𝑝𝑝𝑝𝑝
�𝑟𝑟𝑟𝑟
Thus, the estimated number of cycles 𝑁𝑁 will be, respectively

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑝𝑝𝑝𝑝 𝑃𝑃 −𝜆𝜆Φ
 �𝑟𝑟𝑟𝑟
𝑁𝑁 = 𝑟𝑟𝑟𝑟 𝜆𝜆 𝑟𝑟𝑟𝑟 → 𝜎𝜎𝑁𝑁� ≅ 𝜎𝜎𝜈𝜈 ⁄𝜆𝜆 ≅ 5 cycles
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑝𝑝𝑝𝑝 � −𝜆𝜆Φ
𝜌𝜌
 �𝑟𝑟𝑟𝑟
𝑁𝑁 = 𝑟𝑟𝑟𝑟 𝜆𝜆 𝑟𝑟𝑟𝑟 → 𝜎𝜎𝑁𝑁� ≈ 𝜎𝜎𝑒𝑒 ⁄λ

44
Chapter 3 Kalman filtering in goGPS

The initial state covariance matrix 𝐶𝐶0𝜀𝜀 is defined as

𝜎𝜎 2 0 0 0 0 0 0 0 0 … 0
⎡ 𝑥𝑥 ⎤
⎢0 𝜎𝜎𝑥𝑥̇2 0 0 0 0 0 0 0 … 0⎥
⎢0 0 𝜎𝜎𝑦𝑦2 0 0 0 0 0 0 … 0⎥
⎢0 0 0 𝜎𝜎𝑦𝑦̇2 0 0 0 0 0 … 0⎥
⎢ ⎥
⎢0 0 0 0 𝜎𝜎𝑧𝑧2 0 0 0 0 … 0⎥
𝐶𝐶0 = ⎢ 0
𝜀𝜀 0 0 0 0 𝜎𝜎𝑧𝑧̇2 0 0 0 … 0⎥ (3.63)
⎢ ⎥
⎢0 0 0 0 0 0 𝜎𝜎𝑁𝑁2� 0 0 … 0⎥
⎢ ⎥
⎢0 0 0 0 0 0 0 0 0 … 0⎥
⎢0 0 0 0 0 0 0 0 𝜎𝜎𝑁𝑁2� … 0⎥
⎢ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ 0⎥
⎣0 0 0 0 0 0 0 0 0 0 0⎦

dove

• 𝜎𝜎𝑥𝑥2 , 𝜎𝜎𝑦𝑦2 , 𝜎𝜎𝑧𝑧2 are the position error variances (in principle also covariances between
position errors could be provided)

• 𝜎𝜎𝑥𝑥̇2 , 𝜎𝜎𝑦𝑦̇2 , 𝜎𝜎𝑧𝑧̇2 are the velocity variances

• 𝜎𝜎𝑁𝑁2� is the estimated variance of the initial ambiguity; it is introduced just on the lines
corresponding to visible satellites and can be different from satellite to satellite.

Note that a high velocity variance can be used to model the acceleration of a body that starts
moving from a stationary state.

3.2.5. Satellite configuration changes

The goGPS KF described up to now can work seamlessly if events like changes of the satellite
configuration and signal losses do not happen. Anyway, since this kind of events usually do
happen during any navigation period, it is fundamental to introduce some event manager in
the KF algorithm to model them. In this paragraph the procedures that handle partial and total
satellite loss, satellite addition and pivot satellite change are described. The next paragraph
will illustrate how cycle-slips are handled.

45
Chapter 3 Kalman filtering in goGPS

Loss of a single satellite


When for any reason a satellite 𝑠𝑠̅ that was visible at time 𝑡𝑡 − 1 is no more visible at time 𝑡𝑡, the
only change in the goGPS KF is that the 𝐻𝐻 matrix automatically loses the rows that corresponds
to the satellite 𝑠𝑠̅ code and phase measurements.

𝑝𝑝𝑠𝑠̅
�𝑟𝑟𝑟𝑟
In case, also the combined ambiguities 𝑁𝑁 (𝑡𝑡) can be set to zero, but this is not strictly
necessary, since they are going to be reset anyway if the satellite 𝑠𝑠̅ will be visible again.

It is also recommended to set to zero the corresponding rows of the 𝑇𝑇 matrix, so that the
estimated error of this ambiguity does not affect anymore the other ambiguities. In order to
do this, it is sufficient to switch the value corresponding to the lost satellite in the 𝑇𝑇 matrix
from 1 to 0.

Loss of all the satellites


If all the satellites are lost, the system will proceed just by using its dynamics, thus

𝑋𝑋�𝑡𝑡 = 𝑋𝑋𝑡𝑡|𝑡𝑡−1 = 𝑇𝑇𝑡𝑡 𝑋𝑋�𝑡𝑡−1 (3.64)

Satellite addition
When a satellite 𝑠𝑠̅ that was not visible at time 𝑡𝑡 − 1 becomes visible at time 𝑡𝑡, its contribution
is added automatically to the 𝐻𝐻 matrix (if the satellite elevation is higher than a fixed cut-off
𝑝𝑝𝑠𝑠̅
�𝑟𝑟𝑟𝑟 (𝑡𝑡) and evaluate 𝜎𝜎𝑁𝑁� .
angle), but it is also necessary to estimate its initial ambiguity 𝑁𝑁

Since the evolution of ambiguities during time is controlled by the dynamic model as

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 + 1) = 𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡) (3.65)

it is necessary to set an initial ambiguity value at 𝑡𝑡 − 1, so that

𝑝𝑝 𝑠𝑠 𝑝𝑝 𝑠𝑠
𝑝𝑝𝑠𝑠 𝑝𝑝𝑠𝑠 𝜌𝜌 (𝑡𝑡|𝑡𝑡−1)−𝜆𝜆Φ 𝑟𝑟𝑟𝑟 (𝑡𝑡)
�𝑟𝑟𝑟𝑟
𝑁𝑁 �𝑟𝑟𝑟𝑟
(𝑡𝑡 − 1) ≔ 𝑁𝑁 (𝑡𝑡|𝑡𝑡 − 1) = 𝑟𝑟𝑟𝑟 (3.66)
𝜆𝜆

where

𝑝𝑝𝑠𝑠 𝑝𝑝 𝑝𝑝
𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) = �𝜌𝜌𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) − 𝜌𝜌𝑚𝑚 (𝑡𝑡)� − �𝜌𝜌𝑟𝑟𝑠𝑠 (𝑡𝑡|𝑡𝑡 − 1) − 𝜌𝜌𝑚𝑚
𝑠𝑠 (𝑡𝑡)�
(3.67)

2 2 2
𝜌𝜌𝑟𝑟𝑘𝑘 (𝑡𝑡|𝑡𝑡 − 1) = ��𝑋𝑋𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) − 𝑋𝑋𝑘𝑘 (𝑡𝑡)� + �𝑌𝑌𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) − 𝑌𝑌𝑘𝑘 (𝑡𝑡)� + �𝑍𝑍𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) − 𝑍𝑍𝑘𝑘 (𝑡𝑡)� (3.68)

46
Chapter 3 Kalman filtering in goGPS

𝑝𝑝𝑠𝑠
Alternatively, the code observations at time 𝑡𝑡 can be used to estimate 𝜌𝜌𝑟𝑟𝑟𝑟 (𝑡𝑡).

The covariance matrix 𝐶𝐶𝑡𝑡𝜀𝜀 will then be modified as

0 0 0 0 0 0 0 0 0 … 0
⎡ ⎤
0 𝜎𝜎𝑥𝑥̇2 0 0 0 0 0 0 0 … 0
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 … 0⎥
⎢0 0 0 𝜎𝜎𝑦𝑦̇2 0 0 0 0 0 … 0⎥
⎢0 0 0 0 0 0 0 0 0 … 0⎥
⎢ 𝜎𝜎𝑧𝑧̇2 0⎥
𝐶𝐶𝑡𝑡𝜀𝜀 = ⎢ 0 0 0 0 0 0 0 0 …
⎥ (3.69)
⎢ ⎥
⎢0 0 0 0 0 0 0 0 0 … 0⎥
⎢0 0 0 0 0 0 0 𝜎𝜎𝑁𝑁2� 0 … 0⎥
⎢0 0 0 0 0 0 0 0 0 … 0⎥
⎢⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ 0⎥
⎣0 0 0 0 0 0 0 0 0 … 0⎦

where 𝜎𝜎𝑁𝑁2� is placed in the column correspondent to the satellite 𝑠𝑠̅. Since the new ambiguity
estimation has a high level of uncertainty, its variance is computed as

𝜎𝜎𝜌𝜌�2
𝜎𝜎𝑁𝑁2� = 𝜆𝜆 2
(3.70)

where the variance 𝜎𝜎𝜌𝜌�2 is approximated as

𝜎𝜎𝑋𝑋2 𝑟𝑟 (𝑡𝑡|𝑡𝑡−1)+𝜎𝜎𝑌𝑌2𝑟𝑟 (𝑡𝑡|𝑡𝑡−1)+𝜎𝜎𝑍𝑍2𝑟𝑟 (𝑡𝑡|𝑡𝑡−1)


𝜎𝜎𝜌𝜌�2 = (3.71)
3

As an alternative, 𝜎𝜎𝑁𝑁2� can be given a very high value (e.g. 𝜎𝜎𝑁𝑁2� = 1000), since the estimation of
ambiguities usually converges rapidly.

Pivot change
The change of the pivot satellite (i.e. when a satellite reaches a higher elevation than the one
of the current pivot satellite) requires combined ambiguities to be referred to the new pivot.

Let us suppose a change of the pivot satellite at time 𝑡𝑡. Given the combined ambiguities
equations at time 𝑡𝑡 − 1, with pivot satellite 𝑝𝑝

47
Chapter 3 Kalman filtering in goGPS

𝑝𝑝1 𝑝𝑝 𝑝𝑝
(𝑡𝑡 (𝑁𝑁1 1)
⎧𝑁𝑁𝑟𝑟𝑟𝑟 − 1) = �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � − 𝑟𝑟 − 𝑁𝑁𝑚𝑚
𝑝𝑝𝑝𝑝 𝑝𝑝 𝑝𝑝 𝑞𝑞 𝑞𝑞
⎪𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1) = �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � − �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 �

⋮ (3.72)
𝑝𝑝𝑝𝑝
⎨𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1) = 0

⎪⋮ 𝑝𝑝𝑝𝑝 𝑝𝑝 𝑝𝑝
⎩𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1) = �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � − (𝑁𝑁𝑟𝑟𝑠𝑠 − 𝑁𝑁𝑚𝑚𝑠𝑠 )

the corresponding ambiguities with respect to the pivot satellite 𝑞𝑞 would be (at time 𝑡𝑡 − 1)

𝑞𝑞1 q 𝑞𝑞 𝑝𝑝1 𝑝𝑝𝑝𝑝


(𝑡𝑡 (𝑁𝑁1 1)
⎧𝑁𝑁𝑟𝑟𝑟𝑟 − 1) = �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � − 𝑟𝑟 − 𝑁𝑁𝑚𝑚 = 𝑁𝑁𝑟𝑟𝑟𝑟 − 𝑁𝑁𝑟𝑟𝑟𝑟
𝑞𝑞𝑞𝑞
⎪𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1) = 0

⋮ (3.73)
𝑞𝑞𝑞𝑞 𝑞𝑞 𝑞𝑞 𝑝𝑝 𝑝𝑝 𝑝𝑝𝑝𝑝
⎨𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1) = �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � − �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � = 0 − 𝑁𝑁𝑟𝑟𝑟𝑟

⎪⋮ 𝑞𝑞𝑞𝑞 𝑞𝑞 𝑞𝑞 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
⎩𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1) = �𝑁𝑁𝑟𝑟 − 𝑁𝑁𝑚𝑚 � − (𝑁𝑁𝑟𝑟𝑠𝑠 − 𝑁𝑁𝑚𝑚𝑠𝑠 ) = 𝑁𝑁𝑟𝑟𝑟𝑟 − 𝑁𝑁𝑟𝑟𝑟𝑟

Therefore the second set of equations can be obtained from the first one by using the
following transformation

𝑞𝑞1 𝑝𝑝1
⎡𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1)⎤ ⎡𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1)⎤
⎢ 𝑞𝑞2 ⎥ ⎢ 𝑝𝑝2 ⎥
𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1) = ⎢𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1)⎥ = 𝑅𝑅 ⎢𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1)⎥ = 𝑅𝑅𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1)
𝑞𝑞 𝑝𝑝
(3.74)
⎢ 𝑞𝑞𝑞𝑞 ⋮ ⎥ ⎢ 𝑝𝑝𝑝𝑝 ⋮ ⎥
⎣𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1)⎦ ⎣𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡 − 1)⎦

with 𝑅𝑅 defined as follows

1 0 0 ⋯ 0 −1 0 ⋯ ⋯ 0
⎡0 1 0 ⋯ 0 −1 0 ⋯ ⋯ 0⎤
⎢0 0 1 ⋱ ⋮ −1 ⋮ ⋮ ⋮ ⋮⎥
⎢ ⎥
⎢0 0 0 ⋱ 0 −1 ⋮ ⋮ ⋮ ⋮⎥
⋮ ⋮ ⋮ ⋱ 1 −1 ⋮ ⋮ ⋮ ⋮⎥
𝑅𝑅 = ⎢ (3.75)
⎢0 0 0 0 0 0 0 0 0 0⎥ pivot 𝑞𝑞 row
⎢⋮ ⋮ ⋮ ⋮ ⋮ −1 1 ⋱ ⋮ ⋮⎥
⎢0 0 0 0 0 −1 0 0 0 0⎥ pivot 𝑝𝑝 row
⎢⋮ ⋮ ⋮ ⋮ ⋮ −1 ⋮ ⋱ ⋱ 0⎥
⎣0 0 0 ⋯ 0 −1 0 ⋯ 0 1⎦

pivot 𝑞𝑞 column

Since initial ambiguities are transformed with equation (3.74), this transformation has to be
propagated to the covariance as

48
Chapter 3 Kalman filtering in goGPS

𝑒𝑒 𝐼𝐼 0 𝑒𝑒 𝐼𝐼 0 +
𝐶𝐶𝑡𝑡−1 =� � 𝐶𝐶 � � (3.76)
(𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑞𝑞) 0 𝑅𝑅 𝑡𝑡−1 (𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑝𝑝) 0 𝑅𝑅

𝑒𝑒
Now the new covariance matrix 𝐶𝐶𝑡𝑡−1 (𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑞𝑞)
is used along with the new ambiguity estimates

to compute the state vector of the KF at time 𝑡𝑡, as if in the previous epoch the pivot had been
the satellite 𝑞𝑞.

3.2.6. Cycle slips

Cycle slips are a fundamental aspect to deal with when trying to achieve high accuracy with
low cost GPS devices. Compared to high level receivers, carrier phase measurements coming
from this kind of sensors are subject to various measurement errors, such as multipath,
antenna phase center variation and noise due to the lower quality of the electronic
components involved (Takasu et al., 2008). These error sources, together with cycle slip
occurrences, severely deteriorate the achievable positional accuracy.

In goGPS the detection of cycle slips at time 𝑡𝑡 is performed by comparing the KF ambiguity
update at that time with an estimation of the number of cycle made on the basis of
observations. Since according to the goGPS KF dynamic model the number of cycles does not
change during time, then the updated ambiguity is

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
�𝑟𝑟𝑟𝑟
𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) = 𝑁𝑁 (𝑡𝑡 − 1) (3.77)

Its variance 𝜎𝜎𝑁𝑁2 𝑝𝑝𝑝𝑝 (𝑡𝑡|𝑡𝑡−1)


𝑒𝑒
is obtained from the covariance matrix 𝐶𝐶𝑡𝑡−1 𝑒𝑒
= 𝑇𝑇𝑡𝑡 𝐶𝐶𝑡𝑡−1 𝑇𝑇𝑡𝑡+ at the
𝑟𝑟𝑟𝑟

position that corresponds to the satellite 𝑠𝑠.

𝑝𝑝𝑝𝑝
�𝑟𝑟𝑟𝑟
The new estimation of 𝑁𝑁 (𝑡𝑡|𝑡𝑡 − 1) using observations at time 𝑡𝑡 is

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑝𝑝𝑝𝑝 𝜌𝜌 (𝑡𝑡|𝑡𝑡−1)−𝜆𝜆Φ 𝑟𝑟𝑟𝑟 (𝑡𝑡)
�𝑟𝑟𝑟𝑟
𝑁𝑁 (𝑡𝑡|𝑡𝑡 − 1) = 𝑟𝑟𝑟𝑟 (3.78)
𝜆𝜆

with its associated covariance 𝜎𝜎�𝑁𝑁2� 𝑝𝑝𝑝𝑝 (𝑡𝑡|𝑡𝑡−1)


= 𝜎𝜎𝜌𝜌�2 ⁄𝜆𝜆2 . See equation (3.71) for the computation of
𝑟𝑟𝑟𝑟

𝜎𝜎𝜌𝜌�2 .

Then the following test is applied in order to detect cycle slips

49
Chapter 3 Kalman filtering in goGPS

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
�𝑟𝑟𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1)� < 𝑚𝑚𝑚𝑚𝑚𝑚 �3𝜎𝜎 2 𝑝𝑝𝑝𝑝
�𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡|𝑡𝑡 − 1) − 𝑁𝑁 𝑁𝑁 (𝑡𝑡|𝑡𝑡−1)
, 3𝜎𝜎�𝑁𝑁2� 𝑝𝑝𝑝𝑝 (𝑡𝑡|𝑡𝑡−1)
� ⟹ no cycle slip
𝑟𝑟𝑟𝑟 𝑟𝑟𝑟𝑟

Alternatively, an empirical threshold value can be set (e.g. 10 cycles ≅ 2 m error).

If a cycle slip is detected, the corresponding satellite is treated as if it was added to the current
configuration at time 𝑡𝑡 (see paragraph 3.2.5 – Satellite addition).

If a cycle slip happens on the pivot satellite, then all double differences slip and all initial
ambiguities are re-initialized (the solution at time 𝑡𝑡 will then be mostly based on code
observations).

3.3. Generic line-constrained KF design


If it is known in advance that the navigated body is moving on a predefined path (e.g. a road, a
railway), then the KF can be adapted to work in a mono-dimensional space. Let us see at first a
generic line-constrained KF on a two-dimensional path, for the sake of simplicity of notation
and representation. The path is modeled as a broken line (Figure 3.3) that connects points of
known coordinates (𝑥𝑥𝑖𝑖 , 𝑦𝑦𝑖𝑖 ), with 𝑖𝑖 = 1,2, … , 𝑁𝑁.

A single mono-dimensional coordinate 𝑐𝑐 is used to model the body position, defined as a


distance from the origin of the line.

(𝑥𝑥2 , 𝑦𝑦2 ) (𝑥𝑥3 , 𝑦𝑦3 )


𝑐𝑐
(𝑥𝑥1 , 𝑦𝑦1 )

(𝑥𝑥0 , 𝑦𝑦0 )

Figure 3.3 Linear constraint modeled as a broken line

The distance between two consecutive points is given by

𝑑𝑑𝑖𝑖−1,𝑖𝑖 = �(𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖−1 )2 + (𝑦𝑦𝑖𝑖 − 𝑦𝑦𝑖𝑖−1 )2 (3.79)

50
Chapter 3 Kalman filtering in goGPS

The distance from each point to the origin (𝑥𝑥0 , 𝑦𝑦0 ), computed along the broken line, can be
written as

𝑐𝑐0 = 0
� (3.80)
𝑐𝑐𝑖𝑖 = ∑𝑖𝑖𝑗𝑗 =1 𝑑𝑑𝑗𝑗 −1,𝑗𝑗

Then the path can be defined as

𝑥𝑥 𝑖𝑖 −𝑥𝑥 𝑖𝑖−1
𝑥𝑥 = 𝑥𝑥𝑖𝑖−1 + (𝑐𝑐 − 𝑐𝑐𝑖𝑖−1 )
𝑑𝑑 𝑖𝑖−1,𝑖𝑖
� 𝑦𝑦 −𝑦𝑦 (3.81)
𝑦𝑦 = 𝑦𝑦𝑖𝑖−1 + 𝑖𝑖 𝑖𝑖−1 (𝑐𝑐 − 𝑐𝑐𝑖𝑖−1 )
𝑑𝑑 𝑖𝑖−1,𝑖𝑖

with 𝑐𝑐𝑖𝑖−1 < 𝑐𝑐 < 𝑐𝑐𝑖𝑖 .

Defining the state vector 𝑋𝑋𝑡𝑡 as

𝑐𝑐𝑡𝑡
𝑋𝑋𝑡𝑡 = �𝑐𝑐̇ � (3.82)
𝑡𝑡

and supposing a constant velocity motion, the KF mono-dimensional dynamic model becomes

𝑋𝑋𝑡𝑡+1 = 𝑇𝑇𝑋𝑋𝑡𝑡 (3.83)

where 𝑇𝑇 is

1 1
𝑇𝑇 = � � (3.84)
0 1

The observation equations describe the relationship between the 𝑐𝑐 coordinate and the
observations, which are for example the cartesian coordinates (𝑥𝑥𝑡𝑡 , 𝑦𝑦𝑡𝑡 ) on the plane at the
time 𝑡𝑡. They can be written as

𝑥𝑥𝑡𝑡𝑜𝑜 = 𝑥𝑥𝑡𝑡 + 𝜓𝜓𝑡𝑡𝑥𝑥


� 𝑦𝑦 (3.85)
𝑦𝑦𝑡𝑡𝑜𝑜 = 𝑦𝑦𝑡𝑡 + 𝜓𝜓𝑡𝑡

𝑦𝑦
where (𝑥𝑥𝑡𝑡𝑜𝑜 , 𝑦𝑦𝑡𝑡𝑜𝑜 ) are the observed coordinates and �𝜓𝜓𝑡𝑡𝑥𝑥 , 𝜓𝜓𝑡𝑡 � the corresponding measurement
noise.

By recalling equation (3.81), the observation equations are expressed as

51
Chapter 3 Kalman filtering in goGPS

𝑥𝑥 𝑖𝑖 −𝑥𝑥 𝑖𝑖−1 𝑥𝑥 𝑖𝑖 −𝑥𝑥 𝑖𝑖−1


𝑥𝑥𝑡𝑡𝑜𝑜 − 𝑥𝑥𝑖𝑖−1 + 𝑐𝑐 = 𝑐𝑐 + 𝜓𝜓𝑡𝑡𝑥𝑥
𝑑𝑑 𝑖𝑖−1,𝑖𝑖 𝑖𝑖−1 𝑑𝑑 𝑖𝑖−1,𝑖𝑖 𝑡𝑡
� 𝑦𝑦 −𝑦𝑦 𝑦𝑦 −𝑦𝑦 𝑦𝑦 (3.86)
𝑦𝑦𝑡𝑡𝑜𝑜 − 𝑦𝑦𝑖𝑖−1 + 𝑑𝑑𝑖𝑖 𝑖𝑖−1 𝑐𝑐𝑖𝑖−1 = 𝑑𝑑𝑖𝑖 𝑖𝑖−1 𝑐𝑐𝑡𝑡 + 𝜓𝜓𝑡𝑡
𝑖𝑖−1,𝑖𝑖 𝑖𝑖−1,𝑖𝑖

with 𝑐𝑐𝑖𝑖−1 < 𝑐𝑐𝑡𝑡 < 𝑐𝑐𝑖𝑖 , or in matrix notation as

𝑌𝑌𝑡𝑡 = 𝐻𝐻𝑡𝑡 𝑋𝑋 𝑡𝑡 + 𝜓𝜓 𝑡𝑡 (3.87)

where

𝑥𝑥 𝑖𝑖 −𝑥𝑥 𝑖𝑖−1
𝑥𝑥𝑡𝑡𝑜𝑜 − 𝑥𝑥𝑖𝑖−1 + 𝑐𝑐
𝑑𝑑 𝑖𝑖−1,𝑖𝑖 𝑖𝑖−1
𝑌𝑌𝑡𝑡 = � 𝑜𝑜 𝑦𝑦 𝑖𝑖 −𝑦𝑦 𝑖𝑖−1 � (3.88)
𝑦𝑦𝑡𝑡 − 𝑦𝑦𝑖𝑖−1 + 𝑑𝑑 𝑖𝑖−1,𝑖𝑖
𝑐𝑐 𝑖𝑖−1

𝑥𝑥 𝑖𝑖 −𝑥𝑥 𝑖𝑖−1
0
𝑑𝑑 𝑖𝑖−1,𝑖𝑖
𝐻𝐻𝑡𝑡 = �𝑦𝑦 𝑖𝑖 −𝑦𝑦 𝑖𝑖−1 � (3.89)
0
𝑑𝑑 𝑖𝑖−1,𝑖𝑖

and

𝜓𝜓𝑡𝑡𝑥𝑥
𝜓𝜓𝑡𝑡 = � 𝑦𝑦 � (3.90)
𝜓𝜓𝑡𝑡

3.4. goGPS line-constrained KF design


The introduction in the goGPS KF of a linear constraint requires to express the state vector 𝑋𝑋𝑡𝑡
in terms of the mono-dimensional coordinate 𝑐𝑐

𝑐𝑐𝑟𝑟 (𝑡𝑡)
⎡ ⎤
⎢ 𝑐𝑐̇𝑟𝑟 (𝑡𝑡) ⎥
⎢ 𝑝𝑝1 ⎥
𝑋𝑋 𝑡𝑡 = ⎢𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)⎥ (3.91)
⎢ ⋮ ⎥
⎢ ⎥
𝑝𝑝𝑝𝑝
⎣𝑁𝑁𝑟𝑟𝑟𝑟 (𝑡𝑡)⎦

52
Chapter 3 Kalman filtering in goGPS

Therefore, the 𝑇𝑇 matrix is built as

1 1 0 ⋯ 0
⎡ ⎤
0 1 0 ⋯ 0
⎢ ⎥
𝑇𝑇 = ⎢ ⎥ = �𝑇𝑇 0� (3.92)
⎢0 0 1 ⋯ 0⎥ 0 I
⎢⋮ ⋮ ⋮ ⋱ ⋮⎥
⎣0 0 0 0 1⎦

goGPS is designed to use three-dimensional paths, therefore when navigating with linear
constraints the DTM module is disabled. The observation vector 𝑌𝑌𝑡𝑡 is then composed by just
the code and phase parts.

(𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 )
𝑌𝑌𝑡𝑡
𝑌𝑌𝑡𝑡 = � (𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) � (3.93)
𝑌𝑌𝑡𝑡

where


(𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 ) 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑌𝑌𝑡𝑡 = �𝑃𝑃𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜔𝜔𝑟𝑟 𝑐𝑐̃𝑟𝑟 (𝑡𝑡) − 𝜌𝜌�𝑟𝑟𝑟𝑟 (𝑡𝑡)� (3.94)


(𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
𝑌𝑌𝑡𝑡 = �𝜆𝜆∅𝑟𝑟𝑟𝑟 (𝑡𝑡) + 𝜔𝜔𝑟𝑟 𝑐𝑐̃𝑟𝑟 (𝑡𝑡) − 𝜌𝜌�𝑟𝑟𝑟𝑟 (𝑡𝑡)� (3.95)

𝑝𝑝𝑝𝑝
∀𝑠𝑠 ≠ pivot satellite; 𝑠𝑠 represents visible satellites and 𝜔𝜔𝑟𝑟 is

𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝


𝜔𝜔𝑟𝑟 = 𝑚𝑚𝑥𝑥 𝑎𝑎𝑟𝑟 + 𝑚𝑚𝑦𝑦 𝑏𝑏𝑟𝑟 + 𝑚𝑚𝑧𝑧 𝑐𝑐𝑟𝑟 (3.96)

where

𝑥𝑥 𝑖𝑖 −𝑥𝑥 𝑖𝑖−1 𝑦𝑦 𝑖𝑖 −𝑦𝑦 𝑖𝑖−1 𝑧𝑧 𝑖𝑖 −𝑧𝑧 𝑖𝑖−1


 𝑚𝑚𝑥𝑥 = 𝑑𝑑 𝑖𝑖−1,𝑖𝑖
, 𝑚𝑚𝑦𝑦 = 𝑑𝑑 𝑖𝑖−1,𝑖𝑖
, 𝑚𝑚𝑧𝑧 = 𝑑𝑑 𝑖𝑖−1,𝑖𝑖
𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝 𝑝𝑝𝑝𝑝
 𝑎𝑎𝑟𝑟 , 𝑏𝑏𝑟𝑟 , 𝑐𝑐𝑟𝑟 defined as in equation (3.33)

The transformation matrices 𝐻𝐻 related to code and phase double differences then become

⋮ ⋮ ⋮ ⋮ ⋮
𝐻𝐻𝑡𝑡 (𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 )
= �ω𝑝𝑝𝑝𝑝
𝑟𝑟 (𝑡𝑡) 0 0 ⋯ 0� (3.97)
⋮ ⋮ ⋮ ⋮ ⋮

53
Chapter 3 Kalman filtering in goGPS

⋮ ⋮ ⋮ ⋮ ⋮ ⋮
𝐻𝐻𝑡𝑡 (𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎 ) = �ω𝑝𝑝𝑝𝑝
𝑟𝑟 (𝑡𝑡) 0 0 ⋯ 𝜆𝜆 0� (3.98)
⋮ ⋮ ⋮ ⋮ ⋮ ⋮

3.4.1. Line-constrained initialization

Since the KF initialization is still in three dimensions, the computed approximate coordinates
must be projected on the nearest point of the linear path. From this point onward, the
problem is simplified to one dimension and the body is forced to move along the linear path.

The initial state covariance matrix 𝐶𝐶0𝜀𝜀 is defined as

𝜎𝜎 2 0 0 0 0 … 0
⎡ 𝑐𝑐 ⎤
⎢0 𝜎𝜎𝑐𝑐̇2 0 0 0 … 0⎥
⎢ ⎥
⎢0 0 𝜎𝜎𝑁𝑁2� 0 0 … 0⎥
𝐶𝐶0𝜀𝜀 = ⎢ ⎥ (3.99)
⎢0 0 0 0 0 … 0⎥
⎢0 0 0 0 𝜎𝜎𝑁𝑁2� … 0⎥
⎢⋮ ⋮ ⋮ ⋮ ⋮ ⋱ 0⎥
⎣0 0 0 0 0 0 0⎦

where the error 𝜎𝜎𝑐𝑐2 is computed as an approximate propagation of the initial positioning errors
𝜎𝜎𝑥𝑥2 , 𝜎𝜎𝑦𝑦2 , 𝜎𝜎𝑧𝑧2 , neglecting cross-covariances

𝑚𝑚 𝑥𝑥2 𝜎𝜎𝑥𝑥2 +𝑚𝑚 𝑦𝑦2 𝜎𝜎𝑦𝑦2 +𝑚𝑚 𝑧𝑧2 𝜎𝜎𝑧𝑧2


𝜎𝜎𝑐𝑐2 = 2 (3.100)
�𝑚𝑚 𝑥𝑥2 +𝑚𝑚 𝑦𝑦2 +𝑚𝑚 𝑧𝑧2 �

Also in this case, a high velocity variance can be used to model the acceleration of a body that
starts moving from a stationary state.

54
Chapter 4.
goGPS test system design

The development of goGPS has been carried out in a MATLAB environment and, at the
moment, goGPS still needs a notebook with MATLAB installed in order to run (the plans for the
future are to rewrite goGPS in ANSI C, designing it to run on palmtop devices). Consequently,
the testing of goGPS requires the use of a complex system made of various devices connected
by different wired and wireless connections and exploiting different protocols and formats.
Three main segments compose the system: the rover segment (GPS receiver), the core
segment (goGPS running on a notebook) and the master segment (permanent station
broadcasting RTCM data through NTRIP protocol). Rover and core segments are connected by
wire through USB interface. Core and master segments have to communicate through the
Internet (Figure 4.1).

Figure 4.1 goGPS test system schema

55
Chapter 4 goGPS test system design

In order to get an Internet wireless connection while moving around, 3G technologies such as
GSM/GPRS and UMTS have been used. Since the notebook we used was not 3G-ready, the
Internet wireless connectivity was provided to it by using a 3G mobile phone connected by
USB cable (Figure 4.2).

The receiver used as a rover is the u-blox AEK-4T. The master segment is composed by a
permanent station belonging to GPSLOMBARDIA network of permanent GNSS stations and an
NTRIP caster broadcasting the station raw observations in RTCM 3.1 format. The next three
sections describe in detail the rover, master and core segments respectively.

Figure 4.2 goGPS test system architecture

4.1. Rover segment


The u-blox AEK-4T (Figure 4.3) is an evaluation kit produced by the Swiss company
u-blox [8]. It is based on the LEA-4T module (ANTARIS 4 GPS chipset), which provides both
processed data in NMEA 0183 format (NMEA, 2002) and raw GPS observations through a serial
port (COM or USB virtual COM ports).

56
Chapter 4 goGPS test system design

Figure 4.3 u-blox AEK-4T receiver with ANN-MS antenna

The former are provided in ASCII format, thus they can be read directly from the COM port and
used without decoding, while the latter are provided in u-blox proprietary UBX binary format.
The binary protocol is provided, therefore it is possible to acquire the binary stream, decode it
and read the GPS raw data (i.e. code pseudoranges, carrier phases with half-cycle ambiguity
resolved, C/N0 and Doppler measurements). The LEA-4T module is based on the 16 channel
ANTARIS 4 positioning engine, it supports up to 10 Hz raw measurement data output and 4 Hz
position update rate. It features u-blox SuperSense® technology that provides high sensitivity
(-158 dBm) for indoor GPS applications. The evaluation kit includes an ANN-MS active patch
antenna connected with a coaxial cable. The cost of the whole evaluation kit is €295, including
receiver, antenna, cables, CD with software and drivers and serial connector. The cost of the
single LEA-4T module is €145 [8].

4.2. Master segment


The GNSS permanent station used as a stationary reference for the relative positioning is
located on the rooftop of the university building in Como and it is composed by a TopCon TPS
E_GGD receiver and a TopCon TPSCR3_GGD antenna with conical dome (Figure 4.4). It belongs
to GPSLombardia positioning service [9], which makes use of a network of 18 GNSS permanent
stations distributed throughout the Lombardy region in Italy with a mean reciprocal distance
of about 50 km (Figure 4.5).

57
Chapter 4 goGPS test system design

Figure 4.4 The GNSS permanent station in Como

In 2003 an agreement was subscribed by Regione Lombardia, Istituto di Ricerca per l’Ecologia e
l’Economia applicate alle Aree Alpine (IREALP, a research institute funded by Regione
Lombardia) and Politecnico di Milano for the realization of a regional positioning service (Biagi
et al., 2003). In 2005 the implementation of GPSLombardia was completed, it has been
declared fully operational and it has started the distribution of data and products.
GPSLombardia provides users with permanent station raw observations in RINEX format (for
post-processing applications) and it broadcasts differential corrections both for DGPS and RTK
use (for real-time applications). In particular, data are sent through the Internet by the service
control center (managed by IREALP) both by hourly compressed RINEX files and by real-time
RTCM streams. FKP and VRS are the network phase real-time products provided to the users:
the first is transmitted by RTCM 2.3, the second also by RTCM 3.0 (RTCM, 2001, 2004);
moreover the single station code corrections (DGPS) are available; the NTRIP (AA.VV., 2004)
protocol is adopted for all real-time products. The RINEX data of the permanent stations are
available both by an interactive webpage and by FTP connection (Biagi et al., 2007) [9].

58
Chapter 4 goGPS test system design

Figure 4.5 GPSLombardia network of permanent GNSS stations

In order to let us test goGPS, GPSLombardia has activated a specific service that broadcasts
Como permanent station raw observations with 1 Hz frequency in RTCM 3.1 format (RTCM,
2006).

4.3. Core segment


The core segment is composed by goGPS running on a notebook with MATLAB installed. The
notebook used during the tests mounts an Intel® Core™ 2 CPU T550 at 1.66 GHz with 2GB of
RAM. goGPS is designed to run either in real-time or in post-processing mode. In real-time
mode (Figure 4.6) the two streams coming from the AEK-4T and from GPSLombardia are
acquired and decoded. They are synchronized using the time GPS information and their raw
data are then fed to the KF algorithm. In real-time mode ultra-rapid ephemerides are read
from the GPSLombardia stream (RTCM 1019 message). In post-processing mode it is possible
to read either RINEX files or data previously logged by goGPS during a real-time session, so
that it is possible to test different settings or tune parameters. In order to obtain RINEX files
from the AEK-4T the Kinematic software package [13] has been used, while the master station

59
Chapter 4 goGPS test system design

RINEX files are available for download from GPSLombardia website (decompression and
merger of hourly files could be needed).

Once raw data have been acquired, they are passed to goGPS KF algorithm, which includes an
initialization part that is executed just at the first epoch and an iterative algorithm executed at
every epoch.

Figure 4.6 goGPS functioning flow chart (real-time mode)

The KF initialization part includes a selection of the satellites that are visible by both the rover
and the master and that have at least the code signal available. Then an initial positioning is
performed by means of the Bancroft algorithm (Bancroft, 1985), used as an approximate

60
Chapter 4 goGPS test system design

position to apply twice linearized least-squares adjustment on code double differences in


order to obtain a sufficiently good estimation of the rover starting point and an estimate of the
position error covariance. The initialization of the KF state vector is then performed using the
estimated rover position, setting starting velocities to zero (i.e. assuming that the rover is still)
and estimating initial ambiguities by comparing phase double differences with code double
differences. The KF initialization is then concluded by the definition of the initial state
covariance matrix.

The KF iterative part starts with the initialization of the model covariance matrix, then a
selection of the satellites in common between rover and master is performed, followed by the
computation of a suitable approximate position that will be used to linearize the observations.
The following step is the extraction of the observed height from the DTM in correspondence of
the approximate point. The DTM was a priori divided into tiles to avoid the loading of large
datasets; the tile containing the approximate point is detected, it is loaded together with a
buffer of the eight surrounding tiles, and the observed height is computed by a bilinear
interpolation of the four nearest nodes of the DTM grid. At this point the KF observation
equations are constructed by combining the code, phase and DTM observations in block
matrices. Note that the number of code observations is in general higher than the number of
phase observations, because sometimes only code observations are available (especially in the
case of the rover). The observation covariance matrix is built by combining the variances of the
observations and by applying suitable weights as functions of the elevation and the C/N0 of
the satellites (see section 3.2.3). Satellite configuration changes (i.e. satellite additions/losses,
cycle slips, pivot changes) are then checked and the procedures described in sections 3.2.5,
3.2.6 are applied. Each KF iteration is concluded by the application of the actual KF filter (see
section 3.1).

Once the KF positioning of the rover is obtained, the goGPS main panel is updated with a
visualization of the last N positions (where N is a parameter), the current skyplot and a chart
with C/N0 values. In Figure 4.7 the plotted positions are displayed with different colors
corresponding to the different events that happened at each epoch: blue dots for epochs with
no events, black dots for satellite additions, red dots for satellite losses, magenta dots for pivot
changes and green dots for cycle slips. Additionally there is the “yellow dot” case (not

61
Chapter 4 goGPS test system design

displayed in figure) for positions computed just by the KF dynamic model, which happens
when the number of satellites is not sufficient to perform a normal positioning.

Figure 4.7 goGPS main panel

The skyplot displays blue dots for satellites that have both code and phase signals available,
green dots for satellites with code signal only and magenta dots for satellites under the cut-off
threshold (displayed by a red line). Moreover, goGPS can optionally display data on Google
Earth epoch by epoch (Figure 4.8).

62
Chapter 4 goGPS test system design

Figure 4.8 goGPS positioning plotted on Google Earth

4.4. Communication formats


The three segments described in the previous section communicate by means of two streams
with different formats. goGPS receives raw data from the AEK-4T receiver through a USB port
in u-blox proprietary UBX binary format [14]; its main characteristics are described in section
4.4.1. The master station raw data and ephemerides are instead received through the Internet
(TCP/IP protocol, exploiting an UMTS connection) in RTCM 3.1 format, described in section
4.4.2, although in principle the ephemerides (broadcast ones) could be directly read from the
AEK-4T receiver.

4.4.1. UBX-RXM-RAW through USB COM port

The basic structure of UBX messages is represented in Figure 4.9.

63
Chapter 4 goGPS test system design

SYNC SYNC
CHAR CHAR CLASS ID LENGTH PAYLOAD CK_A CK_B
1 2

Checksum range

Figure 4.9 UBX message structure

The bytes SYNC CHAR 1 and SYNC CHAR 2 define the message start and correspond to
the strings 10110101 and 01100010 (respectively 181 and 98 in decimal format, which
correspond to “µ” in ISO 8859.1 and “b” in ASCII). The next 2 bytes define the message class
and the message identification (message ID). The next field is LENGTH (2 bytes), which
represents the length in bytes of the PAYLOAD. The PAYLOAD contains the main information,
that is the content of the message. Each message ends with the checksum bytes CK_A e
CK_B, which are calculated by an 8-Bit Fletcher algorithm (Fletcher, 1982).

Fields with a length greater than 1 byte are organized according to a Little Endian convention:
the first byte is the less significant one and the last byte is the more significant one. This has no
consequence on the bit order inside bytes (which is instead determined by the data type).

In order to manage correctly all the values that data can assume, the UBX protocol uses nine
data types (Table 4.1).

Table 4.1 UBX data types

Code Type Bytes n.

U1 Unsigned Char 1
I1 Signed Char 1 two’s complement
U2 Unsigned Short 2
I2 Signed Short 2 two’s complement
U4 Unsigned Long 4
I4 Signed Long 4 two’s complement
R4 IEEE 754 Single Precision 4 floating point
R8 IEEE 754 Double Precision 8 floating point
CH ASCII / ISO 8859.1 1

64
Chapter 4 goGPS test system design

UBX messages are divided in the following nine classes:

 NAV (hexadecimal code 0x01) Navigational Results: position, velocity, time, accuracy,
heading, DOP (Dilution Of Precision), satellites available;
 RXM (0x02) Receiver Manager Messages: pseudoranges, average C/N0, channel status;
 INF (0x04) Informative Message: printf-style messages, with ids such as Error, Warning,
Notice;
 ACK (0x05) Acknowledgement/NotAcknowledgement messages as replies to configuration
input messages;
 CFG (0x06) Configuration Input Messages: set dynamic model, set DOP mask;
 UPD (0x09) Firmware Update Messages;
 MON (0x0A) Monitor Messages: stack usage, communication status, CPU load, task status;
 AID (0x0B) Navigation Aiding: ephemerides, almanac feeds;
 TIM (0x0D) Timing Messages: timepulse output, timemark results.

At the moment goGPS exploits just the RXM class, and in particular the RXM-RAW sub-class
messages, in order to obtain code and phase pseudoranges and C/N0. The structure of each
RXM-RAW message is reported in Table 4.2.

Table 4.2 Description of the UBX-RXM-RAW message

Message RXM – RAW (0x02 0x10)

Description Raw Measurement Data

This message contains all information needed to be able to generate a


Comment
RINEX file

Header ID Length Payload Checksum

Message structure 0x02 8 + NSV ·


0xB5 0x62 0x10 8 + NSV · 24 24 bytes CK_A CK_B

Payload contents:

Offset Format Name Unit Purpose / Comment

0 I4 ITOW ms GPS week in integer milliseconds (receiver


time)

4 I2 WEEK weeks GPS week number

65
Chapter 4 goGPS test system design

6 U1 NSV - Number of visible satellites

7 U1 RES1 - Reserved

Start of repeated block (NSV times):

8 + N·24 R8 CPMes L1 cycles Carrier phase measurement (CP)

16 + N·24 R8 PRMes m Code pseudorange (PR)

24 + N·24 R4 DOMes Hz Doppler measurement (DO)

28 + N·24 U1 SV - Satellite number

29 + N·24 I1 MesQI - Nav Measurements Quality Indicator:


>=4 : PR+DO OK
>=5 : PR+DO+CP OK
<6 : likely loss of carrier lock in previous
interval
30 + N·24 I1 CNO dbHz C/N0

31 + N·24 U1 LLI - Loss of lock indicator (RINEX definition)

The offset of each field represents the number of bytes between the first bit of the payload
(offset zero) and the beginning of the field.

4.4.2. RTCM 3.1 via NTRIP through TCP/IP port

The software used as NTRIP client during the tests is GNSS Internet Radio [14]. It is
automatically started and closed by goGPS whenever it needs it: this means at the beginning
and at the end of a real-time session, but also during the session itself if GNSS Internet Radio
has lost the connection with the NTRIP caster. This event is automatically detected and
managed by goGPS.

When GNSS Internet Radio is running correctly, it writes the RTCM stream on the IP address of
the machine. goGPS retrieves automatically the address and it starts the stream acquisition
and decoding.

The RTCM transport layer is defined as a structure (Figure 4.10) in which all messages are
encapsulated before the transmission:

66
Chapter 4 goGPS test system design

PREAMBLE RESERVED LENGTH DATA MESSAGE CRC

Figure 4.10 RTCM message structure

The PREAMBLE field is a fixed sequence of 8 bits: 11010011. The next 6 bits are reserved and
are temporarily set to 0. In the future they will contain the version number of the RTCM
standard. The field LENGTH is 10 bits long and it defines the length of the message content
(DATA MESSAGE) in bytes. The last 24 bits are parity bits computed by a CRC algorithm
(QualComm – detailed in RTCM, 2006); they are used to check for random errors and
transmission bursts.

Unlike other protocols that use the byte as the smallest memory unit, RTCM 3.1 is a bit-based
protocol: this allows to reduce the overall size of the message, thus at the same transmission
velocity the bit-rate is increased. Table 4.3 summarizes the available RTCM 3.1 message with
their content.

Table 4.3 RTCM 3.1 messages (1001 – 1020)

Observations 1001
GPS L1
1002
1003
GPS L1/L2
1004
1009
GLONASS L1
1010
1011
GLONASS L1/L2
1012
Reference station position 1005
1006
Antenna parameters 1007
1008
Network corrections Network auxiliary station data 1014
Ionospheric corrections 1015
Geometric corrections 1016
Combined ionospheric and geometric 1017
corrections

67
Chapter 4 goGPS test system design

Auxiliary information System parameters 1013


1019
Satellite ephemerides
1020

The stream broadcast by GPSLombardia ad hoc for goGPS include the 1002, 1006 and 1019
messages in RTCM 3.1 format.

The 1002 message (Table 4.4) contains raw pseudoranges of code and L1 phase, sent at a
frequency of 1 Hz.

Table 4.4 RTCM 1002 message structure

FIELD TYPE
Message number uint12
( “1002” = 0011 1110 1010)
Reference station ID uint12
(e.g. COMO is “6” = 0000 0000 0110)
GPS epoch time uint30
Synchronous GNSS message flag bit(1)
Num. of GPS satellites (NSV) uint5
GPS divergence-free smoothing indicator bit(1)
GPS smoothing interval bit(3)
Start of blocks repeated NSV times

GPS satellite ID uint6


GPS L1 code indicator bit(1)
GPS L1 pseudorange (code) uint24
GPS L1 phase (phaserange – pseudorange) int20
GPS L1 lock time indicator uint7
GPS Integer L1 pseudorange modulus ambiguity uint8
GPS L1 C/N0 uint8

The GPSLombardia stream sends the 1019 message once every second as the rover is first
connected. Each message contains the ephemerides of one of the satellites that are visible by
the reference station. When the NTRIP caster has sent ephemerides of all the satellites it stops
sending the 1019 message up to the next cycle of ephemerides update (at the moment, once
every 20 seconds). This configuration of the test RTCM stream causes goGPS to wait some

68
Chapter 4 goGPS test system design

seconds when it is first started up in order to receive the ephemerides of all the visible
satellites. Only when it has received all of them it performs the first positioning. In Table 4.5
the 1019 message structure is reported.

Table 4.5 RTCM 1019 message structure

FIELD TYPE NOTES


Message number uint12 -
(e.g. “1019” = 0011 1111 1011)
Satellite ID uint6 -

GPS week uint10 -

GPS SV accuracy uint4 -

GPS code on L2 bit(2) -

GPS IDOT uint14 Rate of inclination angle

GPS IODE uint8 Issue of data (Ephemeris)

GPS toc uint16 Ephemeris reference time

GPS Af2 int8 Clock drift rate

GPS Af1 int16 Clock drift

GPS Af0 int22 Clock bias

GPS IODC uint10 Issue of data (clock)

GPS Crs uint16 Amplitude of the sine correction term to the orbit radius

GPS ∆n uint16 Mean motion difference from computed value

GPS M0 int32 Mean Anomaly at reference time

GPS Cuc int16 Ampl. of the cosine correction term to the argument of lat.

GPS e Eccentricity

GPS Cus Amplitude of the sine correction term to the argument of lat.

GPS √A uint32 Square root of semimajor axis

GPS toe uint16 Time of ephemeris

GPS Cic int16 Amplitude of the cosine correction term to the angle of inclin.

GPS Ω0 int32 Longitude of ascending node of orbit planet at weekly epoch

GPS Cis int16 Amplitude of the sine correction term to the angle of incl.

GPS i0 int32 Inclination angle at reference time

GPS Crc int16 Amplitude of the cosine correction term to the orbit radius

GPS ω int32 Argument of perigee

GPS OMEGADOT int24 Rate of right ascension

GPS tGD int8 -

GPS SV HEALTH uint6 -

GPS L2 data flag bit(1) -

GPS Fit Interval (bit1) -

69
Chapter 4 goGPS test system design

For details about how to compute satellite positions on the basis of the orbital parameters
contained in this message, see Leick (1995).

The RTCM test stream sends also the 1006 message, but at the moment goGPS does not use it,
since all the tests have been executed around the Como permanent station and the station
coordinates have been set as constant variables in the software for the sake of simplicity. In
principle goGPS should send its position to the network control center, which then detects the
closest permanent station and sends back to goGPS the corresponding observations. VRS could
also be used.

4.5. Stream synchronization


Once the UBX stream from the AEK-4T and the RTCM stream from GPSLombardia are received
they have to be synchronized epoch by epoch (on the basis of the GPS time information
contained in both streams) in order to let goGPS perform a real-time solution.

When goGPS is started, it waits until it receives the first UBX data message (after the header
message, which is out of interest). When it is received, the receiving time is chosen as the
starting epoch of an absolute timing that will be used to determine the following arrival and
waiting times for each packet of the two streams. goGPS then waits up to 0.9 seconds listening
to the TCP/IP port to let all the RTCM messages arrive (Figure 4.11). Once they have arrived,
goGPS has checked that both streams are functioning correctly, then it starts with the actual
data decoding and storing at a frequency of 1 Hz. At each second the messages from the two
streams are decoded, synchronized and stored into two separate buffers of N epochs, with N
an arbitrary parameter (Figure 4.12). These buffers are used to manage all the events that
cause the delay of some of the messages, such as slowdowns of the host system, of the
Internet connection, of the AEK-4T receiver communicating on the USB port, etc. Since very
often the AEK-4T receiver stops transmitting for 16 epochs and then it sends all the packets
together, it is wise to choose a buffer dimension of at least N=16.

70
Chapter 4 goGPS test system design

Figure 4.11 goGPS stream initialization

Figure 4.12 goGPS stream details

71
Chapter 5.
Tests and results

This chapter describes the tests that were performed in order to assess the measurement
quality of the u-blox AEK-4T evaluation kit, calibrate goGPS parameters and analyze goGPS
accuracy with respect to GPS devices of different quality levels (and costs). As for the AEK-4T
quality assessment and the goGPS parameter calibration just this receiver with its standard
antenna (see section 4.1) and the Como permanent station (see section 4.2) have been used in
short baseline tests. As regards the accuracy assessment, the GPS devices that have been used
in the comparison include one double frequency RTK-capable receiver (Leica GPS System
1200), one single frequency professional DGPS-capable receiver (Leica GS20) and two low cost
Bluetooth receivers (eBonTek eGPS597 and TomTom MKII). The double frequency receiver has
been used as a reference to compute the accuracies of the other devices.

5.1. Instrumentation
In this section the GPS devices that were used during the accuracy assessment tests are shortly
described in their main characteristics.

5.1.1. Leica GPS System 1200

The Leica GPS System 1200 (from now on GPS1200, Figure 5.1 on the left) is composed by a
GX1230 receiver, an AX1202 GG antenna, an RX1210 controller and a GSM modem. It is
capable of acquiring and using double frequency GPS signals and it can connect to an RTCM

72
Chapter 5 Tests and results

broadcaster via the GSM network to perform RTK positioning. During the tests described in
this chapter it was connected to one of GPSLombardia VRS RTK services, normally providing
results with centimeter-level accuracy (Biagi et al., 2006). GPS1200 units provide a quality
index called 3DCQ (three dimensional coordinate quality) that was used during the tests to
identify not sufficiently accurate epochs in order to remove them from the accuracy analysis.

Figure 5.1 Leica GPS1200 (left) and Leica GS20 (right)

5.1.2. Leica GS20

The Leica GS20 (Figure 5.1 on the right) is a single frequency GPS receiver designed mainly for
GIS field survey and map updating. It has an internal antenna, but it can also exploit an AT501
external antenna connected by cable. Its data can be saved directly in ESRI shapefile format or
they can be output on a serial port in NMEA format.

5.1.3. eBonTek eGPS 597

The eBonTek eGPS 597 (Figure 5.2 on the left) is a Bluetooth GPS unit made by the Taiwanese
company eBonTek [15]. It is based on the ANTARIS 4 GPS chipset and it can use single
frequency GPS signals and SBAS (WAAS/EGNOS). It features a 16 channels correlation engine
and a built-in patch antenna.

Figure 5.2 eBonTek eGPS597 (left) and TomTom MKII (right)

73
Chapter 5 Tests and results

5.1.4. TomTom MKII

The TomTom MKII (Figure 5.2 on the right) is a Bluetooth GPS unit produced by the TomTom
company [16]. It is based on the SiRF Star III GPS chipset and it can use single frequency GPS
signals. It features a 20 channels correlation engine and a built-in helix antenna.

5.2. Short baseline test


In order to study the behavior and quality of the data received by the AEK-4T, without
interferences given by the rover motion or by its distance from the master station, a short
baseline test has been performed, leaving the AEK-4T antenna stationary on a metallic pillar
during a period of about 8 h 30 m at a distance of 6.68 m from the Como permanent station
(Figure 5.3) on the rooftop of the university building.

Figure 5.3 AEK-4T antenna positioned for short baseline test

The coordinates of the metallic pillar are known with an accuracy of about 0.5 cm (measured
with a double frequency receiver in static mode, post-processed with DD with respect to the
Como permanent station).

74
Chapter 5 Tests and results

Code and phase observations from both the AEK-4T and the permanent station were
processed with DD, therefore the available epochs were filtered to obtain only the
synchronized epochs that are in common to both instruments. This filtering produced a total of
28577 synchronized epochs, corresponding to a time span of 7 h 56 m 17 s. In Figure 5.4 the
results of the DD code error analysis for satellites 6 and 3 are reported as examples.

code error (6,3), mean=-0.235 std=2.626


20

-20
0 2000 4000 6000 8000 10000 12000
elevation sat.6 (blue) - sat.3 (red)
100

50

0
0 2000 4000 6000 8000 10000 12000
S/N ratio sat.6M (blue) - sat.3M (red) - sat.6R (cyan) - sat.3R (magenta)
60

40

20
0 2000 4000 6000 8000 10000 12000
R(6,M)=0.934 - R(3,M)=0.914 - R(6,R)=-0.629 - R(3,R)=-0.474

Figure 5.4 Example of noise analysis on DD code observations

In the upper part the DD code errors are plotted, with their mean value and standard
deviation; in the central part the elevation values of the two satellites during the synchronized
epochs are represented (blue line for satellite 6, red line for satellite 3 – jumps in the elevation
plot are due to data gaps from one of the two satellites involved in the DD); in the lower part
there is the plot of the C/N0 values for the two satellites, as received both by the master
station (blue for 6, red for 3) and the rover receiver (cyan for 6, magenta for 3). The correlation
between elevation and C/N0 has been computed for both master (M) and AEK-4T (R) and for
both satellites: it is displayed at the bottom of the figure (denoted with the letter R) and it

75
Chapter 5 Tests and results

shows a high correlation for the master (about 0.9) and no significant correlation for the
AEK-4T.

A first screening of the results highlighted some outliers in correspondence to unusually low
C/N0 values for the AEK-4T (Figure 5.5). In order to remove these outliers, a threshold of 30
dBHz on C/N0 for both the rover and the master data has been used on all the following tests.
Figure 5.6 shows the same results of Figure 5.5 after the removal of the epochs with outliers.

4
x 10 code error (19,3), mean=403.343 std=1560.725
1

-1
0 2000 4000 6000 8000 10000 12000
elevation sat.19 (blue) - sat.3 (red)
100

50

0
0 2000 4000 6000 8000 10000 12000
S/N ratio sat.19M (blue) - sat.3M (red) - sat.19R (cyan) - sat.3R (magenta)
60

40

20
0 2000 4000 6000 8000 10000 12000
R(19,M)=0.931 - R(3,M)=0.938 - R(19,R)=0.217 - R(3,R)=-0.270

Figure 5.5 Outliers in DD code errors due to very low C/N0

Even if no particular problems were associated to low elevation angles, and even if from the
university rooftop there are no particular obstacles above the zero-degree horizon (apart from
hills naturally cutting off some degrees above it), it has been decided to set a minimum cutoff
of 10° on elevation. This was due to the fact that in usual situations these elevation angles
often present obstacles such as buildings and trees, therefore measurements performed
within this range are usually removed.

76
Chapter 5 Tests and results

code error (19,3), mean=0.159 std=2.453


10

-10
0 2000 4000 6000 8000 10000 12000
elevation sat.19 (blue) - sat.3 (red)
100

50

0
0 2000 4000 6000 8000 10000 12000
S/N ratio sat.19M (blue) - sat.3M (red) - sat.19R (cyan) - sat.3R (magenta)
60

40

20
0 2000 4000 6000 8000 10000 12000
R(19,M)=0.920 - R(3,M)=0.938 - R(19,R)=-0.561 - R(3,R)=-0.277

Figure 5.6 DD code errors after outlier removal

5.2.1. Double differenced AEK-4T code quality

The assessment of the double differenced code quality has been performed by computing
overall mean value and standard deviation of the DD code errors. The error has been
estimated by calculating the difference between the observed DD measurement and the one
computed by knowing the true position of the AEK-4T antenna. In the case of a so short
baseline, the satellite position errors can be neglected. The computation was performed on all
the data, taking into account the aforementioned C/N0 and elevation filters (30 dBHz and 10°
respectively). This led to a number of 795856 samples of DD code error. The resulting mean
value, standard deviation and RMSE are listed in Table 5.1.

Table 5.1 Overall short baseline DD AEK-4T code quality

Mean [m] Std. Deviation [m] RMSE [m] Num. of samples


0.565 2.982 3.035 795856

77
Chapter 5 Tests and results

The AEK-4T DD code measurement errors show an overall RMSE of about 3 m. The error
distribution, which looks like a Gaussian distribution, is not centered on zero, but it presents a
bias of about 60 cm (Figure 5.7).

Figure 5.7 DD code error distribution

This bias can create problems when estimating phase ambiguities from code data, being the
carrier wavelength of the order of 20 cm.

5.2.2. Double differenced AEK-4T phase quality

The AEK-4T phase measurements are affected by some more issues than code measurements.
Particularly, DD phase errors plots reveal trends and discontinuities (Figure 5.8), probably due
to AEK-4T clock drift errors and/or cycle slips (Odijk et al., 2007 describe in details the discrete
jumps applied by an ANTARIS-based GPS receiver to adjust its clock reading). In order to obtain
a rough estimation of the DD phase error standard deviation, these jumps have been removed
by shifting the error values after each jump by a quantity corresponding to the jump itself. This
operation left just a trend, which for some couples of satellites was a decreasing one (Figure
5.9), for others an increasing one (Figure 5.10). The phase double difference equation (see
section 1.3.2) would lead to think that constant time series would be obtained over long time
periods after removing cycle slips; the physical phenomena producing this behavior are still
not clear and they are going be investigated thoroughly in future developments. These trends

78
Chapter 5 Tests and results

have been removed by fitting the data with a three degree polynomial, which was then
subtracted from the data, with the aim of obtaining a zero-mean time series.

phase error (3,6), mean=4.736 std=1.495


10

0
0 2000 4000 6000 8000 10000 12000
elevation sat.3 (blue) - sat.6 (red)
100

50

0
0 2000 4000 6000 8000 10000 12000
S/N ratio sat.3M (blue) - sat.6M (red) - sat.3R (cyan) - sat.6R (magenta)
60

40

20
0 2000 4000 6000 8000 10000 12000
R(3,M)=0.914 - R(6,M)=0.934 - R(3,R)=-0.474 - R(6,R)=-0.629

Figure 5.8 Discontinuities of DD phase errors

phase error (3,6), mean=-0.676 std=1.508


5

-5
0 2000 4000 6000 8000 10000 12000
Figure 5.9 Example of decreasing trend after DD phase error discontinuity removal

79
Chapter 5 Tests and results

phase error (3,19), mean=21.074 std=12.368


40

20

-20
0 2000 4000 6000 8000 10000 12000
Figure 5.10 Example of increasing trend after DD phase error discontinuity removal

The obtained time series (Figure 5.11) still presented some systematical effects (an example of
covariance function on one of these time series is reported in Figure 5.12). In future
developments, spline fitting could be used to remove this kind of trends in order to be able to
better estimate the DD phase standard deviation. Moreover, this time correlation should be
modeled and introduced in the Kalman filter.

phase error (3,6), mean=0.000 std=0.046


0.2

-0.2
0 2000 4000 6000 8000 10000 12000
Figure 5.11 DD phase error time series for satellites 3,6

-3
x 10
2.5

1.5

0.5

-0.5

-1
0 2000 4000 6000 8000 10000 12000

Figure 5.12 DD phase error covariance function for satellites 3,6

80
Chapter 5 Tests and results

Taking into account that

1. the resulting systematical effects have periods of the order of magnitude of thousands
of epochs,
2. when using the AEK-4T in real life situations the occurrence of cycle slips is very high
(e.g. in Figure 4.7 the green dots correspond to epochs were at least one cycle slip was
detected),
3. goGPS reinitializes ambiguity estimation at each cycle slip,

it was considered sufficient to get a first rough estimation of the DD phase error standard
deviation by excluding epochs with unusual behavior by hand. The results are reported in
Table 5.2.

Table 5.2 Short baseline DD AEK-4T phase quality (rough estimation)

Mean [m] Std. Deviation [m] RMSE [m] Num. of samples


0.000 0.032 0.032 32668

5.2.3. Elevation and C/N0 weight calibration

Weights to be assigned to measurements have been calibrated by analyzing the variation of


the code error as a function of the elevation and C/N0 of the satellites. Only C/N0 values
acquired from the rover have been considered, because the observation quality of the
permanent station receiver is definitively higher. The available epochs have been subdivided
into different classes on the basis of elevation and C/N0 ranges. Eight elevation classes (each
one spanning 10°, from a minimum of 10° to the zenith) and five C/N0 classes (each one
spanning 5 dBHz, from a minimum of 30 dBHz to 55 dBHz) have been considered for both the
satellites used in each combination of the double differences. The mean value and the
standard deviation of the errors have been computed for each combination of classes. Then
the RMSE has been computed as a unique quality index for each combination of elevation or
C/N0 classes. The RMSEs resulting from the analysis of the DD errors for the different C/N0
combinations for the two satellites involved in the DD (and considering an elevation cutoff of
10°) are reported in Table 5.3 and graphically represented in Figure 5.13. The error behavior is
clearly decreasing as the C/N0 increases, apart from an anomalous case in correspondence to
30 ≤ C/N0 < 35 for the first satellite and 35 ≤ C/N0 < 40 for the second satellite. This anomaly is

81
Chapter 5 Tests and results

probably to be due to the low number of samples that are available for this combination of
C/N0 ranges (Table 5.4).

Table 5.3 Short baseline RMSE values computed by C/N0 classes [m]

30 ≤ C/N01 < 35 35 ≤ C/N01 < 40 40 ≤ C/N01 < 45 45 ≤ C/N01 < 50 50 ≤ C/N01 < 55
30 ≤ C/N02 < 35 9.041 5.445 8.577 9.482 9.173
35 ≤ C/N02 < 40 5.445 4.343 5.176 5.641 5.812
40 ≤ C/N02 < 45 8.577 5.176 3.073 3.127 3.420
45 ≤ C/N02 < 50 9.482 5.641 3.127 2.724 2.902
50 ≤ C/N02 < 55 9.173 5.812 3.420 2.902 2.713

Table 5.4 Short baseline number of samples by C/N0 classes [m]

30 ≤ C/N01 < 35 35 ≤ C/N01 < 40 40 ≤ C/N01 < 45 45 ≤ C/N01 < 50 50 ≤ C/N01 < 55
30 ≤ C/N02 < 35 6 22 469 593 37
35 ≤ C/N02 < 40 22 152 4705 12869 598
40 ≤ C/N02 < 45 469 4705 109018 311068 12721
45 ≤ C/N02 < 50 593 12869 311068 747464 24062
50 ≤ C/N02 < 55 37 598 12721 24062 784

8
10

8 7
RMSE [m]

6 6

4 5
30
2
35 4
30
35 40
40 45
45 3
50 50 C/N0 satellite 2 [dBHz]
C/N0 satellite 1 [dBHz]

Figure 5.13 Plot of short baseline RMSE values computed by C/N0 classes

82
Chapter 5 Tests and results

In order to properly weight measurements on the basis of their C/N0, a function has been
conceived that fits well enough the resulting RMSE values for the different combinations of
C/N0 ranges. The following function has been specifically formulated to follow the behavior of
the code error as a function of C/N0 values

⎧10−(𝐶𝐶𝐶𝐶 0−𝑠𝑠1) ��
𝐴𝐴
− 1�
𝐶𝐶𝐶𝐶0−𝑠𝑠1
+ 1� 𝐶𝐶𝐶𝐶0 < 𝑠𝑠1
⎪ 𝑎𝑎

(𝑠𝑠0−𝑠𝑠1) 𝑠𝑠0−𝑠𝑠1
𝑊𝑊(𝐶𝐶𝐶𝐶0) = 10 𝑎𝑎 (5.1)


⎩ 1 𝐶𝐶𝐶𝐶0 ≥ 𝑠𝑠1

The 𝑠𝑠1 parameter defines the threshold after which the weight is set to 1 (i.e. the C/N0 value
after which measurements are considered “good”); the 𝑠𝑠0 parameter defines the C/N0 value
for which the function is “forced” to have the weight defined by the 𝐴𝐴 parameter; the 𝑎𝑎
parameter defines the bending of the curve. Figure 5.14 shows two 𝑊𝑊 functions with 𝑠𝑠1 = 50,
𝑠𝑠0 = 10, 𝐴𝐴 = 30, 𝑎𝑎 = 30 (blue solid line) and 𝑎𝑎 = 20 (red dashed line).

30

25

20
Weight

15

10

0
10 15 20 25 30 35 40 45 50 55 60
C/N0 [dBHz]

Figure 5.14 Examples of C/N0 weighting function

The combination of the two 𝑊𝑊 functions of the two satellites involved in double differences is
given by

83
Chapter 5 Tests and results

𝑊𝑊(𝐶𝐶𝐶𝐶01 )+𝑊𝑊(𝐶𝐶𝐶𝐶02 )
𝑊𝑊(𝐶𝐶𝐶𝐶01 , 𝐶𝐶𝐶𝐶02 ) = (5.2)
2

and it results in a surface used to approximate the DD code RMSE values (Figure 5.15).

Figure 5.15 Weighting surface function and RMSE values (blue)

As regards elevation analysis, the results show less variability of RMSEs than in the C/N0
analysis (Table 5.5). RMSE value is generally decreasing as the elevation increases up to 50°,
then it rises again. This increasing behavior for high elevation ranges is probably due to
multipath effects in the vertical direction that were not shielded during the test.

Table 5.5 Short baseline RMSE values computed by elevation (e) classes

10 ≤ e1 <20 20 ≤ e1 <30 30 ≤ e1 <40 40 ≤ e1 <50 50 ≤ e1 <60 60 ≤ e1 <70 70 ≤ e1 <80 80 ≤ e1 ≤90


10 ≤ e2 <20 3.474 3.655 3.111 2.872 2.783 2.745 3.136 2.967
20 ≤ e2 <30 3.655 3.706 3.244 3.231 2.890 3.121 3.058 3.144
30 ≤ e2 <40 3.111 3.240 3.023 3.079 2.779 2.726 2.979 2.665
40 ≤ e2 < 50 2.872 3.231 3.079 3.009 2.464 3.062 2.946 2.708
50 ≤ e2 < 60 2.783 2.890 2.779 2.464 2.422 2.547 2.293 2.149
60 ≤ e2 < 70 2.745 3.121 2.726 3.062 2.547 2.478 2.525 3.113
70 ≤ e2 < 80 3.136 3.058 2.979 2.946 2.293 2.525 3.455 3.122
80 ≤ e2 ≤ 90 2.967 3.144 2.665 2.708 2.149 3.113 3.122 3.035

84
Chapter 5 Tests and results

The resulting RMSE values are represented graphically in Figure 5.16.

3.6

3.4

3.2

4
3
3.5
RMSE [m]

3 10 2.8
20
2.5
30 2.6
2 40
10 50 2.4
20
30 60
40
50 70
60 elevation satellite 2 [deg] 2.2
70 80
elevation satellite 1 [deg] 80

Figure 5.16 Plot of short baseline RMSE values computed by elevation classes

Since the C/N0 is clearly dominant over the elevation in the analysis of the DD code RMSE and
taking into account the way of weighting observations as a function of elevation described in
Kirchner (2005), it has been decided to use an inverse square sine function to introduce the
elevation information in the weighting function, which becomes

⎧ 1 −
(𝐶𝐶𝐶𝐶 0−𝑠𝑠1)
𝐴𝐴 𝐶𝐶𝐶𝐶0−𝑠𝑠1
⎪𝑠𝑠𝑠𝑠𝑠𝑠 2 𝑒𝑒 �10 𝑎𝑎 �� (𝑠𝑠0−𝑠𝑠1) − 1�
𝑠𝑠0−𝑠𝑠1
+ 1�� 𝐶𝐶𝐶𝐶0 < 𝑠𝑠1

𝑊𝑊(𝐶𝐶𝐶𝐶0, 𝑒𝑒) = 10 𝑎𝑎 (5.3)


⎩ 1 𝐶𝐶𝐶𝐶0 ≥ 𝑠𝑠1

where 𝑒𝑒 is the elevation angle. Figure 5.17 shows the variation of the weighting function
according to different elevation angle (𝑒𝑒 = 90, blue solid line; 𝑒𝑒 = 70, magenta dashed line; 𝑒𝑒 =
50, green solid line; 𝑒𝑒 = 30, red dashed line). Figure 5.18 represents the overall variation of the
weighting function according to all the combinations of C/N0 and elevation angle.

85
Chapter 5 Tests and results

140

120

100 e=30

80
Weight

60
e=50
40
e=70

20 e=90

0
10 15 20 25 30 35 40 45 50 55 60
C/N0 [dBHz]

Figure 5.17 Weighting function behavior for different elevation angles

500

400

300
Weight

200

100
30
0 40
20
40 50
60
80 60 C/N0 [dBHz]
Elevation [deg]

Figure 5.18 Weighting function behavior for different combinations of C/N0 and elevation angle

86
Chapter 5 Tests and results

5.3. Basketball field tests


The first tests were intended to check the performances of goGPS with the AEK-4T compared
with another low cost device, in this case the eBonTek eGPS 597. The two devices were
positioned on a wheeled trolley and they have been moved along the perimeter of a basketball
field, located at about 300 m from the Como permanent station, used as a master receiver.
The perimeter vertices had been previously measured by double frequency static
measurements. The resulting positions of the two devices have been projected on the
perimeter and the distance between each resulting position and its projection has been taken
as an estimation of the positioning error. Obviously the component of the error along the
direction of the trolley movement is ignored.

Two tests have been carried out without linear constraints, the first one without the DTM
observation, the second one with the DTM observation. A third test has been done to check
whether goGPS managed to constrain its positioning on the perimeter line.

The following parameters have been set for goGPS:

 KF dynamic model: constant velocity


 Variance of KF velocities: 𝜎𝜎𝑥𝑥̇2 = 𝜎𝜎𝑦𝑦̇2 = 𝜎𝜎𝑧𝑧̇2 = 0.005 m2/s2

 Variance of DD code observations: 𝜎𝜎𝜈𝜈2𝑝𝑝𝑝𝑝 = 9 m2


𝑟𝑟𝑟𝑟

 Variance of DD phase observations: 𝜎𝜎𝜂𝜂 𝑝𝑝𝑝𝑝 = 0.001 m2


𝑟𝑟𝑟𝑟

 Variance of the DTM observation: [no DTM] / σ2ζ = 0.09 m2


 Cutoff: 10°

KF velocity variances have been tuned in order to obtain the best solution.

In Table 5.6 the results for both the 2D and 3D case are reported.

Table 5.6 Basketball field results

2D 3D
Mean [m] St. Dev. [m] RMSE [m] Mean [m] St. Dev. [m] RMSE [m]
goGPS (no DTM) 0.53 0.36 0.64 2.03 1.16 2.33
goGPS (with DTM) 0.84 0.30 0.89 0.87 0.30 0.92
eBonTek 1.83 1.45 2.33 4.99 1.62 5.25

87
Chapter 5 Tests and results

Figure 5.19 goGPS 2D basketfield results (no DTM) Figure 5.20 goGPS 2D basketfield results (with DTM)

Figure 5.21 eBonTek 2D basketfield results

The results show goGPS having a better accuracy than the eBonTek receiver, both in 2D and
3D, either with or without the DTM support. When using DTM observations goGPS enhances
its accuracy in the vertical direction, but it suffers from a 30 cm bias on the horizontal
direction.

Figure 5.22 goGPS 3D basketfield results (no DTM) Figure 5.23 goGPS 3D basketfield results (with DTM)

88
Chapter 5 Tests and results

Figure 5.24 eBonTek 3D basketfield results

Also the constrained version of the KF algorithm (section 3.4) has been run and the results are
shown in Figures 5.25 and 5.26.

Figure 5.25 goGPS 2D basketfield results (constrained) Figure 5.26 goGPS 3D basketfield results (constrained)

5.4. Road tests


Road tests have been performed to assess the performance of goGPS in less controlled and
more “real-life” situations. Five GPS devices have been used: the Leica GPS1200 and GS20, the
eBonTek eGPS 597 and TomTom MKII and the AEK-4T used by goGPS. The devices were
disposed on the car roof as in Figure 5.28. The GPS1200 and GS20 antennas were attached on
a roof rack, at 52.5 cm one from the other. The eBonTek and TomTom receivers were attached
on the roof rack lateral supports, respectively on the GPS1200 side and on the GS20 side. The
AEK-4T antenna was attached on the roof, aligned with the GPS1200 antenna along the car
direction of movement.

89
Chapter 5 Tests and results

Figure 5.27 The instrumentation mounted on the car roof

Figure 5.28 Road test: device disposition

The logging of the GPS1200 data was performed using its controller. The GS20 satellite tracking
options was set to “Max Accuracy”, its quality thresholds were raised to the maximum level

90
Chapter 5 Tests and results

available (in order to log everything without quality filters) and its data were logged in NMEA
format by connecting it via serial port to a notebook with VisualGPS™ [11] installed. The
eBonTek data were logged by connecting it via Bluetooth to a PDA with VisualGPSce installed.
The TomTom data were collected by connecting it via Bluetooth to a mobile phone with
nTripper [12] installed (just the log function of nTripper was used).

Once collected, downloaded and converted to the same format (tab-delimited text files), all
the data have been synchronized by means of GPS time. All the epochs during which one or
more instruments had outages were eliminated. Moreover, since the GPS1200 results were to
be used as a reference for computing the other instruments errors and accuracy, its data have
been filtered on the basis of the 3DCQ quality index, removing results with a 3DCQ < 0.05 . All
the data have been projected in UTM WGS84 in order to have them on a plane (East, North, h
coordinates).

The attitude of the car at each epoch 𝑡𝑡0 has been estimated by interpolating the GPS1200 two-
dimensional coordinates (𝐸𝐸,𝑁𝑁) from 𝑡𝑡0 − 2 to 𝑡𝑡0 + 2 with a four degree polynomial, namely

𝐸𝐸(𝑡𝑡𝑖𝑖 ) = 𝑎𝑎1 + 𝑏𝑏1 𝑡𝑡𝑖𝑖 + 𝑐𝑐1 𝑡𝑡𝑖𝑖2 + 𝑑𝑑1 𝑡𝑡𝑖𝑖3 + 𝑒𝑒1 𝑡𝑡𝑖𝑖4 (5.4)

𝑁𝑁(𝑡𝑡𝑖𝑖 ) = 𝑎𝑎2 + 𝑏𝑏2 𝑡𝑡𝑖𝑖 + 𝑐𝑐2 𝑡𝑡𝑖𝑖2 + 𝑑𝑑2 𝑡𝑡𝑖𝑖3 + 𝑒𝑒2 𝑡𝑡𝑖𝑖4 (5.5)

The choice of four degree polynomials was based on empirical tests; in particular, when
polynomials of higher degree were used, no significant differences in the estimated car
attitude were detected. Once the coefficients were determined, the time derivative of the
𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑
position vector were computed as 𝑏𝑏1 = = 𝐸𝐸̇ , 𝑏𝑏2 = = 𝑁𝑁̇ and then the unit vector at each
𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑

point of the trajectory was calculated as follows


̇
� 𝐸𝐸 �
1
𝑒𝑒⃑(𝑡𝑡0 ) = (5.6)
�(𝐸𝐸 +𝑁𝑁 ) 𝑁𝑁̇
̇ 2 ̇ 2

In this way the direction of movement of the car on the horizontal plane is determined at
every epoch (assuming that there are no significant changes in the ℎ direction). Once the car
attitude has been estimated, the predicted positions of the instruments have been calculated
on the basis of their relative position with respect to the GPS1200 receiver.

91
Chapter 5 Tests and results

6 6
x 10 x 10
5.0512

5.0512
5.0512
5.0512

5.0512 5.0512
5.0512

5.0512 5.0512
5.0512

5.0512 5.0512

5.0512
5.0512
5.0512

5.0512
5.0512
4.969 4.96914.96914.96924.96924.96924.96934.96944.96944.96954.9695 4.9692 4.9692 4.9693 4.9693 4.9693 4.9693 4.9693 4.9694
5 5
x 10 x 10

Figure 5.29 Example of car attitude at each epoch Figure 5.30 Instruments predicted positions

The error of each instrument at each epoch was then computed as both the two-dimensional
and three-dimensional distance between the predicted position and the position returned by
the instrument itself.

6
x 10

5.0512

5.0512

5.0512

5.0512

5.0512

5.0512
4.9692 4.9692 4.9693 4.9693 4.9693 4.9693 4.9693 4.9694
5
x 10
Figure 5.31 goGPS (black), GS20 (red) and eBonTek (blue) observed positions
with respect to predicted positions (empty squares)

Various tests have been performed under different conditions of sky visibility, road
characteristics, car velocity and terrain morphology. The three most relevant examples have
been chosen to discuss the performance of goGPS for the purpose of this thesis and they will
be described in the next sections. Because of the difficulty of managing five GPS devices, each

92
Chapter 5 Tests and results

one with its corresponding logging device, and all the related problems regarding the three
mobile Internet connections and battery life, unfortunately the tests have been performed
with a different subset of the instrumentation (Table 5.7).

Table 5.7 Test characteristics and used instrumentation

Test Instrumentation
1: Good sky view, slow velocity, flat terrain GPS1200, AEK-4T (goGPS), eBonTek, GS20
2: Bad sky view, slow velocity, flat terrain GPS1200, AEK-4T (goGPS), eBonTek, TomTom
3: Normal driving test
GPS1200, AEK-4T (goGPS), eBonTek
(variable sky view, velocity and terrain)

The following parameters have been set for goGPS:

 KF dynamic model: constant acceleration


 Variance of KF velocities: 𝜎𝜎𝑥𝑥̇2 = 𝜎𝜎𝑦𝑦̇2 = 𝜎𝜎𝑧𝑧̇2 = 0.1 m2/s2

 Variance of DD code observations: 𝜎𝜎𝜈𝜈2𝑝𝑝𝑝𝑝 = 9 m2


𝑟𝑟𝑟𝑟

 Variance of DD phase observations: 𝜎𝜎𝜂𝜂 𝑝𝑝𝑝𝑝 = 0.001 m2


𝑟𝑟𝑟𝑟

 Cutoff: 10°

5.4.1. Test 1: good sky view, slow velocity, flat terrain

The first test has been performed on a route that passes through rural and low density
residential areas, thus with a good sky visibility. The car velocity was kept low and constant (as
much as possible) in order to minimize problems in correspondence to curves. The terrain is
almost flat and no DTM is available. A round trip has been performed without stops.

93
Chapter 5 Tests and results

Figure 5.32 The route driven during test 1 (images taken from Google Earth)

Since the surroundings of Como are hilly and/or densely populated it was necessary to move at
a distance of about 20 km from the permanent station. Thus it has to be taken into account
that the atmospheric effects could have been not completely removed by the double
difference method, at least for goGPS and the Leica GS20, assuming that the GS20 was using
the Como permanent station and not other (virtual) reference stations.

The positioning quality of the GPS1200 receiver was generally good, apart from some epochs
with a very high 3DCQ (in some cases up to 14). Figure 5.25 shows the histogram of absolute
frequencies of 3DCQ values, limited to the interval 0 < 3DCQ < 1. In order to use the GPS1200
receiver as a reliable reference, only epochs with 3DCQ ≤ 0.05 have been used in the
comparison.

300

250
N. of epochs

200

150

100

50

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
3DCQ

Figure 5.33 Test 1 3DCQ histogram

94
Chapter 5 Tests and results

Table 5.8 shows the results obtained by running goGPS with the aforementioned parameters.

Table 5.8 Test 1 results

2D 3D
Mean [m] St. Dev. [m] RMSE [m] Mean [m] St. Dev. [m] RMSE [m]
goGPS 1.13 0.67 1.31 2.45 1.57 2.91
eBonTek 4.03 1.70 4.37 6.18 1.94 6.47
GS20 0.30 0.15 0.34 0.70 0.43 0.82

Having noted that the skyplot was showing three satellites with a very low elevation angle, the
effectiveness of the elevation weighting function has been put to test by raising the cutoff
from 10° to 30° (Figure 5.32), in order to exclude completely the three satellites from the
computation.

Figure 5.34 Test 1 skyplots with different cutoff levels

The results have pointed out that some kind of inefficiency of the elevation weighting function
is still present that will be further investigated in future developments.

Table 5.9 Test 1 results (with higher cutoff)

2D 3D
Mean [m] St. Dev. [m] RMSE [m] Mean [m] St. Dev. [m] RMSE [m]
goGPS
0.78 0.47 0.91 1.26 0.93 1.56
(cutoff=30°)
eBonTek 4.03 1.70 4.37 6.18 1.94 6.47
GS20 0.30 0.15 0.34 0.70 0.43 0.82

95
Chapter 5 Tests and results

5.4.2. Test 2: bad sky view, slow velocity, flat terrain

The second test involved driving by car around the historical center of the city of Como. The
route is characterized by high buildings and trees on the sides of the streets. The variation of
terrain height is about 10 m. The car velocity was kept as much as possible low and constant.
Figure 5.35 shows the histogram of the 3DCQ values logged by the GPS1200 receiver.

300
N. of epochs

200

100

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
3DCQ

Figure 5.35 Test 2 3DCQ histogram

At first the test was carried out by keeping the cutoff at 10°, though it was highly unrealistic to
think to obtain good results in an urban environment. Then the cutoff was raised to 30°. Table
5.10 shows the results with both cutoffs.

Table 5.10 Test 2 results (a)

2D 3D
Mean [m] St. Dev. [m] RMSE [m] Mean [m] St. Dev. [m] RMSE [m]
goGPS 4.29 6.04 7.41 8.15 11.46 14.06
goGPS
2.19 2.69 3.47 4.55 8.47 9.61
(cutoff=30°)
eBonTek 5.13 2.46 5.69 16.23 5.01 16.99
TomTom 3.68 1.86 4.13 5.50 2.44 6.02

The results obtained by goGPS with the 30° cutoff were comparable to those obtained by the
other two devices apart from a slightly higher standard deviation, probably due to some
outlying values (plotted in Figure 5.36, on the left). Since urban positioning suffers from high
multipath and signal degradation problems, a threshold to cut all values below 30 dBHz for the
C/N0 has been tried to check if the outliers persisted. The results are reported in Table 5.11
and shown in Figure 5.36, on the right).

96
Chapter 5 Tests and results

Figure 5.36 Test 2 - goGPS outliers (black)

Finally, the addition of the observation coming from the LiDAR DTM further enhanced the
positioning both in 2D and 3D.

Table 5.11 Test 2 results (b)

2D 3D
Mean [m] St. Dev. [m] RMSE [m] Mean [m] St. Dev. [m] RMSE [m]
goGPS
1.67 1.12 2.01 3.09 2.11 3.74
(C/N0>30 dBHz)
goGPS
1.31 0.93 1.61 2.03 0.72 2.16
(with DTM)
eBonTek 5.13 2.46 5.69 16.23 5.01 16.99
TomTom 3.68 1.86 4.13 5.50 2.44 6.02

5.4.3. Test 3: Normal driving test

The third test has been performed on a route covering more than 20 km and passing through
various kinds of surroundings, from low density residential areas to densely urbanized ones,
from roads in the middle of agricultural fields to roads in the woods (Figure 5.33). The car
velocity was not controlled in order to simulate a real driving situation. It should be taken into
account that at present goGPS cannot adapt its KF parameters on-the-fly, but this feature is
going to be implemented in the future.

97
Chapter 5 Tests and results

Figure 5.37 The route driven during test 3 (images taken from Google Earth)

The terrain height ranges from about 260 m to about 370 m (Figure 5.34 shows the height
measurements of the reference receiver). The test lasted around 45 minutes. The distance
from the permanent station has been decreasing from 20 km to some hundreds of meters.

Figure 5.38 Terrain height variation during test 3

The positioning quality of the GPS1200 receiver was acceptable (Figure 5.35): about half the
available epochs were discarded after the filtering with 3DCQ ≤ 0.05.

98
Chapter 5 Tests and results

800

600
N. of epochs

400

200

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
3DCQ

Figure 5.39 Test 3 3DCQ histogram

Table 5.8 reports the results obtained keeping the goGPS cutoff at 10°.

Table 5.12 Test 3 results

2D 3D
Mean [m] St. Dev. [m] RMSE [m] Mean [m] St. Dev. [m] RMSE [m]
goGPS 1.43 1.02 1.76 2.16 1.76 2.79
eBonTek 4.57 2.91 5.42 6.91 4.11 8.04

goGPS accuracy is better than eBonTek eGPS 597, both in 2D and 3D. Raising the cutoff level to
30° excludes three low satellites and accuracies get slightly better (Table 5.9).

Table 5.13 Test 3 results (with higher cutoff)

2D 3D
Mean [m] St. Dev. [m] RMSE [m] Mean [m] St. Dev. [m] RMSE [m]
goGPS
1.35 0.73 1.54 2.60 1.34 2.93
(cutoff=30°)
eBonTek 4.57 2.91 5.42 6.91 4.11 8.04

99
Conclusions

goGPS is a software package designed to enhance the accuracy of low cost GPS devices. This is
done mainly by applying relative positioning with respect to a GNSS master station to mitigate
the systematic errors of standard positioning and by implementing Kalman filtering techniques
to exploit knowledge about the past of the system to predict how it will evolve in the future.
Other sources of information have also been included, such as observations coming from a
DTM to strengthen GPS positioning in the vertical direction and linear constraints to force the
system on a predefined path.

Towards the end of this thesis work, goGPS has reached enough stability to run in real-time
mode for hours without interruptions, allowing for its testing in the most diverse situations.
This robustness has allowed to perform a first assessment of the capabilities of the low cost
receiver that has been used for the tests (the u-blox AEK-4T). This was done by leaving goGPS
acquiring, decoding and saving GPS raw data for a time span of about 8 hours, providing useful
information both about the quality of the signal acquired by the AEK-4T and about how to
weight measurements on the basis of satellite elevation and signal-to-noise ratio (C/N0). The
analysis of these data has in fact allowed to set truthful values for measurement variances and
to calibrate properly Kalman filter parameters.

Comparative tests have been carried out with other low cost instruments (eBonTek eGPS 597
and TomTom MKII) and with high level professional receivers (Leica GS20 and Leica GPS
System 1200). The tests were performed both in controlled environments and in realistic
situations. In every case goGPS managed to outperform the low cost instrumentation and in
some cases it obtained accuracies of the same order of magnitude of those obtained by the
single frequency professional GPS receiver (Leica GS20). goGPS main achievement consists in
managing to enhance the accuracy of low cost devices by real-time relative kinematic
positiong and Kalman filtering techniques from the usual 2-4 meters up to some decimeters.

100
Conclusions

During the preparation of this thesis, goGPS has been developed with the long term objective
of letting it become a complete free software package for advanced GPS positioning, useful
also to broaden and deepen knowledge about GPS and Kalman filtering navigation in general.
goGPS is going in fact to become an open source project available to everyone to study its
functioning and/or try to improve it.

Other future developments may include:

- additional calibration of Kalman filter parameters

- implementation of adaptive Kalman Filtering parameters

- exploitation of Doppler information

- addition of the possibility to use Virtual Reference Station services

- management of complex road networks

- integration with low cost odometers / gyroscopes

- software conversion in C/C++

- porting to palmtop/mobile devices

101
References
AA.VV., Networked Transport of RTCM via Internet Protocol, version 1.0,
http://igs.ifag.de/index_ntrip.htm, 2004

Abidin H. Z., On-the-fly ambiguity resolution: formulation and results, Manuscripta


Geodaetica, vol. 18(6), 1993, pp. 380-407

Alanen K., Wirola L., Käppi J., Syrjärinne J., Inertial Sensor Enhanced Mobile RTK Solution Using
Low-Cost Assisted GPS Receivers and Internet-Enabled Cellular Phones, Inside GNSS, vol. 1(4),
May/June 2006, pp. 32-39

Bancroft S., An Algebraic Solution of the GPS Equations, IEEE Trans. Aerospace and Electronic
Systems, vol. AES-21(1), January 1985, pp. 56-59

Biagi L., Sansò F., Scuratti M., Laffi R., Novembre C., Il Servizio Regionale di Posizionamento per
la Lombardia, in Atti della 7a Conferenza ASITA, vol. 1, October 2003, pp. 315-320

Biagi L., Sansò F., Il Servizio di Posizionamento in Regione Lombardia e la prima


sperimentazione sui servizi di rete in tempo reale, Bollettino SIFET, vol. 3, 2006, pp. 71-90

Biagi L., Caldera S., Visconti M.G., Data Quality and Coordinate Monitoring for a Permanent
Network: Proposals and Experiences, in Proceedings of ION GNSS 2007, September 2007, pp.
687-698

Brown A., Extended differential GPS, Navigation, vol. 36(3), 1989, pp. 265-285

CellGuide Ltd., Cell-Guide Host-Based GPS, InsideGNSS, vol. 2(6), September/October 2007, p.
86

Fletcher J. G., An Arithmetic Checksum for Serial Transmissions, IEEE Trans. on Comm., vol.
COM-30(1), January 1982, pp. 247-252

Hofmann-Wellenhof B., Lichtenegger H., Collins J., GPS Theory and Practice. Springer (New
York), 1992

Julier S. J., Uhlmann J.K., A new extension of the Kalman filter to nonlinear systems, in Proc.
AeroSense: 11th Int. Symp. Aerospace/Defense Sensing, Simulation and Controls, 1997, pp.
182–193

Julier S. J., Uhlmann J. K., Unscented filtering and nonlinear estimation, in Proceedings of the
IEEE, vol. 92(3), March 2004, pp. 401 – 422

102
References

Kirchner M., Becker M., The use of signal strength measurements for quality assessments of
GPS observations, Geodetic and Geodynamic Programs of the CEI Symposium G9, Reports on
Geodesy, vol. 2(73), April 2005

Klobuchar J. A., Ionospheric Time-Delay Algorithm for Single-Frequency GPS Users, in IEEE
Transactions on Aerospace and Electronic Systems, vol. AES-23(3), May 1987, pp. 325-331

Landau H., Vollath U., Chen X., Virtual Reference Station Systems, Journal of Global Positioning
Systems, vol. 1(2), 2002, pp. 137-143

Leclerc Y. G., Reddy M., Iverson L., Eriksen M., The GeoWeb -- A New Paradigm for Finding
Data on the Web, in Proceedings of the International Cartographic Conference (ICC2001),
August 2001

Leick A., GPS satellite surveying - Second edition. John Wiley & Sons (New York), 1995

Levy L. J., The Kalman Filter: Navigation's Integration Workhorse, in GPS World, vol. 8(9),
September 1997, pp. 65-71

National Marine Electronics Association, NMEA Standard for Interfacing Marine Electronic
Devices, Version 3.01, 2002

Odijk D., Traugott J., Sachs G., Montenbruck O., Tiberius C., Two Precision GPS Approaches
Applied to Kinematic Raw Measurements of Miniaturized L1 Receivers, in Proceedings of ION
GNSS 2007, September 2007, pp. 827-838

Radio Technical Commission for Maritime Services, RTCM recommended standards for
differential GNSS services, Version 2.3, RTCM paper 136-2001, 2001

Radio Technical Commission for Maritime Services, RTCM recommended standards for
differential GNSS services, Version 3.0, RTCM paper 30-2004, 2004

Radio Technical Commission for Maritime Services, RTCM recommended standards for
differential GNSS services, Version 3.1, RTCM paper 177-2006, 2006

Rocken C., Meertens C., Monitoring selective availability dither frequencies and their effect on
GPS data, in Journal of Geodesy, vol. 65(3), September 1991, pp, 162-169

Saastamoinen J., Atmospheric correction for the troposphere and stratosphere in radio ranging
satellites, in Use of artificial satellites for geodesy, Geophysics Monograph Series, vol. 15, 1972,
pp. 247-251

Saastamoinen J., Contribution to the theory of atmospheric refraction, in Bulletin Géodésique,


vol. 107(1), 1973, pp. 13-14

Sansò F., Navigazione geodetica e rilevamento cinematico. Polipress (Milano), 2006

103
References

Seeber G., Satellite geodesy: Foundation, methods, and applications. Walter de Gruyter
(Berlin), 1993

Söderholm S., Jokitalo T., Kaisti K., Kuusniemi H., Naukkarinen H., Smart Positioning with
Fastrax’s Software GPS Receiver Solution, presented at ION GNSS 2008, September 16-19,
Savannah, Georgia, USA. Available at [1]

Sorenson H. W., Kalman Filtering: theory and application. IEEE Press, 1985

Takasu T., Yasuda A., Evaluation of RTK-GPS Performance with Low-cost Single-frequency GPS
Receivers, presented at International Symposium on GPS/GNSS 2008, November 11-14, Tokyo,
Japan. Available at [17]

Westrop J.M., Napier M. E., Ashkenazi V., The use of phase for kinematic positioning by GPS, in
Proceedings of IAG Symposium on Global Positioning System: An Overview, 1989

Wübbena G., Bagge A., Schmitz M., Network-Based Techniques for RTK Applications,
presented at the GPS Symposium GPS JIN 2001, November 14-16, Tokyo, Japan. Available at
[19]

Online resources
[1] http://www.fastraxgps.com/products/softwaregps
(last checked on December 19 2008)
[2] Reports forecast GPS proliferation
http://www.linuxdevices.com/news/NS2279075316.html
(last checked on December 19 2008)
[3] GPS in all mobile devices by 2013?
http://www.linuxdevices.com/news/NS4794189275.html
(last checked on December 19 2008)
[4] Garmin GPS II PLUS
https://buy.garmin.com/shop/store/assets/pdfs/specs/gpsIIplus_spec.pdf
(last checked on December 30 2008)
[5] LEA-5 Module Series - u-blox 5 GPS and GALILEO Receivers
http://www.u-blox.com/products/Product_Summaries/LEA-5_Prod_Summary(GPS.G5-
MS5-07071).pdf
(last checked on December 29 2008)

104
References

[6] Venus6T 65 Channel Low Power GPS Chipset


http://www.skytraq.com.tw/download/Venus6T_PB_v2.pdf
(last checked on December 29 2008)
[7] IGS Product Table (GPS broadcast values included for comparison)
http://igscb.jpl.nasa.gov/components/prods.html
(last checked on January 28 2009)
[8] u-blox
http://www.u-blox.com/
(last checked on February 2 2009)
[9] GPSLombardia
http://www.gpslombardia.it/
(last checked on February 3 2009)
[10] VisualGPS
http://www.visualgps.net/VisualGPS/default.htm
(last checked on February 10 2009)
[11] nTripper
http://www.ntrip-systems.com/
(last checked on February 10 2009)
[12] Kinematic (software package)
http://www.precision-gps.org/
(last checked on February 11 2009)
[13] ANTARIS® Protocol Specification
http://www.u-blox.com/customersupport/antaris4_doc.html
(last checked on February 13 2009)
[14] GNSS Internet Radio
http://igs.bkg.bund.de/index_ntrip_down.htm
(last checked on February 16 2009)
[15] eBonTek
http://www.ebontek.com/
(last checked on February 10 2009)

105
References

[16] TomTom
http://www.tomtom.com/
(last checked on February 16 2009)
[17] http://gpspp.sakura.ne.jp/anteva/anteva.htm
(last checked on February 16 2009)
[18] ITRF
http://itrf.ensg.ign.fr/
(last checked on February 16 2009)
[19] http://www.geopp.de/download/gpsjin01_p.pdf
(last checked on February 17 2009)
[20] GPS1200 Technical Reference Manual
http://www.leica-geosystems.com
(last checked on February 23 2009)

106

View publication stats

You might also like