gage using gpstk gnss learning research seagal hanoi 2009

Post on 25-Oct-2014

28 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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