Point Perfect / NTRIP corrections on Zed Orin Box (Zed X)

I’ve got a ZED Box Orin NX 16GB with a Zed X cameras and a Ublox FP9 chip. I’m working on an application to record imagery with matching timestamps from the cameras and the GPS device. I would also like to get improved GPS accuracy through RTK corrections possibly through NTRIP or Point Perfect (PP) subscriptions. I’ve focused my initial research on PP because I’ve previously had issues with NTRIP downtime on another device, but I’m not opposed to using NTRIP if someone suggests that it is a simpler way of working.
As a starter, I have used pygpsclient to connect to the antenna and receive UBX messages. I have also connected to Point Perfect through SPARTN connection which returns SPARTN corrections. The application I’m working on will be outside of pygpsclient as this isn’t used for recording GPS data.
Some of my questions below are to gauge if there are any showstoppers or challenges that might need to be overcome to get corrected GPS data, so any guidance would be appreciated.

My questions include:

  1. Does anyone know if Pointperfect can be used for positional correction at the same time as the Zed SDK?
    a. If so, are there any specific requirement or predefined settings that need to be considered such as baudrate, ports types etc?
  2. In the geotracking example it looks like gpsdclient client is used to record GPS location – How does this differ from the use of PP/NTRIP, is this a good basis to work from?
  3. Are there any helpful examples that could be followed for connecting to PP/NTRIP, receiving corrections and recording GPS data into a JSON?
  4. Has anyone else done something similar and how difficult was it to implement?
    Apologies if the questions are simple but I thought the community may have worked on similar things and have some advice!
    Thanks in advance!

Hi @Tom_Doughty_mm,

Thanks for reaching out as this is not a trivial request.

  1. Yes the ZED SDK can input any type of GNSS data, whether it is corrected or not. So PP or NTRIP can be used with the ZED SDK.
  2. gpsd is a service daemon that opens the gnss device and parses the NMEA data and produces GNSS data through its APIs in C++ and Python. It also happens to include an NTRIP client and sends the corrections to the device so it should handle a configuration like yours.
  3. We are currently working on updating our samples to have the RTK workflow functional and easy to use. The saving of GNSS data as JSON will be similar to what you can find in our global localization recording sample

Hi @mattrouss,

Thanks for the response and really good to hear its something in your pipeline.

Does the FP9 come programmed from Stereolabs to send NMEA message? When i hooked it up to pygpsclient it seemed to only be providing UBX message, even with parse NMEA message ticked.

We’ve been experimenting with your geotracking example, which is a great start so thanks to the team for this! We have noticed the GNSS data in the JSONs only seem to have a frequency of 2-4 seconds. Do you have any advice on how to adjust the frequency of recording GNSS data please?

Do you happen to have any more information on the example code, or anything you can share with us? We would be really keen to discuss this and get some support from your team if possible?

Thanks in advance!

Hi @Tom_Doughty_mm,

If your gnss module does not send out NMEA messages, you can configure it using https://gpsd.gitlab.io/gpsd/ubxtool.html:

# Restart gpsd if it is already running
pkill gpsd
gpsd -nG -s 115200 /dev/ttyACM0
# Enable NMEA message
ubxtool -e NMEA
# Stop gpsd to monitor messages with pygpsclient
pkill gpsd

In the same way, you can update the rate of your gnss module using ubxtool, please take a look at the ubxtool examples.

The global localization samples allow to perform live acquisition, recording and playback of ZED data fused with GNSS global positioning. If you have any specific questions about the samples I would be glad to help.