UPDATE: Roll your own GPS can now track twice as many satellites

diy-gps-module

[Andrew Holme] wrote in to tell us about some work he’s done to improve his scratch-built GPS receiver. He figured out a way to use the same hardware but double the number of satellites it can track to a total of eight. When we looked at the original hardware about a year ago it was limited to monitoring just four satellites. That’s the bare minimum for calculating position data. This will not only help increase the accuracy, but remove the problems that would have been cause if just one satellite was dropped because of an obstruction or other issue.

His solution is based entirely on using the FPGA in a different way. He had taken up almost all of the gates available in the Xilinx Spartan 3 chip. Now he’s implemented a CPU on the chip and is able take some of the work off of the hardware gate design by running code on it. He also found and squashed a bug in how the data was processed. He says his original work wasn’t taking into account the rotation of the earth when determining position. All of these improvements put his accuracy at +/- five meters even when he’s not tracking all eight satellites!

31 thoughts on “UPDATE: Roll your own GPS can now track twice as many satellites

    1. There are quite a few different methods of resolving position from GPS signals. The most common is SPS – standard positioning system – which uses a single frequency from multiple satellites. This is what most of your phone and car GPS units use, and it is accurate within about 10m. There is a military/government grade version, called PPS – precise positioning service – which uses two frequencies to perform ionospheric correction and gives an accuracy of around 1m when alone.

      You also have additional features such as Wide-Area Augmentation Service(WAAS) and ground based Differential GPS(DGPS) which uses a known-position receiver to broadcast in real time the correction to the satellites’ signals. This works within about 100km of the broadcasting correction station. Using the phase of the radio signal as a measurement of its own, you can get down to 4-10cm resolutions with these in higher-end kinematic and survey receivers.

      Contrary to popular belief and urban legend, the government is not trying to prevent you from accurately determining position using GPS by limiting the methods and technology you can use. Ever since 2000 the SPS and PPS have been basically identical for accuracy.

    1. Yes, implement them in an open source project, so despite it can be deleted in no time, lawyers can shut up and not prosecute you. Screw logic.

    2. COCOM is a US law. This guy appears to be in the UK. Maybe they have their own version? If it’s like the US one it just says he can’t export it. Then again, putting the design on a website probably qualifies as exporting. But are they even looking for that? I think this just shows how out of touch and unenforceable such laws are. Politicians are always trying to put the genies back in the bottle!

      1. Most US state workers don’t go to work most days but still get paid… I wouldn’t worry unless it makes money when it comes to US law…

        1. I don’t know what being salaried has to do with enforcement of law. Besides, this is trivial to implement:

          ….disable tracking when the device realizes itself to be moving faster than 1,000 knots (1,900 km/h; 1,200 mph) at an altitude higher than 60,000 feet (18,000 m)…..

          Making your own gps device will be low on the priority list if you can hack together (don’t forget to post) something that can go 60k up and still have the energy to be going 1,200 miles an hour.

          1. Next time on HaD: Anonymous hacker steals, modifies, and improves old Soviet rockets, just to send his handmade GPS to space.

          2. COCOM mandates 1000kts -or- 60kft limits. Nearly all civilian units do both, with the exception of a handful with a +60kft firmware option.

    3. “CoCom ceased to function on March 31, 1994″

      No men in black are going to bust down your doors for not limiting your homebrew GPS receiver. Toshiba directly violated CoCom in the 80s and it netted them right around ZERO punishment/retaliation/sanctions.

    4. That’s a hilarious comment. Thanks.

      In case you want to do your own implementation from scratch, the complete spec is here. Of course, you are free to implement as much or as little as you like.

      1. Keep in mind that it is the GPS _receiver_ which does not have an accurate clock. The GPS satellite clocks are very accurate.

    1. Only if you happen to know exactly what time it is locally. Two satellites only constrain you to a 2D space, since all you can say is that you are x numbers of meters further away from one satellite than the other. Three then puts you on a 1D line. The fourth satellite lets you resolve true time, so that you can calculate absolute distance from the other three satellites, instead of only relative difference between satellites.

      So no, you need four satellites.

      1. To add accuracy, use 4 satellites and do the math with each of the 3 pairs you have to create a ” zone ” you are in ( including orientation of pitch, roll, yaw vs sat position ) and the error between the 4 locations is your error rate. Being in 25 meters is pretty good for ” comercial ” units ( have an iWay 250 that i got for $15Cdn due to charge issues ) and I have to hack that one day to find out why it takes soooo long to get under 95k error for position. 15 minuets on in a field on top of the car should get the error down to less than the 20m I get with it tracking 4 solid and ‘ knowing ‘ another 5 on the graph ( but not indicating that it’s using them to track ). Good work on this build in getting the error down!

    2. 2 sats to _maintain_ a 2d fix, 3 sats are needed to get the 2d fix in the first place. Likewise, 3 sats to maintain a 3d fix, 4 sats to get a 3d fix.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s