How to send RTCM3 corrections for RTK

I’ve recently bought a Holybro Pixhawk 5X and I’m going to use it for my tracked rover.
I also have M8N and M9N GPS and I will connect it to GPS1 and GPS2 connectors on the pixhawk board.

Since I also have a base station based on the ZED F9P chip, I would like to use it to send the RTCM3 corrections to both these GPS modules installed on the rover.
I have two radio modems that communicates over RS232 port.

Is it possible to send the corrections to the pixhawk board and use them to make both GPS work in RTK mode?

For example, can I just connect the RS232 port from my radio modem to one of the RS232 ports on the pixhawk and then somehow tell the system to use the corrections?

No that is not the way it works.

To get it to work you connect the F9P basestation to a PC running mission planner. that PC connects via telemetry modem to the vehicle. And that is it.

1 Like

Thank you a lot for the clarification.

So, if I would like to avoid to have the base station wired to the pc, I should use another set of radio modems with rs232 or usb connection, is it correct? Or are there other options?

Moreover, the M8N and the M9N gps modules included in the pixhawk kit I have purchased will work fine with the RTCM3 corrections or is it better to replace them with two ublox GPS since the base station is ublox based on zed f9p?

On the link you provided, there is this indication:

Select the correct base module com port in the top left corner and click connect. In the SurveyIn Acc section, enter the absolute geographic accuracy that you expect your HERE + base station to achieve. In the Time column, enter the minimum survey time you expect. Click on Restart, the ground station will transfer the data you have entered to the HERE + base module, the base module will start a new round of surveying

Since I’m not using HERE+ base station, do I need to skip this step? My base station does the survey in when I start it on ucenter. I don’t think it can accept commands from the rs232 to make it start a new survey in process.

Try it out, most of those instructions work on any ublox (M8P or F9P) receiver and are not Here+/3 specific.

Yes, having a separated modem just for RTCM injection will probably work. But is not the way it was designed by the ardupilot developers. There are no instructions on on how to do it. You need to use other resources to configure it.

1 Like

The M8N and M9N are standard precision receivers. They do not support RTK GPS.

1 Like

Good point @Yuri_Rage , You are correct.

1 Like

So should I use two f9p ublox GPS to replace the M8N and the M9N in order to be able to use the RTK corrections?

Yes. You can also use an M8P based receiver, but you will get better results with the newer/more fully featured F9P hardware.

You do not need two receivers on your vehicle to use RTK precision. You do need two if you want a moving baseline (GPS yaw) configuration.

1 Like

And, in case you have internet connection on your rover, you can get rtk corrections directly from a cors, without passing trough MP and base station.

1 Like

I have internet onboard! I could get rid of the base station and use an online correction service, I have to check if they are free in my country.

I would like to have a very accurate absolute heading and so I thought to use two gps. Isn’t it the right way to reach it? I also purchased but not yet received a dual antenna GPS from septentrio even if I don’t know if I will be able to use the heading value generated by this system with ardupilot.

Some key facts on RTK GPS and moving base/rover configurations:

  • Generally, uBlox modules ending in the “N” suffix are standard precision and do not support RTK GPS
  • Generally, uBlox modules ending in the “P” suffix are high precision and support RTK GPS

  • To achieve RTK precision for position only, a single RTK capable module is required, and it must receive RTCM3 messages from a base station.
  • That base station can be:
    • An additional precision GPS module at a fixed/surveyed point to which you directly connect (often via Mission Planner)
    • Internet based NTRIP/CORS if a station is available in your area (preferably within 20km)

  • For GPS yaw (heading), a moving base/rover configuration is required, meaning two precision modules must reside on the vehicle itself with the antennas at least 30cm apart (preferably farther).
  • External RTCM3 from a fixed base/NTRIP station is not required if GPS yaw is the sole goal of your RTK-capable module configuration
  • ArduPilot supports Septentrio GPSs like the Mosaic-H, and I have successfully configured the module from ArduSimple to report GPS yaw. Although I have not fully tested its capabilities, it shows a lot of promise and, in some ways, is slightly easier to configure than Zed-F9P modules.

Thank you a lot for your accurate answer! I wasn’t aware about the N and P notation for ublox!

Having absolute heading value with high accuracy is mandatory for me, but I would also like to have high precision with the position so I think I should use the base station or the ntrip client to send the corrections (probably, the ntrip solution is easier to implement on ardupilot).

The septentrio receiver I’m going to receive has two antennas output and it says to use a distance of at least 1 meter between them even if I can also go farther.

If I use the septentrio solution may be I wont need the second gps attached to the pixhawk, is it correct?

Yes, you should use the NTRIP/CORS data in your case.

That’s correct for the Septentrio module. I configured one as a bench test with the antennas exactly 1m apart, and it worked nicely. Looking forward to putting it on an actual rover.

The one I purchased is the AsteRxSBi3 with dual antenna, I hope also this one will work fine with ardupilot.

When you say:

For GPS yaw (heading), a moving base/rover configuration is required, meaning two precision modules must reside on the vehicle itself with the antennas at least 30cm apart (preferably farther).

do you mean that the modules must be with high precision (i.e. the P version) or also the M8N and the M9N will work fine for the GPS yaw? So, for example, if I want just to run some tests by having an accurate heading, but a less accuracy on position, I could use M8N and M9N without having a base station, is it right?

You must have RTK capable GPS modules for heading. The moving base configuration uses RTCM3 between the two modules.

1 Like

I don’t know if it is possible to post external web links, however, if I purchase 2 x CubePilot Here 3 GNSS Modules and then I use by F9P ublox base station to send the RTCM3 corrections I should be able to have both heading and position accuracy, is it correct? I’ve read that the CutePilot Here 3 accept RTK corrections, so I think it should be OK, as far as I can understand from your information.

Unfortunately, the septentrio module will be delivered in 40 days (if I’m lucky), so I would like to find another fast solution to get accurate heading and position.

Those will work, but it’s my experience that they will BARELY work. The M8P is older tech than the F9P or Septentrio hardware, and it shows.

1 Like

Thank you for your suggestion! I already have a F9P module that I use as rover on my robot and it is based on the C099 evaluation board from ublox (I use the other C099 board as base station).

Following your tips, I was considering to buy the Holybro GPS solution which is the H-RTK F9P GNSS Series and I was thinking to buy 2 x Holybro H-RTK F9P Multi-Band Rover lite GPS.

I was thinking about this configuration:

The first module connected to GPS1 port on the pixhawk 4
The second module connected to GPS2 port (probably, I will have to change the connector since the GPS2 is a 6-pin port while the connector from the F9P is a 10-pin connector)

Then, I connect the base station based on the C099 F9P to the computer where I run the software for the map to send the RTCM3 connections to both the modules.

Is this solution more robust?
I haven’t found any indication about the maximum accuracy that can be obtained by using the Holybro H-RTK F9P modules, however, with my two F9P modules I’m able to complete the survey-in process of the base station at 0.05 m of accuracy and the rover position is very accurate.

Your solution sounds like a “normal” and supported configuration by the firmware. It’s very close to what I use. You will have to change the connector, but that’s a trivial step (JST GH connectors are what you need). I do recommend using SERIAL3 and 4 (GPS1 and 2). Those ports are tried and true on the Cube Orange and should work well.

There should be little difference in performance between uBlox C099 boards and the Holybro F9P based hardware. When comparing performance among identical GPS receivers, the real improvements usually happen with antenna changes rather than board vendor.

1 Like