How good it will be, the GNSS chipset on your phone
Probably you hate the GNSS chipset on your phone, which eats battery a lot and never ready to use when you need it. I had a GNSS course 10 years ago, at that time, if you need sub-meters coordinates.
- The phone was not an option at all for positioning.
- Elevation by GPS was thought shitty. We did only believe orthometric height by level measurement.
- The credible differential GPS technique was RTK (Real Time Kinemetric). We need find a ground control point first and hope it is high enough, otherwise we need do transition by total station. Then setting up stationary GPS and radio antenna to broadcast corrections.
Somethings changed since 2018, 2019:
- The chipset evolved. How to get one-meter location-accuracy from Android devices (Google I/O ‘18) - YouTube
- Google opened the Raw GNSS Measurements API and provided the tools GNSSLogger.
This changed with the launch of Android Nougat 7.0, which brought the ability to collect and process raw pseudorange measurements and navigation messages within an Android app. Android Pie 9.0 went further by providing developer options for testing real-time kinematic (RTK), or carrier-phase measurements.
The “dual-frequency” GNSS feature on newer Android devices has gotten a lot of attention lately, as using multiple GNSS frequencies is potentially a game-changer in terms of location accuracy — going from several meters of error (over 10 feet) to decimeter level (less than 1 foot).
The traditional positioning is done by code correlation, determining a pseudorange with limitations (3 meters for the C/A code and 0.3 meters for the P code, which is up to the chipping rate of the code used). The actually accuracy needs plus clock error and path delays.Carrier-phase measurement is calculated by carrier wavelength times the number of the cycles. So, the wavelength determined the error, which is 0.19 m for the L1 signal. It is possible improve to 1% of its wavelength by solving the problem called integer ambiguity .
I never expect that today we have so many GNSS satellites available. And satellite-based augmentation system (SBAS) is everywhere.
Amazing Tools for Exploring GNSS on Android
- How to logger raw files: GNSSLogger, google/gps-measurement-tools (github.com)
- How to logger/view/test the GNSS data: GPSTest - Apps on Google Play
- How to properly process raw data: RTKLIB - OpenStreetMap Wiki
- You need ephemerides and solutions from IGS, and RINEX file from a nearby base station. It could be real time or post processing.
- with RTKLIB, you can easily do PPP, Or, you can use webservice Precise Point Positioning from nrcan.gc.ca.
- How to turn raw measurements to Rinex files: rokubun/android_rinex: This repository contains a python script that converts logs from Google’s GNSS measurement tools to RINEX (github.com)
Here is a full list, barbeau/awesome-gnss: Community list of open-source GNSS software and resources (github.com).
Some Results
By using RTKLIB and raw measurements from smartphone, one of the processing results is here.
the resulting errors for the training set were 1.37 meters for the 50th percentile, 5.35 meters for the 95th percentile and 3.36 meters for the average of the two. rtklibexplorer (wordpress.com)
What I Have Got
I do not have enough time to do PPP process. By hardware estimation (android outputs the raw measurements with accuracy estimation at 68% confidence), the precision is 3.8m, 2.5m for the one of points, corresponding to horizontal and vertical measurements.
If the ground truth is error free, at the moment I look at my phone, the true error is 6.67/5.97 m. After 268 seconds (1 sample per second), on average, the true error is 6.72/5.45 m.
My location is surrounded by trees and a 5-floors-building.
If possible, I shall check the ground control point. I believe it is possible to achieve 1 meter accuracy of positioning with dual frequency smartphones.
What’s in the Future
In the future.
Machine learning and precision GNSS algorithms are expected to improve this accuracy and provide billions of Android phone users with a more fine-tuned positioning experience. Google Smartphone Decimeter Challenge | Kaggle