Setting up dual GPSes for yaw... is there a complete guide?

I was wondering, whether there is a complete guide on how to use two ArduSimple ZED-F9P boards for yaw on a rover?

I have seen some documentation and posts, plus YT videos, either being too generic or only showing a portion of what is needed.

I am happy to document and share this as I progress.

The way I think what needs doing (and given I am new to all of this, I could be wrong) in principle is to:

  • take two ArduSimple boards
  • mount these at least 30 cm apart. Suggestion received was to go as wide as the rover allows; e.g., an 80 cm wide mower, mount these 80 cm apart.
  • each GPS needs some basic config via uCenter
  • some physically connections need to be made between the ArduSimple boards and the flight controller
  • MissionPlanner needs some parameters set to make this work

Is there a proven way / instruction on how this needs to be done?

I have a working base station on the roof of the shed; it has been calibrated some 2 years ago; however, Australia moves 6 cm north per year; hence, needing a new calibration, which however, not instrumental for this set-up attempt.

(RTK sender, left; GPS antenna, right)

I have the twin board configured as a rover; have working RTK between these two (base and rover).

(rover board connected to GPS in on Pixhawk4)

Have a third ArduSimple board for the yaw on the mower.

(neither connected to anything, nor configured)

As always, any hints appreciated.

This is that:

Thanks; saw this, but wasn’t sure how up-to-date it was (or how much it matches what is working on yours).

Has a picture of your mower in there…

Which one is serial 3 and 4.

My ‘rover’ GPS is connected to the GPS module port in the Pixhawk.

  • GPS_TYPE = 17 (“UBlox moving baseline base”)
  • GPS_TYPE2 = 18 (“UBlox moving baseline rover”)

I have the GPS board with RTK (Xbee) connected to the GPS module port, marked as ‘rover’ (came pre-configured by ArduSimple as such); assuming it to be on serial 4?! Does it need to go on serial 5? Where is serial 5?

I have seen Kenny’s YT setting the GPS transmission speed top 115k instead of 408k. IS this documented somewhere too?

On your mower, looking at the two boards, which one is rover, and which one is moving base? (When I look at them with screen print being the correct way legible.)

Based on this:

  • SERIAL4 → UART4 (GPS2, marked UART/I2CB)

GPS1 will be the one attached to the port marked GPS, and it will become the moving base.

GPS2 will be the one attached to the port marked UART/I2CB, and it will become the rover.

Remove the XBee module. You probably don’t need it. At a minimum, you need to focus on ONE aspect of setup at a time.

Baud rates don’t matter. They are set automatically no matter what you set in the parameter window.

Don’t worry about matching my mower exactly. You don’t have a carbon copy of it - not by any stretch. You need to set up YOUR mower and set the parameters accordingly.


Ardupilot sets up the GPSes perfectly now. I believe it always did, actually. You can take two Ardusimple RTK2B boards right out of the box, connect them to the flight controller, set the parameters as directed in the documentation Yuri referenced, and boom, Bob’s your uncle. That is IF your RTCM3 can feed into UART2 on the Moving Base at 460800. That is the only baud rate set by Ardupilot for the UART2 crossover between the GPSes. If your RTCM3 is coming in at any other baud, you do need to make changes in Ucenter.

All of this only applies if you have RTCM3 coming via a dedicated radio link, as I do.

Be sure you accurately set the GPS_POS parameters for each GPS antenna.


Why not?
The reason I put the base on the shed roof was to get centimetre accuracy. The Xbee is the receiver for that RTK signal.

I asked the question about which one to use for the moving base and the rover, so that I could put the ‘right’ board for the right purpose and on the ‘right’ GPS channel.

Do you have a fixed base?
If so, how was/is it set up?

I know exactly what the XBee is for. If you want to use it, it goes on the moving base (GPS1 on SERIAL3).

I say you don’t need it because MAVLink telemetry is perfectly capable of carrying RTCM3 from a fixed base installation, potentially reducing the complexity of configuration.

The advantage to using a dedicated radio for RTCM3 is that you don’t have to maintain a constant telemetry (MAVLink) connection to the vehicle to retain precise positioning.

1 Like

Thank you… all stuff I do not know…

… great… where it is now.

Connected the GPS2 and changed the settings per doc, and get this result:

The black GPS lines is looking into the correct direction (here east)

… but have not yet connected the two ArduSimple boards. Will do this tomorrow; GPS receivers sit on window sill; dark and cold outside, bed time now.

Thanks for all your help. I do appreciate it.

I placed the GPS outside, and now get RTK-fixed on both GPSes.

I am not sure though why the mower on the map does not point north.
I placed the two GPSes a metre apart facing north; yet the mower points west (which was correct for the previous GPS locations).

Also, what does the -2 over the mower mean? (During typing this post it changed to -3.)


I also don’t understand the coloured ‘pointers’ (lines).

  • Red - current heading: in my case does not match the direction of the mower, if the direction is determined by the GPSes.
  • Orange - direction to current way point: this matches the GPS yaw
  • Green - target heading: haven’t seen this yet; assume it only shows when a mission runs?!
  • Black -GPS track: documentation says: “Black is the GPS track as your vehicle travels.” — But neither the flight controller nor the GPS yaw point in that dicrection. Or does it only update when the mower would move?

Question: As I understand, the set-up by the book routes RTK msgs through the flight-controller. Would it take of load form the lfight-controller by connecting the two GPS boards via RX2 ↔ TX2 connections?

Why does the HUD show “Unhealthy AHRS”?

You just answered all of your own questions regarding the lines. Red is the one for current heading, which is the one you need be concerned with for now.

The -2 is altitude relative to home in meters.

Have you set the GPS_POS* parameters per the documentation? Simply putting the antennas “about a meter apart” is not sufficient. They need to be oriented per those params.

Routing RTCM3 through the autopilot or not is inconsequential. It has plenty of processing power.


All my gear is still on the ‘bench’.

But now I get it… while I can just drop the GRPSes outside… I still have to provide the GPS_POS_… settings… even for bench testing. The minimum setting to be other than zero would be the Y axis; OK I set this to +0.5 and -0.5m…

… et voilà we have the proper direction.


Thank you for the nudge :slight_smile: