gogps (march 2010)
TRANSCRIPT
goGPSgoGPSopen source software for low-cost open source software for low-cost RTK positioningRTK positioning
Eugenio RealiniEugenio RealiniOsaka City University, JapanOsaka City University, Japan
March 2010March 2010
goGPS backgroundgoGPS background
Geomatics LaboratoryGeomatics LaboratoryPolytechnic of MilanPolytechnic of Milan
Como CampusComo Campus
Aim: enhancing the accuracy of low- cost GPS devices by means of RTK positioning, Kalman filtering, DTM aid, [...]
Used to teach students about GPS 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
Media CenterMedia CenterOsaka City UniversityOsaka City University
September 2009: I came to Osaka City University as post-doc fellow, hosted by Prof. Raghavan
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
goGPS backgroundgoGPS background
goGPS todaygoGPS today
Polytechnic of MilanPolytechnic of Milanhttp://www.polimi.ithttp://www.polimi.it
Osaka City UniversityOsaka City Universityhttp://www.osaka-cu.ac.jphttp://www.osaka-cu.ac.jp
OSGEO JPOSGEO JPhttp://www.osgeo.jphttp://www.osgeo.jp
Galileian PlusGalileian Plushttp://www.galileianplus.ithttp://www.galileianplus.it
CrymsCrymshttp://www.cryms.comhttp://www.cryms.com
goGPS
JSPSJSPShttp://www.jsps.go.jphttp://www.jsps.go.jp
Applied Tech.Applied Tech.http://www.apptec.co.jphttp://www.apptec.co.jp
goGPS nichegoGPS niche
15-30 cm 3-5 m2-3 cm
RTK DGPS Stand-alone
goGPSL1 RTK positioning
< 1 m
~ US $ 30000 ~ US $ 3000 ~ US $ 100
Real-time processingReal-time processing
Internet
3G
Base station(s)
NTRIP(RTCM 3.1)
USB goGPS
USB
Real-time positioning
Post-mission processingPost-mission processing
Internet
Base station(s)NTRIP(RTCM 3.1)
USB
goGPS
RINEX RINEX
Positioning
Kalman filterKalman 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
To implement it, it is needed to define:
state variables
observations
dynamic model
In goGPS state variables can be divided in two groups:
parameters describing the receiver motion(position, velocity, acceleration, etc.)
phase ambiguities(double differences)
Master m Rover r
Pivot p
rx rx
x
y
z
p32rm
p1rm
r
r
r
r
r
r
N
N
zz
yy
xx
⋮
⋮
˙
⋮
˙
⋮
˙
=tX
goGPS state variables can be divided in two groups:
State variablesState variables
++=
+=
fasepsrm
psrm
psrm
codicepsrm
psrm
ν(t)λN (t)ρ(t)λΦ
ν(t)ρ(t)P
++=
+=
fasepsrm
psrm
psrm
codicepsrm
psrm
ν(t)λN (t)ρ(t)λΦ
ν(t)ρ(t)P
geometric distance, function of xr, yr, zr
(xm, ym, zm known a priori)
linearization
goGPS is based on double difference observations with respect to a master base station:
- ionosphere error- troposphere error- satellite and receiver clock errors
phase ambiguity for the satellite 's'
deleted or negligible
code
phase
Observation equationsObservation equations
Kalman filter
++=++=+
(t)ε(t)x01)(tx(t)x(t)x1)(tx
rxrr
rrr
˙˙˙˙
=+
=+
(t)N1)(tN
(t)N1)(tN
p32rm
p32rm
p1rm
p1rm
⋮
model error
ambiguities are never fixed:goGPS keeps a float solution
which evolves with theKalman filter
dynamics of the receiver (e.g. constant velocity)
“dynamics” of phase ambiguities
Dynamic modelDynamic model
Phase ambiguitiesPhase ambiguities
- Float estimate (never fixed)
- Estimated for initialization, new satellites and cycle-slips detection by:
* comparing code and phase ranges:
OR
* least squares estimate (weighted on SNR):
[P rmps
⋮PrmpS
rmps
⋮rm
pS]=[
Xs Y
s Zs 0 ⋯ 0
⋮ ⋮ ⋮ ⋮ ⋱ ⋮XS Y
S ZS 0 ⋯ 0
Xs Y
s Zs − ⋯ 0
⋮ ⋮ ⋮ ⋮ ⋱ ⋮XS Y
S ZS 0 ⋯ −
][ XYZN s
⋮N S
][rmpsT rm
psI rmps
⋮rmpST rm
pS I rmpS
rmpsT rm
ps−I rmps
⋮rmpST rm
pS− I rmpS]
N rmps=
Prmps−rm
ps
In order to improve the heigth positioning quality, an additional observation from a DTM is introduced:
≈ 30 cm
Tile search
Detection of the 4 nearest vertices Interpolation
DTM loading time was optimized by subdividing the DTM in buffered tiles.
A DTM obtained from a LiDAR DSM 2m x 2m produced by Lombardy Region (Italy) was used during tests.
DTMrrrDTM v)z,y,h(xh +=
vσ
DTM observationDTM observation
approx.position
KF
Constrained motionConstrained 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):
new state variable:
c0
c1
c2
(X0,Y0,Z0)
(X1,Y1,Z1)(X2,Y2,Z2) (X3,Y3,Z3)
c
p32rm
p1rm
r
r
N
N
cc
⋮
⋮
˙
=tX
3 0
3 5
4 0
4 5
5 0
3 03 5
4 04 5
5 0
2
4
6
8
1 0
C / N 0 s a t e l l i t e 2 [ d B H z ]C / N 0 s a t e l l i t e 1 [ d B H z ]
RM
SE
[m
]
3
4
5
6
7
8
9
3 0
4 0
5 0
6 0
2 04 0
6 08 0
0
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
C / N 0 [ d B H z ]E l e v a t i o n [ d e g ]
Wei
ghtA weight function was defined
to take into account the satellites signal-to-noise ratio and elevation.
Observation weightingObservation weighting
Software/1Software/1
- developed in MATLAB environment
- 1 Hz data acquisition rate by means of “Instrument Control” toolbox (standard TCP-IP and USB)
goGPS – ublox comparisongoGPS – ublox comparison
Receiver: u-blox AEK-4T
goGPS solution- RTK (VRS)- constant velocity dyn. model- observations weighted on SNR
u-blox solution- stand-alone- pedestrian dynamic model
goGPS – ublox comparisongoGPS – ublox comparison
goGPS solutionAEK-4TEVK-5T- RTK (VRS)- constant velocity dyn. model- observations weighted on SNR
u-blox solutionAEK-4TEVK-5T- stand-alone- automotive dynamic model
goGPS – ublox comparisongoGPS – ublox comparison
goGPS solutionAEK-4TEVK-5T- RTK (VRS)- constant velocity dyn. model- observations weighted on SNR
u-blox solutionAEK-4TEVK-5T- stand-alone- automotive dynamic model
LEA-5T firmware < 6.02 bug?
“The field local time in RXM-RAW hadinsufficient resolution with FW6.0causing a submillisecond mismatchbetween local time and pseudorangemeasurements. This limitation ofFW6.0 has been fixed with FW6.02 […]”
Accuracy testAccuracy test
goGPS(cutoff = 30°)
ebonTek(ANTARIS4)
mean 0.78 mstd 0.47 mRMSE 0.91 m
mean 4.03 mstd 1.70 mRMSE 4.37 m
Leica GS20(mod. “Max Accuracy”)
mean 0.30 mstd 0.15 mRMSE 0.34 m
Devices:- Leica GPS1200- Leica GS20- eBonTek eGPS 597- ev. kit u-blox + goGPS
Future developments (positioning)Future developments (positioning)
1) network-constrained navigation (with complex intersections)
2) adaptive Kalman filtering
3) improved cycle slips management
4) static solution
5) SBAS integration
6) GLONASS / GALILEO integration
7) odometer integration
Future developments (sw / hw)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
Porting goGPSPorting goGPS
Conversion from MATLAB to JAVA
- positioning func.- input/output- GPS formats- (...)
goGPS libs
goGPS core Kalman filter
GUIgoGPS GUI
MATLAB JAVA→
goGPS as a servicegoGPS as a service
goGPS will provide GPS data processing as a web processing service (WPS) to obtain accurate positioning from raw GPS observations
ZOO Server providinggoGPS as WPS
Rovers just acquiringraw data
raw observations
accurate positioning
http://www.zoo-project.org/
Hardware prototype/1Hardware prototype/1
goGPSNo positioning processorNo proprietary algorithms
Lower costGreater freedom
softwarehardware
goGPSSoftware-definedacquisition/trackingengine
Radio front-end
Hardware prototype/2Hardware prototype/2
ConclusionsConclusions
- 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
Code & contactsCode & contacts
goGPS website:
http://www.gogps-project.org
ありがとうございましたありがとうございました