gage using gpstk gnss learning research seagal hanoi 2009
Post on 25-Oct-2014
28 Views
Preview:
TRANSCRIPT
1SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Using the GPSTkfor GNSS learning and
research
Salazar D., Hernandez-Pajares M.,
Juan J.M. and Sanz J.
gAGE/UPC, Barcelona, Spain
2SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Contents
• GPSTk overview
• Some current features
• GPSTk advantages and disadvantages
• How to get the GPSTk
• GPSTk basics
• GNSS Data Structures (GDS)– Processing paradigm
• Some processing examples
• Comparison with other GPS software
• Conclusions
3SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk overview
• The GPSTk is:
– A library to write GNSS software– Includes example applications.
• The GPSTk is Free Software (LGPL):
– Both non-commercial and– commercial applications.
4SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk overview
The LGPL free software license means that:
• The original code belonged to ARL:UT, but it was released to the public.
• New features added to the library are property of their authors, but them must be also released as LGPL.
• New software developed taking advantage of the GPSTk library (linking) is property of their authors.
5SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk overview
The LGPL free software license means that:
• In summary, with the GPSTk you can develop both free and non-free (commercial) software.
• This license is very convenient both for companies and educational/research institutions.
6SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk overview
• Initiated at ARL:UT, it now has several official developers around the world.
• The GPSTk is easy to extend and maintain, lowering programming costs.
• It is very well documented.
• Website:
http://www.gpstk.org
7SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk overview
• It is written in ISO-standard C++.
• Design is object-oriented, easing maintenance and extensibility.
• It is VERY portable:
– Operative System portability:
• Works in Windows, Linux, Mac OSX, AIX, etc.
– Hardware portability:
• Big and small systems, both 32 and 64 bits.
8SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk portabilityGUMSTIXMiniature computer
NOKIA Internet Tablets
9SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Some current features
• Time conversions.
• RINEX files reading/writing:– Observation– Ephemeris– Meteorological
• Ephemeris computation:– Broadcast– SP3.
10SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Some current features
• Mathematical tools: Matrices, vectors, interpolation, numeric integration, LMS, W-LMS, Kalman filter, etc.
• Application development support:– Exceptions handling.– Command line framework.– Configuration files management.
• Code positioning, RAIM, DGPS and Precise Point Positioning (PPP) support.
11SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Some current features
• Several tropospheric models: Saastamoinen, Goad-Goodman, New Brunswick, Niell, etc.
• Classes for precise modeling: Phase
centers, Wind-up, gravitational delay,
etc.
• Tidal models: Solid tides, Ocean
loading, Pole tides
12SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Some current features
• Full support for Antex (antenna) files.
• Advanced GNSS Data Structures (GDS)
for data processing and management.
• Other features like:
– Stocastic models
– Probabilistic functions (normal, chi-square,
etc)
– Run-time programmable solvers!!!
13SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk advantages
• Programmers don't have to reinvent the wheel:– Don't use your time to program, test and
debug common, non-interesting routines (like RINEX parsing, for instance)
– Use your time to learn and experiment. – Use your time to develop new techniques.
• You can trust on the GPSTk:– Its performance has been validated with
other state-of-the-art GPS software suites.
14SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk advantages
• It includes data management facilities that support clean and easy to maintain source code.
• It is open-source, and therefore:
– Great for learning how complex algorithms work.
– It eases reimplementation in other languagues and/or hardware.
15SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk disadvantages
• The programmer needs C++ knowledge to use it effectively.
• C++ is very flexible, but it may become complex and “exotic”.
• The compilation process is slower and more complex than using interpreted languages.
• Many engineers are more confortable with tools like Mathlab (although they are very slow).
16SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
How to get the GPSTk
• The GPSTk requires:– C++ compiler (g++, MS Visual C++, etc)– Jam or make– Optional: doxygen, perl, gnuplot
• Easy installation:– Download source code from GPSTk website or
subversion repository– Decompress if needed– Compile: “jam” is currently the easiest way– Generate documentation with “doxygen”
17SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Vectors Vector<double> vect1(4);Vector<double> vect2(4);
for( int i = 0; i < 4; ++i ){ vect1(i) = 3.0 + i; vect2(i) = 5.0 2.5*i;}
Vector<double> vect3 = vect1 + vect2;
cout << vect1 << endl;cout << vect2 << endl;cout << vect3 << endl;
18SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Matrices Matrix<double> A(3, 3, 5.0);Matrix<double> I = ident<double>(3);Matrix<double> B = A 2.0*I;Matrix<double> C(3, 3);
for( int row = 0; row < 3; ++row ){ for( int col = 0; col < 3; ++col ) { C(row, col) = row+0.9*B(row,col); }}
Matrix<double> CT = transpose( C );Matrix<double> D = inverseChol( CT*C );
19SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Solvers Vector<double> vect(3, 0.0);vect(0) = 94.50;vect(1) = 112.01;vect(2) = 121.86;
Matrix<double> mat(3, 2, 0.0);for( int row = 0; row < 3; ++row ) for( int col = 0; col < 2; ++col ) mat(row, col) = 1.5 + row + 0.9*row*col;
SolverLMS solver;
solver.Compute( vect, mat );
cout << solver.solution(0) << " : " << solver.solution(1) << endl;
20SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Time
DayTime epoch1(2009,10,28,10,30,0.0);
DayTime epoch2 = epoch1 + 3600.0;
cout << epoch1 << endl << epoch2 << endl;
cout << epoch1.GPSfullweek() << " " << epoch1.DOY() << " " << epoch1.GPSsecond() << endl;
21SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Position
Position posBCN( 4789031.0, 176583.0, 4195015.0 );
Position posHANOI;posHANOI.setGeodetic( 21.033, 105.85, 308.0 );
Position posSAT( 22300542.564, 9466839.117, 10798193.375 );
cout << posBCN << endl << posHANOI << endl << posHANOI.elevation( posSAT ) << " : " << posHANOI.azimuth( posSAT ) << endl;
22SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: RINEX
RinexObsStream rinexData("bahr1620.04o");
RinexObsHeader rinexHeader;rinexData >> rinexHeader;
cout << rinexHeader.markerName << " : " << rinexHeader.antType << " : " << rinexHeader.firstObs << endl;
RinexObsData obsData;
while( rinexData >> obsData ){ obsData.dump( cout );}
23SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: EphemerisSP3EphemerisStore SP3EphList;SP3EphList.loadFile( "igs13354.sp3" );
SatID sat( 10, SatID::systemGPS );
DayTime epoch( SP3EphList.getInitialTime() );DayTime epochEnd( SP3EphList.getFinalTime() );
while( epoch < epochEnd ) { epoch += 60.0; Xvt svPos;
try { svPos = SP3EphList.getXvt( sat, epoch ); cout << epoch.DOYsecond() << " " << svPos.x[0] << " " << svPos.x[1] << " " << svPos.x[2] << endl; } catch (InvalidRequest& e) { continue; }}
24SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Ephemeris
25SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Solid tidesPosition posHANOI;posHANOI.setGeodetic( 21.033, 105.85, 308.0 );
SolidTides solid;
DayTime epoch(2009,10,28,0,0,0.0);DayTime epochEnd(2009,10,29,0,0,0.0);
while( epoch < epochEnd ) { Triple hanoiTide; hanoiTide = solid.getSolidTide(epoch,posHANOI);
cout << epoch.DOYsecond() << " " << hanoiTide[0] << " " << hanoiTide[1] << " " << hanoiTide[2] << endl;
epoch += 300.0;}
26SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GPSTk basics: Solid tides
27SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GNSS Data Structures
• GNSS Data Structures (GDS) were designed to help in GNSS data processing.
• They address GNSS data management problems.
• You can program without them, but they will make your work a lot easier.
28SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GNSS Data Structures
• Almost all GNSS data may be identified (or indexed) by:
– Source: Receiver logging data.– Satellite: GPS, GALILEO, GLONASS...– Epoch: Time the data belongs to.– Type: C1, P1, L2, etc, and other types.
Key point:Key point: Save Meta-Information: Save Meta-Information:
Save Save 4 indexes4 indexes to identify to identify
each piece of dataeach piece of data
29SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GNSS Data Structures
• Source: Implemented as class SourceID.
• Satellite: Implemented as class SatID.
– Several systems: GPS, Galileo, Glonass...
• Epoch: Implemented as class DayTime.
• Type: Implemented as class TypeID.
– Includes basic observations: C1, P1, etc.
– Other “types”: Relativity, troposphere, etc.
– You can create new types as needed!!!.
30SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GDS example
• GDS provide several methods to ease handling. For instance:
Keep only C1 observable in GDS:
gpsData.keepOnlyTypeID(TypeID::C1)
31SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GDS example
• GDS provide several methods to ease handling. For instance:
Keep only C1 observable in GDS:
gpsData.keepOnlyTypeID(TypeID::C1)
GDS Method Type to keep
32SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Implementation
• GDS provide several methods to ease
handling. For instance:
Remove a given satellite from GDS:
gpsData.removeSatID(sat21)
33SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
GDS Method Satellite to remove
Implementation
• GDS provide several methods to ease
handling. For instance:
Remove a given satellite from GDS:
gpsData.removeSatID(sat21)
34SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Implementation
• GDS provide several methods to ease
handling. For instance:
Remove a given satellite from GDS:
gpsData.removeSatID(sat21)
Note:
sat21 = SatID( 21, SatID::systemGPS )
35SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Implementation
• GDS provide several methods to ease
handling. For instance:
Access GDS in a matrix-like fashion:
gpsData.body(TypeID::LI)(sat14)
36SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Implementation
• GDS provide several methods to ease
handling. For instance:
Access GDS in a matrix-like fashion:
gpsData.body(TypeID::LI)(sat14)
GDS “Branches” SatelliteType
37SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigm
• Operator “>>” is overloaded:
We redefine it in C++ to make data“flow” from one processing step to the next
38SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigmExample:
Declare object “rinexFile” to take data out ofRinex observation file:
RinexObsStream rinexFile("ebre0300.02o");
39SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Example:
Declare object “rinexFile” to take data out ofRinex observation file:
RinexObsStream rinexFile("ebre0300.02o");
Processing paradigm
Class to handleRinex Obs files
Object name Rinex file name
40SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigmExample:
Declare object “gpsData”. This is a GDS:
gnssRinex gpsData;
41SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigmExample:
Declare object “gpsData”. This is a GDS:
gnssRinex gpsData;
GDS Class Object name
42SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigmExample:
Combine everything and take one epoch ofdata out of Rinex file into GDS:
RinexObsStream rinexFile("ebre0300.02o");gnssRinex gpsData;
rinexFile >> gpsData;
43SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigmExample:
Combine everything and take one epoch ofdata out of Rinex file into GDS:
RinexObsStream rinexFile("ebre0300.02o");gnssRinex gpsData;
rinexFile >> gpsData; Processing line
44SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigmExample:
Combine everything and take one epoch ofdata out of Rinex file into GDS:
RinexObsStream rinexFile("ebre0300.02o");gnssRinex gpsData;
rinexFile >> gpsData;
“Flow” operator
Processing line
45SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing paradigm
• Main Idea: GNSS data processing becomes like an “assembly line”.– The GDS “flows” from one
“workstation” to the next, like a car in factory.
– And, like the car, the GDS changes along the processing line.
• For the developer, the GDS is like a “white box” holding all the information needed, and properly indexed.
46SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing code-based GPS data with the GPSTk and GDS
A simple example:
C1 code observable +least-mean squares solver
Plain standard GPS processing
47SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
• Get data out of Rinex file, one epoch at a time– Get data into GDS (gpsData)– Do it until Rinex file ends.
48SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ }
• Get data out of Rinex file, one epoch at a time– Get data into GDS (gpsData)– Do it until Rinex file ends.
49SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ }
• Get data into modeling object gpsModel– GpsModel was previously initialized:
•Ephemeris, tropospheric model, Klobuchar ionospheric model, etc.
– Initialization phase is not shown here.
50SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ gpsData >> gpsModel }
• Get data into modeling object gpsModel– GpsModel was previously initialized:
•Ephemeris, tropospheric model, Klobuchar ionospheric model, etc.
– Initialization phase is not shown here.
51SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ gpsData >> gpsModel }
• Resulting GDS with original data and modeled data gets into solver object lmsSolver– lmsSolver is from SolverLMS class.– lmsSolver was previously initialized. – Initialization phase is not shown here.
52SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> lmsSolver; }
• Resulting GDS with original data and modeled data gets into solver object lmsSolver– lmsSolver is from SolverLMS class.– lmsSolver was previously initialized. – Initialization phase is not shown here.
53SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> lmsSolver; }
• Resulting GDS with original data and modeled data gets into solver object lmsSolver– lmsSolver is from SolverLMS class.– lmsSolver was previously initialized.– Initialization phase is not shown here.
Processingline
54SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> lmsSolver;
}
• All GNSS data processing is done!!!– Print results to the screen.– C++ cout object is used to print to screen.– Solution is inside lmsSolver: Ask for type.
55SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> lmsSolver;
cout << lmsSolver.getSolution(TypeID::dx) << '' ''; cout << lmsSolver.getSolution(TypeID::dy) << '' ''; cout << lmsSolver.getSolution(TypeID::dz) << endl;}
• All GNSS data processing is done!!!– Print results to the screen.– C++ cout object is used to print to screen.– Solution is inside lmsSolver: Ask for type.
56SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 code observable +least-mean squares solver +East-North-Up (ENU) system
57SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> gpsModel }
• Add a change-base object to processing line:– XYZ2NEU class change from ECEF to ENU.– Create object baseChange from XYZ2NEU
class.
58SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> baseChange }
• Add a change-base object to processing line:– XYZ2NEU class change from ECEF to NEU.– Create object baseChange from XYZ2NEU
class.
59SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> baseChange }
• Resulting GDS gets into object enuSolver– enuSolver belongs to SolverLMS class.– enuSolver was previously initialized to
solve using dLat, dLon,dUp and cdt.– Initialization phase is not shown here.
60SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> baseChange >> enuSolver; }
• Resulting GDS gets into object enuSolver– enuSolver belongs to SolverLMS class.– enuSolver was previously initialized to
solve using dLat, dLon,dUp and cdt.– Initialization phase is not shown here.
61SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> baseChange >> enuSolver;
}
• All GNSS data processing is done!!!– Print results to the screen.– Solution is inside enuSolver: Ask for type.
62SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + LMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> gpsModel >> baseChange >> enuSolver;
cout << enuSolver.getSolution(TypeID::dLat) << '' ''; cout << enuSolver.getSolution(TypeID::dLon) << '' ''; cout << enuSolver.getSolution(TypeID::dH) << endl;}
• All GNSS data processing is done!!!– Print results to the screen.– Solution is inside enuSolver: Ask for type.
63SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PC (ionosphere free) code + smoothing with LC + weighted least-mean squares solver + East-North-Up (ENU) system
64SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> }
• First, get combinations we will need:– PC and LC (ionosphere-free).– LI (ionospheric combination).– MW (Melbourne-Wübbena)
• Look for corresponding classes in GPSTk API
65SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW}
• First, get combinations we will need:– PC and LC (ionosphere-free).– LI (ionospheric combination).– MW (Melbourne-Wübbena)
• Look for corresponding classes in GPSTk API
66SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
}
• Then, detect and mark cycle-slips:– Two different and complementary methods
are used.• Everything is in a single processing line.
67SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
>> markCSLI >> markCSMW
}
• Then, detect and mark cycle-slips:– Two different and complementary methods
are used.• Everything is in a single processing line.
68SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
>> markCSLI >> markCSMW
}
• Smooth code with phase
69SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
>> markCSLI >> markCSMW >> smoothPC
}
• Smooth code with phase
70SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
>> markCSLI >> markCSMW >> smoothPC>> gpsModel
}
• Smooth code with phase
• Apply model
71SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
>> markCSLI >> markCSMW >> smoothPC>> gpsModel >> getWeights
}
• Smooth code with phase
• Apply model
• Compute weights
72SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
>> markCSLI >> markCSMW >> smoothPC>> gpsModel >> getWeights >> baseChange>> wmsSolver;
}
• Smooth code with phase
• Apply model
• Compute weights
• Change base and solve with a WMS solver
73SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Smoothed-PC + WMS + ENU
while ( rinexFile >> gpsData ){ gpsData >> getPC >> getLC >> getLI >> getMW
>> markCSLI >> markCSMW >> smoothPC>> gpsModel >> getWeights >> baseChange>> wmsSolver;
}
• All GNSS data processing is done!!!– Print results to the screen.– Solution is inside wmsSolver: Ask for type.
• Everything is in a single processing line.
74SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Differential GPS +C1 code observable +
weighted least-mean squares + East-North-Up (ENU) system
75SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + DGPS + WMS + ENU
while ( rinexFile >> gpsData ){ gpsDataRef >> synchro >> refModel;
}
• First, process reference station data:– synchro is a Synchronize class object.– It is in charge of synchronizing reference
and rover data streams.– Initialization is not shown here. Consult API.
76SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + DGPS + WMS + ENU
while ( rinexFile >> gpsData ){ gpsDataRef >> synchro >> refModel;
delta.setRefData( gpsDataRef.body );
}
• Then, indicate the reference data:– delta is a DeltaOp class object.– It computes single diffences using common
satellites.– You must tell it which is the reference data.
77SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + DGPS + WMS + ENU
while ( rinexFile >> gpsData ){ gpsDataRef >> synchro >> refModel;
delta.setRefData( gpsDataRef.body );
gpsData >> gpsModel >> getWeights >> delta >> baseChange >> wmsSolver;
}
• Finally, process rover receiver data:– You must insert delta object into processing
line to compute single differences.
78SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
C1 + DGPS + WMS + ENU
while ( rinexFile >> gpsData ){ gpsDataRef >> synchro >> refModel;
delta.setRefData( gpsDataRef.body );
gpsData >> gpsModel >> getWeights >> delta >> baseChange >> wmsSolver;
}
• All GNSS data processing is done!!!– Print results to the screen.– Solution is inside wmsSolver: Ask for type.
79SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Code-based results (as expected)
80SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Processing phase-based GPS data with the GPSTk and GDS
Example ofPrecise Point Positioning (PPP)
81SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
Set “correcting” object with tide information.It also includes RX antenna phase center and eccentricity
82SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel
Compute basic components of model
83SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites
Remove satellites in eclipse
84SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay
Compute gravitational delay
85SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter
Compute the effect of satellite phase centers
86SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables
Correct observables from tides, RX phase center, etc
87SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp
Compute wind-up effect
88SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo
Compute tropospheric effect (Niell model)
89SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo >> computeLinearCombinations
Compute common linear combinations: PC, LC, LI, ...
90SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo >> computeLinearCombinations >> markCSLI >> markCSMW
Marck cycle slips: Two complementary algorithms
91SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo >> computeLinearCombinations >> markCSLI >> markCSMW >> computePrefitResiduals
Compute prefit residuals
92SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo >> computeLinearCombinations >> markCSLI >> markCSMW >> computePrefitResiduals >> decimateData
Decimate data if epoch is not a multiple of 900 seconds
93SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo >> computeLinearCombinations >> markCSLI >> markCSMW >> computePrefitResiduals >> decimateData >> baseChange
Change from ECEF to ENU reference frame
94SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo >> computeLinearCombinations >> markCSLI >> markCSMW >> computePrefitResiduals >> decimateData >> baseChange >> pppSolver;
Solve equations with a properly adjusted Kalman filter
95SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (static, forward mode)correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites >> gravitationalDelay >> computeSatellitePhaseCenter >> correctObservables >> windUp >> computeTropo >> computeLinearCombinations >> markCSLI >> markCSMW >> computePrefitResiduals >> decimateData >> baseChange >> pppSolver;
All this processing is repeated for each epoch
96SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP: MADR 2008/05/27, static, forward
97SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP: MADR 2008/05/27, static, forward
The achieved accuracy is better than 2 centimeters!!!
98SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP (kinematic, forward mode)
WhiteNoiseModel newCoordinatesModel(100.0);
pppSolver.setCoordinatesModel(&newCoordinatesModel);
correctObservables.setExtraBiases(tides);
gpsData >> basicGPSModel >> removeEclipsedSatellites ... ... >> pppSolver;
99SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
PPP:MADR 2008/05/27, kinematic, forward
100SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Comparison with other GPS software
101SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Comparison with other GPS software
102SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Conclusions
• GPSTk is already a solid base to work upon, saving tedious work to the programmer and researcher.
• The GPSTk provides solid advantages both for companies and educational/research institutions.
• GPSTk portability, design and openness makes it very flexible for multiple uses.
• GDS provide a powerful, flexible and easy to use processing framework.
103SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Conclusions
• GPSTk results are comparable with the best GPS data processing software available.
• There are several areas being improved:
– RINEX version 3 handling.
– Robust outlier detection classes.
– More sophisticated tide models.
– Other GNSS processing strategies (RTK).
104SEAGAL Project Workshop. Hanoi, 2009.
gA
GE
res
earc
h g
rou
p o
f A
stro
no
my
an
d G
eom
atic
s
Bar
celo
na,
Spa
in
Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J.
Thanks for your attention and time!
top related