We've recently been testing the accuracy of the GPS on our devices. My basic method has been to trigger on GPS_TRIG_DATA_READY/GPS_CHAN_NMEA, and at each trigger fetch both the NMEA and PVT data and log everything to the console. I'll enable the GPS for ten minutes at a time, then analyze the logs later. We usually get a fix under 60 seconds, giving at least 500 reports with a fix.
Our modem is enabled in LTE-M1 mode with ~40 second EDRX, with data only being passed every 5 minutes.
We understand that the "Accuracy" field in the PVT is not a guarantee distance, but more of a probability. And we have found that lower Accuracy does correlate with more accurate positioning. The number of healthy satellites and max C/N0 reading also correlate somewhat, but not quite as well.
We noticed the location move off-target immediately after each 5-minute data burst. This makes sense since the GPS had to turn off for that interval, and we're willing to live with it since the loss of accuracy is also reflected in the PVT "Accuracy".
I don't see any strong correlation to loss of accuracy around non-data EDRX intervals. Or, rather, there is nothing apparent in the logs that seems to line up with our EDRX interval.
Our problem is that even when the GPS is in a strong/stable fix, with 10 or more healthy satellites and PVT "Accuracy" less than 5, we still see the locations drift around in an area of roughly 25 meter radius.
For example, I took all the reports from one of my test runs, filtered it to only those where the PVT "Accuracy" had been less than 5, and plotted those. You can see the result below, with some cars in the parking lot for scale:
This is nowhere near the 5 meter accuracy in the spec for periodic fixes.
My questions I would like answered are these:
- What is required to achieve the 5m periodic accuracy in the spec?
- Are there any metrics I can validate against to know that I should be getting the specified accuracy? I'm thinking of things like a specific number of healthy satellites, C/N0 levels, or PVT "Accuracy".
This testing was done using recent modem firmware (1.1.1-66.rc), NCS based on 1.1.0, and BSDLIB 0.5.1.