[FOSS-GPS] High accuracy positioning with low cost GPS devices:a FOSS project

Jaykob jraible at gmx.de
Tue May 5 11:28:44 EDT 2009

Hi Eugenio,

maybe I can jump in. I'm currently developing kinematic software for AEK-4Ts
using the GPSTk for my diploma thesis. I'm also reading your thesis, pretty
My solution is based on John's solution used in Kinematic (
http://www.precision-gps.org precision-gps.org ).
First I'm getting the nearest epoch, the time of the observation when it
wouldn't have the jitter bias:

  DayTime AntarisMessage::nearestHz(DayTime time, int msgRateHz) const
	   int nSecPerHz = NSEC_PER_SEC / msgRateHz;
	   int nSec = (time.DOYsecond() - floor(time.DOYsecond())) * NSEC_PER_SEC;
	   nSec += nSecPerHz/2;
	   double adjust = nSec % nSecPerHz - nSecPerHz/2;
	   adjust /= NSEC_PER_SEC;
	   return time - adjust;

Then I'm calculating adjustments for the observations:

  DayTime rawTime, epoch;

  // We need to align epochs to nearest HZ for synchronization
  rawTime = rinexObsData.getEpoch(recentEpoch); // raw time read from
  epoch = rinexObsData.nearestHz(rawTime, msgRateHz); // epoch we need to
align observations to
  double adjust = epoch - rawTime;

  // Adjusting observations
  // D1 = Doppler observation, C1 = Pseudorange observation, L1 = Phase
  double freq = L1_FREQ - D1;
	if (C1 > 0.0)
		C1 += adjust * freq * L1_WAVELENGTH;
	if (L1 > 0.0)
		L1 += adjust * freq;

Don't forget to use the jitter free times (variable epoch) for further
Hope I could help you! I didn't really compare the results with the ones
without time correction yet but I'm getting pretty good results so far.

Eugenio Realini wrote:
> Hi Stefan,
> could you give us more details on how to use doppler measurements to 
> extrapolate carrier phase observations to the reference station 
> time-tag? Up to now we never investigated this matter, but we agree with 
> you that this would improve accuracy.
> Eugenio
> stefans wrote:
>> Hello Eugenio,
>> please take a look on Q/A7 in that FAQ:
>> http://www.u-blox.de/customersupport/faq_antaris/Rinex.html
>> You should "correct" the u-blox carrier phase by extrapolating the
>> carrier
>> phase to the top-of-second
>> (timetag of your reference station data)  by using doppler, before
>> computing
>> roverpositions.
>> This would significantly improve accuracy.
>> Stefan
> _______________________________________________
> This message is sent to you from FOSS-GPS at lists.osgeo.org mailing list.
> Visit http://lists.osgeo.org/mailman/listinfo/foss-gps to manage your
> subscription
> For more information, check http://wiki.osgeo.org/wiki/FOSS-GPS

View this message in context: http://n2.nabble.com/High-accuracy-positioning-with-low-cost-GPS-devices%3A-a-FOSS-project-tp1312818p2797802.html
Sent from the Open Source GPS-related discussion and support mailing list archive at Nabble.com.

More information about the FOSS-GPS mailing list