Android and GNSS pseudoranges in the
nutshell
Galileo Hackathon webinar
Dr. Lukasz Bonenberg
28th April 2017
1
The road ahead
1 How does Android provide position?
2 Why Galileo?
3 So what?
4 Summary
2
How does Android provide position?
Google Services API
developers.google.com/awareness-location/
©Google
4
But how do I know my location?
developer.android.com/guide/topics/location/strategies.
html
©Google
5
Android Nougat
©Google
6
Looking under the hood
©Google
7
Two APIs
©Google
8
Why Galileo?
Android GNSS observations
• Pseudorange/Pseudorange Rate (code)
• HW clock
• Navigation data
• Accumulated Delta Range (Carrier)
• additional information (Doppler, observation uncertainty, SNR
ect)
Observations provided by android.location are chipsets dependent1.
1Qualcomm Snapdragon 650 or 820, Broadcom BCM4774 or Intel WCS2x00
10
Navigation Concept
Figure courtesy of Prof T Moore
11
Guiding light
dima goroziya/CC0
12
SplitShire/BY0
13
GNSS accuracy
Figure courtesy of Prof T Moore
14
CORS networks needed
©Google
15
So what?
Position app anybody?
A number of positioning applications exist
• Geo Tracker bit.ly/A_GT
• GPS Status bit.ly/A_GS
• SV Viewer bit.ly/SV_Trimble
Those use android.gms.location and Sensor from android.hardware.
What could we do with android.location?
17
Sample workflow
• calculate Pseudorange;
• get corrections via NTRIP (DGPS);
• estimate position;
• provide position to Google Play Services.
• Convert observables to RINEX;
• Expand NMEA logger for additional messages
18
Urban Canyons
Pexels/CC0
19
More phones than ppl
William Starkey/CC0
20
Applications?
• GIS and asset management
• Crowdsorcing
• Low cost CORS network
• Space weather
• sensor fusion
• improving position in urban areas (Shadow Matching)
But what could I do with my phone with cm-dm level accuracy?
21
Sample workflow
• calculate Pseudorange;
• get corrections via NTRIP (DGPS);
• estimate position;
• provide position to android.gms.location.
• Convert observables to RINEX;
• Expand NMEA logger for additional messages;
• Send timing and synchronisation information;
22
Sample code
• Existing apps using external hardware:
• uCentre bit.ly/uCentre
• NTRIP bit.ly/2q701V3
• RTKGPS+ bit.ly/RTKplus
• Google code github.com/google/gps-measurement-tools
• my fork - github.com/DfAC/gps-measurement-tools
• calculating pseudoranges - github.com/DfAC/AndroidGNSS
• RTKGPS github.com/tomojitakasu/RTKLIB
23
Summary
What we covered today
1 How does Android provide position?
2 Why Galileo?
3 So what?
4 Summary
25
Take away
• android.gms.location abstracts and simplifies position use
within application. Main focus is battery use.
• There is existing android.hardware API giving us access to the
phone sensors.
• Android 7 adds GNSS observations API - android.location,
providing more GNSS positioning options (external corrections,
longer observation times, more sophisticated algorithms ect) at
the cost of battery power;
• Relevant GNSS open source tools exist.
• This allow us to experiment with new ideas and new mass
market opportunities and applications.
26
Useful links
• GSA market report - bit.ly/2h5qhP0
• GSA user report bit.ly/2i36aRj
• Shadow matching
• Simon Banville blog - www.blackdotgnss.com/2016/09/20/
ppp-with-smartphones-are-we-there-yet/
• Rokybun blog - http://rokubun.cat/2016/06/30/
android-n-preview-gnss-measurements/
• my edits to Google code -
github.com/DfAC/gps-measurement-tools
• calculating pseudoranges - github.com/DfAC/AndroidGNSS
• T. Humphrey et al (2016) On the Feasibility of cm-Accurate
Positioning via a Smartphone’s Antenna and GNSS Chip
27
Thank you
Questions?
Lukasz.Bonenberg@nottingham.ac.uk
My presentations can be found at
www.slideshare.net/LukaszKosmaBonenberg
28

Android GNSS in Nutshell

  • 1.
    Android and GNSSpseudoranges in the nutshell Galileo Hackathon webinar Dr. Lukasz Bonenberg 28th April 2017 1
  • 2.
    The road ahead 1How does Android provide position? 2 Why Galileo? 3 So what? 4 Summary 2
  • 3.
    How does Androidprovide position?
  • 4.
  • 5.
    But how doI know my location? developer.android.com/guide/topics/location/strategies. html ©Google 5
  • 6.
  • 7.
    Looking under thehood ©Google 7
  • 8.
  • 9.
  • 10.
    Android GNSS observations •Pseudorange/Pseudorange Rate (code) • HW clock • Navigation data • Accumulated Delta Range (Carrier) • additional information (Doppler, observation uncertainty, SNR ect) Observations provided by android.location are chipsets dependent1. 1Qualcomm Snapdragon 650 or 820, Broadcom BCM4774 or Intel WCS2x00 10
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    Position app anybody? Anumber of positioning applications exist • Geo Tracker bit.ly/A_GT • GPS Status bit.ly/A_GS • SV Viewer bit.ly/SV_Trimble Those use android.gms.location and Sensor from android.hardware. What could we do with android.location? 17
  • 18.
    Sample workflow • calculatePseudorange; • get corrections via NTRIP (DGPS); • estimate position; • provide position to Google Play Services. • Convert observables to RINEX; • Expand NMEA logger for additional messages 18
  • 19.
  • 20.
    More phones thanppl William Starkey/CC0 20
  • 21.
    Applications? • GIS andasset management • Crowdsorcing • Low cost CORS network • Space weather • sensor fusion • improving position in urban areas (Shadow Matching) But what could I do with my phone with cm-dm level accuracy? 21
  • 22.
    Sample workflow • calculatePseudorange; • get corrections via NTRIP (DGPS); • estimate position; • provide position to android.gms.location. • Convert observables to RINEX; • Expand NMEA logger for additional messages; • Send timing and synchronisation information; 22
  • 23.
    Sample code • Existingapps using external hardware: • uCentre bit.ly/uCentre • NTRIP bit.ly/2q701V3 • RTKGPS+ bit.ly/RTKplus • Google code github.com/google/gps-measurement-tools • my fork - github.com/DfAC/gps-measurement-tools • calculating pseudoranges - github.com/DfAC/AndroidGNSS • RTKGPS github.com/tomojitakasu/RTKLIB 23
  • 24.
  • 25.
    What we coveredtoday 1 How does Android provide position? 2 Why Galileo? 3 So what? 4 Summary 25
  • 26.
    Take away • android.gms.locationabstracts and simplifies position use within application. Main focus is battery use. • There is existing android.hardware API giving us access to the phone sensors. • Android 7 adds GNSS observations API - android.location, providing more GNSS positioning options (external corrections, longer observation times, more sophisticated algorithms ect) at the cost of battery power; • Relevant GNSS open source tools exist. • This allow us to experiment with new ideas and new mass market opportunities and applications. 26
  • 27.
    Useful links • GSAmarket report - bit.ly/2h5qhP0 • GSA user report bit.ly/2i36aRj • Shadow matching • Simon Banville blog - www.blackdotgnss.com/2016/09/20/ ppp-with-smartphones-are-we-there-yet/ • Rokybun blog - http://rokubun.cat/2016/06/30/ android-n-preview-gnss-measurements/ • my edits to Google code - github.com/DfAC/gps-measurement-tools • calculating pseudoranges - github.com/DfAC/AndroidGNSS • T. Humphrey et al (2016) On the Feasibility of cm-Accurate Positioning via a Smartphone’s Antenna and GNSS Chip 27
  • 28.
    Thank you Questions? Lukasz.Bonenberg@nottingham.ac.uk My presentationscan be found at www.slideshare.net/LukaszKosmaBonenberg 28