Increasing Local GPS Accuracy For A Small Robot

Even though GPS makes it possible for us to easily navigate around the planet in almost any vehicle we’d like, whether that’s a passenger vehicle, airplane, or cargo ship, it’s not really suitable for applications that require sub-meter accuracy. For that, some specialized hardware is needed, and [GreatScott!] shows us how to do it using a small robot as a platform.

The key to extremely accurate GPS signals in this case is using a receiver that supports real-time kinematic positioning (RTK). This type of system relies on a base station with a known position communicating with local mobile receivers to increase the precision of those mobile receivers by comparing the phase angle of the received signals. Of course these modules are much more expensive than the average standard GPS receiver, but for this kind of accuracy there is always a cost.

After getting a baseline accuracy of around two meters with a standard GPS receiver, [GreatScott!] installs the RTK GPS mobile receiver on a tracked robotic platform and a base station on a fence post. With the RTK system running, the limiting factor in accuracy became the robot’s steering system, as its turning radius and steering algorithms weren’t up to the task of hitting centimeter-sized targets out of the box.

But, as a proof-of-concept, it goes to show how accurate GPS can be as long as the right hardware is used, and for practical applications is good enough to mow a lawn with a robot or even do some amateur land surveying.

32 thoughts on “Increasing Local GPS Accuracy For A Small Robot

  1. How about this?

    Set up a fixed GPS receiver on the property. Log GPS data over days or weeks, average all the data, and call the resulting, composite, value your “reference” location value. After that, take every GPS live reading and subtract the reference value, to generate a stream of error-correction values.

    Next, set up a radio link (Meshtastic?) and transmit the time-stamped error correction stream to the robot. Every time the robot makes a GPS measurement, subtract the received error correction value.

    It would be interesting to see to what extent the robot’s positional accuracy improves.

    1. The usual method is to have a receiver at a known (surveyed) location. It can then calculate the difference between the pseudo range (time of flight) data from each SV and what is expected. These differential updates are then transmitted to another receiver. Many/most GPS receivers can accept this data.

      No RTK required.

    2. Great news, that is already a thing! It’s called Differential GPS, and there are companies and services that provide local correction, but you could absolutely build your own. Unfortunately, accuracy when one receiver is in motion is rarely better than 1-2 meters so not good enough for this type of work.

      Part of the problem is it can only correct for signal “errors” and not errors within the receiver itself. My understanding is that RTK receivers are expensive in part because you have two receivers with identical signal paths and both are built to detect phase differences on the order of 10-50 pico seconds to get single-digit cm accuracy. For comparison, my cheap ($100) GPS gear can get below 10 nano seconds but that is still ~3 meters worst case.

      IMHO a better answer with lawn bots is a fusion of systems that compliment each other. GPS provides bulk / approximate positioning at large area and something else (UWB, photogrammetry, etc.) provides high accuracy position within a smaller (backyard) area.

      1. There are also free NTRIP services offered by folks like NASA or State governments that broadcast data for RTK (RTCM) over the Internet that is usable if you are within 25mi of a base station.

    3. This is a good idea and is very similar to Differential GPS. You don’t even need your own fixed receiver, DGPS data is available from a number of commercial and Government organizations. Standard DGPS (Differential GPS) yields 0.3 to 1.0 meter accuracy. RTK typically gives you 1-2 cm accuracy.

      As I understand it the big difference between kinematic GPS and various flavors of regular GPS is that kinematic GPS uses the phase of the GPS carrier (L1 carrier wavelength 19cm for example) while regular GPS correlates the pseudorandom chips at a bandwidth of 2 MHz (wavelength 150m).

      The challenge of kinematic GPS is that the phase repeats every 19cm so you have to know your position to within 10cm to avoid ambiguity. Once you lock on you can continue to track your position unambiguously hence the name kinematic.

      1. This is why radio isotopic clocks are still used in engineering survey when city planning is involved. The stations are allowed to “settle” for a minimum of 24 hours and are referenced to the existing surveyed grid simultaneously with a resulting accuracy in the 100ths.

    4. This is how survey rtk gps systems work. You setup a base station that is always fixed and does not move. It broadcasts is shifting position error on a radio or WiFi or Bluetooth out to another identical gps setup that is an rover and that unit back corrects the error out of its position.

      1. RTK GPS doesn’t just send the total offset, it monitors the time differences for each satellite separately. If you just subtract the offset from the final, calculated location, you get errors if the satellite visibility between receivers differs.

  2. Motorola in the 80s manufactured the “Mini-Ranger” for ship navigation within harbors. It used microwave (C-band) transponder beacons at fixed locations on shore, and a transceiver on the boat. It measured time of flight to the fixed beacons to compute the ship location. Motorola claimed a precision of a few centimeters. In practice, it could do +/-1 meter at 10 km, and had a range out to 30 km. Mindblowing at the time.

    Omega was useless on the harbour scale, even LORAN was too imprecise for harbor and channel nav. Visual aids were often blocked by fog and still were quite imprecise. NavStar was still too immature, and GPS wasn’t around yet. For that few-year window in the 80s, the Mini-Ranger enabled precision navigation.

    It would be almost trivial to reproduce that now, and down to millimeters. And no satellites required.

      1. The easy way is just to buy some Qorvo DWave modules, and get 10 cm resolution out of the box. Or use COTS LiDAR modules. Or homebrew your own with a ToF chip like TI’s TDC7201. Or repurpose some 24 GHz automotive radar modules. Or hack some 60 GHz wideband transceivers. Or homebrew X-band FMCW radar. But it might be fun to see what you can do with just C-band WiFi hardware and a bit of FPGA glue. So many options.

  3. The thing he most likely left out is the tilt of vehicle. Since the vehicle isn’t level the whole time, the position shifts slightly. That’s why its not completely accurate at the end.

    source: Used to be a software engineer at a company doing this about 15 years ago.

        1. Sensor fusion really helps there. Even a little bit of cue of “I moved” vs “I didn’t move” vs “I moved, but it doesn’t correlate to my expectations” can make any dead-reconing system far slower to drift. And you can often get enough relevant cue from even stupid stuff, like a low-res camera pointed at the ground (giant traced optical mouse!), or sometimes even a couple of those cheap sonar rangefinders pointed in different directions in the horizontal plane.

          1. This is helpful, yes, but in practice it’s not enough by itself. External references of done kind are necessary when of they are all processed on board. Slow moving equipment tends to drift the most in my experience.

  4. Assembling a kit is worth of an article on HAD …
    Anyway you can play with this using cheap modules from AliExpress and RTKLIB software. Be warned it’s a deep rabbit hole, in no time you are buying professional GNSS antennas and climbing the roof to get an unobstructed view of the sky.

  5. If youre already relying on a base station, Skip GPS entirely and go with UWB RTLS. You get ~10cm cm level position accuracy and 50-100X faster updates than GPS with a Quoro (Decawave) DWM1000 .

  6. All those shouting about Differential GPS have missed the point. RTK is an advanced in technology DGPS gives you roughly 1 metre accuracy. RTK 1 centimeter. That’s a 100 tines improvement. 1 metre on a lawnmower is levelling your wife’s flowerbeds or running over a hosepipe. 1 centimeters is the ability for a local robot to negotiate without secondary systems like buried wired, ultrasonics or dead reckoning.

    Its the difference between a black powder musket and an automatic rifle.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.