Hello everybody! I'm using FLTK and GPSTk to make an application to process DGPS data, based on "example9.cpp".

The difference is that I want to process data from aircraft (kinematic and fast), and it's gonna be up to 50 km baseline.

The receivers are Ashtech Z-12 (dual frequency, 10 Hz), and I'm converting the data to Rinex separately before processing.

It seems that I'm having trouble adjusting SolverPPP for a kinematic rover, because a little while after it starts moving, the solution goes crazy.

I've used both whitenoise and randomwalk as models for the coordinates, but the beavior is almost the same.

I've read on about separate models for dLat, dLon and dH, how can I do that? Do I need that?

Also, all examples seem to be for static DGPS. For a kinematic rover, do I have to update the position for the basicmodel, tropmodel, grav delay, windup etc after each epoch or not (I tried and it didn't seem to work)?

Before using example9 as a base, I started with SolverWMS ("example6.cpp"), but I could only get at least 10-20 m of error in every direction, comparing to Ashtech's PNAV. I also tried using DiscFix on my data before processing, but the solution got worse.

Thank you for your help and for GPSTk!

-- DaniloGalisteu - 28 Feb 2009


ALERT! If you answer a question - or have a question you asked answered by someone - please remember to edit the page and set the status to answered. The status is in a drop-down list below the edit box.

Hi Danilo!

I must start saying that I know precise aircraft positioning is a though problem... because it is my Ph.D. thesis research theme ... therefore, I'll try to help you as much as possible without compromising my yet unpublished work.

You said that your work is based on 'example9.cpp'. However, take a look at 'example10.cpp', which is a lot more similar to what you are looking for.

You must update the nominal position, because the precision of the modeling depends on that. Also, the linearization of the equations could be affected if you don't update the position (depending on your baseline length).

Regarding separation of models for dLat, dLon and dH, I suggest you to start with a single white noise model and get a solution as starting point. Then, separate the models and carefully adjust the associated sigmas. This is not an easy issue for aircraft, so better be conservative.

Good luck,


-- DagobertoSalazar - 04 Mar 2009

Thank you for your answer. Example 10 is really new, so I didn't have it yet.

This is how I'm updating the solution, after processing each epoch:

solPos = Position((basicModel.rxPos.X() + pppSolver.solution[1]), (basicModel.rxPos.Y() + pppSolver.solution[2]), (basicModel.rxPos.Z() + pppSolver.solution[3]));

basicModel.rxPos = solPos;







(the tropmodel is a pointer so that I can change the model).

Is that right/enough?

The other point is: I didn't get from the documentation how I can assign a separate stochastic model for each coordinate.

Thanks again, any help is welcome!

-- DaniloGalisteu - 04 Mar 2009


It seems to me that your coordinate updating is right enough.

Just be very careful when you add previous position in basicModel with solution in pppSolver: Both must be expressed in the same reference system. I suggest you to change everything to ECEF because it make things simpler.

Regarding how to assign separate stochastic models for each coordinate, it is not in the documentation because it is not implemented in the current version of SolverPPP.

You must change method "SolverPPP::Process(gnssRinex& gData)", lines 488 to 495.

Sometime in the future I'll upload a "SolverGeneral" class that eases this task, but it is still under development.



-- DagobertoSalazar - 08 Mar 2009 No such template def TMPL:DEF{PROMPT:supportquery}

Topic revision: r5 - 08 Mar 2009, DagobertoSalazar

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback