RTK - ArduPilot Displaying Wrong GPSSTATUS

Have enjoyed the recent RTK posts, some great discussions!

I’ve got a question about ArduPilot displaying the wrong GPSSTATUS (3D Fix) even though I’m feeding it solid RTK NMEA solutions.

My setup is two GPS units on a PixHawk2 unit. GPS1 is the standard Here unit. In the GPS2 port, I’m feeding in RTK NMEA messages (GGA, GSA, GSV, RMC). I can look at the NMEA messages and they show RTK fix. But GPS2 GPSSTATUS continues to only show “3D Fix” (instead of “RTK Fix”). So to force ArduPilot to use GPS2 (the RTK solution) I have to disable GPS1.

Any suggestions on what I might be doing wrong? I’m definitely not an ArduPilot / Mission Planner guru, so might be something I’m doing wrong.

Thanks ahead of time!!

It depends what your primary GPS is. The defaults on ArduPilot is that your first GPS is your primary, and switching (and blending) are not turned on my default. This means that you would be flying off the 3D fix one, rather then your RTK one. You can either swap the ports (to utilize the RTK one as your primary) or enable auto switching or blending.

Maybe I didn’t explain it well enough. The Here GPS is plugged into GPS1 and it provides a decent 3D solution (GPSSTATUS=“3D Fix”), and the RTK NMEA messages are being fed into GPS2. I have “GPS Switching” enabled, so it should pick the best GPS solution and use that. But GPSSTATUS for both GPS1 and GPS2 are reading “3D Fix” even though the raw data (NMEA messages) going into GPS2 shows “RTK Fix.” So for some reason, ArduPilot doesn’t seem to figure out that GPS2 is receiving the higher-accuracy solution from GPS2, so instead is using the solution from GPS1. I can force the use of GPS2 (RTK) by disabling GPS1, but would rather that ArduPilot read GPS2 status correctly and also be able to use GPS1 as backup if needed.

@dakelly And to confirm, you are establishing the status is RTK from the raw NMEA stream? What does one of the GGA sentences look like? (This is where we read the status from)

Still having same issue. RTKLIB is streaming out these NMEA messages: GPRMC, GPGGA, GPGSA, GLGSA, GPGSV, GLGSV. The GPGGA will show a Fix Quality of 4 (RTK) or 5 (float RTK), which is great. But the GPGSA and GLGSA both show mode of 3 (3D Fix). So my suspicion is that ArduPilot is picking up the status from GPGSA or GLGSA. So I wonder if there’s a way in RTKLIB to only stream out the GPGGA message?

Anyway, here’s a sample of the two:

$GPGGA, 200023.00, 2936.xxxxxxx, N, 090506.xxxxxxx, W, 5, 12,1.0,9.272,M,-28.157,M,0.2,*74
$GPGSA, A,3,02,05,… etc

So you can see the 5 (float RTK) for GPGGA and the 3 (3D Fix) for GPGSA…

We only look at RMC, GGA and VTG messages, so it should be there. The commit that added support for this was only done 11 months ago, so if you are on Copter 3.5 for example the support isn’t there. What firmware version are you testing against?

I’m on version 3.5.7, but I think there’s a recent release. I’ll update to see if that does anything. Thx!

Just checked, V3.5.7 was the latest. Are you using RTKLIB to get your RMC, GGA, and VTG messages to ArduPilot? If so, wondering how you were able to get RTKLIB to send just those. Thx!!

I don’t use RTKLib at all, so I can’t help you there. I suspect if you try the Copter 3.6 beta it would work for you.

Hello, did you fix this in the mean time?

Probably fixed in ArduCopter 4.1.0-beta6

1 Like

I’m having a rover with my CUAV X7, what about the fix, do you think about the release of this issue in the rover software?

If the problem is still there in ArduRover 4.1.0-beta release, report a bug.