PointPerfect MQTT Localized Distribution
Overview
Introduction
PointPerfect Localized correction service via MQTT (Internet) offers quick delivery of high precision accuracy by providing your device only the SPARTN corrections applicable to your location. This feature offers several advantages over the traditional continental streams, including significantly reduced bandwidth requirements, unencrypted streams, and seamless transition between regions.
This page describes our PointPerfect correction service with localized corrections delivered via our MQTT service. If you wish to receive all continental corrections, see our Continental corrections page. If you wish to use our continental corrections service with an L-Band satellite delivery, please see our L-Band Configuration page.
Benefits of Localized Corrections Distribution
PointPerfect Localized offers many benefits to users, including:
Reduced bandwidth requirements: PointPerfect Localized can reduce bandwidth requirements by up to 80%. This is a significant advantage for applications sensitive to bandwidth constraints, such as those that operate in remote areas or use low-power devices.
Unencrypted Corrections: The device does not need to subscribe to the dynamic keys topic.
Retained Privacy: PointPerfect Localized retains user privacy by not sending the device's precise location to the service to receive correction data. This is done by using a general node-based location system.
-------------------------------------------------------------------------------------------
Do's & Don'ts: Best Practices and Common Pitfalls
Do's:
Check out our "Python sample script PointPerfect MQTT Client": Our sample script located within your portal location services -> downloads -> PointPerfect can give you a great example on how to implement this into your setup.
Keep your F9 or X20 receiver firmware up to date: Regularly update your receiver firmware to ensure compatibility with SPARTN corrections and to benefit from performance enhancements, bug fixes, and new features.
Select appropriate tile levels: Use higher-density tiles (L3-L5) for more accurate corrections and greater node coverage.
Don'ts:
Don’t skip the download of credentials: Forgetting to download the u-center config or Client Key and Client Certificate will prevent your host device from authenticating with the MQTT broker. Always make sure to complete this step before moving forward with the setup
Don’t share your credentials across multiple devices: Each device should have its own set of credentials. Avoid using the same credentials for multiple devices, as this could lead to connection conflicts and potential disconnection
Don't hard code low buffer limits: We do recommend you set your buffer limits to 2x-3x of the observed maximum payload size to leave some room for future signal correction additions.
-------------------------------------------------------------------------------------------
Still need help?
If you need more help or have any questions, please send an email to services-support@u-blox.com.
PointPerfect Localized System Architecture
The correction data format used by the Localized distribution method is the same as in our high-precision Continental streams. For the localized PointPerfect architecture, the correction data is spread across multiple nodes and delivered through individual node MQTT Topics.
How it works
PointPerfect Localized works by dividing the coverage area into a grid of tiles. Each tile contains a set of nodes that are relevant to a user located within that tile. Unlike the continental level approach where a device subscribes to the continental level topic, in the localized approach a device subscribes to the localized node topic based on its location. This ensures that the device receives only the correction data that is relevant to its location, greatly reducing the required bandwidth.
Tiles
Each region where Localized corrections are offered is dissected into Tiles using a layout based on a pre-defined algorithm similar to a "GeoHash". The coverage area of the Tile depends on the tile level used, and the selected tile topic is based on the location of your device and tile level applied.
Tile levels (also known as a ‘zoom level’) are L0, L1 and L2 for all regions with standard density nodes, and L3, L4 and L5 for high density nodes.
The table below shows the average coverage area size and maximum number of nodes within each Tile. The number of nodes available greatly improves accuracy of our corrections, so we encourage customers to migrate to the new nodes. Note, the original Tile Levels 0-2 continue for backwards compatibility, and in the future will either use high-density network of nodes or be deprecated.
Note how Level 0 and Level 3 have the same approximate Tile size, with a higher density of nodes with Tile Level 3. The nodes within each tile are relevant to a user located within that tile. This may include nodes outside the tile boundaries to support users on dynamic platforms.
The image below shows the same approximate location, comparing Tile Level 2 and Tile Level 5 and the number of nodes available for each. The green rectangle is the related Tile, and the yellow triangles represent the selected Nodes within the Tile for the user position, as well as selected nodes from neighboring tiles to improve availability at the bordering area.
Nodes
SPARTN correction streams are generated for each of these virtual Nodes to provide a high-precision positioning solution for that location. Each node name is based on its location and provides localized SPARTN data through its corresponding localized node topic. The data transmitted through each node is optimized based on its location to only provide corrections relevant to the user greatly reducing the amount of bandwidth required. Dynamic users moving throughout the region must transition to different nodes, to continuously and seamlessly access the SPARTN correction streams.
Delivery
To ensure you receive relevant localized data, the device will select the localized node topic to subscribe to by using its location. The image below is an example architecture for a service to device distribution of localized data.
After provisioning the device, i.e. obtaining the client credentials from the Thingstream portal as explained in the Point Perfect Getting Started guide, the device will calculate the tile location.
Once the tile has been calculated, the device subscribes to the node dictionary topic (‘pp/ip/{tile}/dict’) for the calculated tile and receives a list of available nodes within that Tile. The device then calculates and subscribes to the nearest node topic to receive localized corrections for its location. The size data in this tile/dictionary topic relates to the number of nodes provided in that Tile.
The topic format will be ‘pp/ip/{tile}/{node}’ with the tile and node identified as most optimal for your current location. Note, this topic does not have any leading ‘/’ characters, unlike our other distribution methods such as Continental or L-band. Please refer to the Configuration section below to see how the MQTT Log displays the node topic that your device subscribes to.
Configuration
Below is a continuation of the configuration steps from the PointPerfect Getting Started guide, using u-center and an F9 device.
You should already have:
1. Created a PointPerfect location thing in your Thingstream domain account,
2. Downloaded the JSON file from your Thingstream PointPerfect location thing and
3. Downloaded, installed, opened u-center and connected to the port of your F9P device
The final steps to receive localized corrections are to connect to the MQTT client in u-center and load the JSON configuration file.
Open the Receiver menu and select the MQTT Client item as shown in this screenshot.
Selecting the MQTT Client item will open a new dialog as shown in the image below.
Click on the ellipsis (...) icon to browse your file system and select the correct JSON config file.
Choose the "localized" correction type.
Subscribing to the AssistNow topic is optional.
After clicking 'OK,' the MQTT client will establish a connection to the broker. This allows the device to determine the nearest node topic to subscribe to so it can receive localized corrections data.
You can check the MQTT connection status in the u-center's status bar.
Clicking on the green connector icon will open the MQTT log, where you can monitor the messages being received and view the MQTT topic subscriptions as demonstrated below.
Python sample script: PointPerfect MQTT Client
To evaluate the PointPerfect localized version with an MQTT Client built-in your host application, please refer to the PointPerfect MQTT Client sample python script available in the Thingstream Downloads PointPerfect section to help you get started.
Reference Documentation
[1] ZED-F9P Integration manual, UBX-18010802
[2] u-center User guide, UBX-13005250
[3] u-blox F9 HPG 1.32 Interface description, UBX-22008968
[4] C099-F9P application board User guide, UBX- 18063024
[5] EVK-F9P-01 evaluation kit User guide, UBX-22038408
[6] Thingstream Knowledge Base – Services Support