Measuring GNSS accuracy on Android devices

Remember the Simpsons episode where Homer can’t find his Uber because of poor GNSS accuracy?

What is “estimated accuracy”?

Popular GNSS utility apps GPSTest (left), GPS Test (center), and GPS Status & Toolbox (right) all show “accuracy” or “error” values
“Estimated horizontal accuracy” is radius of the transparent circle you see in Google Maps
A visual definition of “estimated horizontal accuracy”
  1. The estimated accuracy (thick black line) isn’t equal to true accuracy (red dashed lines)
  2. By design, about 32% of the time the true accuracy (error) is greater than the estimated accuracy — in other words, the device is underestimating the error

A better way to measure accuracy

The new “Accuracy” feature in GPSTest compares your real position against GNSS-calculated position
A graph is included for both horizontal and vertical error, including estimated accuracy values

Tips, tricks, and caveats

  • Don’t move during the test — your device should remain completely stationary during static accuracy tests for optimal results (See this paper for a methodology for “dynamic” accuracy when the device is moving — maybe a future feature in GPSTest?)
  • Choose your ground truth location carefully — There can be errors in aerial imagery that affect results if you choose your location by tapping on the map. Ideally, you’d go to a surveyed location marker and manually enter the latitude and longitude for that marker (converting to the WGS84 datum first if needed). If you’re in the U.S., see the National Geodetic Survey Survey Marks and Datasheets page for more details on finding a survey marker near you.
  • Altitude must be entered in meters above the WGS84 ellipsoid, NOT meters above mean sea level. Here is a good article describing the difference between these values. See this issue for more details.
  • Horizontal error is measured using the Android Location.distanceTo() function. If you look at the Android source code, this function uses the Vincenty Inverse Formula to calculate the distance between two points (observed and ground truth locations) on the surface of the WGS84 ellipsoid. Vertical error is the simple difference between the observed and ground truth altitude values, and can be positive or negative.
  • “Estimated vertical accuracy” is only available on Android 8.0 and higher. The exact definition is available in the Location.getVerticalAccuracyMeters() documentation.
A survey marker used to precisely identify a location (Source: Wikipedia)

Conclusions

--

--

--

Improving the world, one byte at a time. @sjbarbeau, https://github.com/barbeau, https://www.linkedin.com/in/seanbarbeau/. I work @CUTRUSF. Posts are my own.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

My method for reducing VR sickness

End 2020 with a spark!!!

Not Slacking Off

Facebook

How to Keep Driving License on Your Smartphone and Download a Soft Copy

Boston Dynamics’ Spot robot is finally on sale to the public

Apple & Google: It’s Up to You to Save the Dying Smart Phone User Experience

Is this the life, the one you imagined?

iPhone 15 Pro Could Come With 5x Periscope Camera: Report

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Sean Barbeau

Sean Barbeau

Improving the world, one byte at a time. @sjbarbeau, https://github.com/barbeau, https://www.linkedin.com/in/seanbarbeau/. I work @CUTRUSF. Posts are my own.

More from Medium

A perfect way to kill the PIP mode activity from another activity.

How Android updates work: A peek behind the curtains from an insider

Google Play Billing Demystified #1

Android Intents and Single Login Per Class— Kotlin