Realtime DGPS with ublox and GPSTk lib processing, relative <1m?

I've read through a few discussions on this forum about poor man's DGPS and getting relative accuracy down to the ~1m range.  It seems no one's having much luck even with identical GPS units.  I'm wondering if anyone has manged this and what are your thoughts on what I'm currently building.


I'm laying out a PCB for a ublox LEA-6T (that's the one that outputs raw data and carrier phase) to interface to a MCU and a 433MHz radio.  That's the mobile unit.  My base station is then a single board computer with it's own LEA-6T, radio, and software running GPSTk post-processing software.  The mobile board will then radio the raw data (subframes 1 and 2 and psuedo range and carrier info) to my base station.  Base station code then chooses a set of sattellites that work well for both units and calculates position of both units using the same satallites and same ephemeris data.  (calculated position could then be radioed back to mobile unit)


The units are genearlly pretty close to each other (spatially) so the only error here should be that inherent to the ublox measuring psuedorange--no constellation, algorithm, iono/troposphere, ephemeris differences.


Has anybody tried this?  Do you think I can get a relative accuracy of ~1m?



Thanks for any thoughts guys and gals!


Views: 31475

Reply to This

Replies to This Discussion

Thanks a bunch. I might drop you a line when I start fighting with data. Excited to see what a I get from the RTKLib apps...
Results look good. I got rt kinetmatic working on rtklib.using 2 lea-4T's am now getting accuracies at best in the low cm on short baseline. even works to an extent using NTRIP on a 43km baseline.
Using 1 meter moving baseline can get pitch and yaw to within a degree.
Accuracies sometimes degrade significantly when satelites align up in a straight line.
Accuracy can degrade to decimeter or worst in bad conditions.
I suspect lot depends on the antenna and multipath considerations.
ie best results high off ground with no multipath obstructions.
Tried cheap (£5!) patch antenna but they didn't give very good results for me.
Looking at mid range antenna and timing grade helical antenna to compare.
May look at enhancing with a choke ring to further reduce multipath effects.

Attached two random plots from my testing, not quite sure the exact conditions as I'm changing antenna setups quite often.

Managed to get the lea-4T working reliably at 20Hz! (data sheet specified at 10Hz)
by only using the two outputs RAW and SFRB and by slowing navigation calculations down to 4Hz or less.
Would be very interested to hear what raw output rate you can get from the lea-6T (spec is 5Hz). Will it do 10 Hz?
Overall highly impressed with rtklib, an extremely versatile package once you get your head around it..
I had a slight hiccup as it needed a patch from the author to remove mkl (intel math kernel library) to run properly on either of two laptops I tried.
contact me or the author if you have similar problems.
Wow, that's very encouraging. I'll be happy to get 50cm. What kind of antenna are you using again?

So if you're using RAW and SFRB, I take you're using broadcast ephemeris?

I'm just building up my boards now but things are slow with final exams in the way...should be done next week sometime. I'll let you know how fast I manage to get those 2 messages out of the 6T.

Wonder if there's enough people who want some 6Ts to pool together and buy a reel. They're difficult and expensive to get!
If you are having trouble finding/budgeting the Ublox, don't forget that the Skytraq is available with a 'RAW capable' firmware and works with RTK Lib.

They are happy to take paypal.
Noland, I'm experimenting with Trimble 16741-00 also Max-Rad (or Lucent) helical timing grade, also got some Novatel 501 coming.
I tried the helical with a home made choke ring too. Three rings of 1/4 wavelength depth and spacing.
Helical are probably not the ideal choice due to their higher gain at low elevations and potential to pick up reflected signals from below. ( the circular polarization reversal from the reflection below can be picked up by the helical)
hence the choke ring.
Its difficult doing accurate comparitive testing, you really need identical setups recorded simulaneously or say one sideral day apart, as the main element of uncertainty is the satellite constellation.
I tried broadcast ephemeris also ftp from IGS on input 3, but not sure I had the options setting right at the time.
(should it be set to ephemeris Precise?)
I believe the LEA-6T's are around £50 in ten offs, and not a huge lot cheaper by the reel.
If you want some LEA-4T I have located a batch mounted on small PCB with SMB antenna socket, antenna short circuitry, and LDO regulator. PM for details.

Simon, Which Skytraq receivers give the correct Raw output? I can't locate the S1315F anywhere. Did the Venus 6 supercede it?
How do they compare to the ublox?
Specifically, the ublox states half cycle ambiguity resolved, does that apply to raw mode too, and does the Skytraq behave the same?
We looked at the 'S1315F-RAW' which was a special specifically for RTK-Lib, contact for pricing - they were quite cheap for dev-kit and individual modules.

We use multiple mounts and switch antennas on consecutive days, recording overnight (~16 hour) data sets.

Don't know about half cycle ambiguity.
I got everything built up now and started testing with RTKLib.

Anthony, you were interested in the max raw rate from the LEA-6T--I seem to be reliably getting 16Hz with everything turned off except RAW and SFRB.

I'm quite dissapointed with the relative accuracy though. The antennas are outside and about 6" apart and the RTK Navi reports a baseline of anywhere from 2m to 25m! I really hope I'm doing something wrong with the RTK Navi settings. Can you give me some pointers?

I'm using the "Moving-Base" mode but other than that I left all settings at the default. Any tips on what I should change? Even when the solution is fixed, the baseline is jumping around at 10-12 meters when it should be nearly 0.

Granted my antennas are only about 5' off the ground and in a sub-urban environment and they are not high-grade survey antennas. But still...I was hoping to get <1m. What did you do to get decimeters?

Thanks for any suggestions. I'll continue perusing the RTKLib documentation...
I think 6"may be asking too much ie too short.
Apparently very short baselines may introduce nonlinear solutions.
Try increasing the filter iteration number from its default of 1, I got a marginal improvement going to 2 on a 0.5 meter moving baseline.
Are you entering a baseline constraint in the options?
Strangely, for me I had slightly better results with no baseline constraint on short moving baseline.
Or reduce the tolerance, ie I used 0.5 metre +-1 metre and that was as good as no constraint at all.
I have not tried shorter than 0.5 metre baselines.
However I think your main problem is that the antenna must have a good uninterrupted view of the sky for reliable rtk.
I put my base station and test antenna on top of the roof.
Check that you are getting a good signal/noise ratio 50dbhz is good, but I found 40 dbhz was insufficient to get reliable rtk.

Try kinematic solution first and see how good that is. but here you need to enter the base position.

Simon, I am interested in using RTKLIB to survey GCPs for use in SfM for mapping and modelling. I am happy to post-process and expect that this will be a cheaper option, not requiring live telemetry or necessarily on-board computing.


My main practical issue will be what data I need to store on the rover and how do I log waypoints? Is there an existing solution for this or do I need to do some coding?


Thanks to you and everyone else on this thread for your contributions - often overlooked these are the subjects that give serious UAVs purpose.




Hi Mike,

I'm not sure what GCP/SFM stand for... but in order to perform a live RTK or post process you need to record pseudorange/phase data on the either end (rover and base station). If you are lucky enough to have a public base station close enough (say up to 10 or 15km) then these can be used and will often publish daily archives.


The messages you need record can vary by receiver, and depending on your application you may want to record at a higher/lower rate (ie. 1Hz or 0.1Hz). What type of receiver are you using?


Personally I also record the 'GPX' data at the same time as this ensures I have a fall back, even if it's accuracy would be some what less.


Regarding actually collecting the data; if you have a serial based receiver you could look at the OpenLog project, which is a small micro with Mirco-SD socket. Power it up and it records everything it sees.



SfM is a method for constructing 3D models from 2D images taken from different viewpoints. Microsoft's Photosynth is an example.


I haven't bought any receivers yet but am looking at options - any recommendations?


Presumably with OpenLog I could set it off recording and leave the GPS on the GCP for a minute or so and that would be more than enough. The base station would be recording for continuously whilst I move from GCP to GPP. That's the plan anyway.




Interesting... would you be forming distance measurements with theodolite or just working from angular measure off the optic/photo's? You may have to carefully calibrate the optics of you system to account for distortion/etc.

Once RTK (or post processing) is 'fixed' the instaneous readings should give you a good position. If you are taking 'snapshot' pictures you may want to use a 'mark' input or record waypoints.

I believe that the only choices in 'consumer grade' are Ublox5/6-T, SkyTraq (Raw) and DIY.

Stepping up to commerical look at Novatel, Topcon, Leica, etc... though lots of money. The quality of you antennas will probably be the largest factor in accuracy.


Reply to Discussion


DIY Drones Monthly


Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2016   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service