GNSS 102
Raw Measurements from Phones
ION Masters Course, Miami, 24 Sep 2018, v1.2
Frank van Diggelen

This course has a support site: https://sites.google.com/view/gnsstutorial© Google 20182

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Overview
1.
2.
3.
4.
5.
6.

Raw GNSS Measurements
Logging Tools
How to get Pseudorange
Analysis Tools
Hands-on Exercises
Future: Apps and Research© Google 20183

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Location APIs, Measurement APIsaka Google Play Services aka Google Mobile Service
Most Android phones have this (not China)

Location APIs, android.gms.location● Places● Geofencing● Fused Location Provider (FLP)● Fit● Activity Recognition● Nearby
All Android phones have thisMeasurement/Sensor APIs, in android.location● Location● GnssMeasurement
GNSS Raw Measurements● GnssClockAll phones with:
GNSS chips build date ≥ 2016OS ≥ Android N (Nougat)© Google 20184

https://g.co/GnssTools, which phones have GNSS Raw Measurements:

If you know of a phone that supports raw measurements, and it is not in the online table© Google 2018
please tell us by clicking the feedback link on this page: https://g.co/GnssTools

51. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Overview
1.
2.
3.
4.
5.
6.

Raw GNSS Measurements
Logging Tools
How to get Pseudorange
Analysis Tools
Hands-on Exercises
Future: Apps and Research© Google 20186

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

GNSS Logger

GNSS Analysis© Google 20187

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Logging the raw data on your phone:
1,

2,

3,

4.

Google Drive© Google 20188

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Logged Data is stored locally, on the phone:

GNSS Logger data is stored locally on your phone.
Google doesn’t get any data from these log files.

© Google 20189

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Overview
1.
2.
3.
4.
5.
6.

Raw GNSS Measurements
Logging Tools
How to get Pseudorange
Analysis Tools
Hands-on Exercises
Future: Apps and Research

Most important takeaway:
Understand tRx and tTx© Google 201810

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

A reminder of what we mean by “pseudorange”

Pseudorange (in units of time)= Arrival Time - Transmission Time

Pseudorange (in units of distance)= (Arrival Time - Transmission Time)*c
Source: Stanford University, Course AA272C “Introduction to GPS”, Per Enge & Frank van Diggelen© Google 201811

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

To find the GNSS Measurement APIs ...
1)

Android gnss measurement api

2)3)

android gnss measurement api© Google 201812

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

In Section 1 we saw the difference between this, and this.

Google Play Services, higher abstractions of location

android.location, for Raw Measurements© Google 201813

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Stylistic note for this section:
Green-outlined box,
means an extract from android.location APIs

© Google 201814

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

How to make sure
you’re looking at
Android release “N”
or later

API level 24 = Release N© Google 201815

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

GnssMeasurementEvent.Callback© Google 201816

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and ResearchThis is the time tag of the GNSS Measurement

getTimeNanos

Added in API level 24long getTimeNanos ()Gets the GNSS receiver internal hardware clock value innanoseconds.
This value is expected to be monotonically increasing while thehardware clock remains powered on. For the case of a
hardware clock that is not continuously on, see thegetHardwareClockDiscontinuityCount() field.
The GPS time can be derived by subtracting the sum of
getFullBiasNanos() and getBiasNanos() (when they areavailable) from this value. Sub-nanosecond accuracy can beprovided by means of getBiasNanos().
The error estimate for this value (if applicable) is
getTimeUncertaintyNanos().
© Google 201817

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools...
So, how do you get pseudorange?

5. Hands-on Exercises

6. Future: Apps and Research

Public methods
describeContents()
getAccumulatedDeltaRangeMeters()
getAccumulatedDeltaRangeState()
getAccumulatedDeltaRangeUncertaintyMeters()
getCarrierCycles()getCarrierFrequencyHz()
getCarrierPhase()
getCarrierPhaseUncertainty()
getCn0DbHz()
getConstellationType()
getMultipathIndicator()
getPseudorangeRateMetersPerSecond()
getPseudorangeRateUncertaintyMetersPerSecond()
getReceivedSvTimeNanos()
getReceivedSvTimeUncertaintyNanos()
getSnrInDb()
getState()
getSvid()
getTimeOffsetNanos()
hasCarrierCycles()hasCarrierFrequencyHz()
hasCarrierPhase()
hasCarrierPhaseUncertainty()
hasSnrInDb()
toString()
writeToParcel(Parcel parcel, int flags)© Google 201818

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools...
You get ReceivedSvTimeNanos,
and from that you make the pseudorange

5. Hands-on Exercises

6. Future: Apps and Research

Public methods
describeContents()
getAccumulatedDeltaRangeMeters()
getAccumulatedDeltaRangeState()
getAccumulatedDeltaRangeUncertaintyMeters()
getCarrierCycles()getCarrierFrequencyHz()
getCarrierPhase()
getCarrierPhaseUncertainty()
getCn0DbHz()
getConstellationType()
getMultipathIndicator()
getPseudorangeRateMetersPerSecond()
getPseudorangeRateUncertaintyMetersPerSecond()
getReceivedSvTimeNanos()
getReceivedSvTimeUncertaintyNanos()
getSnrInDb()
getState()
getSvid()
getTimeOffsetNanos()
hasCarrierCycles()hasCarrierFrequencyHz()
hasCarrierPhase()
hasCarrierPhaseUncertainty()
hasSnrInDb()
toString()
writeToParcel(Parcel parcel, int flags)© Google 201819

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Why isn’t pseudorange provided explicitly?
Because about half of all GNSS location on smartphones happens before time
(TOW) is fully known.
Smartphone GNSSes make extensive use ofmeasurements long before TOW is decoded. That is
how they get TTFF of 1 to 2 seconds (1)These measurements are considered invalid in
traditional GNSS. So you can use Android raw
measurements to create RTCM and RINEX format log
files, but not vice-versa without losing information.

For example: when only this bit isset, ReceivedSvTimeNanos is avalue from zero to one millisecond.

1

See “A-GPS” Book, van Diggelen, Chapter 4 “Coarse Time Navigation: Instant GPS”

© Google 201820

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Examples of SvTime < 20ms

BeiDouGalileoGPS

47

4,161,153 ns = 4.1 ms
State = 17 = 0001 0001

For the rest of this short-course, we’ll focus on GPS measurements where TOW is known.
© Google 201821

How to get GPS pseudorange (1):From GnssClock

From GnssMeasurement

public long getTimeNanos ()public long getReceivedSvTimeNanos ()Added in API level 24

Added in API level 24

Gets the GNSS receiver internal hardware clock value inGets the received GNSS satellite time, at the measurement time, innanoseconds.

nanoseconds.

This value is expected to be monotonically increasing while the

For GPS & QZSS, this is:hardware clock remains powered on. For the case of a hardware
clock that is not continuously on, see thegetHardwareClockDiscontinuityCount() field.

Received GPS Time-of-Week at the measurement time, innanoseconds.

The GPS time can be derived by subtracting the sum
ofgetFullBiasNanos() and getBiasNanos() (when they areavailable) from this value. Sub-nanosecond accuracy can be

The value is relative to the beginning of the current GPS week.

provided by means ofgetBiasNanos().

getFullBiasNanos()

Gets the difference between hardware clock (getTimeNanos()) inside GPS
receiver and the true GPS time since 0000Z, January 6, 1980, in nanoseconds.

You must adjust the GnssClock value to thesame time reference as GnssMeasurement© Google 201822

How to get GPS pseudorange (2):From GnssClock
The GPS time can be derived by subtracting the sum of getFullBiasNanos() and getBiasNanos()tRxNanos = TimeNanos - (FullBiasNanos + BiasNanos) - WeekNumberNanos
Referenced to start time
Referenced to GPS Epoch
Referenced to GPS Week

From GnssMeasurementtTxNanos = ReceivedSvTimeNanos
Referenced to GPS Week

getReceivedSvTimeNanos ()For GPS & QZSS, this is:●●

Received GPS Time-of-Week at the measurement time, innanoseconds.
The value is relative to the beginning of the current GPS week
© Google 201823

Access the spreadsheet for the pseudorange exercise:https://sites.google.com/view/gnsstutorial← scroll down to find this

© Google 201824

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Google Android App: GnssLogger, all these values are read to a log file.
tRxNanos = TimeNanos - (FullBiasNanos + BiasNanos) - WeekNumberNanostTxNanos = ReceivedSvTimeNanos%GPS Week number:
weekNumber = floor(-double(gnssRaw.FullBiasNanos)*1e-9/GpsConstants.WEEKSEC);
Code snippet from MATLAB/gpstools/opensource/ProcessGnssMeas.m© Google 201825

Google Android App: GnssLogger, and one more thing: TimeOffsetNanos
double getTimeOffsetNanos ()Gets the time offset at which the measurement was taken in nanoseconds.
The reference receiver's time from which this is offset is specified by getTimeNanos().
The sign of this value is given by the following equation:measurement time = TimeNanos + TimeOffsetNanos
The value provides an individual time-stamp for the measurement, and allows sub-nanosecond accuracy.

tRxNanos = TimeNanos - (FullBiasNanos + BiasNanos) - WeekNumberNanos

from previous slide= (TimeNanos + TimeOffsetNanos) - (FullBiasNanos + BiasNanos) - WeekNumberNanos© Google 201826

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Making pseudoranges in the worksheet.
ARITHMETIC HEALTH WARNING:
We use worksheets for illustration only - because you will get precision errors of the order of 1000 ns
because of the large numbers, especially FullBiasNanos

See sample code in later slide for how to do this without losing resolution© Google 201827

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Making GPS pseudoranges in the worksheet (for illustration only)tRxNanos = (TimeNanos + TimeOffsetNanos) - (FullBiasNanos + BiasNanos) - WeekNumberNanos = tRxNanos

Key:
Italics = derived values
Normal = read from GnssLogger

tRx

-

tTx

= pseudorange© Google 201828

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Making GPS pseudoranges in Matlab
First we get gnssRaw from: [gnssRaw] = ReadGnssLogger(dirName,prFileName);%GPS Week number:
weekNumber = floor(-double(gnssRaw.FullBiasNanos)*1e-9/GpsConstants.WEEKSEC);%compute time of measurement relative to start of week
%subtract big longs (i.e. time from 1980) before casting time of week as double
WEEKNANOS = int64(GpsConstants.WEEKSEC*1e9);
weekNumberNanos = int64(weekNumber)*int64(GpsConstants.WEEKSEC*1e9);
tRxNanos = gnssRaw.TimeNanos -gnssRaw.FullBiasNanos - weekNumberNanos;%tRxNanos is now since the beginning of the week

Note: when we deal with thesenumbers, subtract large integers first.

%subtract the fractional offsets TimeOffsetNanos and BiasNanos:tRxSeconds = (double(tRxNanos)-gnssRaw.TimeOffsetNanos-gnssRaw.BiasNanos)*1e-9;
tTxSeconds = double(gnssRaw.ReceivedSvTimeNanos)*1e-9;
prSeconds = tRxSeconds - tTxSeconds;
PrM= prSeconds*GpsConstants.LIGHTSPEED;

Code snippet from MATLAB/gpstools/opensource/ProcessGnssMeas.m© Google 201829

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and ResearchOpen-source code
GNSS Logger apk (app) and GNSS Analysis source code is available on GitHub
●
●
●
●
●

See links on https://g.co/GnssTools
GNSS Logger is Java code
GNSS Analysis is Matlab code
In both cases only GPS analysis code is available as open-source
You can submit contributions (e.g. add other GNSS open-source code).

The compiled version of GNSS Logger and GNSS Analysis are fully GNSS
compatible (i.e. GPS, GLONASS, BeiDou Galileo, QZSS).

© Google 201830

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Overview
1.
2.
3.
4.
5.
6.

Raw GNSS Measurements
Logging Tools
How to get Pseudorange
Analysis Tools
Hands-on Exercises
Future: Apps and Research© Google 201831

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Researchhttps://g.co/GnssTools
Links to tools:... find the tools in the GPS
Measurement Tools repo on
GitHub, which includes the
GNSS Logger APK and the
GNSS Analysis app forLinux,
Windows,
macOS,and theInstallation and User Manual.

© Google 201832

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research© Google 201833

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research© Google 201834

1. Raw GNSS

2.RF
Logging Tools

3. Pseudorange

Clocks
4. Analysis
Tools

5. Hands-on Exercises

Measurements
6. Future: Apps and Research© Google 201835

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Writing derived data to a file ...
Wrote derived data to .../demofiles/gnss_log_2016_06_30_21_26_07.derived© Google 201836

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Log file of derived data

© Google 201837

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Other useful features of the tools: Mission Planner© Google 201838

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Other useful features of the tools: Receiver C/No comparison© Google 201839

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Other useful features of the tools:
Illustrated by hands-on exercises ...

© Google 201840

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Overview
1.
2.
3.
4.
5.
6.

Raw GNSS Measurements
Logging Tools
How to get Pseudorange
Analysis Tools
Hands-on Exercises
Future: Apps and Research© Google 201841

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Hands-on exercises
1.

.../GnssAnalysisFiles/demofiles/○○

2.

.../GnssAnalysisFiles/driving/○○

3.

The demo log file you downloaded with the desktop app
Learn the basic capabilities of the analysis tools
GPS dual-frequency log file with ground-truth nmea
Analyze reflections in urban canyons.../GnssAnalysisFiles/ionotropodemo/○○

GNSS log file, stationary, at a known position, open sky
Analyze iono and tropo errors.

© Google 201842

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Exercise #1 .../GnssAnalysisFiles/demofiles/
RF

ClocksMeasurements© Google 201843

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Download log files for the following exercises
https://sites.google.com/view/gnsstutorial© Google 201844

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Exercise #2 .../GnssAnalysisFiles/driving/© Google 201845

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Analysis example, driving into San Francisco:46

Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Analysis example, driving into San Francisco:

G22

Low satellite

PR Error 50m-10 dB

What happened with satellite G22?
47

Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Exercise #3 .../GnssAnalysisFiles/ionotropodemo/
1.
2.

3.

Use true position for Reference PVT
Select highest satelltes to use for clock bias computation
CustomParam.txt
Remove iono and tropo model from analysis

Then error plot will show all errors relative to the highest satellites.

© Google 201848

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

How to get true position from Google Earth (1)Preferences …
Show Lat/Long
Decimal Degrees
Units of Measurement
Meters,Kilometers
Terrain
Use high quality terrain
Use 3D imagery© Google 201849

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

How to get true position from Google Earth (2)hG = height above Geoid,from Google Earth 3D Buildings, 20m
hS = height of stand = 1m
dE = -32, Ellipsoid - Geoid
hE = hG+hS+dE = 20+1-32 = -11 m.
Rooftop true position: 37.421568, -122.085429, -11m
© Google 201850

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

CustomParam.txt%Currently supported:%param.losSvid = list of svid to use for computing clock (Bc and BcDot)%template for losSvid.Svid: must have .FreqBand, .Constellation, .Id
GpsL1Svid.Id=0;
GpsL1Svid.Constellation=GnssConstants.GNSS_CONSTELLATION_GPS;
GpsL1Svid.FreqBand=GnssConstants.L1_BAND; %generic GPS L1 struct
Svid(1)=GpsL1Svid; Svid(1).Id = 32;%Svid(2)=GpsL1Svid; Svid(2).Id = 14;
param.losSvid.Svids = {Svid}; %pack in a cell array {}You edit these lines to choose thereference satellite(s) you want.
And place this txt file in the same
directory as your log file.

© Google 201851

Analyzing,errors:iono +
tropo +SIS1

1

SIS errors = Signal In Space errors = errors after applying broadcast ephemeris and clock values© Google 201852

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Notice the CustomParam.txt values being applied:© Google 201853

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research© Google 201854

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research© Google 201855

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Overview
1.
2.
3.
4.
5.
6.

Raw GNSS Measurements
Logging Tools
How to get Pseudorange
Analysis Tools
Hands-on Exercises
Future: Apps and Research© Google 201856

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Future: examples of apps and research
1.
2.
3.
4.

Jamming detection
Carrier-phase PVT
GNSS system monitor
Signal analysis (iono, tropo, SIS, multipath, radio noise)© Google 201857

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

1) Jamming detection

Sample datacollected live on an
Android phone

Alternating values?
AGC levels are specificto the hardware, so you
can’t read too much into
the details, but thetrends are useful.

Jammer source = operating
microwave oven
Phone in front
Phone by the door edge

© Google 201858

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research2) Carrier phase = AccumulatedDeltaRange

ADR is continuous only when clock is continuous, and there is no duty cycling© Google 201659

Carrier-phase PVT
Enable / Disable Duty Cycling:
In Android P, Google added a Developer option
to enable or disable GNSS Duty Cycling●●

When selected: The GNSS chipset will not
duty cycle and will run at full power - keeping
a continuous clock so one can receive
continuous carrier phase measurements.
Look for more information at g.co/GnssTools

Becoming an Android Developer:
1.
2.
3.

Go to the settings menu, and scroll to,or search for "About phone." Tap it.
Scroll to the bottom, where you see"Build number."
Tap it seven (7) times

Also: some phones disable duty cycling automatically when you request raw measurements© Google 201860

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research3) Decoded Nav data, in GnssLogger:

And in log file:## Header Description:## Version: 1.4.0.0, Platform: N## Nav,Svid,Type,Status,MessageId,Sub-messageId,Data(Bytes)
Nav,2,257,1,0,3,34,-61,121,25,12,-108,107,35,0,33,-42,115,35,46,-77,-78,63,-5,-55,-81,29,76,25,-91,8,-23,106,-113
Nav,12,257,1,0,3,34,-61,121,25,12,-108,107,35,63,-5,2,54,6,-27,120,-7,63,-13,10,55,22,-69,6,-108,6,-99,-120,59,9,Nav,25,257,1,0,3,34,-61,121,25,12,-108,107,35,63,-8,-63,106,63,25,3,-49,63,-6,-55,-21,55,-49,35,111,6,-63,-56,18,
Nav,98,769,1,0,1,8,87,-128,22,-95,96,-81,-109,-100,30,-104
Decimal equivalent of each byte, for example: 0b00111111 = 63

© Google 201861

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research4) Analysis example, radio noise effect on pseudorange:

Average C/Noσ (pseudorange errors)

46 dB.Hz

5.4 m

37 dB.Hz

9.2 m

30 dB.Hz

18.2 m© Google 201862

A few more R&D ideas ...

Access/security
Authenticated location
Automated street/trail mapping
Drones, sports filming
Golf - distance to pin
Lane-level traffic & directions
Geocaching
Map-my-yard/landscaping
Robotic lawnmower
Outdoor sports precision meas. (ski, bike …): how am I doing on this turn?
Ecology, environment monitoring
Athlete tracking
Parking spot apps
Cooperative navigation© Google 2018

63

1. Raw GNSS

2. Logging Tools

3. Pseudorange

4. Analysis Tools

5. Hands-on Exercises

6. Future: Apps and Research

Summary●●●●●

Get raw measurements from Android phones
Details and software at https://g.co/GnssTools
Much analysis you can do with the tools directly
Save derived data, and do further analysis with it
Pursue research and app development based on these measurements

Resources.
Google:https://g.co/GnssTools (GNSS Logger, Analysis Tools, Open-source code, APIs, Phones, Feedback)https://sites.google.com/view/gnsstutorial (These slides, sample data sets, pseudorange spreadsheet)
http://insidegnss.com/gnss-analysis-tools-from-google/
http://gpsworld.com/how-to-achieve-1-meter-accuracy-in-android/
One-meter location-accuracy from Android devices (Google I/O '18), https://youtu.be/vywGgSrGODU
ESA:White paper on Android Raw Measurements,
www.gsa.europa.eu/newsroom/news/available-now-white-paper-using-gnss-raw-measurements-android-devices
https://www.gsa.europa.eu/system/files/reports/gnss_raw_measurement_web.pdf© Google 201864

the end. Thank You!