Improving GPS accuracy


It seems there are methods to increase accuracy of the GPS location to cm using a reference station network.

Real Time Kinematic (RTK) satellite navigation  is a technique used in land survey and in hydrographic survey based on the use of carrier phase measurements of the GPSGLONASS and/or Galileo signals where a single reference station provides the real-time corrections, providing up to centimetre-level accuracy. When referring to GPS in particular, the system is also commonly referred to as Carrier-Phase EnhancementCPGPS.

Check this link:


E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • ok.. here's how I did it.... not sure how you can.. I would need more details.

    First I had a laptop and a gps unit on the ground, and one in the uav. Both units were Eclipse P320 GNSS OEM Modules by Hemisphere GPS. Both antennas were identical (A325 GNSS Smart Antennas, also from Hemisphere GPS). There was a wifi link from the ground to the robot, where the stream was routed from the laptop to the onboard cpu which then relayed the serial stream output from RTKLIB into the 2nd serial port of the GPS on the robot. This was done to cut down on the number of antennas that was on the robot. You could use anything that reliably can keep up 19.2kbps (ie a xbee or similar)

    It took about 20 to 30 minutes for accurate RTK to start streaming out of the base unit after it was powered on. We assumed that wherever one put the base unit that was the "known" position. We could get accuracy down to a reliable 10cm while the robot was moving. The base laptop pretty much just did the rtk and reported it's location.

    The algorithm was basically a running average of the gps records of the location to determine the known point, and then  

    transmit the difference from the known location (the average in reality) and the current measurement.

    If I was to do it again, I think radio triangulation would work better, and quicker, but I never got the funding to try it.

  • Is there a easy way? Like post processing the ardupilot log gps data with the static gps module file recorded by rtklib at the same time of the flight

  • I had this running on a linux gumstix. The UAV gps data was no different than a trebile... it was just a serial input stream, that you could route to rtklib. (

    RTKLIB: An Open Source Program Package for GNSS Positioning
  • Did anyone figure out how to convert the UAV gps data to use on RTKLIB? 

  • wolfgang.90 Seems like even the CORS servers would need to be fused with an IMU because the quickest sampling time they've got is 1 second. A lot can happen to a fast moving drone in 1000ms ;)

  • If your lucky, some of the states offer access to the CORS network operated by the UN / NOAA / some states. the website for it is I've got code somewhere that connects to it. It can work in real time if you have permissions, and an Internet connection (>9600bps is required)..

  • ionut > Simon and MarcS just answered for me... However, if you don't need real time you can also have only one receiver (uBlog + computer, arduino board, etc) record raw measurements and post process the data with RTKLIB combining it with data recorded by permanent station at the same time. Some national agencies provide data from their GNSS bases for free. Of course this doesn't work in real time.

  • Simon, you should separate RTK and RTKlib, otherwise we will end in confusion here :-) RTK receivers work in pairs without additional PC for the processing... (Thats what Wolfgang called base station mode..)

    Wolfgang, are you talking about the RTK L1/L2 mode of the Eclipse II? I would expect better results from high grade components like these...

    My personal experience with commercial RTK is much better, 2cm at 20Hz with high dynamic rover receiver (Plane)...

  • For RTK to work you will need (at least) 1 way data channel for corrections, and a processor (PC?) to perform calculations. The library is straight C, so could run directly on a processor of your choice (given enough MIPS).

    Correction data can be sent as RTCM which is low bandwidth/compressed. RTK can work OK with a reasonable latency (say 5s).

    All uBlox receivers support serial (RS232) as well as USB, so this can be hooked directly to a wireless modem/cell/zigbee or other radio (ie. without the need for a PC at that part of the system).

    Will this work for you? Depends on what you are trying to achieve....

  • I did this with a pair of Hemisphere Crescent / Eclipse II receivers, and a Trimble ProXRT with all of the subscriptions at work. The 2cm is over a 5 minute time period, assuming you are in the middle of no where, and have an antenna from god, and there is no sun storms. Typical resolution we are seeing is 10cm, assuming there is no building south of the antenna. 

    I never got RTKLib to work.

    If I had the money I would buy personally the Eclipse II  from Hemisphere GPS. Great to work with, and has an integrated base station mode.

    GPS Pathfinder ProXRT receiver

This reply was deleted.