Sub centimeter accuracy from your GPS

I know the location of my GPS antenna to a box 5mm x 5mm x 17mm. Here is how you can too.

So this has been one of the more interesting things I've done. I made a GPS station for RTK positioning of my drone and a few robots I've been working on. In order to get really precise control of the position of the robot, or for the GPS exifdata in images taken from one of the drones, I need to know the position of a static base station. Luckily, the back of the barn has a bunch of animal pens with metal roofing - perfect for a ground plane and since the metal roof is ferrous, a magnetic GPS antenna clamps down quite well. The idea goes something like this: localized forces affect readings across gps units in a similar manner. If you can add or subtract the current offset of a base station with known coordinates, you can apply those offsets to a nearby gps receiver's readings. But how do you get the position of the base station? By bouncing lasers off the satellites the antenna can see, calculating their orbital position and retroactively adjusting the position your gps receiver thought it was at when that satellite passed overhead. It's called Precise Point Positioning (PPP). To do it, you need a really kickin' GPS receiver. I'm lucky to have gotten my hands on a UBlox ZED-F9P. The holy freaking grail of GPS units. Sub-centimeter accuracy. GPS/QZSS/GLONASS/BEIDOU/GALILEO/SBAS. It sees everything. 

Raspberry Pi 3B+ with ubuntu 20.04 => Ground station github repo

3DR Solo Radio (The high transmit power kind)


Antenna mount - 3d print


Grounding fuses

Self-ammalgating tape


3d printed piece to hold Sparkfun GPS board

Sparkfun GPS board

Hose clamp and pipe to put 3dr antenna up high

Get everything connected and capture 24 hours of GPS data. Submit that data to and you'll have results within a few days. 

Written by Mark on Monday November 1, 2021
Permalink -

« iStock is pretty awesome -