Content uploaded by Eugenio Realini
Author content
All content in this area was uploaded by Eugenio Realini on Feb 02, 2015
Content may be subject to copyright.
1
goGPS: open source software for enhancing the accuracy of lowcost receivers
by singlefrequency relative kinematic positioning
Eugenio Realini1, Mirko Reguzzoni2
1 RISH, Kyoto University, Gokasho, Uji, 6110011 Kyoto, Japan
eugenio_realini@rish.kyotou.ac.jp
2 DICA, Politecnico di Milano, Piazza Leonardo da Vinci 32, 20133 Milano, Italy
mirko@geomatica.como.polimi.it
ABSTRACT:
goGPS is a free and open source satellite positioning software package aiming to provide a
collaborative platform for research and teaching purposes. It was first published in 2009 and since
then several related projects are on going. Its objective is the investigation of strategies for
enhancing the accuracy of lowcost singlefrequency GPS receivers, mainly by relative positioning
with respect to a base station and by a tailored extended Kalman filter working directly on code and
phase observations. In this paper the positioning algorithms implemented in goGPS are presented,
emphasizing the modularity of the software design; two specific strategies to support the navigation
with lowcost receivers are also proposed discussed, namely an empirical observation weighting
function calibrated on the receiver signaltonoise ratio and the inclusion of height information from
a digital terrain model as an additional observation in the Kalman filter. The former is crucial when
working with highsensitivity receivers, while the latter can significantly improve the positioning in
the vertical direction. The overall goGPS positioning accuracy is assessed by comparison with a
dualfrequency receiver and with the positioning computed by a standard lowcost receiver. The
benefits of the calibrated weighting function and of the digital terrain model are investigated by an
experiment in a dense urban environment. It comes out that the use of goGPS and lowcost
receivers leads to results comparable with those obtained by higher level receivers; goGPS has good
performances also in dense urban environment, where its additional features play an important role.
KEY WORDS: GPS, RTK, DTM, Kalman filter, lowcost receivers
1. INTRODUCTION
The field of satellite positioning is growing faster and faster due to the huge success of GPS
chipsets embedded in handheld devices and to the increasing usage of georeferenced information at
consumer level. These trends push GPS hardware manufacturers into providing lowercost, smaller
and less energy consuming devices, which in turn pose new challenges to positioning engines. On
the other hand, the increasing miniaturization of GPS hardware allows to more efficiently embed it
into any kind of machinery, from digital cameras to small robots, widening the employment of
satellite positioning. Enhancing the positioning accuracy of lowcost, miniaturized GPS devices,
while generally not useful for everyday car navigation or for georeferencing standard photographs,
can be fundamental for providing effective solutions for lowcost surveying or accurate monitoring
in cases where hardware miniaturization is a requirement, like for example in the guidance system
of small robots or for analysing the performance of athletes. These embedded GPS chipsets are
usually defined “lowcost” in the geodetic community because they are compared to highend (and
highcost) professional receivers, which generally provide accuracies ranging from 1 m to some
centimetres in realtime navigation, while lowcost ones usually span some metres. Apart from the
cost issue, highend GPS receivers on the market are not suitable to be employed in cases where
size and/or hardware expendability are limiting factors. Therefore, in order to increase the
2
positioning accuracy in these specific situations, lowcost receivers have to be exploited at their
maximum extent, also by supporting them with information coming from sources other than GPS
alone, like for example digital terrain models, linear constraints, MEMS (MicroElectroMechanical
Systems) and obviously other GNSS (GLONASS, Galileo, Compass and QZSS).
Lowcost GPS receivers currently on the market are not taking full advantage of the growing
wireless Internet access with all the implications and new possibilities that it entails. At the moment
the only benefit that some GPS chipsets draw from the availability of Internet connections are A
GPS (Assisted GPS) services (Van Diggelen, 2009). While these services allow for faster timeto
firstfix (i.e. faster positioning once the hardware is switched on), they do not provide
enhancements in terms of accuracy. Services that can enhance the accuracy of lowcost receivers
are for example those provided by networks of permanent GNSS stations (HofmannWellenhof et
al., 2003). Though lowcost GPS devices are traditionally designed to perform positioning in stand
alone mode, research is being carried out to evaluate their performance by differential positioning
with respect to a master station. This technique, known as RealTime Kinematic (RTK), is usually
employed for higher cost dualfrequency receivers, but there is interest in applying it also to low
cost receivers in order to remove systematic errors (Alanen et al., 2006; Wirola, 2008; Realini,
2009). By exploiting data coming from one or more reference stations, lowcost receivers can
perform double difference relative positioning, which can correct systematic errors associated to the
absolute positioning they usually perform, namely clock offsets and atmospheric errors (Hofmann
Wellenhof et al., 1992). 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).
Nonsystematic errors like those due to measurement noise (more significant when using lowcost
receivers, compared to highcost ones) are usually reduced by applying Kalman filtering (Kalman,
1960; Grewal and Andrews, 2001) when operating in kinematic mode.
goGPS1 is an open source software application originally developed by the authors (with the
contribution of various thesis works by master students) since 2007 at the Geomatics Laboratory of
Politecnico di Milano, Como Campus. It is specifically designed to improve the positioning
accuracy of lowcost GPS devices by relative positioning and Kalman filtering. goGPS code was
published online as free and open source software in 2009; being the project open to collaborations,
since its publication it has received support and code contributions by users working in both
academies and business companies from different countries (including Italy, Japan, Switzerland,
Spain and Germany). Originally developed in MATLAB, it was recently ported to Java in order to
widen its user base and to provide it as a service through the web (Realini et al., 2012). goGPS
positioning engine basically applies an Extended Kalman Filter (EKF) on properly weighted double
differenced observations, receiving data from a lowcost receiver and from a master station. goGPS
can also exploit Digital Terrain Model (DTM) data, if available, as an additional observation in
order to improve its accuracy on the vertical direction and it is also able to force its estimated
position on linear paths. goGPS can work in both realtime and postprocessing. In the former case,
it must obtain GPS raw data from lowcost GPS modules specifically designed to provide them in
output (e.g. ublox LEA4T/5T/6T2, SkyTraq S1315FRAW3 and Fastrax IT034 modules), while in
the latter case RINEX5 format is generally used. Master station raw data can be provided either in
RTCM format (for realtime) or RINEX (for postprocessing).
1 http://www.gogpsproject.org/
2 http://www.ublox.com/
3 http://www.skytraq.com.tw/
4 http://www.fastraxgps.com/
5 ftp://igs.org/pub/data/format/rinex211.txt
3
It is important to remark that there are other scientific open source software packages for GPS
positioning, such as The EASY Suite6 (Borre, 2003) and GpsTools7 (Takasu and Kasai, 2005),
written in MATLAB, and RTKLIB8 (Takasu and Yasuda, 2009) and gLAB (HernandezPajares et
al. 2010), written in C.
In this paper we first present the theoretical background and the implementation of the goGPS EKF
(section 2); then, since the noise level in lowcost receivers is a crucial issue, we describe a
procedure aimed at calibrating the observation weighting functions from the analysis of the error of
a typical lowcost receiver (section 3). The last section includes test results for evaluating the
goGPS accuracy by comparison with the standard processing performed by geodetic and lowcost
receivers (section 4).
2. goGPS KALMAN FILTER
The main purpose of goGPS is to implement an EKF that can apply realtime relative positioning
with respect to a base station. Both code and phase measurements can be used and when the phase
is available the filter continuously updates its ambiguity, which is therefore not fixed. The algorithm
can be easily expanded to include other optional observations. In its current state it can optionally
exploit height data coming from a DTM.
The basic way of using a Kalman filter for standalone GPSonly navigation is to apply it directly to
the estimated positions. The positioning is typically computed by leastsquares adjustment from
code and phase measurements (HofmannWellenhof et al., 1992) and the Kalman filter acts a
posteriori with a smoothing effect on the estimated trajectory (HofmannWellenhof et al., 2003).
This approach with lowcost devices results in a positioning as accurate as that provided by
performing absolute positioning using phasesmoothed code measurements (few metres of error)
(Leick, 1995). This means that atmospheric delays and 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.
The Kalman filter implemented in goGPS is not applied on estimated positions, but on double
differenced observations with respect to a reference station (i.e. relative positioning). The
possibility of directly processing GPS observations allows us to remove most of the bias associated
to absolute positioning, obtaining accuracies of less than 1 m. Its use in realtime 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 Kalman filter 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 different 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 singlefrequency lowcost devices, but its code and phase modules are
designed to work either in singlefrequency or doublefrequency mode. Therefore, it can be used
also with doublefrequency receivers, even if it is not yet optimized to exploit at best both
frequencies, e.g. by computing useful data combinations (Teunissen and Kleusberg, 1998). goGPS
includes also an alternative version of its main Kalman filter algorithm, designed to obtain line
constrained positioning (e.g. to navigate on a network of roads). In this case the DTM information
6 http://kom.aau.dk/~borre/
7 http://gpspp.sakura.ne.jp/gpstools/gt_release.htm
8 http://www.rtklib.com/
4
is not used anymore, because the constraint is already threedimensional, and only a curvilinear
coordinate has to be estimated.
Since lowcost GPS devices implement singlefrequency and highly noisy receivers, the fixing of
integer phase ambiguities is not trivial and would require a long initialization time. Being lowcost
receivers often employed in areas that highly degrade the signal quality and continuity (e.g. urban
environments, proximity of wooden areas), traditional techniques for integer phase ambiguity fixing
(Hatch, 1990; Euler and Landau, 1992; Teunissen, 1995) may not be employed effectively.
Therefore goGPS Kalman filter keeps a float but continuous estimation of phase ambiguities, which
can be efficiently maintained also in difficult environments by detecting and repairing cycle slips
also in realtime. These are detected by using a combination of Doppler observations, lossoflock
events provided by the receiver and the prediction of the receiver position by the Kalman filter and
they are repaired by reestimating affected phase ambiguities by a weighed least squares adjustment
applied on “safe” observations.
2.1 State variables and dynamic model
In the goGPS EKF the quantities used as state variables for double differenced observations are
position, velocity and ambiguities.
The dynamic model under the hypotheses of constant velocity and 1 Hz update rate, assuming a
maximum number of satellites in the constellation equal to 32, is
X
r
(t+1) =X
r
(t)+
X
r
(t)
X
r
(t+1) =
X
r
(t)+
x
Xr
(t+1)
Y
r
(t+1)=Y
r
(t)+
Y
r
(t)
Y
r
(t+1) =
Y
r
(t)+
x
Yr
(t+1)
Z
r
(t+1)=Z
r
(t)+
Z
r
(t)
Z
r
(t+1) =
Z
r
(t)+
x
Zr
(t+1)
N
rm
p1
(t+1) =N
rm
p1
(t)
N
rm
ps
(t+1) =N
rm
ps
(t)
N
rm
p32
(t+1) =N
rm
p32
(t)
ì
í
ï
ï
ï
ï
ï
ï
ï
ï
î
ï
ï
ï
ï
ï
ï
ï
ï
(1)
where r stands for “rover” receiver
m stands for “master” receiver (i.e. the base station)
p stands for “pivot satellite” (here chosen as the satellite with the maximum elevation)
s ={1,2,…,32} represents the PRN (Pseudo Random Number) of the satellites
X
r
,Y
r
,Z
r
are the rover Cartesian coordinates with respect to a global geocentric reference
frame
X
r
,
Y
r
,
Z
r
are the rover velocity components
N
rm
ps
=(N
r
p
N
m
p
)(N
r
s
N
m
s
)
represents the number of cycles of the double differenced
ambiguities for each satellite s.
5
The velocity equations are “corrected” by a random error
x
, controlling how fast the system can
change its velocity; in other words this is the model error of the assumed dynamics. Note that there
is no model error for the ambiguities, because they are exactly constant in time, unless there are
cycle slips.
By defining
X
t
the state vector and
x
t
the model error vector, Eq. 1 can be rewritten as
X
t+1
=T X
t
+
x
t+1
(2)
where
X
t
is structured as follows
X
t
=
X(t)
X(t)
Y(t)
Y(t)
Z(t)
Z(t)
N
rm
p1
(t)
N
rm
ps
(t)
N
rm
p32
(t)
é
ë
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
(3)
and the transition matrix T is given by
T=T0
0I
é
ë
ê
ê
ù
û
ú
ú
(4)
with
T=
1 1 0 0 0 0
0 1 0 0 0 0
0 0 1 1 0 0
0 0 0 1 0 0
0 0 0 0 1 1
0 0 0 0 0 1
é
ë
ê
ê
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
ú
ú
(5)
and I being an identity matrix of size 3232. It may be useful to clarify that we set up 32 variables
even if there are never 32 satellites visible at the same time and even if the number of independent
combinations will never be 32. This choice was made in order to force vectors and matrices
involved in the Kalman filter to have a fixed size, in which the row index of a specific satellite does
not change from one epoch to the next.
6
Since the transition matrix is constant, the goGPS EKF is stationary in time; actually the transition
matrix is “manually” changed to handle special cases, such as cycle slips when the dynamics of the
double differenced initial ambiguities is not a constant anymore (see Section 2.4). Note that the
implemented dynamic model is suitable to describe the motion of the rover receiver when its
current position can be reasonably predicted by linearly interpolating its last two positions. This is
typically true when working at 1 Hz. In any case the dynamic model can be easily generalized, e.g.
by considering a constant acceleration (Brovelli et al., 2008). The expected error variances are often
given in a (East, North, Up) local frame and then propagated to a global geocentric frame.
Note 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). In particular,
it is assumed that ambiguities stay constant over time (apart from the case of cycleslips).
At each epoch t, the state vector
ˆ
X
t
is estimated by updating
ˆ
Xt1
(therefore an initialization is
required) and jointly computing the covariance matrix
C
t
e
of the estimation error
e(t)=ˆ
X
t
X
t
.
2.2 goGPS observation modules
The assembly of different modules into the goGPS EKF is treated as subsequent additions of
observation equations. Recalling that in a Kalman filter the observation model can be defined as
Y
t
=H
t
X
t
+
n
t
(6)
where
Y
t
is the vector of measurements
H
t
is the transformation (or design) matrix from the state variables to the measurements
X
t
is the state vector, as in Eq. 3
n
t
is the observation noise,
these additions mainly reflect in the insertion of new blocks into the transformation matrix
H
t
and
into the observations covariance matrix
C
t
n
(neglecting crosscovariances among blocks).
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 p and each satellite s, is given by
P
rm
ps
(t)=
r
rm
ps
(t)+I
rm
ps
(t)+T
rm
ps
(t)+
n
rm
ps
(t)
(7)
where
r
rm
ps
(t)
is the combination of geometric distances between receivers and satellites
I
rm
ps
(t)
and
T
rm
ps
(t)
are the ionospheric and tropospheric residual effects, respectively
n
rm
ps
(t)
is the double differenced code measurement noise.
Note that the ionospheric and tropospheric residual effects can be assumed to be close to zero under
the hypothesis that the distance between master and rover is not greater than about 10 km (in
normal atmospheric conditions), or in any case these residuals can be approximated by using
standard models such as the Klobuchar and Saastamoinen models (Klobuchar, 1987; Saastamoinen,
1973). After linearization Eq. 7 becomes
7
P
rm
ps
(t)+a
Xr
ps
X
r
(t)+a
Yr
ps
Y
r
(t)+a
Zr
ps
Z
r
(t)
r
rm
ps
(t)=a
Xr
ps
X
r
(t)+a
Yr
ps
Y
r
(t)+a
Zr
ps
Z
r
(t)+
n
rm
ps
(t)
(8)
where
a
kr
ps
=
k
r
(t)k
p
(t)
r
r
p
(t)

k
r
(t)k
s
(t)
r
r
s
(t)
é
ë
ê
ù
û
úwith k =X,Y,Z
X
s
(t),Y
s
(t),Z
s
(t)
are the coordinates of the satellite s at the epoch t computed from
ephemerides
X
r
(t),Y
r
(t),Z
r
(t)
are the unknown coordinates of the rover
X
r
(t),
Y
r
(t),
Z
r
(t)
are the approximated coordinates for the linearization, predicted from the
estimated coordinates at time
t1
on the basis of the EKF dynamic model
r
rm
ps
(t)
is the combination of geometric distances between receivers and satellites, using the
rover approximate coordinates
r
r
s
(t)
is the distance from the rover to the satellite s, using the rover approximate
coordinates.
The observation vector for each satellite
s¹p
can be expressed as
Y
t
(code)
=
P
rm
ps
(t)+a
Xr
ps
X
r
(t)+a
Yr
ps
Y
r
(t)+a
Zr
ps
Z
r
(t)
r
rm
ps
(t)
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
(9)
and the transformation matrix
H
t
(see Eq. 6) related to code double differences as
H
t
(code)
=
a
Xr
ps
(t) 0 a
Yr
ps
(t) 0 a
Zr
ps
(t) 0 0 0 0
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
. (10)
The corresponding covariance matrix is
C
t
v(code)
=
s
n
rm
ps
2
1 0.5 0.5
0.5
0.5
0.5 0.5 1
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
(11)
assuming that all the original undifferenced observations are independent and have the same
accuracy, with
s
v
rm
ps
the double differenced code noise standard deviation (typically about 1 m).
A more sophisticated way of weighting observations, introducing information like satellite elevation
and/or C/N0 will be discussed later on.
8
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 p and each
satellite s, is written as
l
F
rm
ps
(t)=
r
rm
ps
(t)
l
N
rm
ps
(t)I
rm
ps
(t)+T
rm
ps
(t)+
h
rm
ps
(t)
(12)
where
N
rm
ps
(t)
is the combined ambiguity value
l
is the L1 wavelength
h
rm
ps
(t)
is the double differenced phase measurement noise
r
rm
ps(t), Irm
ps(t),Trm
ps(t)
are defined as in Eq. 7.
By disregarding or modelling ionospheric and tropospheric residual effects, after linearization the
following equation is obtained
l
F
rm
ps
(t)+a
Xr
ps
X
r
(t)+a
Yr
ps
Y
r
(t)+a
Zr
ps
Z
r
(t)
r
rm
ps
(t)=
a
Xr
ps
X
r
(t)+a
Yr
ps
Y
r
(t)+a
Zr
ps
Z
r
(t)
l
N
rm
ps
(t)+
h
rm
ps
(t) .
(13)
Therefore, the observation vector for each satellite
s¹p
is
Y
t
(phase)
=
l
F
rm
ps
(t)+a
Xr
ps
X
r
(t)+a
Yr
ps
Y
r
(t)+a
Zr
ps
Z
r
(t)
r
rm
ps
(t)
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
. (14)
Consequently the transformation matrix
H
t
(see Eq. 6) becomes
H
t
(phase)
=
a
Xr
ps
(t) 0 a
Yr
ps
(t) 0 a
Zr
ps
(t) 0 0 
l
0
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
(15)
with a

l
value in the column corresponding to the satellite s.
The phase measurement noise covariance matrix, defining
s
h
rm
ps
as the double differenced phase
noise standard deviation, is
C
t
v(phase)
=
s
h
rm
ps
2
1 0.5 0.5
0.5
0.5
0.5 0.5 1
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
, (16)
where, again, it is assumed that all the original undifferenced observations are independent and have
the same accuracy.
9
Also for phase observations, a more sophisticated weighting approach will be discussed later on.
DTM module: The third module that has been integrated in goGPS so far introduces heights
extracted from a DTM as additional observations. When using lowcost GPS devices the error in the
vertical direction can be very high, say of the order of tens of metres. If the DTM accuracy is better
than the one expected from the GPS positioning in the vertical direction, the introduction of this
additional observation into the goGPS EKF improves the positioning accuracy without constraining
the estimated position to be exactly on the DTM surface.
Since this kind of data is usually very large, covering very extended areas, and the realtime
functioning of goGPS requires fast load times, a procedure has been implemented that divides the
DTM in multiple tiles, compressed in MATLAB binary format. When the EKF 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
h
DTM
(t)
must be expressed as a function of the approximate position
X
r
(t),
Y
r
(t),
Z
r
(t)
in
order to be able to build the
Y
t
(DTM )
and
H
t
(DTM )
matrices.
Expressing the differential of the position vector as a function of the differentials of the geodetic
coordinates
d
l
,d
f
,dh
(Sansò, 2006)
dX
dY
dZ
é
ë
ê
ê
ê
ù
û
ú
ú
ú=(N+h)cos
f
e
l
d
l
+(M+h)e
f
d
f
+vdh
(17)
where
l
,
f
,h
are respectively the longitude, the ellipsoidal latitude and the ellipsoidal height of the
point
e
l
,e
f
,v
are the unit vectors of a Cartan local (mobile) frame
N is the radius of curvature in the prime vertical, defined as
N=a
1e
2
sin
2
f
, being e the
eccentricity and a the semimajor axis of the reference ellipsoid
M is the radius of curvature in the meridian, defined as
M=N
1e
2
1e
2
sin
2
f
,
the following equation is obtained
dX
dY
dZ
é
ë
ê
ê
ê
ù
û
ú
ú
ú=R
(N+h)cos
f
0 0
0 (M+h) 0
0 0 1
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
d
l
d
f
dh
é
ë
ê
ê
ê
ù
û
ú
ú
ú
(18)
where R is the rotation matrix from the Cartesian geocentric frame
(X,Y,Z)
to the Cartan local
frame, namely
10
R=e
l
e
f
v
é
ë
êù
û
ú=
sin
l
sin
f
cos
l
cos
f
cos
l
cos
l
sin
f
sin
l
cos
f
sin
l
0 cos
f
sin
f
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
. (19)
Therefore the differential of the ellipsoidal height dh can be expressed as
dh =v
+
dX
dY
dZ
é
ë
ê
ê
ê
ù
û
ú
ú
ú=cos
f
cos
l
dX +cos
f
sin
l
dY +sin
f
dZ
(20)
where the superscript + indicates the transpose operation. The height equation thus reads
h
DTM
(t)=cos
f
r
(t)cos
l
r
(t)X
r
(t)
X
r
(t)
é
ë
ù
û+
cos
f
r
(t)sin
l
r
(t)Y
r
(t)
Y
r
(t)
é
ëù
û+sin
f
r
(t)Z
r
(t)
Z
r
(t)
é
ëù
û+
h
r
(t)+
z
DTM
(t)
(21)
where
l
r
(t),
f
r
(t),
h
r
(t)
are the geodetic coordinates of the rover position predicted by the EKF
h
DTM
(t)
is the interpolated height value at the rover position predicted by the EKF
z
DTM
(t)
is the DTM noise.
Note that if the DTM is provided with orthometric heights instead of ellipsoidal heights, the
conversion can be easily done by having a geoid model available (Heiskanen and Moritz, 1967).
Nowadays this is possible worldwide with sufficient accuracy thanks to geoid models derived from
gravity satellite missions like GOCE (Pail et al. 2011).
In order to build the
Y
t
(DTM )
vector (actually just a scalar), this equation can be rearranged as
h
DTM
(t)+cos
f
r
(t)cos
l
r
(t)
X
r
(t)+cos
f
r
(t)sin
l
r
(t)
Y
r
(t)+sin
f
r
(t)
Z
r
(t)
h
r
(t)=
cos
f
r
(t)cos
l
r
(t)X
r
(t)+cos
f
r
(t)sin
l
r
(t)Y
r
(t)+sin
f
r
(t)Z
r
(t)+
z
DTM
(t)
(22)
obtaining
Y
t
(DTM )
=[h
DTM
(t)+cos
f
r
(t)cos
l
r
(t)
X
r
(t)+cos
f
r
(t)sin
l
r
(t)
Y
r
(t)+sin
f
r
(t)
Z
r
(t)
h
r
(t)]
(23)
and the transformation matrix (see Eq. 6)
H
t
(DTM )
=cos
f
r
(t)cos
l
r
(t) 0 cos
f
r
(t)sin
l
r
(t) 0 sin
f
r
(t) 0 0
é
ë
ê
ù
û
ú
(24)
with
C
t
n
(DTM )
=
s
z
2
@0.09
m2 in the case of the airborne LiDAR (Light Detection And Ranging)
DTM we have used in some of our experiments (the accuracy was evaluated by comparison with a
GPS survey; it is consistent with the expected accuracy of airborne laser scanning, as described in
Baltsavias, 1999). Note that the accuracy of the DTM is assumed to be the same for every node,
11
which can be a strong approximation in case of DTMs derived from DSMs (Digital Surface
Models), after the removal of features above the ground.
Combination of modules: In order to integrate observation modules into the goGPS EKF, it is
sufficient to build new
Y
t
and
H
t
matrices using those described up to now as blocks.
For example, the observation vector
Y
t
is built up as
Y
t
=
Y
t
(code)
Y
t
(phase)
Y
t
(DTM )
é
ë
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
(25)
and the transformation matrix Ht as
H
t
=
H
t
(code)
H
t
(phase)
H
t
(DTM )
é
ë
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
=
H0
H H
l
H
DTM
0
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
(26)
where
H=
a
Xr
ps
(t) 0 a
Yr
ps
(t) 0 a
Zr
ps
(t) 0
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
(27)
H
DTM
=cos
f
r
(t)cos
l
r
(t) 0 cos
f
r
(t)sin
l
r
(t) 0 sin
f
r
(t) 0
é
ë
ê
ù
û
ú
(28)
H
l
=
0
l
0 0 0
0 0 0 
l
0
é
ë
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
(29)
with a

l
on the column that corresponds to the satellite the phase observation refers to, being
l
the signal wavelength.
Assuming that the observation blocks are uncorrelated among each other, the covariance matrix
becomes
12
C
t
n
=
C
t
n
(code)
0 0
0C
t
n
(phase)
0
0 0 C
t
n
(DTM )
é
ë
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
. (30)
It is important to note that this design, besides providing a straightforward way to add new modules,
is also very flexible and adaptive. For example, if the navigating body moves beyond the borders of
the DTM, the software simply disregards the matrices
Y
t
(DTM )
and
H
t
(DTM )
, leaving them empty
(which does not mean full of zeros!). In this way, the goGPS EKF runs as if the DTM module was
not existing at all.
2.3 goGPS EKF initialization
The initialization of the goGPS EKF starts with a first estimation of the rover position using the
Bancroft algorithm (Bancroft, 1985), with an error of some metres. The result is then used as an
approximate position to apply a linearized leastsquares adjustment on code and phase double
differences (two iterations are performed). This position, obtained with an error of some tens of
centimetres, is then passed to the EKF algorithm as
X
r
(0), Y
r
(0), Z
r
(0)
state variables. The
velocities
X
r
(0),
Y
r
(0),
Z
r
(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. Along
with the position, initial float values of phase ambiguities are estimated in the adjustment.
Note that if the number of satellites is not sufficient for the leastsquares solution, initial positions
are directly taken from Bancroft algorithm. In this case, for the initialization of ambiguities it comes
out from Eq. 13 (disregarding residual atmospheric delays) that the number of cycles
N
rm
ps
(t)
is
roughly obtained as
N
rm
ps
(t)=
r
rm
ps
(t)
l
F
rm
ps
(t)
l
+
h
rm
ps
(t)
l
(31)
in which
r
rm
ps
(t)
can be evaluated in two ways

r
rm
ps
(t)=P
rm
ps
(t)
n
rm
ps
(t)
, where
P
rm
ps
(t)
is the combined pseudorange from code measurements
and
n
rm
ps
(t)
is the double differenced code noise, see Eq. 7

r
rm
ps
(t)=
r
rm
ps
(t)
e
rm
ps
(t)
, where
r
rm
ps
(t)
is the combined distance obtained using the approximate
position on the ground and
e
rm
ps
(t)
is the corresponding estimation error obtained from a
linearized propagation of the coordinate errors.
Thus, the initial number of cycles
ˆ
N
rm
ps
(t)
will be, respectively
ˆ
N
rm
ps
(t)=
P
rm
ps
(t)
l
F
rm
ps
(t)
l
®
s
ˆ
N
»
s
n
l
»
5 cycles (32)
for the first method, and
13
ˆ
N
rm
ps
(t)=
r
rm
ps
(t)
l
F
rm
ps
(t)
l
®
s
ˆ
N
»
s
e
l
(33)
for the second method. Note that generally the phase ambiguity at time t is estimated by EKF.
Equations 32 and 33 are used only for initialization (t=0) and special events (e.g. reinitialization
after a cycle slip, see section 2.4).
The initial state covariance matrix
C
0
e
is defined as
C
0
e
=
s
x
2
0 0 0 0 0 0 0 0 0
0
s
x
2
0 0 0 0 0 0 0 0
0 0
s
y
2
0 0 0 0 0 0 0
0 0 0
s
y
2
0 0 0 0 0 0
0 0 0 0
s
z
2
0 0 0 0 0
0 0 0 0 0
s
z
2
0 0 0 0
0 0 0 0 0 0
s
ˆ
N
2
0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
s
ˆ
N
2
0
0
0 0 0 0 0 0 0 0 0 0 0
é
ë
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
ú
(34)
where
s
x
2
,
s
y
2
,
s
z
2
are the position error variances from the diagonal of the inverse leastsquares
normal matrix
s
x
2
,
s
y
2
,
s
z
2
are the velocity variances from an apriori assumption
s
ˆ
N
2
is the estimated variance of the initial ambiguity; it is introduced just on the lines
corresponding to visible satellites and it can be different from satellite to satellite. Since the
dimension of the matrix is fixed, zeros are placed on lines corresponding to nonvisible
satellites; this not strictly positive definite covariance matrix is allowed by the Kalman filter
mathematical formulation (Sansò, 2006).
Note that an initial high value of the velocity variance can be used to model the acceleration of a
body that starts moving from a stationary state.
2.4 Satellite configuration changes
The goGPS EKF 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 EKF
algorithm to model them. goGPS handles partial and total satellite losses, satellite additions, pivot
satellite changes and cycleslips by editing the EKF matrices, as summarized in the next sub
sections (more detailed explanations are given in Realini, 2009).
14
2.4.1 Satellite losses
When for any reason a satellite s that was visible at time
t1
is no more visible at time t, the only
change in the goGPS EKF is that the
H
t
matrix automatically loses the rows that correspond to the
satellite s code and phase measurements.
In case, also the combined ambiguities
ˆ
N
rm
ps
(t)
can be set to zero, but this is not strictly necessary,
since they are going to be reset anyway if the satellite s will come back visible again.
If all the satellites are lost, the system will proceed just by using the filter dynamics, thus
ˆ
X
t
=T
ˆ
X
t1
(35)
meaning, for instance, that it goes straight into a long tunnel.
2.4.2 Satellite additions
When a satellite s that was not visible at time
t1
becomes visible at time t, its observations are
added automatically to the
H
t
matrix (if the satellite elevation is higher than the chosen cutoff
angle), but it is also necessary to initialize its ambiguity
ˆ
N
rm
ps
(t1)
in the state vector
X
t1
as if the
satellite were visible in the previous epoch. The estimation error covariance at time
t1
is modified
accordingly. Either Eq. 32 or Eq. 33 can be used for initializing the ambiguity of satellite s and for
estimating its variance.
2.4.3 Pivot change
The change of the pivot satellite (e.g. when a satellite reaches a higher elevation than the current
pivot satellite) requires the combined ambiguities to be referred to the new pivot. This solution is
adopted to avoid that a low elevation pivot could degrade all double differenced observations.
Let us suppose a change of the pivot satellite at time t. Given the combined ambiguities equations at
time
t1
, with pivot satellite p
N
rm
p1
(t1) =(N
r
p
N
m
p
)(N
r
1
N
m
1
)
N
rm
pq
(t1) =(N
r
p
N
m
p
)(N
r
q
N
m
q
)
N
rm
pp
(t1) =0
N
rm
p32
(t1) =(N
r
p
N
m
p
)(N
r
32
N
m
32
)
ì
í
ï
ï
ï
ï
î
ï
ï
ï
ï
(36)
the corresponding ambiguities with respect to the pivot satellite q would be (at time
t1
)
15
N
rm
q1
(t1) =(N
r
q
N
m
q
)(N
r
1
N
m
1
)=N
rm
p1
N
rm
pq
N
rm
qq
(t1) =0
N
rm
qp
(t1) =(N
r
q
N
m
q
)(N
r
p
N
m
p
)=0N
rm
pq
N
rm
q32
(t1) =(N
r
q
N
m
q
)(N
r
32
N
m
32
)=N
rm
p32
N
rm
pq
ì
í
ï
ï
ï
ï
î
ï
ï
ï
ï
(37)
therefore the second set of equations can be obtained from the first one by using the following
linear transformation
N
q
(t1) =
N
rm
q1
(t1)
N
rm
q2
(t1)
N
rm
q32
(t1)
é
ë
ê
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
ú
=R
N
rm
p1
(t1)
N
rm
p2
(t1)
N
rm
p32
(t1)
é
ë
ê
ê
ê
ê
ê
ê
ù
û
ú
ú
ú
ú
ú
ú
=RN
p
(t1)
(38)
with R being a matrix constructed to reflect the relationship between the vectors
N
q
(t1)
and
Np(t1)
, as expressed in Eq. 37.
Since initial ambiguities are transformed with Eq. 38, this transformation has to be propagated to
the estimation error covariance as
C
t1( pivot q)
e
=I0
0R
é
ë
êù
û
úC
t1( pivot p)
e
I0
0R
é
ë
êù
û
ú
+
.
(39)
2.4.4 Cycle slips
The detection of cycle slips at time t is performed by comparing the current ambiguity value with an
estimation of the number of cycles made on the basis of observations. The number of cycles is
estimated by applying Eq. 33, with the combined distance computed by updating the previous epoch
EKF position, on the basis of the dynamic model only. If the difference between this estimated
number of cycles and the current ambiguity value is larger than an empirical threshold set by the
user (e.g. 3 cycles ≈ 60 cm), then a cycle slip is detected. This test is reliable when the accuracy of
the EKF estimated coordinates is of the order of tens of centimetres; otherwise many false alarms
can occur. When a cycle slip is detected, the corresponding satellite is treated as if it was added to
the current configuration at time t (see Section 2.4.2). If a cycle slip affects the pivot satellite, then
all double differenced observations slip and all ambiguities are reinitialized; the solution at time t
will then be mostly based on code observations. As an alternative realtime method, Doppler
observations are also used for cycle slip detection. Of course, when working in postprocessing,
more sophisticated and efficient techniques for cycle slip detection could be implemented (see e.g.
Blewitt, 1990; De Lacy et al., 2008); this is part of future activities.
16
3. UBLOX ERROR CALIBRATION
Short baseline tests were performed in order to assess the measurement quality of a ublox receiver
and calibrate goGPS parameters accordingly. An AEK4T evaluation kit with its standard patch
antenna (ANNMS) and a permanent station installed in Como (Italy) were used. The permanent
station belongs to the EUREF Permanent Network (EPN), with the marker name ‘COMO’.
3.1 Short baseline test
In order to study the behaviour and quality of the data received by the AEK4T, without
interferences given by the rover motion or by its distance from the master station, a short baseline
test has been performed, keeping the AEK4T 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 1) on the
rooftop of the university building.
Figure 1. AEK4T antenna location 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, postprocessed with double differences with respect to the
Como permanent station). Code and phase observations from both the AEK4T and the permanent
station were processed with double differences (DD), therefore the available epochs were filtered to
select only the synchronized ones that are in common to both instruments. This selection produced a
total of 28 577 synchronized epochs at 1 Hz, corresponding to a time span of 7 h 56 m 17 s.
Double differenced AEK4T 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 AEK4T antenna. In the case of a so short
baseline, satellite position errors can be neglected. The computation was performed on all the
dataset, taking into account C/N0 and elevation cutoffs (30 dBHz and 10° respectively). This led to
a number of 795 856 samples of DD code error. The resulting mean value, standard deviation and
RMSE are listed in Table 1.
Mean [m] Std. deviation [m] RMSE [m] Num. of samples
0.565 2.982 3.035 795 856
Table 1. Overall short baseline DD AEK4T code quality
The AEK4T DD code measurement errors show an overall RMSE of about 3 m. The error
histogram, which looks like a Gaussian distribution, is not centred on zero, but shows a bias of
17
about 60 cm; this can create problems when estimating phase ambiguities from code data, being the
carrier wavelength of the order of 20 cm. The cause of this bias is unclear; it might be attributed to
the low quality of the receiver electronics, but further investigations are required.
Double differenced AEK4T phase quality: The AEK4T phase measurements are affected by
some more issues than code measurements. Particularly, DD phase errors plots reveal trends and
discontinuities, probably due to AEK4T clock drift errors and/or cycle slips (Odijk et al., 2007
describe in details the discrete jumps applied by an ANTARISbased 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, for others an increasing one. The phase double difference equation says that, in
principle, constant time series should be obtained over long time periods after removing cycle slips;
the physical phenomena producing this behaviour are still not fully clear and they are going be
investigated thoroughly in future developments. Anyway, these trends have been removed by fitting
the data with a third degree polynomial, which was then subtracted from the data, with the aim of
obtaining a zeromean time series. Nevertheless, the obtained time series still presented some
systematic effects; this residual time correlation could in principle be modelled and introduced in
the Kalman filter.
After excluding suspected outliers, a first rough estimation of the DD phase error standard deviation
was obtained. The results are reported in Table 2.
Mean [m] Std. deviation [m] RMSE [m] Num. of samples
0.000 0.032 0.032 32 668
Table 2. Overall short baseline DD AEK4T phase quality
Elevation and C/N0 weight calibration: Weights to be assigned to measurements have been
calibrated by analysing 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.
In order to properly weight measurements on the basis of their C/N0, an interpolation function has
been conceived that fits well enough the resulting RMSE values for the different combinations of
C/N0 ranges. In particular, the following function has been specifically formulated to follow the
behaviour of the code error as a function of C/N0 values (CN variable in the formula)
W(CN )=10
(CNT)
a
A
10
(FT)
a
1
æ
è
ç
ç
ç
ö
ø
÷
÷
÷
CN T
FT+1
æ
è
ç
ç
ç
ö
ø
÷
÷
÷CN <T
1CN ³T
ì
í
ï
ï
î
ï
ï
(40)
18
The T 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 F parameter defines the C/N0 value for which the
function is “forced” to have the weight defined by the A parameter; the a parameter defines the
bending of the curve.
The combination of the two W functions of the two satellites involved in double differences is given
by
W(CN
1
,CN
2
)=W(CN
1
)+W(CN
2
)
2
(41)
and it results in a surface used to approximate the DD code RMSE values (Figure 2).
Figure 2. Weighting surface function (T = 50; F = 10; A = 30; a = 30) and RMSE values (circles)
As regards elevation analysis, the results show less variability of RMSE values than in the C/N0
analysis. The RMSE is generally decreasing as the elevation increases up to 50°, then it rises again.
This increasing behaviour for high elevation ranges is probably due to multipath effects in the
vertical direction that were not shielded during the test. 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, i.e.
W(CN ,e)=
1
sin
2
e10
(CNT)
a
A
10
(FT)
a
1
æ
è
ç
ç
ç
ö
ø
÷
÷
÷
CN T
FT+1
æ
è
ç
ç
ç
ö
ø
÷
÷
÷
æ
è
ç
ç
ç
ö
ø
÷
÷
÷CN <T
1CN ³T
ì
í
ï
ï
î
ï
ï
(42)
Of course the resulting weighting functions are tailored for ublox receivers.
19
4. ACCURACY TESTS
A path was surveyed on one of the artificial islands of Osaka Bay, Japan (Figure 3, green line), in
order to assure good sky visibility conditions.
Figure 3. Accuracy test location. The background satellite image shows Osaka Bay, covering about
37 km EastWest, 28 km NorthSouth; the zoomed white box shows the location used for the open
sky tests, covering 400 m EastWest, 220 m NorthSouth; the yellow and red dots in Osaka urban
area respectively mark the path sections where both the reference dualfrequency receivers had an
integer fix and those where they did not
Two TOPCON dual frequency LEGACYE+ receivers (PGA1 antennas) and one ublox AEK4T
receiver (ANNMS antenna) were mounted on the rooftop of a car moving at constant velocity. The
observations of the two dual frequency receivers were postprocessed by TOPCON proprietary
software in kinematic mode, solving integer ambiguities; this trajectory was used as a reference for
the accuracy assessment. This processing was performed with respect to a virtual reference station
(VRS), generated by a positioning service exploiting the Japanese nationwide array of GPS stations
(GEONET; Yamagiwa et al., 2006); the VRS was located at a distance of about 8 km from the
nearest network station. The ublox antenna was positioned along the segment connecting the
centres of the two dualfrequency antennas, at a known distance from the two, in order to derive its
position (Figure 4). The segment connecting the receivers was along the direction of movement of
the car. goGPS was used to process both TOPCON receivers (using L1 only) and the ublox
receiver in relative positioning with respect to the same VRS used for estimating the reference
trajectory.
Figure 4. Setup of TOPCON and ublox antennas during tests
This was done in order to evaluate goGPS results using either highcost or lowcost hardware. The
two TOPCON dual frequency solutions (computed using TOPCON software and the same VRS)
were used as references for computing the accuracy of the goGPS solutions. The AEK4T internally
20
computed positioning was also saved, in order to compare it with the goGPS solution using the
same hardware and the same GPS observations.
Three tests were done on the same day, with a pause of about two hours between subsequent tests in
order to let the satellite configuration change significantly. During each test, three surveys were
performed by driving the car along the same path (Figure 3, green line) at different speeds: 5, 10
and 20 km/h. The speed during each survey was kept as much as possible constant. The same
processing parameters were kept during all the surveys, although two different sets of parameters
were applied for TOPCON and ublox receivers in order to optimize the solution (Table 3). The
dynamic model of the Kalman filter was set at constant velocity for all the tests (see Eq. 1).
Parameter TOPCON ublox
EKF error st.dev. (East) 0.3 m/s 0.3 m/s
EKF error st.dev. (North) 0.3 m/s 0.3 m/s
EKF error st.dev. (Up) 0.1 m/s 0.1 m/s
Code error st.dev. 0.4 m 3 m
Phase error st.dev. 0.003 m 0.03 m
Weighting strategy elevation C/N0
Cycle slip threshold 5 cycles 10 cycles
Elevation cutoff 10 deg 10 deg
Table 3. goGPS parameters for the accuracy tests (tuned for the two different kinds of receivers);
note that the EKF model errors basically define how much the estimated trajectory is allowed to
deviate from a straight path (see Eq. 1)
Figures 57 summarize the accuracy results in terms of twodimensional (EastNorth) RMSE of the
residuals with respect to the dual frequency solution computed by TOPCON software. All
coordinates were projected to UTM (Universal Transverse Mercator). In particular, Figure 5
compares the goGPS relative solution and the ublox standalone solution using the ublox AEK4T
hardware.
Figure 5. Accuracy comparison between goGPS relative positioning and ublox standalone
positioning, both using ublox hardware (2D coordinates)
goGPS relative solution shows an accuracy of less than about 1 m, while the ublox standalone
accuracy (using the same observations as goGPS) is less than about 3 m. Figure 6 compares the
21
goGPS relative solution using either TOPCON (L1 only) or ublox AEK4T hardware. The
accuracy achieved by goGPS singlefrequency relative positioning with highend hardware quality
is less than about 50 cm. It is worth noting that this result was obtained by keeping ambiguities as
float; the fixing of integer ambiguities, if correctly solved, is expected to significantly enhance the
accuracy. Integer ambiguity solving by LAMBDA method (Teunissen, 1995) is currently being
added to goGPS and will be included in future publications.
Figure 6. Accuracy results of goGPS single frequency (L1) relative positioning, using TOPCON
and ublox hardware (2D coordinates)
A second path was surveyed while driving the same car (with the same equipment configuration)
from a location within Osaka urban area to the artificial island surveyed for the open sky tests
(Figure 3, yellow and red points). Most of the path was surveyed on highways, flanked by 3 to 5
story buildings. In order to have a reliable reference for the accuracy assessment, only the results for
which both reference (i.e. TOPCON) receivers had an integer fix were selected for the comparison
(yellow points in Figure 3).
Figure 7 shows the effect of the different weighting strategies implemented in goGPS on the
accuracy of the estimated trajectory.
Figure 7. Accuracy comparison among different weighting strategies with goGPS relative
positioning using ublox hardware in a dense urban environment (2D coordinates)
The dense urbanization and the presence of tall buildings emphasizes the importance of properly
weighting the available observations: in fact the high sensitivity of typical lowcost GPS hardware
enables the availability of many observations, even if degraded. In this kind of scenario, the CN/0
weighting strategy provides the best results for different elevation cutoffs. Note that the elevation
22
cutoff in standard GPS positioning engines is usually kept fixed to a low value in order to
maximize the number of available observations; this is a good strategy in opensky scenarios, but in
the dense urban environment of the present test it introduces a significant degradation of the
positioning accuracy. Increasing the cutoff values to high elevation angles, however, degrades the
geometry of the satellites. The CN/0 weighting strategy implemented in goGPS provides a solution
for improving the positioning accuracy while keeping the elevation cutoff to low angles.
In order to evaluate the benefit of the DTM module implemented in goGPS, the same path in Osaka
urban area was used, selecting one of the sections with the largest error in the vertical direction (i.e.
the section with the densest highrise buildings, causing extremely adverse positioning conditions).
Using this dataset, the positioning results of goGPS with and without the DTM support were
compared with the positioning solution computed by the ublox module (Figure 8). DTM grids for
goGPS were produced using the Shuttle Radar Topography Mission (SRTM) 3 arcsecond dataset.
Within this timespan the dual frequency receivers provided only few float solutions (i.e. integer
ambiguities could not be resolved) with very large errors, due to the strongly difficult positioning
conditions; therefore, the SRTM height value was used as a reference to evaluate the reliability of
the positioning along the vertical direction. Naturally the comparison is biased due to the fact that
the reference DTM is the same used to correct the goGPS solution. However the goal of the test is
not to evaluate the absolute accuracy of the goGPS+SRTM system, but to show that by having a
good quality DTM, goGPS is able to take it into account for improving the solution. It is also worth
noting that the terrain level of the Osaka urban area surveyed for this test is mostly flat and within
few metres from the sea level. The large differences shown in Figure 8 by both the solutions
without the DTM support, and particularly those below the sea level, are thus accounted as actual
positioning error.
Figure 8. Effect of DTM support on goGPS vertical positioning in a dense urban environment
Table 4 shows the mean and standard deviation of the differences between the three positioning
solutions and the SRTM height.
mean st.dev.
goGPS with DTM 0.0 m 4.1 m
goGPS without DTM 0.6 m 15.7 m
ublox 10.3 m 8.4 m
Table 4. Difference with respect to the reference DTM
23
The advantage of exploiting at best the information of highsensitive receivers in such a critical
scenario is evident.
5. CONCLUSIONS
goGPS free and open source positioning software has been published online as a collaborative
research and teaching platform. It is based on extended Kalman filtering with tailored algorithms
for processing lowcost receiver data. goGPS singlefrequency relative kinematic positioning
accuracy was evaluated by comparison with a dualfrequency receiver; results show an accuracy of
less than 1 m when using lowcost, consumerlevel hardware and of less than 50 cm when using
highend hardware (singlefrequency). A weighting function calibrated on a specific lowcost
receiver was tested during navigation in a dense urban environment, showing an improvement of 1
2 m with respect to the solution without weights. This confirms that lowcost receivers need specific
processing strategies, as it is done in goGPS. The use of a coarse DTM (SRTM3) height
information as an additional information in goGPS EKF was demonstrated to stabilize the solution
along the vertical direction in adverse positioning conditions (i.e. when navigating among tall
buildings in a dense metropolitan area). This is again a valuable add on to the presented software,
also from the methodological point of view.
Future plans for goGPS development include generalization to other GNSS constellations, possibly
using SBAS (Satellite Based Augmentation Systems) for increasing the accuracy in standalone
mode. Studies for improving also the static positioning with lowcost receivers will be performed
too, following the philosophy proposed in this research.
6. ACKNOWLEDGMENTS
The accuracy tests have been designed and carried out in collaboration with Venkatesh Raghavan
(Osaka City University), Hirofumi Hayashi (Applied Technology Co.,Ltd.) and Akinori Kimoto
(JENOBA Co.,Ltd.). The tests were supported by the JSPS GrantinAid for Scientific Research
(Issue No. 2109737) entitled "Development of Ubiquitous LBS WebService using Free and Open
Source Software".
goGPS has been ported to Java and implemented as a web service in collaboration with Venkatesh
Raghavan, Daisuke Yoshida (Tezukayama Gakuin University) and Lorenzo Patocchi (CRYMS
Sagl).
7. REFERENCES
Alanen, K., Wirola, L., Käppi, J., Syrjärinne, J., 2006, Inertial Sensor Enhanced Mobile RTK
Solution Using LowCost Assisted GPS Receivers and InternetEnabled Cellular Phones, Inside
GNSS, 1(4), 3239.
Baltsavias, E.P., 1999, Airborne laser scanning: basic relations and formulas, ISPRS Journal of
Photogrammetry & Remote Sensing, 54, 199214.
Bancroft, S., 1985, An Algebraic Solution of the GPS Equations, IEEE Trans. Aerospace and
Electronic Systems, AES21(1), 5659.
Blewitt, G., 1990, An automatic editing algorithm for GPS data. Geophysical Research Letters,
17(3), 199202.
24
Borre, K., 2003, The Easy Suite  MATLAB code for the GPS newcomer, GPS Solutions, 7(1), 47
51.
Brovelli, M. A., Realini, E., Reguzzoni, M. and Visconti, M. G., 2008, Comparison of the
Performance of Medium and Low Level GNSS Apparatus, with and without Reference Networks.
International Archives of Photogrammetry, Remote Sensing and Spatial Information Sciences, 36,
part 5/C55, 5461.
De Lacy, M. C., Reguzzoni, M., Sansò, F., Venuti, G., 2008, The Bayesian detection of
discontinuities in a polynomial regression and its application to the cycleslip problem, Journal of
Geodesy, 82(9), 527542.
Euler, H.J., Landau, H., 1992, Fast GPS ambiguity resolution onthefly for realtime application,
Proceedings of the sixth international geodetic symposium on satellite positioning, Columbus, Ohio,
17–20 March, 650–659.
Grewal, M.S., Andrews, A.P., 2001, Kalman Filtering: Theory and Practice Using Matlab, John
Wiley & Sons, Ltd.
Hatch, R., 1990, Instantaneous ambiguity resolution, Proceedings of KIS’90, Banff, Canada, 10–13
September, 299–308.
Heiskanen, W.A., Moritz, H., 1967, Physical Geodesy, W.H. Freemann, San Francisco, USA.
HernandezPajares, M., Juan, J.M., Sanz, J., RamosBosch, P., RoviraGarcia, A., Salazar, D.,
VenturaTraveset, J., LopezEchazarreta, C., Hein, G., The ESA/UPC GNSSLab tool (gLAB): An
advanced multipurpose package for GNSS data processing, Proceedings of the Satellite Navigation
Technologies and European Workshop on GNSS Signals and Signal Processing (NAVITEC), 2010
5th ESA Workshop, 810 Dec. 2010, doi: 10.1109/NAVITEC.2010.5708032
HofmannWellenhof, B., Lichtenegger, H., Collins J., 1992, GPS Theory and Practice. Springer
Verlag, New York.
HofmannWellenhof, B., Legat, K., Wieser, M., 2003, Navigation, Principles of Positioning and
Guidance. SpringerVerlag Wien, New York.
Kalman, R. E., 1960, A New Approach to Linear Filtering and Prediction Problems, Transaction of
the ASME  Journal of Basic Engineering, 3545.
Kirchner, M., Becker, 2005, 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, 2(73).
Klobuchar, J. A., 1987, Ionospheric timedelay algorithm for singlefrequency GPS users,
Aerospace and Electronic Systems, IEEE Transactions on, (3), 325331.
Leick, A., 1995, GPS Satellite Surveying, Wiley, New York.
25
Odijk, D., Traugott, J., Sachs, G., Montenbruck, O., Tiberius, C., 2007, Two Precision GPS
Approaches Applied to Kinematic Raw Measurements of Miniaturized L1 Receivers, Proceedings
of ION GNSS 2007, 2528 September, 827838.
Pail, R., Bruinsma, S., Migliaccio, F., Förste, C., Goiginger, H., Schuh, W.D., Höck, E., Reguzzoni,
M., Brockmann, J.M, Abrikosov, O., Veicherts, M., Fecher, T., Mayrhofer, R., Krasbutter, I., Sansò,
F., Tscherning, C. C., 2011, First GOCE gravity field models derived by three different approaches,
Journal of Geodesy, 85(11), 819843.
Realini, E., goGPS  free and constrained relative kinematic positioning with low cost receivers,
Ph.D. thesis, Politecnico di Milano, 2009.
Available online at http://geomatica.como.polimi.it/tesi/E_Realini.tar (acc. 2 April 2013)
Realini, E., Yoshida, D., Reguzzoni, M., Raghavan, V., 2012, Enhanced satellite positioning as a
web service with goGPS open source software, Applied Geomatics, 4(2), 135142.
Saastamoinen, J., 1973, Contribution to the theory of atmospheric refraction, Bulletin Géodésique,
107(1), 1334.
Sansò, F., 2006, Navigazione geodetica e rilevamento cinematico, Polipress, Milan, Italy (in Italian).
Takasu, T., Kasai, S., 2005, Precise Orbit Determination of GPS Satellites using Carrier Phase
Measurements, Proceedings of the 15th Workshop on JAXA Astro Dynamics and Flight Mechanics.
Available online at http://gpspp.sakura.ne.jp/paper2005/astro2005.pdf (acc. 2 April 2013)
Takasu, T., Yasuda, A., 2009, Development of the lowcost RTKGPS receiver with an open source
program package RTKLIB, Proceedings of the International Symposium on GPS/GNSS,
International Convention Center Jeju, Korea, November 46.
Teunissen, P.J.G., 1995, The leastsquares ambiguity decorrelation adjustment: a method for fast
GPS integer ambiguity estimation. Journal of Geodesy, 70, 65–82, doi:10.1007/BF00863419.
Teunissen, P.J.G., Kleusberg A. (eds), 1998, GPS for Geodesy. Springer, Berlin.
Van Diggelen, F., 2009, AGPS: Assisted GPS, GNSS and SBAS, Artech House, Norwood MA,
USA.
Yamagiwa, A., Hatanaka, Y., Yutsudo, T., Miyahara, B., 2006, Real time capability of GEONET
system and its application to crust monitoring, Bulletin of the Geographic Survey Institute, 53, 27
33.
Wirola, L., 2008, Highaccuracy Positioning for the Mass Market, Presented at FIG Working Week
2008, June 1419, Stockholm, Sweden.
Available online at
http://www.fig.net/pub/fig2008/ppt/ts08f/ts08f_03_wirola_ppt_3167.pdf (acc. 2 April 2013)