[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!
what is military resolution?
640×320 and cost about 10 times what a full HD the civilian version would cost
heh!
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.
Now that is a real hack. Thanks
make sure to implement COCOM limits unless you want to face a long time in prison.
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.
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!
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…
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.
Next time on HaD: Anonymous hacker steals, modifies, and improves old Soviet rockets, just to send his handmade GPS to space.
COCOM mandates 1000kts -or- 60kft limits. Nearly all civilian units do both, with the exception of a handful with a +60kft firmware option.
CoCom had 17 member states: Australia, Belgium, Canada, Denmark, France, Germany, Greece, Italy, Japan, Luxembourg, Netherlands, Norway, Portugal, Spain, Turkey, the United Kingdom and the United States.
“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.
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.
So at what point can it cross reference GLONASS data?
When you add that feature :)
What ass?
It’s the bizarro Rudolph.
The one in your face.
Two satellites are required for a 2D fix. 3 satellites are required for a 3D fix. Not 4.
No, 4 are definitely required for a 3D fix. This is because not only 3 dimensional position , but also time is being solved for, since GPSes don’t have an accurate clock.
Keep in mind that it is the GPS _receiver_ which does not have an accurate clock. The GPS satellite clocks are very accurate.
No shit, Sherlock.
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.
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 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.
Awesome :)
an incredible work!
Hacks that are improved by fixing a bug that forgot to take into account the rotation of the earth? Awesome.
Bravo hack man, bravo.
Congratulations Andrew. Excellent work!! very detailed blog, thanks for taking the time to write it up.