Monday, May 16, 2022

How Much Better Are More Satellite Systems?

After following a thread about a cool DIY GPS on Seabreeze for a while, I ended up building a few of these ESP 32, e-ink, u-blox M8-based GPS units myself. Looking at the results from my first few tests, I noticed that the units used fewer satellites than my older, Openlog-based DIY loggers. Fortunately, the firmware for the ESP32 logger is now open source,  which made it easy to verify that the loggers use the default settings for the Beitian GPS chips for the satellite networks used: they use only two global navigations satellite systems (GNSS), the United State's GPS system and the Russian GLONASS system. The BN chips support also support the concurrent use of a third system, the European Galileo satellites, and my older prototypes use those. 

This brings up the question: does using 3 GNSS systems give better accuracy than 2 GNSS systems? The chip manufacturers seem to think so, seeing that newer GPS units can track 3 or even 4 systems. But sometimes, these developments are driven by marketing, competition, and what's technically possible, and not necessarily by what makes really makes sense. So I decided to treat this as an open question, and tried to collect and analyze some data.

Unfortunately, the wind did not play along with my plans, so my tests were limited to bike rides and driving around in the van. But driving tests also have a few advantages. For example, it's easier to use multiple GPS units that remain in fixed positions relative to each other. In this post, I'll present some result from today's test drive, which seem to be quite typical, based on what I have seen in several other tests in the past week. Let's start with a picture of the test setup:

I used a total of six GPS units on the dashboard of my high roof van. The two units on the left are prototypes that have been approved for use on the GPS Team Challenge a couple of years ago, based on the Openlog logger and Beitian BN880 and BN280 GPS chips. The four units in the GoPro dive housings mounted on the wood board are the new ESP32 e-ink prototypes, and they all use the BN220 chip. The BN220 has a smaller antenna than the BN280 and the BN880; the BN880 is the only chip that has an "active" antenna, all other antennas are passive. Both Openlog prototypes and two of the ESP loggers were configured to use 3 GNSS systems (GPS+GLONASS+Galileo); the other two ESP loggers were configured to use only 2 GNSS system (GPS+GLONASS). 

Here's a graph that shows the speeds of the six units on top, and the accuracy predictions (sAcc) that the chips provide below:

Let's have a closer look at a region:


This is from a heavily wooded stretch of road, and the different GPS units show quite a bit of jitter, often disagreeing by a couple of knots for a few points. In this region, the green curve seems to be the worst offender - but that's a subjective assessment, and there are other regions where other colors look worst. Looking at speed curves can provide some hints about what's going on, but it is also subject to "expectation bias": if we expect the 2 GNSS units to be worse, then we're more likely to "see" this in the data. What we need is a quantitative analysis!

If we knew the actual speed at any point, it would be trivial to get actual accuracy numbers - but we do not. Even the presumably best GPS unit, the BN880-based logger, shows a substantial amount of jitter or "noise" (and for the van, we know with absolute certainty that the rapid ups and downs are noise, since it is physically impossible for the van to repeatedly gain and loose a couple of knots within a fraction of a second).

But the noise we see has a lot of randomness to it, so if we average the data from multiple GPS units, we can remove a lot of the noise. So for the following analyses, I used the average speed from five of the six GPS units at any point as the "true speed estimate", and then looked at the difference in speed from the sixth unit to calculated the "estimated actual speed error". I then averaged the absolute error over 200 points for the graph below:

There's a lot of information here, but one thing jumps out at me: while there is a lot of variation in the error over the few minutes depicted in the graph, but mostly, the curves keep their relative position to each other: yellow is worst most (but not all) of the time, and the light blue logger shows the lowest error estimates most of the time.

To get back to our "2 vs 3 GNSS" questions, let's just look at three units: the BN880 unit, and one 2 and one 3 GNSS ESP logger. Here's the first pair of ESP loggers I had built:

For most of the time, the 2 GNSS unit had higher errors than the 3 GNSS unit. The difference was largest in the region near the end, where all three units show the highest errors.

Now to the second pair of ESP loggers:

Again, we see that the 2 GNSS unit has higher errors than the 3 GNSS unit and the controls. Interesting, the 3 GNSS ESP logger seems to be more accurate than the BN880 here (although we need to keep the limitations of our "true speed estimate" in mind!).

For comparison, let's look at a different region from the test drive, where there were no trees and very few other obstructions next to the road:


The speed graph shows that the different GPS units were in much closer agreement, and the sAcc error estimates provided by the GPS were lower and steadier than in the "noisy" region above. Let's have a look at the "estimated actual speed errors" for this region:

This region was much shorter, so the graph shows averages over only 20 points (rather than 200 in the first example). Note that the actual speed errors in this region are much lower than in the previous region:  between about 0.015 and 0.07 knots, compared to 0.1 to 0.4 knots. At this much lower error level, the curves do not follow the same "better or worse" trends - instead, they are often closer together, and trade ranks more often.

When speedsurfing in a straight line with a GPS that is properly positioned to have a clear view of the sky, we are generally much closer to the second, "lower error" example above than to the first, "high error" example. Extrapolating from the data above, we would expect differences between tracking 2 and 3 GNSS systems to be relatively small. In the one windsurfing session that I did manage to squeeze in,  that is indeed what I saw - but I was using only 2 ESP loggers configured for 2 GNSS systems, and the BN880 logger as a control. But the same general trend was also true in other biking and driving tests I did.

But when GPS signal reception gets poorer, the data indicate that using 3 rather than 2 GNSS systems will give more accurate data. The difference is not dramatic, but it is real. For a GPS worn with an armband, reception can get poor when the armband slips, and the body and arm block satellite signals; with a GPS watch, an underhand grip will cause poorer reception. One of the cool things about the ESP GPS is that the cheap cost and good display allow for mounting a unit on each side of the boom, so that you can see your speed while surfing. Getting close to the boom with the body could also possibly impair the GPS signal reception, although this should be largely limited to one side. Another common source of speed artifacts are crashes, where the GPS becomes submerged, and sometime "fantasizes" high speeds, but without triggering the filters in the GPS analysis software. Here, two boom-mounted units offer a potentially large advantage, since one of the two units will typically remain above water, and keep getting good reception. By looking at the reported error estimates from both units, GPS analysis software could theoretically automatically pick the unit that retains reception, and ignore the under-water unit completely. I plan to look into this as an addition for GPS Speedreader ... once I have more examples from windsurfing or foiling sessions with two units.