High-Precision GPS Positioning for Spring Developers

VMware Tanzu
VMware TanzuVMware Tanzu
High-Precision GPS Positioning
for Spring Developers
@GHILLERTGUNNAR HILLERT
About ME
▸ Independent Software Developer
▸ Java Champion
▸ DevNexus Co-Founder
▸ OSS Committer
▸ Spring Integration, XD, Data Flow,
Java Marine API
▸ Plant Collector
2Hillert Inc.
Contents
▸ Fundamentals
▸ Hardware
▸ Processing of positioning data
▸ Visualization
▸ 2 Demos
3Hillert Inc.
Why High Precision GPS?
▸ Autonomous vehicles
▸ Robotics
▸ Precision farming
▸ Drone operation
▸ Infrastructure, Biodiversity etc.
4Hillert Inc.
Global Navigation Satellite System (GNSS) refers to a
constellation of satellites providing signals from space that
transmit positioning and timing data to GNSS receivers. The
receivers then use this data to determine location.
European Global Navigation Satellite Systems Agency
GNSS Defined
5Hillert Inc.
▸ GPS (USA)
▸ GLONASS (Russia)
▸ BeiDou (China)
▸ Galileo (EU)
▸ Satellite-based augmentation systems, e.g. QZSS (Japan), EGNOS (EU)
GNSS Systems
6Hillert Inc.
Dual Frequency GNSS
▸ L1+L5 (GPS), E1+E5a (Galileo)
▸ “Dual-frequency GNSS on Android devices” by Sean Barbeau
▸ US Device support in 2020 is still spotty
▸ Check phone support with the OSS app GPSTest (Android)
▸ My own experience: better but not amazing (OnePlus 8 Pro)
7Hillert Inc.
GNSS Accuracy Compared
OnePlus One
OnePlus 8 Pro
U-Blox
8Hillert Inc.
We Can Do Better With Correction Data
▸ Incorporating correction data is key!
▸ Real Time Kinematic (RTK) positioning
▸ Rover + Base Station
▸ Base station should see the same errors (10-40km)
▸ Other correction services exist, e.g. PPP-RTK, PPP
▸ Relative Accuracy versus Absolute Accuracy
9Hillert Inc.
How To Consume Correction Data?
▸ NTRIP == RTK over the internet
▸ Eliminates the need for base station
▸ Networked Transport of RTCM via Internet Protocol
▸ RTCM == Radio Technical Commission for Maritime
▸ Manually post-process receiver data
▸ Continuously Operating Reference Stations (CORS)
▸ E.g. using RTKLIB
10Hillert Inc.
▸ Base Station + Rover
▸ Relatively Low Cost
▸ u-blox ZED-F9P module
▸ Bluetooth + Serial
▸
My Setup Base Station Rover
11Hillert Inc.
Android
▸ Lefebure NTRIP Client
▸ Connect to external GNSS device via Bluetooth
▸ Enable Mock Locations in Android
▸ Under Developer Options
▸ "Fix type” RTK provides highest accuracy
12Hillert Inc.
Hillert Inc.
What About IoS?
▸ Very limited support
▸ Cannot override GPS
▸ Need custom app integration
▸ Processing of NMEA data via WIFI
13
Hillert Inc.
▸ NMEA 0183
▸ National Marine Electronics Association
▸ Proprietary “Standard”
▸ Text based
▸ Numerous sentence (message) types
▸ Why GPSes suck, and what to do about it
▸ Alternative: Proprietary Binary Formats
How to Process GNSS Data? $GNRMC,024429.00,A,1939.4742123,N,15556.999
$GNVTG,,T,,M,0.027,N,0.050,K,A*3D
$GNGGA,024429.00,1939.4742123,N,15556.99941
$GNGSA,A,3,01,07,03,11,22,,,,,,,,2.13,1.02,
$GNGSA,A,3,81,68,78,,,,,,,,,,2.13,1.02,1.87
$GNGSA,A,3,02,,,,,,,,,,,,2.13,1.02,1.87,3*0
$GNGSA,A,3,,,,,,,,,,,,,2.13,1.02,1.87,4*09
$GPGSV,2,1,05,01,58,154,45,03,49,030,33,07,
$GPGSV,2,2,05,22,46,064,32,1*50
$GPGSV,2,1,05,01,58,154,41,03,49,030,32,07,
$GPGSV,2,2,05,22,46,064,,6*56
$GLGSV,3,1,10,66,19,040,21,67,34,344,29,68,
$GLGSV,3,2,10,77,36,112,,78,15,167,34,81,41
$GLGSV,3,3,10,83,17,326,,88,02,169,29,1*74
$GLGSV,3,1,10,66,19,040,14,67,34,344,26,68,
$GLGSV,3,2,10,77,36,112,20,78,15,167,38,81,
$GLGSV,3,3,10,83,17,326,,88,02,169,33,3*7D
$GAGSV,2,1,07,02,22,138,40,05,02,059,,07,12
$GAGSV,2,2,07,15,,,35,18,29,218,38,25,18,08
$GAGSV,2,1,06,02,22,138,30,05,02,059,,07,12
$GAGSV,2,2,06,18,29,218,30,25,18,085,,2*79
$GBGSV,1,1,00,*47
$GBGSV,1,1,00,*47
$GNGLL,1939.4742123,N,15556.9994168,W,02442
$PUBX,00,024429.00,1939.4742123,N,15556.999
$PUBX,03,22,1,U,154,58,45,064,3,U,030,49,33
14
💩
Libraries for Processing GNSS Data
▸ Gpsd
▸ Daemon for Unix-like systems
▸ Defines JSON-based request/response protocol
▸ Java Marine API - https://github.com/ktuukkan/marine-api
“If the GPSD project ever
needs a slogan, it will be
'Hide the ugliness!’”
Source: gpsd
15Hillert Inc.
Connecting to External GPS Receivers
▸ Typically Bluetooth or USB
▸ nrjavaserial
▸ Under active development, fork of RXTX
▸ Bluecove (JSR-82, Java APIs for Bluetooth)
▸ Side note - Non-serial USB
▸ usb4java - JSR 80 compliant (OLD!)
16Hillert Inc.
DEMO
GNSS NMEA
17
Hillert Inc.
Application
▸ Spring Boot
▸ nrjavaserial (USB), Bluecove (Bluetooth)
▸ Spring Integration
▸ Enterprise Integration Pattern (EIP)
▸ Micrometer
18
NMEA Input Channel
Header Enricher
GS
Service Activator Service Activator
GSA
Service Activator
GGA
Service Activator
GS Aggregator
GS GGAGSA
NMEA Senten e ran or er
Senten e Channel
Header a ue o ter
Hillert Inc.
Micrometer + Prometheus + Grafana
▸ A fun way to create a UI (Dashboard)
▸ Micrometer - application metrics facade
▸ Hibernate for Metrics (Prometheus, Humio, Wavefront etc.)
▸ Simple to use in Spring Boot apps
▸ Prometheus - time series database / monitoring system
▸ Grafana - Monitoring + Dashboarding
19
Hillert Inc.
QGIS
▸ Geographic Information System
▸ “Painting” with GNSS Coordinates
▸ The OSS “IDE” for GIS People
▸ https://github.com/qgis/QGIS
20
Hillert Inc.
Field Surveys With Mergin and Input
▸ Create Forms and Data Collection Model in QGIS
▸ Run Input on your mobile device
▸ Automatic synchronization using Mergin
▸ Android and IoS support
▸ Alternative option QField
▸ Advice: Take pictures with Open Camera (OSS)
21
DEMO
PLANTS
22
Hillert Inc.
Demo
23
CSV
univocity
GeoJSON
Hillert Inc.
Thank YOU!
▸ Follow me @ghillert or connect via LinkedIn
▸ Additional information + Hardware Parts List
▸ https://www.hillert.com/
▸ Source Code
▸ https://github.com/ghillert/s1-2020-plants-demo
▸ https://github.com/ghillert/gnss-nmea-demo
24
1 of 24

More Related Content

What's hot(20)

Java RMIJava RMI
Java RMI
Heithem Abbes3.3K views
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
marwa baich3.6K views
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
Abdoulaye Dieng302 views
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
IdrissaDembl103 views
Correction de td poo n3Correction de td poo n3
Correction de td poo n3
yassine kchiri4.3K views
Initiation à Express jsInitiation à Express js
Initiation à Express js
Abdoulaye Dieng2.5K views
MongoDB and Node.jsMongoDB and Node.js
MongoDB and Node.js
Norberto Leite4.8K views
TP GLPITP GLPI
TP GLPI
mickaelday2K views
Développement web mobile avec IONIC 2Développement web mobile avec IONIC 2
Développement web mobile avec IONIC 2
Jean David Olekhnovitch8.5K views
Swagger With REST APIs.pptx.pdfSwagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdf
Knoldus Inc.315 views
Webpack DevTalkWebpack DevTalk
Webpack DevTalk
Alessandro Bellini503 views
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
Youness Boukouchi2.7K views
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
Yassine Badri20.6K views
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
marwa baich3.2K views
Angular modules in depthAngular modules in depth
Angular modules in depth
Christoffer Noring2.3K views
Cours 2 les composantsCours 2 les composants
Cours 2 les composants
Aymen Sellaouti893 views

Similar to High-Precision GPS Positioning for Spring Developers(20)

Recently uploaded(20)

The Case Against Frameworks - JFall 2023The Case Against Frameworks - JFall 2023
The Case Against Frameworks - JFall 2023
Jan-Hendrik Kuperus12 views
3 AI Tools for Live Streamers3 AI Tools for Live Streamers
3 AI Tools for Live Streamers
ontheflystream9 views
Like SpecFlowLike SpecFlow
Like SpecFlow
Dmitry Dorogoy9 views
New Groundbreaking AI App.pdfNew Groundbreaking AI App.pdf
New Groundbreaking AI App.pdf
Anwar78Talukder6 views

High-Precision GPS Positioning for Spring Developers

  • 1. High-Precision GPS Positioning for Spring Developers @GHILLERTGUNNAR HILLERT
  • 2. About ME ▸ Independent Software Developer ▸ Java Champion ▸ DevNexus Co-Founder ▸ OSS Committer ▸ Spring Integration, XD, Data Flow, Java Marine API ▸ Plant Collector 2Hillert Inc.
  • 3. Contents ▸ Fundamentals ▸ Hardware ▸ Processing of positioning data ▸ Visualization ▸ 2 Demos 3Hillert Inc.
  • 4. Why High Precision GPS? ▸ Autonomous vehicles ▸ Robotics ▸ Precision farming ▸ Drone operation ▸ Infrastructure, Biodiversity etc. 4Hillert Inc.
  • 5. Global Navigation Satellite System (GNSS) refers to a constellation of satellites providing signals from space that transmit positioning and timing data to GNSS receivers. The receivers then use this data to determine location. European Global Navigation Satellite Systems Agency GNSS Defined 5Hillert Inc.
  • 6. ▸ GPS (USA) ▸ GLONASS (Russia) ▸ BeiDou (China) ▸ Galileo (EU) ▸ Satellite-based augmentation systems, e.g. QZSS (Japan), EGNOS (EU) GNSS Systems 6Hillert Inc.
  • 7. Dual Frequency GNSS ▸ L1+L5 (GPS), E1+E5a (Galileo) ▸ “Dual-frequency GNSS on Android devices” by Sean Barbeau ▸ US Device support in 2020 is still spotty ▸ Check phone support with the OSS app GPSTest (Android) ▸ My own experience: better but not amazing (OnePlus 8 Pro) 7Hillert Inc.
  • 8. GNSS Accuracy Compared OnePlus One OnePlus 8 Pro U-Blox 8Hillert Inc.
  • 9. We Can Do Better With Correction Data ▸ Incorporating correction data is key! ▸ Real Time Kinematic (RTK) positioning ▸ Rover + Base Station ▸ Base station should see the same errors (10-40km) ▸ Other correction services exist, e.g. PPP-RTK, PPP ▸ Relative Accuracy versus Absolute Accuracy 9Hillert Inc.
  • 10. How To Consume Correction Data? ▸ NTRIP == RTK over the internet ▸ Eliminates the need for base station ▸ Networked Transport of RTCM via Internet Protocol ▸ RTCM == Radio Technical Commission for Maritime ▸ Manually post-process receiver data ▸ Continuously Operating Reference Stations (CORS) ▸ E.g. using RTKLIB 10Hillert Inc.
  • 11. ▸ Base Station + Rover ▸ Relatively Low Cost ▸ u-blox ZED-F9P module ▸ Bluetooth + Serial ▸ My Setup Base Station Rover 11Hillert Inc.
  • 12. Android ▸ Lefebure NTRIP Client ▸ Connect to external GNSS device via Bluetooth ▸ Enable Mock Locations in Android ▸ Under Developer Options ▸ "Fix type” RTK provides highest accuracy 12Hillert Inc.
  • 13. Hillert Inc. What About IoS? ▸ Very limited support ▸ Cannot override GPS ▸ Need custom app integration ▸ Processing of NMEA data via WIFI 13
  • 14. Hillert Inc. ▸ NMEA 0183 ▸ National Marine Electronics Association ▸ Proprietary “Standard” ▸ Text based ▸ Numerous sentence (message) types ▸ Why GPSes suck, and what to do about it ▸ Alternative: Proprietary Binary Formats How to Process GNSS Data? $GNRMC,024429.00,A,1939.4742123,N,15556.999 $GNVTG,,T,,M,0.027,N,0.050,K,A*3D $GNGGA,024429.00,1939.4742123,N,15556.99941 $GNGSA,A,3,01,07,03,11,22,,,,,,,,2.13,1.02, $GNGSA,A,3,81,68,78,,,,,,,,,,2.13,1.02,1.87 $GNGSA,A,3,02,,,,,,,,,,,,2.13,1.02,1.87,3*0 $GNGSA,A,3,,,,,,,,,,,,,2.13,1.02,1.87,4*09 $GPGSV,2,1,05,01,58,154,45,03,49,030,33,07, $GPGSV,2,2,05,22,46,064,32,1*50 $GPGSV,2,1,05,01,58,154,41,03,49,030,32,07, $GPGSV,2,2,05,22,46,064,,6*56 $GLGSV,3,1,10,66,19,040,21,67,34,344,29,68, $GLGSV,3,2,10,77,36,112,,78,15,167,34,81,41 $GLGSV,3,3,10,83,17,326,,88,02,169,29,1*74 $GLGSV,3,1,10,66,19,040,14,67,34,344,26,68, $GLGSV,3,2,10,77,36,112,20,78,15,167,38,81, $GLGSV,3,3,10,83,17,326,,88,02,169,33,3*7D $GAGSV,2,1,07,02,22,138,40,05,02,059,,07,12 $GAGSV,2,2,07,15,,,35,18,29,218,38,25,18,08 $GAGSV,2,1,06,02,22,138,30,05,02,059,,07,12 $GAGSV,2,2,06,18,29,218,30,25,18,085,,2*79 $GBGSV,1,1,00,*47 $GBGSV,1,1,00,*47 $GNGLL,1939.4742123,N,15556.9994168,W,02442 $PUBX,00,024429.00,1939.4742123,N,15556.999 $PUBX,03,22,1,U,154,58,45,064,3,U,030,49,33 14 💩
  • 15. Libraries for Processing GNSS Data ▸ Gpsd ▸ Daemon for Unix-like systems ▸ Defines JSON-based request/response protocol ▸ Java Marine API - https://github.com/ktuukkan/marine-api “If the GPSD project ever needs a slogan, it will be 'Hide the ugliness!’” Source: gpsd 15Hillert Inc.
  • 16. Connecting to External GPS Receivers ▸ Typically Bluetooth or USB ▸ nrjavaserial ▸ Under active development, fork of RXTX ▸ Bluecove (JSR-82, Java APIs for Bluetooth) ▸ Side note - Non-serial USB ▸ usb4java - JSR 80 compliant (OLD!) 16Hillert Inc.
  • 17. DEMO GNSS NMEA 17
  • 18. Hillert Inc. Application ▸ Spring Boot ▸ nrjavaserial (USB), Bluecove (Bluetooth) ▸ Spring Integration ▸ Enterprise Integration Pattern (EIP) ▸ Micrometer 18 NMEA Input Channel Header Enricher GS Service Activator Service Activator GSA Service Activator GGA Service Activator GS Aggregator GS GGAGSA NMEA Senten e ran or er Senten e Channel Header a ue o ter
  • 19. Hillert Inc. Micrometer + Prometheus + Grafana ▸ A fun way to create a UI (Dashboard) ▸ Micrometer - application metrics facade ▸ Hibernate for Metrics (Prometheus, Humio, Wavefront etc.) ▸ Simple to use in Spring Boot apps ▸ Prometheus - time series database / monitoring system ▸ Grafana - Monitoring + Dashboarding 19
  • 20. Hillert Inc. QGIS ▸ Geographic Information System ▸ “Painting” with GNSS Coordinates ▸ The OSS “IDE” for GIS People ▸ https://github.com/qgis/QGIS 20
  • 21. Hillert Inc. Field Surveys With Mergin and Input ▸ Create Forms and Data Collection Model in QGIS ▸ Run Input on your mobile device ▸ Automatic synchronization using Mergin ▸ Android and IoS support ▸ Alternative option QField ▸ Advice: Take pictures with Open Camera (OSS) 21
  • 22. DEMO PLANTS 22
  • 23. Hillert Inc. Demo 23 CSV univocity GeoJSON
  • 24. Hillert Inc. Thank YOU! ▸ Follow me @ghillert or connect via LinkedIn ▸ Additional information + Hardware Parts List ▸ https://www.hillert.com/ ▸ Source Code ▸ https://github.com/ghillert/s1-2020-plants-demo ▸ https://github.com/ghillert/gnss-nmea-demo 24