Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

High Precision GPS Positioning for Spring Developers

209 Aufrufe

Veröffentlicht am

You have GPS tracking requirements in areas such as autonomous vehicles, robotics or precision farming, but realize that phones are not accurate enough. You also wish Google Maps and OpenStreetMap had a way higher zoom level. What are your options?

Join me on this fast-paced journey as we look at the various options to achieve centimeter-level GNSS accuracy. We’ll look at (affordable) hardware options, such as the dual-frequency GNSS support in the latest generation of phones, as well Arduino-powered base station/rover solutions for your own IoT needs.

We venture into Java connectivity options in order to integrate devices via Bluetooth and USB into Spring Boot applications, and show how to process NMEA messages using Spring Integration.

Ultimately, we’ll dive into the wider GIS world, briefly touching on QGIS to create base maps, geospatial data persistence options, and how to visually present the end product to your users using Leaflet.js.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

High Precision GPS Positioning for Spring Developers

  1. 1. High-Precision GPS Positioning for Spring Developers @GHILLERTGUNNAR HILLERT
  2. 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. 3. Contents ▸ Fundamentals ▸ Hardware ▸ Processing of positioning data ▸ Visualization ▸ 2 Demos 3Hillert Inc.
  4. 4. Why High Precision GPS? ▸ Autonomous vehicles ▸ Robotics ▸ Precision farming ▸ Drone operation ▸ Infrastructure, Biodiversity etc. 4Hillert Inc.
  5. 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. 6. ▸ GPS (USA) ▸ GLONASS (Russia) ▸ BeiDou (China) ▸ Galileo (EU) ▸ Satellite-based augmentation systems, e.g. QZSS (Japan), EGNOS (EU) GNSS Systems 6Hillert Inc.
  7. 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. 8. GNSS Accuracy Compared OnePlus One OnePlus 8 Pro U-Blox 8Hillert Inc.
  9. 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. 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. 11. ▸ Base Station + Rover ▸ Relatively Low Cost ▸ u-blox ZED-F9P module ▸ Bluetooth + Serial ▸ My Setup Base Station Rover 11Hillert Inc.
  12. 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. 13. Hillert Inc. What About IoS? ▸ Very limited support ▸ Cannot override GPS ▸ Need custom app integration ▸ Processing of NMEA data via WIFI 13
  14. 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. 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. 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. 17. DEMO GNSS NMEA 17
  18. 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. 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. 20. Hillert Inc. QGIS ▸ Geographic Information System ▸ “Painting” with GNSS Coordinates ▸ The OSS “IDE” for GIS People ▸ https://github.com/qgis/QGIS 20
  21. 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. 22. DEMO PLANTS 22
  23. 23. Hillert Inc. Demo 23 CSV univocity GeoJSON
  24. 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