Tuesday, February 13, 2018

The Disappointment

No, I'm not bitching about the weather in Texas. Sure, it was near freezing yesterday, and about 15ºF colder than on Cape Cod .. but on a couple of days, we'll have 70 degrees here, and Cape Cod will be cold.

This is another GPS post. One about some major frustration - it took me 10 days to get ready to write about hit. This is about the results from a windsurfing test, comparing the USB GPS dongle to the GW-60. Here are the first numbers I looked at (from GPSResults):
The numbers are for 2 seconds, with GW-60 on the left and the dongle on the right. The dongle was 1.45 knots higher than the GW-60 .. very suspicious! A quick look at the tracks showed that the dongle was clearly wrong:
The dongle track is blue, the GW-60 dark green. The dongle has a clear artifact peak at the "top speed" region that is about 5 knots too high!

It did not end there. When I compared the results for the nautical mile, things also looked bad:
Again, the dongle gave substantially higher numbers - about 0.9 knots for the nautical mile!

Why did I suddenly get such bad results, after all my driving tests had indicated that the USB dongle would likely be more accurate than the GW-60?

The first hint came from the tracks that GPSLogit had recorded for the phone GPS. For several runs, the phone GPS tracks (in red below) also showed large artifacts:
The phone had slipped on my armband several times during the session; with the phone and USB dongle pointing down instead of up, and my upper arm and body blocking the GPS signal, the data quality suffered .. a lot. I verified this in the next two sessions, as I reported in my two previous posts. With the phone properly fixed so that it could not slide down, I got much more accurate, artifact-free results in two sessions.

I finally went back and gave the "bad" data a closer lock. The nautical mile results looked suspicious, so I looked at the numbers in GPS Action Replay. First the GW-60:
Next the USB dongle:
Finally, the phone:
All the numbers are very close - within 0.1 knots of each other, and within 0.03 knots between the GW-60 and the USB dongle! An examination of the data showed that, once again, missing data points and GPSResult's approach to "filtering" were the cause. At the beginning of the fastest nautical mile run, the GW-60 skipped quite a number of data points; instead of recording a point every 0.2 seconds, it recorded at irregular intervals for about 50 seconds: mostly one point every second, but also at 0.6, 0.8 second, and 3 second intervals. Here's a screen shot of the track point table from the start of the nautical mile run:
Since GPSResults will generally ignore sections with missing data points, it picked a slower section of the track as the "fastest" nautical mile. So this time, the observed differences in the nautical mile results were due to (a) the GW-60 missing data points, and (b) GPSResults not using this section. The effect was that the top speed for the nautical mile was understated by 0.9 knots because the GW-60 dropped points. The GPS dongle and the phone both gave the more accurate results!

This was quite different to the 2-second results, which are much more prone to distortions from artifacts (this is even more so for the "top speed", which is very often too high by 0.5-1 knots!). Here's a look at the data from the USB dongle in this region:
Note that eight of the ten points have error estimates above 1 knot, and 5 points have error estimates above 1.2 knots. Almost a year ago, when I looked at artifacts in GW-60 tracks, I had come to the conclusion that 2 second results with an average SDoP above 1.4 should not be considered for GW-60 data, since they are quite likely to be highly inaccurate. It is safe to assume that the u-blox GPS chip inside the USB dongle calculates the "+/-" numbers a bit differently than the GPS chip inside the GW-60; it appears that a slightly lower threshold may be necessary. When applying a SDoP filter with a 1.2 knot threshold in GPSResults to the dongle data from this session, the artifact peak is filtered out, and the top speed numbers for the dongle are very close to the GW-60 numbers.

One problem with accuracy filtering is that GPS Action Replay currently does not support it; another issue is that it can easily be turned off in GPSResults. However, there is a simple solution for the USB dongle recording software: it could simply set apply the filter before saving the data to a file, for example by setting the speed in the affected region to 0. The app could then also alert the user about the issue with a message on the screen and audio feedback, which could serve as a little reminder to check if the phone and dongle are positioned correctly. I'll look into this, but first I plan to collect more data with the USB dongle while windsurfing, to see if such a filter would possibly through out "good" data.