1.
goGPS
open source software for low-cost
RTK positioning
Eugenio Realini
Osaka City University, Japan
March 2010
2.
goGPS background
Aim: enhancing the accuracy of low-
cost GPS devices by means of
RTK positioning, Kalman
filtering, DTM aid, [...]
Geomatics Laboratory
Polytechnic of Milan Used to teach students about GPS
Como Campus positioning through Kalman filter in
Navigation Laboratory course
2007 – 2009: developed through
3 Master theses and 1 Ph.D. thesis
August 2009:
goGPS v0.1pre-alpha MATLAB code
was published as open source
3.
goGPS background
September 2009:
I came to Osaka City University as
post-doc fellow, hosted by Prof. Media Center
Raghavan Osaka City University
October 2009: goGPS was presented
at international FOSS4G2009 Sydney
November 2009: goGPS was
presented at local FOSS4G Osaka and
FOSS4G Tokyo
February 2010:
goGPS v0.1alpha MATLAB code
was published as open source
4.
goGPS today
Cryms
http://www.cryms.com
Applied Tech.
goGPS http://www.apptec.co.jp
OSGEO JP
Polytechnic of Milan http://www.osgeo.jp
http://www.polimi.it
Galileian Plus Osaka City University
http://www.galileianplus.it http://www.osaka-cu.ac.jp
JSPS
http://www.jsps.go.jp
5.
goGPS niche
~ US $ 30000 ~ US $ 3000 ~ US $ 100
2-3 cm 15-30 cm 3-5 m
RTK DGPS Stand-alone
<1m
goGPS
L1 RTK positioning
6.
Real-time processing
Base station(s)
NT
RIP
(RT
CM
3.1
)
3G
Internet
USB goGPS
USB
Real-time positioning
7.
Post-mission processing
Base station(s)
NT
RIP
USB (RT
CM
3.1
)
RINEX RINEX
Internet
goGPS
Positioning
8.
Kalman filter
It is the core of the
software.
It updates the position
of the receiver in real-
time on the basis of:
• new measurements
• the state of the
system at the previous
epoch
state variables
To implement it, it is needed to define: observations
dynamic model
9.
State variables
In goGPS state variables can be divided in two groups:
goGPS state variables can be divided in two groups:
xr
˙
xr
⋮
parameters describing
yr ˙
the receiver motion z
xr xr
yr
˙
(position, velocity,
Xt = ⋮ acceleration, etc.) y
zr
x
zr
˙
⋮ Pivot p
Np1
rm
phase ambiguities
⋮
(double differences)
Np32
rm
Master m Rover r
10.
Observation equations
goGPS is based on double difference observations with
respect to a master base station:
- ionosphere error
- troposphere error deleted or negligible
- satellite and receiver clock errors
Prm (t) = ρps (t)
ps
rm + ν codice
code
λΦps (t) = ρps (t) + λNps (t) + ν fase
rm rm rm phase
linearization
geometric distance, phase ambiguity
function of xr, yr, zr for the satellite 's'
(xm, ym, zm known a Kalman filter
priori)
11.
Dynamic model
dynamics of the receiver (e.g. constant velocity)
x r (t + 1) = x r (t) + ˙
x r (t)
˙
x r (t + 1) = 0 + x r (t) + ε xr (t)
˙ ˙
model error
“dynamics” of phase ambiguities
Np1 (t + 1) = Np1 (t)
rm rm ambiguities are never fixed:
goGPS keeps a float solution
⋮ which evolves with the
Np32 (t + 1) = Np32 (t) Kalman filter
rm rm
12.
Phase ambiguities
- Float estimate (never fixed)
- Estimated for initialization, new satellites and cycle-slips detection
by:
ps ps
P rm − rm
ps
* comparing code and phase ranges: N =
rm
OR
* least squares estimate (weighted on SNR):
[ ][ ][ ] [ ]
sX s
P
ps Y s 0 ⋯ 0 ps ps
rmT rm I rm
ps
rm Z
X
⋮ ⋮ ⋮ ⋮ ⋮ ⋱ Y⋮ ⋮
pS
P rm = SX
S
Y S
Z 0 ⋯ 0 pS pS pS
Z rm T rm I rm
sX − ⋯ 0 N s
s
ps
rm Y s
Z
ps ps ps
rm T rm −I rm
⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮
S 0 ⋯ − N S
S
pS
rm X Y S
Z
pS pS pS
rm T rm − I rm
13.
DTM observation
In order to improve the heigth positioning quality, an
additional observation from a DTM is introduced:
A DTM obtained from a
hDTM = h(x r , y r , zr ) + v DTM LiDAR DSM 2m x 2m
produced by Lombardy
Region (Italy) was used
σv ≈ 30 cm during tests.
DTM loading time was optimized by subdividing the DTM
in buffered tiles.
approx. Tile Detection of the 4
Interpolation KF
position search nearest vertices
14.
Constrained motion
If the rover is moving along a path that is known a priori
(e.g. road, railway, …) a linear constraint can be
introduced, making the motion mono-dimensional
The constraint is modeled as 3D interconnected
segments and the motion is described by a curvilinear
coordinate (c):
cr (X2,Y2,Z2) (X3,Y3,Z3)
˙ (X1,Y1,Z1)
cr c2 c
new state
⋮ c1
variable: X t = (X0,Y0,Z0)
p1
Nrm c0
⋮
Nrm
p32
15.
Observation weighting
9
8
10
8 7
R M S E [m ]
6 6
4 5
30
2
35 4
30
35 40
40 45
45 3
50 50 C / N 0 s a t e llit e 2 [ d B H z ]
C / N 0 s a t e llit e 1 [ d B H z ]
500
400
A weight function was defined 300
W e ig h t
to take into account the 200
satellites signal-to-noise ratio 100
30
and elevation. 0 40
20
40 50
60
80 60 C /N 0 [d B H z ]
E le va tio n [ d e g ]
16.
Software/1
- developed in MATLAB environment
- 1 Hz data acquisition rate by means of
“Instrument Control” toolbox (standard
TCP-IP and USB)
21.
goGPS – ublox comparison
goGPS solution
AEK-4T
EVK-5T
- RTK (VRS)
- constant velocity dyn. model
- observations weighted on SNR
u-blox solution
AEK-4T
EVK-5T
- stand-alone
- automotive dynamic model
LEA-5T firmware < 6.02 bug?
“The field local time in RXM-RAW had
insufficient resolution with FW6.0
causing a submillisecond mismatch
between local time and pseudorange
measurements. This limitation of
FW6.0 has been fixed with FW6.02 […]”
22.
Accuracy test
Devices:
- Leica GPS1200
- Leica GS20
- eBonTek eGPS 597
- ev. kit u-blox + goGPS
goGPS Leica GS20 ebonTek
(cutoff = 30°) (mod. “Max Accuracy”) (ANTARIS4)
mean 0.78 m mean 0.30 m mean 4.03 m
std 0.47 m std 0.15 m std 1.70 m
RMSE 0.91 m RMSE 0.34 m RMSE 4.37 m
24.
Future developments (sw / hw)
1) Establishing a collaborative platform (versioning system,
bug tracker, mailing list, forum, …) to coordinate goGPS
as a true open source project (i.e. not just publishing code)
2) Porting goGPS from MATLAB to a widespread language
3) Provide goGPS accurate positioning as a web service
4) Hardware prototype
26.
goGPS as a service
goGPS will provide GPS data processing as a web
processing service (WPS) to obtain accurate positioning
from raw GPS observations
accurate positioning
raw observations
ZOO Server providing Rovers just acquiring
goGPS as WPS raw data
http://www.zoo-project.org/
27.
Hardware prototype/1
No positioning processor Lower cost goGPS
No proprietary algorithms Greater freedom
29.
Conclusions
- goGPS L1 RTK positioning enhances the accuracy of low-cost
GPS receivers (and low-cost antennas) to sub-meter level
- goGPS is going to be converted to JAVA, managed as a
collaborative open source project
- goGPS processing will be provided as web service (e.g. WPS
on ZOO platform)
- goGPS MATLAB code is and will be publicly available to help
collaborative research on low-cost GPS positioning
Be the first to comment