Centimeter-level Precision GPS For $900

[Colin] and [Fergus] have been working with GPS for years now, and like most builders of really cool things, they’re often limited by the precision of off-the-shelf GPS units. While a GPS receiver is usually good for meters of accuracy,  this just isn’t good enough for a lot of projects. What you need is centimeter-level accuracy, something the guys have managed to do with their Piksi GPS receiver.

Where most GPS receivers only look at the data coming from the GPS satellites orbiting overhead, the Piksi uses another technique, real-time kinematics (RTK), to determine the receiver’s location with exacting precision. The basic idea behind RTK is to look at the carrier frequency of the GPS signals at 1575.42 MHz. This frequency has a wavelength of 19 cm, compared to the alternating 1s and 0s of the that are transmitted at around 1 MHz, or about 300 meters between each bit. While centimeter-level precision isn’t possible with only one receiver, two of these Piksi boards – one base station and one on a vehicle, connected via radio link – can make for a very exacting high-accuracy GPS receiver.

Previously, commercial RTK GPS systems have cost thousands of dollars – making a quadcopter or other homebrew project that relies on this level of precision nonsensical. [Colin] and [Fergus] have built hardware that can bring the price of this setup to under $1000. As a bonus, the Piksi board can also receive from other constellations such as Galileo and GLONASS. A very impressive piece of hardware, and we can’t wait to see the applications.

60 thoughts on “Centimeter-level Precision GPS For $900

  1. Are you saying that the only difference between this RTK GPS and a standard GPS is software? I’ll be happy to buy one when it isn’t 10x the cost of a normal GPS. I’ll wait til the software becomes available and then make my own for cheaper. Open Source suckers.

    1. Your contribution to humanity is much appreciated. If everyone thought like you we would have a lot more advanced stuff around, all for free. Software will just write itself.
      It’s a combined hardware and software solution and [most of the time] requires two units.

      I think there are cheaper ways to do this instead of two of these units. You already have the base, you can generate some differential signals there and measure the phase on the receiver, you would not need GPS for that. Unless they are talking about ABSOLUTE accuracy, which I find hard to believe.

    2. RTK GPS tracks the carrier of the L1 band, which is in the order of 1.5GHz or so. This is a 1000 times faster than the L1 code, which is normally used, so tracking the phase yields in resolution in cm’s , in theory.
      However, to track the phase of the L1 band properly you need a correction signal from a base station. This is also done to have a better repeatability. Repeated precision (year after year) typically is not a couple of mm’s, but 1-2cm.

      So you need 2 receivers, one to output data, and (many) others receive. Protocols like RTCMv2/v3 or CMR(+) can carry that data. To transfer the signal usually radio modems (RF) or GSM networks (with “virtual reference stations!”) are used.

      900 euro’s is very very cheap for such a module. I happen to know in some area’s people pay well over a couple of thousand euro’s for such a GPS receiver.

      1. What most people don’t realize is that with cm accuracy, you need DGPS for fundamental reasons.

        I know the speed-of-light to 10 decimal places. I get the positions of the GPS satelites to CM precision, and I measure the arrival time of the signals from several satelites to say 1/15th of a nanosecond (= 2cm) accuracy. Now I can calculate the position of the reciever to 2cm accuracy, right? Wrong!

        The thing is you don’t know the speed-of-light on the path from the satelite to you with enough accuracy to get your position more accurate than those “few meters” that the normal GPS units achieve. There is some atmosphere between the satelite and you, which influences the speed-of-light. And the variations in the atmosphere are significant enough to generate errors on the order of meters.

        So even with a “perfect” GPS reciever, you need to get the perceived offset from a stationary GPS reciever closeby to compensate for the “current” atmospheric conditions.

          1. Without checking the accuracy of your digits for c, you quote the speed of light in absolute vacuum. Quoting wikipedia on you: “the refractive index of air for visible light is 1.000293, so the speed of light in air is 299,705 km/s or about 88 km/s slower than c.” (http://en.wikipedia.org/wiki/Speed_of_light)

            And this figure is for some standard air, probably normal sea level pressure at 25 C with a given humidity, it is impossible for the GPSr to know if the radio signal passed through e.g. a cloud or not.

          2. Accidentally hit report instead of reply again…

            Anyway, yes, there are 9 non-zero digits in the speed of light. However, the speed of light in vacuum (which is what you are quoting) is defined, not measured. There are an infinite number of trailing zeros in the definition.

            However, the speed of light through a medium (air, in this case) is greater than that value by about 0.3%. The bigger issue is that the index of refraction of the ionosphere is constantly changing, by a large enough amount to affect your measured position by about 5m. The geostationary WAAS satellites broadcast a correction factor (in addition to acting as additional GPS satellites), but the correction factor covers a very large area, so it fundamentally can’t be given for *your* particular location with the GPS satellites *you* are tracking at *this* moment.

          3. Am I missing something here. GPS satellites do not transmit light waves which can be refracted. They transmit Electromagnetic waves which are not affected in the same manner as light waves.

    3. Joejoedancer it is not just Software, if it was, every Tom, Dick and Harry would be doing highly-accurate dGPS for their projects.

      What you need is a receiver that will put out the correct information, sometimes refereed to as raw data, that includes which satelites are being used, phase and numerous other parameters – most cheap receivers only dump out NMEA or another position format which removes all of the information useful for improving acccuracy.

      Now, you can do centimeter accuracy dGPS for less than $900 with cheap-ish modules that output the correct data – such as the £150ish UBloxx LEA6T modules (nice demonstrator/dev board http://shop.sysmocom.de/products/osmo-lea6t-gps) – and something like the open source RTKlib, but you still need two receivers, one of which is is an accurately known, fixed location.

  2. This is very cool, but the title is somewhat misleading. One Piksi is $500, yes, but you need two of them and XBee radios to connect them in order to get CM precision. Based on their Kickstarter page, the title should be “Centimeter-level precision GPS for $900.”

  3. Hi, this is Fergus from Swift Navigation. Thanks for checking out our project!

    @Jack: It is a kind of DGPS – DGPS can refer to any GPS system that makes a differential measurement with two receivers. RTK is basically DGPS with carrier phase measurement.

    @Le_Bassiste: We haven’t done a rigourous statistical analysis yet but you should get ~4cm.

    @ Joejoedancer: Yup, its basically software, but if your receiver is a black box you can’t modify the software.

    @John: Agreed, we don’t want people to mistakenly believe they can get cm level precision with only one receiver.

    1. Patented? Sure. But Trimble really hasn’t gone after anybody about it. RTK is a pretty standard way of getting sub-inch/centimeter accuracies. Hemisphere (AgJunction), Navcom, Novatel all have some sort of RTK method. Heck there is even an open source RTK library (http://www.rtklib.com/) that will help do some of this. A rep for NVS-GNSS called the company I work for and offered to put RTKLIB into a receiver to help drive the price point down to near these levels. These guys should be fine. Besides, RTK patents are due to expire soon so they likely wont have to much of an issue on their hands.

  4. looks cool, i also want to know if one has to be stationary or if there is just the need for there to be two of them. like can i have one on a car and the other on a quadcopter flying along side it (with my car moving very slowly)

    1. Yeah, I was wondering about this, too. Either way, you should be able to get a decent range depending on the type of XBee radio, i.e. trail the UAV in car but leave the base station behind. If a moving base station is an issue, I wonder if that could be compensated for by feeding additional information into the equations about the base station movements, and, if so, how that would impact accuracy.

      1. The base station has to be stationary. It also has to accurately know it’s own location. The base station compares what it receives from each GPS satellite to this static location, and thus is able to determine the error that the ionosphere is inducing. It transmits these error correction values via radio to the mobile unit, who applies the given corrections and therefore gets more accurate GPS readings.

        This is also why the base station has to be “near” the mobile unit. The error corrections are of no value if the base station is seeing different GPS satellites than the mobile one, or is so far away that the base station’s corrections are not valid because the path to the satellite is significantly different than the mobile unit’s.

  5. @a, austin: There is no requirement for one receiver to be stationary. Fundamentally the measurement you get is the vector from one receiver to the other. As an extreme example you can put two or three receivers on the same vehicle to determine heading or attitude.

    You could certainly have the “base station” on a car and use that to keep a quad flying in formation with you as you drive around.

    1. Incorrect. If an ionospheric “bump” makes it look like the receiver is 2m west, then both GPS units now say that they are 2m west. Multiple GPS receivers alone are not enough to figure out this kind of error.

      The only data I’ve seen for getting any kind of accuracy from multiple receivers without RTK, other DGPS or post-processing involves averaging the data from each over *minutes*. Not exactly useful for accurately figuring out where a mobile unit currently is.

    1. RTKLIB is awesome but the advantage of our project is that it is a self contained, integrated unit that can be put e.g. on a UAV. Also with a uBlox receiver everything below the observation level is still a black box, so if you want to tweak the tracking loops or experiment with new constellations you are out of luck.

      I have the components in my desk drawer to prototype an L2 add-on board but there is so little time!

      1. With L2 carrier phase tracking, a nearby base station on a surveyed control point and very good antennas you could be able to get sub-centimetre absolute accuracy. Which is way better than needed even for use with UAV:s collecting imagery for photogrammetry and point cloud generation like in the link at the bottom.

        At the other hand it could open new possibilities in other areas, like cheap (semi?) open source surveying GPS instruments or why not terrestrial laser scanning from UAV:s (which still would need ground control points to be accurate though).


  6. As someone who works in the GPS industry, the middle paragraph is misleading. GPS is determined by locking onto 4 (or more) satellites, determining their position, and then solving the resulting system of equations for the 4 unknowns: x, y, z, and time. All GPS signals are transmitted at 1575.42 MHz and tracking the carrier frequency is a requirement for GPS, not an enhancement.

    What is done here is none the less very cool. Essentially he has created (or is in the process of creating) is a stripped down GPS ground station. One difficulty is getting an exact position of your ground station, but your implementation might not care, so long as the relative position is accurate.

    Also, I saw a discussion about ITAR on your site. It is too high AND too fast.

    1. I thought 1575.42 only applied to the L1 band? L2 operates at 1227.60 MHz and hopefully we’ll have access to L5 @ 1176.45 MHz in the near future. And RTK uses carrier phase as an enhancement for reference stations.

  7. A cool future application for this is based around mounting multiple receivers on the same platform/vehicle (as mentioned above) in known positions relative to each other. Knowing the spatial arrangement of your antennas and the distance between them, you can then solve the simultaneous equations to locate the multiple antennas on the world, but also relative to each other. This means you can extract very accurate yaw/pitch/roll measurements as well as a precise, high-rate non-magnetic heading – which means you effectively gain a free inertial measurement system which would integrate in a really awesome way with something like the Paparazzi open-source autopilot :-)

    There are some commercial products that do this already – but the JRC JLR-21 I got the chance to play with a couple of years back had an fairly eye-watering price tag (~£15k) so being able to do this for a tenth the price will allow some really cool homebrew!

    1. The Skytraq S1315F module can update at 20 Hz. It seems to me that you would need very rapid update – or preferably two receivers synchronized off the same clock- to be able to figure out the attitude of the two GPS’s relative to one another- (I think the Skytraq is unmatched as to update Hz.) You’ll also need two identical, good antennas

    2. If you have two identical receivers, presumably since they are deriving their signal from the GPS and all their settings are the same the output is gong to be very close but USB timing is imprecise. How does it work in terms of practical accuracy say if one GPS is in the north east (exactly) and the other is south west. Will the PVT solutions maintain the spacial relationships well? Of course you will also need a base station, you cannot use the two on the rover. For all that you’ll get the ability to measure the angles very precisely, much better than any compass or really, anything else out there (IMO) Lots of cool stuff you could do with that.. Like Lidar, perhaps?

  8. As mentioned above you can do the same using RTK-Lib providing you can get the raw measurements from your receiver. If you’re looking for a low-low cost receiver, check out SkyTraq, they have raw measurement firmware.

    RTK-Lib is not too complicated and can be run on embedded processors, or at the ground station.

    All the same, congratulations on getting your own scheme running.

    1. Funny how these things happen, but someone has ported RTK-Lib the Android and it’s in the Google PlayStore for free:

      So apart from an Android device (or Android-x86 image) you need a raw capable GPS (Skytraq S1315F-RAW or something fancier) with decent antenna and a correction feed (or second GPS)… and volia cm level accuracy for your robotics projects.

      Don’t know for certain whether this can run headless once configured.

    1. Hello Fergus,

      Actually, I’m working in a project to get my master degree. I am working into an embedded system that can receive accurate GPS coordinates an the make a relationship between those ones and a sensor data, so I would like to get more information about your Piski modules and if it’s possible talk with your reseller to Latin America and Spain. Thank You very much for your further assistance.

  9. Michele Bavaro of Pisa, Italy, makes a dynamite, very tiny USB RTK-GPS (using rtklib) receiver that has the ability to achieve sub-centimeter precision with a good antenna, the Yuan 10.

    He hand manufactures them and sells them for around 120 euros. It uses the very capable and inexpensive Skytraq S1315F chip. With rtklib, its really an amazing setup.

    He actually has made a number of rtklib capable receivers, including several that are multi-GNSS system capable, they can use GPS, GLONASS and soon Galileo at the same time with rtklib. He has two blogs on GNSS.

    He’s really one of the most capable hardware developers in the GNSS space.

    One important thing, though. Whatever receiving setup you use, you need a very good antenna to get sub cm. accuracy. Tomoji Takasu, the amazing author of RTKlib has done extensive testing of around 15 or so fairly available GPS antennas and it is on his site, ( http://gpspp.sakura.ne.jp/indexe.html ) in Japanese, but it translates quite well using Google translate and its very much worth reading. Some antennas do quite well in north south and east west accuracy but don’t do well in altitude accuracy, others are good with altitude and less accurate in terms of the N-S E-W axes. There are some good web pages out there on GPS antennas. Its an interesting area.

    1. “Dead reckoning”- No, but a technique called PPP can give you quite good accuracy with a single GPS. Nothing near as good as you would get with RTK, but accurate to 1 or 2 meters if enough time is given and a good sky view is available.

  10. Thank you for great comments everyone. Is Piksi competing with products that are already on the market, but more expensive? Is this just a less expensive version of existing technology? If yes, then what are those commercial products?

    For example, are there already products on the market that would be able to do nationwide 10-30cm accuracy at 20Hz using commercial reference stations, Coast Guard Beacon or Omnistar – for example, under $3,000?

    Piksi looks very promising and the guys behind it seem to be doing phenomenal job with very limited resources. However, until it is shown to be reliable in production and someone integrates it with nationwide differential position correction services, it would be hard to put it into mapping vehicle applications, crop dusting (moving at 60 m/s) or any other nationwide applications that require position accuracy in rugged field conditions.
    So, they claim to be cheaper than the alternatives, but what are these competing products?

  11. This is very useful for determining the precise position in space of an UAV that can’t carry more than 600 g of load. If that UAV can be equiped with LIDAR technology or a powerful camera for photogrametry you have a cheap surveying tool. Great guys !!! Looking forward to survey some fields with that. :)

  12. one base station and one on a vehicle, connected via radio link – can make for a very exacting high-accuracy GPS receiver.

    whats is an average range of such radio links, i mean how far can a vehicle fly out before it looses the link.

  13. This is cool, but I hope the cost gets lower. Also, I assume that it is costly to establish a “known point” for the base station – I assume doing so requires a land survey of some type. Would it be possible for the base station to be setup so that it could be placed at an “unknown point” and then for it to develop a relatively accurate fix by averaging its readings at its fixed location over time?

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.