Monday, June 25, 2018

1000 Million Millions

A large number: 1,000,000,000,000,000. That's 1000 million times a million. Or 10 to the 15th (but that sounds smaller). Or 150 dB. Or a quadrillion.

That's (roughly) the difference in the energy level between a typical GPS signal (-150 dBm) and a bluetooth signal being sent out by a Raspberry Pi (0 dBm). WiFi transmissions are about 10 times stronger still.

For reference, let's look at hearing. The human ear has quite an amazing dynamic range - about 12 orders of magnitude, or a million times a million. The lowest level humans can hear is about 0 dB; the level where instant hearing damage is a real danger is 120 dB - that's the sound of a jet engine pretty close to you. The difference between a normal conversation (50 dB) and a really loud rock concert (100 dB) is much smaller.

So we can't really blame a GPS chip for picking up some "noise" if it's placed right next to a transmitter that screams 1000 million million times louder! Yes, bluetooth and WiFi are at a different frequency, but the difference is not huge: 1.575 GHz, compared to 2.4 GHz for bluetooth and WiFi. It's almost as if the GPS is listening to the baritone in an opera while the soprano is singing a quadrillion times louder. I'm amazed it can pick up anything!

Such great listening skills require a closer look:

This is a section from the "noisy" speeds in my recent post. The blue line is the "doppler speed", or more accurately the "speed over ground". The problem is that it cannot go below zero, so it does not fully reflect the variation in speed caused by the noise. For that, we should look at directional speed, the speed vectors. That's what the yellow and red lines are - "north velocity" and "east velocity". The directional speeds can have negative values, so they often vary more than the "speed over ground" - but not always. The up-and-down that can be seen in the first two high peaks is what's we would expect from purely random errors. When the directional speed stays high (or low) for multiple points in a row, that's a possible indication of systematic errors. One potential source of systematic errors is "multipath" noise, where the same signal reaches the GPS over different paths, which include reflections. Since such secondary paths can remain stable for some time, they can "tilt" the solution one way or the other, and introduced biased, non-random noise.

There are a few observations and ideas that spring from the graph above:

  • When looking at stationary data, we must examine directional speeds, not just speed over ground
  • Moving average filters may be useful to differentiate between random and non-random errors
  • For some test speed data, directional speed data may be useful as as estimate of random speed errors. 
The last point is the most interesting. Since we usually sail  in a straight line during speedsurfing, we can re-map the speed vectors into two components: one in direction of travel, and a second one at a 90-degree angle to it. Any sideways speed, especially any fast variation, would definitively be error. It is probably reasonable to assume that the error in the direction of travel is of a similar magnitude.
However, a closer examination shows that this approach probably would work for test drives, but not for speedsurfing. We are most concerned about errors when they reach 1 knot or more, which is about 0.5 meters per second. When measuring at 5 Hz, this would correspond to a 10 cm lateral movement - something that could quite easily be caused by relatively small body movements, for example from a gust or a piece of chop. But when driving around in a car to test GPS units, such lateral movements do not happen, so the approach should be useful there .. especially on streets that go straight north-south or east-west, and that don't have any trees or buildings on the side. Maybe this approach is of somewhat limited usefulness... time to watch some soccer!