9160/NCS: GPS accuracy value, how to interpret, and inconsistency

Hi,

I'm experimenting the GPS on nrf9160 by using the ncs/samples/nrf9160/gps project. I set the GPS mode to be continuous mode. The 9160DK board is placed in a relative open area.

The initial result is encouraging. I let it run for 60s after getting the first fix. I can see the accuracy reported by GPS goes down quickly. Usually after 10~15s, the accuracy is around or below 3m and stay consistent thereafter. I understand the accuracy is a range with probability. So there's chance the true location is outside the radius as indicated by the accuracy. But if I get consistent accuracy reading that stays below 3m that probably indicates higher accuracy and/or higher confidence. Then I plot the coordinates (60 seconds) and calculated the distance from them to the average of this group of positions. It turns out that majority (>90%) of them fall in the 3m radius to the average. So that's very good result.

Now here's the inconsistent part that I don;t understand. If I stop the gps (through the api: nrf_modem_gnss_stop()) and then start over again, I'll get another set of 60s GPS data. Everything looks just like the first set: reported accuracy drops down to 3m or less quickly and the coordinates mostly fall into the radius. Except the average of the coordinates (hence the whole cluster of positions) are at a point quite some distance from the first test. It could be 6~8 meters away, or even more sometime.

I attached the data and the plot. The blue dots are from test1. Each dot is from the 1 second fix data. The size of the dot is proportional to the accuracy value of that fix. So the largest dot is the first fix. Then it get smaller and smaller. And eventually it all stays in a relatively small area. The dark blue dot (1A) is the average of all blue dots. Same situation for the yellow dots which is from the second test. The dark yellow dot(2A) is the average of all yellow dots. (the X is latitude, Y is longitude)

So my questions is, if you look at either blue or yellow individually, it all looks pretty good. If you keep the GPS in continuous mode you'll get more and more dost around the cluster and thinking that's roughly where the true position would be. But if you run a separate test, it will generate a different cluster and as we can see here from 1A to 2A it's about 6.2 meter. So how should I understand this? Why they are different? Did I miss something here?

(I uses formula here to calculate distance: https://www.movable-type.co.uk/scripts/latlong.html )

A further questions is, if I need to track position to the accuracy as data sheet specified (ie 3meter), it seems I can only keep the GPS running in continuous mode? But even so I'm not sure if the position I get is accurate or not.

Thanks!

 9160 - GPS-accuracy-static-continuous-psm0.csv

  • Thanks! I'll need to collect more data after the holiday...

  • Yes, please do. It would be good to have more data to compare with what the R&D team has. 

  • Ok, I did more tests and here's the results.

    First chart is from the same setup at my back yard with everything exactly the same. Device is not moving. I did 3 run, each lasts 5 minutes. Then plot the reported accuracy and the 2D-error between the tests. As you can see, the reported accuracy drops to below 2 meter pretty quickly. But the 2D-error bounces up and down in a wide range through out the 5 minutes. It does not converge as you R&D team implied earlier. But it doesn't run off either. So I conclude that in my specific environment the real accuracy is more like 7~8 meter instead of 3 meter. I consider this 'typical' scenario for my project's use cases.

    The second chart is from a test done on a roof top. It's the top floor of a public parking garage without cover. There's no taller building nearby. So it's really wide open. The result is much better. Not only the reported accuracy is lower (about 1.5 meter), the 2D-error is generally below the reported accuracy most of the time. Even the part that's elevated is generally under 3 meter. So I'm convinced the device can achieve the specification under ideal condition.

    Back to my project's perspective, the remaining question is, is there any way to improve GPS performance under an non-ideal environment? Particularly it the device is moving, ie walking or running but not driving. Does a better antenna help? (this is done with 9160DK with the onboard antenna)

    Thanks!

  • Thanks for providing these details. I will need to forward this to the team and discuss possible solutions. 
    If you have not heard back from me by Monday, please ping me here Slight smile

  • Hi,

    Any more update? I'll be nice if there's more info or suggestion.

    On the other hand I'm continuing more tests with the cellular radio enabled. I basically took the agps sample project and put the GPS in continuous mode, and run GPS for 1 minute and then send the data over LTE to the NRF cloud portal.

    I did not intentionally stop the GPS but I think the cellular radio will block GPS when it needs to transfer data. So there's a few seconds gap for GPS data. It's probably equivalent to a hot start.

    What I can see is it seems the accuracy is a lot worse than when there's only GPS turned on. Is this something expected? Does the cellular radio affect the GPS operation in anyway (other than a small gap in time)? In the agps sample code, I see the PSM mode is requested. I did not enable GPS's PSM mode. Other conditions for testing are the same as before.

    Any thoughts?

    Thanks!

Related