GPS Precision

s/y Charlotte GPS replay

Our Hanse 388 has three different GPS devices. A couple of days ago, when I was sorting through the position data, I came across some interesting glitches.

It’s All Over the Place!

It all started out with this video, replaying a few minutes of boat movement. In real life, after having secured the anchor, we were steaming forward by engine, but here’s what the video shows:

The boat isn’t moving anywhere! And then, wait for it… at 4 seconds, it leaps ahead to then just suddenly stop again.

It stays stationary, for about twenty seconds, and then:

It jumps back to where it started!

I’m almost absolutely certain that this is not how we sailed in real life (quantum-mechanic sailing?), but where to start the error solving?

Three GPSs

So, as I mentioned, our Hanse 388 has three GPS devices:

  1. A B&G ZG100, located under the right starboard aft bench.
  2. An internal GPS (iGPS) inside the Zeus3 chart plotter.
  3. A GPS in the NAIS 500 AIS transponder, located just forward of the navigation table mounted on the port hull.
B&G ZG100
B&G ZG100 antenna.

The ZG100 is, I assume, intended to be the primary GPS on the boat, and the one expected to provide the most accurate position information. It reports the GPS position ten times a second (10 Hz), uses both GPS and GLONASS satellites, and boasts of having an integrated gyro to increase the accuracy.

ZG100 – High-accuracy position, updated 10 times every second. The ZG100 GPS Antenna also houses an integrated multi-axis heading sensor, which allows it to carry out some clever damping of the GPS course over ground (COG) at very low boat speeds where normal antennas may become erratic due to normal GPS positioning errors.
B&G Zeus3 iGPS
Zeus3 12″. The iGPS somewhere there, inside it!

The Zeus3 internal GPS offers the same 10 Hz reporting rate, supporting GPS and GLONASS (and maybe others), but there isn’t much more information to be found about it in the documentation.

B&G NAIS-500
Simrad launches NAIS 500 CLASS‐B AIS

Finally, the AIS transponder, NAIS-500, comes with its own internal GPS. I couldn’t find any detailed specifications for that either, but looking at the data, it’s not “10Hz”, but closer to 1Hz, meaning position reports once a second.

The GPS Test

So, in the “glitch” videos, the GPS boat is moving based on the primary GPS data from the ZG100.

As it doesn’t seem to very accurately capture what was really happening, I put together a small graphing program to plot what the three different GPS devices were saying.

T-2 Minutes

Before the motoring episode in the video above, we were lifting the anchor and preparing to go. We would have been moving slowly to windward (NE in the video), and then maybe drifting a bit downwind (to SW) once the anchor had left the bottom.

Here’s the picture, as painted by our three different GPS devices. The red circles are position readings from the Zeus iGPS, the blue circles from the NAIS-500, and the black x marks are from the primary source, the ZG100.

T-2 minutes before the glitch videos. We’re lifting the anchor.

What is immediately striking is:

  1. There are no Xs there! The ZG100 does indeed output GPS coordinates ten times each second, but the cloud sensors only record changes in the position. So, at 21 seconds, when the first x appears, that’s the first change in position as reported by the ZG100. And when the Xs finally do appear, they are far away from the rest of the positions! About 20 meters! That’s roughly two boat lengths.
  2. The other GPSs, they move around a lot. There seems to be some amount of erratic jumping and skipping, but following the red circles (iGPS) closely, it does seem like there is some real-life movement, as well, and not just errors.
  3. The blue circles (NAIS-500) are roughly in the same neighborhood as the red circles, but it seems that there is less mathematical precision in the rounding. While the red circles move quite smoothly around the canvas, the blues seem to be grouped by a less accurate latitude.
T-1 Minute
T-1 minute, we’re starting to move south-south-west.

Now we are one minute from the glitch videos, and the reds (Zeus3 iGPS) and the blues (NAIS-500) are clearly starting to move down and to the left.

The black crosses, however, are still few and far off the main road!

T-0 Minutes

Now we are exactly where the glitch videos start (in the beginning of the blog post), and here’s what the data shows.

At 32 seconds there an X appearing far away from the other GPSs. This is where the boat jumps “backwards” in the first videos. Apparently the ZG100 is still a bit out of sync with the real world.

T+1 Minute

And here’s the T+1 minute:

T+1 minute.

In this video, the ZG100 (black X) starts out far away from the reds and the blues. But then, using some mathematic averaging woodoo, it skips and hops closer and closer, to finally join its friends.

It seems that once we’ve been moving for a while, all the GPSs converge toward each other. The problem, however, is that during the converging stage, the GPS that should be the most accurate, is way way off.

It might be that the ZG100 stumbles on its own intelligence:

The ZG100 GPS Antenna also houses an integrated multi-axis heading sensor, which allows it to carry out some clever damping of the GPS course over ground (COG) at very low boat speeds where normal antennas may become erratic due to normal GPS positioning errors.

The “clever damping” might be a bit too clever, since it doesn’t register small movements at all, and it takes a long time for it to “catch up” when the boat is actually going somewhere. (It might be, of course, that this is some kind of settings or calibration issue, but the manuals don’t mention any settings, so I don’t know.)

GPS Error and Damping

Based on the graphs above, the seemingly most accurate GPS is the iGPS inside the Zeus3.

When looking at its track more closely, we see the more traditional GPS accuracy problem of getting location pings that aren’t exactly where we are in the real world, but (seemingly a bit randomly) spread out within roughly a few meters of the assumed “correct” positions. (More info about it in this article: GPS Accuracy.)

In the video, you do get the feeling of real movement. At the same time, looking at the individual location points, they seem to pop up a bit unpredictably, centered around the perceived movement.

The most basic way to correct this, and make the movement more natural, is to use some kind of averaging or smoothing function.

1 Second Damping

Here’s the video above with an added track (black Xs) that implements a one second rolling average to the raw data points.

The black track seems slightly less erratic than the red one, but still not like our boat would move in real life.

10 Seconds Damping

Let’s lengthen the damping significantly. Here’s the same track with a ten second smoothing function.

Now, it looks somewhat like real boat movement would! Except for the first few seconds because there aren’t enough data points to make a good average at that point.

When I apply ten seconds averaging to the “glitch” data track, here’s what it looks like:

One notable issue still: the smoothed track is behind the real position because it’s an average of the previous ten seconds. To get it “up to speed”, the rolling average should be of the previous five and the next five seconds. Doable in playback mode, not doable for live data.

Glitch Video Corrected

Finally, here’s the original video with all of the above corrections:

Next problem: the sea looks a bit monotonic and uninteresting, so what should we do about that? 😄


  1. Interesting, especially since the I would also expect the zg100 to be the most accurate, like you assumed. Where is your antenna for the Nais 500 located? I just purchased one, and I’m in the process of mounting it. Word on the internet is that I can mount it under deck, and it would be nice if I could avoid making holes in the deck.
    By the way, saw Charlotte was for sale, are you trading up?

    1. Cheers!

      That’s a good question about the NAIS-500 GPS antenna! I actually don’t remember seeing it anywhere but I’m sure there are no deck holes for it, so it should be somewhere under the deck. I will make sure to check it next time I go to the boat 🙂

      And about Charlotte, yes, getting slowly towards the ‘next boat’ is the idea. I had the opportunistic thought that since the used sailboat market seems thriving, maybe this would be a good time to list it. Don’t know, but I’m already waiting for next season to start and I think it’s quite likely that we will be sailing with the current boat for quite a while!

      My best!

  2. Thank you for this interesting, comprehensive and well-detailed article. All those animations must have taken you a lot of time. I am very curious about any reaction from B&G to the behavior of the ZG100.

    I think I can explain the jumps. As you said yourself, it will have everything to do with the ‘clever damping’. As you can see in the ‘T + 1’ animation ( the ZG100 can be very accurate. I suspect their ‘clever’ damping’ means the damping is speed dependent. The faster the speed, the less they dampen the position. At a very low speed or rather a standstill, the position is not only heavily damped, but they also apply a threshold. Only when the difference between the newly calculated damped position and the displayed position is greater than the threshold, the newly calculated damped position will be displayed (can you still follow me?). You can see this behavior very well at ‘glitch 1’ ( There the threshold is exceeded and the ship ‘jumps’ to the new position. A while later, that new position turns out to be no longer correct. The calculated value returns smoothly and invisible back to the original position and the difference between the newly calculated position and the displayed position increases. At ‘glitch 2’ ( the threshold is again exceeded and the ship ‘jumps’ back to its ‘old place’.

    Such a ‘clever damping’ algorithm sounds great, but in practice it can cause strange effects. Personally, I don’t like smart algorithms because as a user you don’t know exactly what to expect (they are not documented). Just give me the calculated position immediately. As a user I know that it can vary a bit and will take that into account.

    1. Cheers! And thank you for your message!

      I didn’t contact B&G before writing the blog, but obviously I should, so I’ll do that and let you know what they say.

      As to the smart damping itself, your description sounds believable. And it’s a shame that it works like that and that there is no way of turning it off and making it less ‘clever’. I, too, like to get the raw data with predictable damping done either optionally or within my own brain system 🙂

      Well, the fix should be easy, I guess, since it’s in the software.

      And it still might be a calibration issue, I assume, since the gyro output (pitch & roll) were quite unadjusted, but I never thought it mattered since all other devices use the attitude data from the more accurate Precision-9.

      Happy holidays!

      1. You’re absolutely right that that kind of functionality should be user adjustable. Keep hope. I have experienced a somewhat similar situation with an Autohelm Tridata. Shortly after commissioning, the depth gauge turned out to be hopelessly behind the facts. By the time the keel was already stuck in the mud, the Tridata was still reading 3.0 meters, smoothly decreasing to 1.0 while the boat was at a complete standstill :-(. The display turned out to be much too dampened. Maybe nice at sea, but unusable in the narrow and shallow Dutch waters. Contact with Autohelm provided extra information about the undocumented access to a settings menu. Fortunately, the damping could be reduced far enough so that this important instrument could actually be used. Maybe the ZG100 also has additional setting options.

        Have a nice Christmas and a healthy new year!

  3. There are many reasons why commercial gps is not dead accurate, band used, radio interference, multipath errors and atmospherics. Remember the earth is not a true sphere but has many humps and bumps. To have an absolutely accurate GPS, the signal is combined with another radio signal coming from a fixed point that corrects for the errors. These systems are expensive and are used by surveyors. Military use a differnt band, (is it L band?). Commercial GPS is accurate enough for most applications.

    1. Thank you for your comment, and yes, absolutely, you are right!

      A couple of replies:

      1) My main interest was not the small (few meters here and there) discrepancies, but rather the patterns of the (supposedly) most accurate device being way off, only to catch up after a period of movement. I suspect this is not a problem with the source GPS data, but something in the software inside.

      2) The ZG100 actually uses secondary information as well, for more accurate positioning. I don’t know how well it does it, but looking at the raw NMEA data, it reports info like this:

      – GNSS type: GPS+SBAS/WAAS
      – HDOP: 0.98, PDOP: 1.65

  4. Bumped into this blog post, as I’m about to install a Zeus3 MFD, and contemplsting should I also add a ZG100. Based on your data, I almost concluded that it is not useful. However, you mention having the receiver installed under a bench. Did you investigate how much that affects the results? The installation guide shows that it should be uncovered, or under a glass (GPS signals usually require a clear line of sight to the sky), so I was wondering if a deck/pole mounted ZG100 would behave different?

    1. Hello! No, I have not tried relocating the antenna (which was factory installed where it is), but I’m not sure it would affect my biggest problem which seem (to me) damping related, not GPS reception related. Unfortunately, with all the ice and the boat out of the water, it will take some time to get some more testing done 🙂

      When I switched over to use the logs from just the Zeus3, then I ran into another problem: where the ZG100 happily outputted coordinates, it took about 10 minutes for the Zeus to find its first location.

      From a safety standpoint, I think having two separate fixed GPSs isn’t a bad idea at all. And when the ZG100 gets “into the groove” it’s more precise than the Zeus. No perfect solution.

Leave a comment

Your email address will not be published. Required fields are marked *