GPS RTK2 : streaming RTCM3 from one receiver to another has no effect

Hello,

I am using two GPS-RTK2 boards ZED-F9P, both are directly plugged to my computer via USB and create virtual serial ports.

Both of them are connected to external antennas with a clear sky view.

My goal is to use one of them as a station that feeds RTCM corrections to the second, reading and writing RTCM bytes over the USB Serial connectors on a single machine as opposed to the tutorial which uses a BlackBoard C inbetween over I2C.

I am correctly able to get RTCM packets (I guess), but feeding them to the rover has no effect : the positionning accuracy is metric, and the quality indicator of the GNGGA NMEA string stays to “1”.

One is configured as a “station” via the u-center:

-In the “TMODE3” menu the mode is set as “survey in” with 60seconds minimum observation time, 2 meters position accuracy
time_mode3_station.png

  • In the “msg” menu, the 6 RTCMP messages from the hookup guide are activated with the corresponding frequencies (1005, 1074, 1084, 1094, 1124 at 1Hz, 1230 at 0.1Hz)
    msg_station.png
  • In the “prt” menu, the USB port is configured to output RTCM3 data

When I plug it, the u-Center packet reader seems to tell me the board generates RTCM3 data as expected :

https://i.ibb.co/Phtdyfj/rtcm-station.png

The other one is configured as a “rover” :

  • In the “prt” menu, the USB port is set to output NMEA and input RTCM3 + UBX + NMEA ( I cannot just set it to input RTCM3, after saving it and rebooting the board it comes back to RTCM3 + UBX + NMEA )

  • The rest is left untouched, factory setting (TMODE3 and “MSG” as well)

and it outputs NMEA messages as expected :

https://i.ibb.co/LZPCCdj/nmea-rover.png

Now I was hoping I could pipe the USB-Serial port of the RTK station to the USB-Serial port of the rover as such (assuming ACM0 is the station, ACM1 is the rover):

tail -f /dev/ttyACM0 > /dev/ttyACM1

but the quality indicator of the GNGGA message of the rover remains to “1”, and there is a large dispertion in the lat/lon data :

$GNGGA,1730033.00,48xx.xxxxx,N,0027x.xxxxx,E,1,12,0.51,60.5,M,46.2,M,,*79

I also tried with a simple python script that reads the serial port of the station and write on the serial port of the rover as soon as a byte is available, but same result.

Do you have any idea what I am missing to have the RTCM correctly fed to the rover via USB ro get a centimetric positioning ?

Best regards,

Jeremy

Hi all,

here is the simple Python test script that pipes RTCM3 bytes from the station to the rover via the USB Serial port :

#! /usr/bin/env python3

import serial

rtcm_source = serial.Serial("/dev/ttyACM0")
rover = serial.Serial("/dev/ttyACM1")

while True:
    rtcm_byte = rtcm_source.read()
    print("RTCM: {}\n".format(rtcm_byte))
    rover.write(rtcm_byte)
    line = rover.readline()
    if "GGA" in line:
        print("{}".format(line))

The RTCM3 bytes are correctly piped to the rover, but the quality indicator of the position remains “1”, meaning there is no RTK correction.

Any lead ?

So I checked the status of the survey-in in U-Center and it says it has successfully finished and that the Fix Mode is “TIME” :

https://i.ibb.co/99DhYjQ/base-survey-finished.png

the base and the rover antennas are on the roof with a clear sky view :

antennes.png

I also directly connected the two receivers UART2 serial port ( RX on TX and reverse ) :

montage.png

However the RTK LED of the rover is still on and its fix mode is still “3D” :

https://i.ibb.co/RbH3C6g/rover-nortk.png

Has anyone an idea of what I am doing wrong ?