Skip to content

Latest commit

 

History

History
263 lines (154 loc) · 14.8 KB

README.md

File metadata and controls

263 lines (154 loc) · 14.8 KB

Using Septentrio's Receiver and uBlox's Pointperfect correction services for precise positioning

GENERAL CONTEXT OF THIS GUIDE

GNSS (Global Navigation Satellite System) technology has changed the way we navigate and position ourselves, with applications in various industries including transportation, surveying, and agriculture. However, atmospheric conditions and signal blockages can affect the accuracy of GNSS location information.

GNSS corrections are used to mitigate these effects and improve the accuracy of position measurements. In recent years, there has been a growing demand for high-accuracy positioning, which has led to the evolution of GNSS correction mechanisms such as OSR, SSR, or L-Band delivery. Standardization is not yet established, making it challenging for users to access and use these corrections.

To address this challenge, it is useful to create an ecosystem around GNSS corrections that is agnostic. This repository is part of a set of guides and documentation and explores a way of running u-blox's PointPerfect corrections on your system quickly, making it easy for users and integrators to evaluate and access these services. Platforms like GitHub enable documentation and the creation of demonstrators to allow users to try out different correction services with ease.

To access the GitHub homepage to which this guide belongs, click here

AUTHORS

Name GitHub
Iker Uranga IkerUranga10
Duck Jiang duckjiang
Luc Gousset Luc-Gousset

MAINTAINER

GitHub
septentrio-users

DO YOU HAVE ANY QUESTIONS? CONTACT SEPTENTRIO SUPPORT TEAM

Septentrio Support Page

SEPTENTRIO LINKS FOR USERS

Contact Septentrio Home Page
Septentrio Contact Page Septentrio Home Page

DISCLAIMER

This set of guidelines consists of several practical examples to help Septentrio Module users and developers integrate third-party GNSS corrections. The guidelines are based on a concrete setup, which you may or may not use to follow the integration guidelines.

It is desirable to mention the disclaimer about that setup and the guides in general before starting to read this guide.

Click here to know more about the Setup in which these guides are based and general implementation documentation disclaimer

TABLE OF CONTENTS

INTRODUCTION

This repository consists in a how-to guide for the implementation of a system that uses a Raspberry Pi 4 Model B in combination with a Septentrio Module to obtain uBlox's Pointperfect corrections for precise positioning.

If you want to know more about or different modules and products you can visit us in:

PointPerfect is an advanced GNSS augmentation data service designed from the ground up to be accurate, reliable, and immediately available. u-blox services are delivered by the Thingstream IoT service delivery platform.

If you have any questions or feedback, please don't hesitate to reach out to us at Septentrio support page.

WHO IS UBLOX?

Many companies are involved in developing and distributing chips and modules for wireless communication and positioning. However, u-blox stands out by dedicating itself to excellence, focusing on customers and their specific applications. As a fabless company, u-blox invests heavily in research and development to offer the market products and solutions tailored for the Internet of Things - benefitting users worldwide.

WHAT IS POINTPERFECT?

PointPerfect is an advanced GNSS augmentation data service meticulously designed to deliver accuracy, reliability, and immediate availability. The service meets the rapidly increasing demand for high-precision GNSS solutions across various sectors, including autonomous vehicles such as unmanned aerial vehicles (UAVs), service robots, machinery automation, micro-mobility, and other cutting-edge navigation applications. In the automotive realm, emerging applications encompass automated driving (AD), advanced driver assistance systems (ADAS), lane-accurate navigation, and telematics.

To know more about the service you can visit the following official web pages:

IS THE PROJECT OPEN SOURCE?

Yes, as it allows easy adaptations and thus enables the robotics and autonomous community to create their own spin off projects. As such this can be also a starting reference point for integrators when in need of GNSS integration.

With open source it means that the following is provided:

  • Editable source files
  • Modifications and spin off projects allowed
  • You are allowed to sell your version. No -NC limitations.
  • May require attribution
  • We encourage you to stand on our shoulders and even make money at it!

More info about licensing can be found here: Creative Commons Attribution Share-Alike License. and Open Source HW

RECEIVER AND RASPBERRY PI 4 SETUP

The implementation of this service is based and tested on a specific setup. This setup consists of two main elements and their wiring and peripherals. These elements are the Mosaic-Go Module evaluation kit and a Raspberry Pi 4 Model B. Here you can see some of the main components (without peripherals) and a High-Level scheme of the Raspberry Pi 4 and Mosaic-Go system.

To know more about this system and hot to make the setup in which this and the rest of our guidaes are based follow the next link below.

It is necessary to follow the instructions of the previous setup installation guide, to return to this point for the implementation of the uBlox's Pointperfect corrections service.

SOFTWARE AND SYSTEM

For the implementation of PointPerfect corrections, it is necessary to use the PointPerfect library.

IMPORTANT NOTE

For convenience, from now on the acronym 'PPL' will be used in several occasions, both in text and images, referring to Point Perfect Library.

MQTT

Before starting the explanation of the different inputs and outputs that the library has, it is essential to explain, or at least mention, the IoT communication protocol called MQTT. This protocol plays a crucial role in accessing the information needed by the library.

MQTT is an OASIS standard messaging protocol for the Internet of Things (IoT). It is designed as an extremely lightweight publish/subscribe messaging transport that is ideal for connecting remote devices with a small code footprint and minimal network bandwidth. MQTT today is used in a wide variety of industries, such as automotive, manufacturing, telecommunications, oil and gas, etc.

Below is an image showing a basic schematic of the operation of the subscription and publication system between brokers and MQTT clients to communicate between two or more clients in the network.

Click here to navigate to the official MQTT guide for Client and Broker communication:

Point Perfect Library

Point Perfect is a C++ library developed by u-blox that generates corrections in RTCM format to later send them to the GNSS receiver. The library decodes the SPARTN format corrections offered by the IoT location service or L-Band satellite beam. Together with the Satellite Ephemeris and receiver's position and timing information (NMEA), it generates RTCM messages to be sent to the receiver.

Regarding the data inputs and outputs of the library, two additional elements are crucial to make the library functional. These elements are the frequency of the L-Band beam and a dynamic key (which changes over time) for library authentication. Both are obtained from the MQTT client.

Below is an image with a schematic representing the different inputs and outputs of the Point Perfect library.

POINT PERFECT LIBRARY IMPLEMENTATION

Once the concepts of what PointPerfect is, along with all the inputs and outputs it has in conjunction with the MQTT protocol are understood, the next step is the integration of the Corrections Service.

The integration of this service is done through what in Septentrio we have called GlueCode.

Glue Code

This code 'Glue Code' is a code written in the C++ language that makes use of several libraries to integrate this service in the Raspberry Pi 4 + Mosaic-Go setup, which is mentioned in this section.

One of these libraries is PointPerfect Library, and uses its API to make possible its correct functioning and compatibility in the system.

In order to understand the role of the GlueCode in the system, the following figure is shown below.

It can be observed in the figure that the glue code wraps the PointPerfect library, ensuring that all elements of the system are well interconnected. This includes serial port communication between the receiver and the Raspberry Pi 4, communication through the MQTT protocol and Raspberry Pi 4 as previously described, and interface with the Point Perfect library.

In the following sub-sections, two approaches for such implementation are presented. These are User Implementation, with the aim of providing a high-level explanation for easy and fast execution of the code, in order to start testing the library with Septentrio receivers quickly, and the other one,

Glue Code libraries Licenses

The code to use the PointPerfect library in this system, which we have called Glue Code, makes use of other opensource libraries, whose names and licenses are the following.

How To Guide for User implementation

The user Implementation Guide has the aim of providing a high-level explanation for easy and fast execution of the code, in order to start testing the library with Septentrio receivers quickly.

How To Guide for Developer implementation

The developer Implementation Guide has the aim of deepening the compilation of the code and the operation of all parts of the GlueCode. It consists in providing an example and more advanced explanations on how developers could implement the PointPerfect service in their system.

SUGGESTIONS FOR IMPROVEMENTS

There are several possible enhancements to the code that is available today. Therefore, from septentrio we want to warn about some features of the code that can be improved and at the same time invite users willing to help or with ideas for improvement to share those ideas or feedback here on GitHub or through the septentrio support page.

These are some of the points to improve or features to add:

  • Stabilize LBand functionality. The buffering mechanism linking the serial and MQTT communication with the interface (API functions) should be improved to guarantee the stability of the LBand functionality.

  • Add a graphical user interface (GUI) for setting the parameters of the executable code for ease of use.

  • Add IP communication between the septentrio receiver and the Rapberry Pi via code.