gage using gpstk gnss learning research seagal hanoi 2009

104
1 SEAGAL Project Workshop. Hanoi, 2009. gAGE research group of Astronomy and Geomatics Barcelona, Spain Salazar, D., Hernandez-Pajares, M., Juan, J.M., Sanz, J. Using the GPSTk for GNSS learning and research Salazar D., Hernandez-Pajares M., Juan J.M. and Sanz J. gAGE/UPC, Barcelona, Spain

Upload: anhnn0168

Post on 25-Oct-2014

28 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 2: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 3: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 4: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 5: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 6: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 7: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 8: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 9: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 10: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 11: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 12: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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!!!

Page 13: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 14: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 15: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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).

Page 16: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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”

Page 17: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;

Page 18: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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 );

Page 19: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;

Page 20: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;

Page 21: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;

Page 22: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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 );}

Page 23: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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; }}

Page 24: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 25: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;}

Page 26: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 27: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 28: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 29: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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!!!.

Page 30: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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)

Page 31: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 32: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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)

Page 33: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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)

Page 34: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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 )

Page 35: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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)

Page 36: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 37: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 38: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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");

Page 39: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 40: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;

Page 41: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 42: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;

Page 43: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 44: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 45: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 46: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 47: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 48: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 49: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 50: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 51: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 52: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 53: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 54: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 55: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 56: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 57: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 58: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 59: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 60: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 61: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 62: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 63: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 64: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 65: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 66: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 67: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 68: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 69: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 70: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 71: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 72: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 73: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 74: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 75: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 76: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 77: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 78: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 79: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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)

Page 80: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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)

Page 81: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 82: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 83: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 84: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 85: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 86: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 87: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 88: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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)

Page 89: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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, ...

Page 90: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 91: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 92: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 93: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 94: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 95: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 96: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 97: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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!!!

Page 98: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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;

Page 99: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 100: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 101: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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

Page 102: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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.

Page 103: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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).

Page 104: gAGE Using GPSTk GNSS Learning Research SEAGAL Hanoi 2009

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!