Arducopter RTK GPS: Quick position and altitude precision evaluation

Hi there,
I recently finished designing and building an 18" quadrotor with 1kg payload ,<5kg total AUW and a relatively long flight time (see image) for my company. This is the second time that I work with ArduCopter, and this time, I am really happy with the performance of the flight algorithms (especially low level things like angular velocity control seem to have improved quite a bit since 2012!).

I am using RTK GPS for the first time and the performance really fascinates me… When I was searching for RTK GPS performance and precision on the web a while ago, it was pretty hard to find good information. So I hope that some of the following graphs / measurements might help other people in the community searching for the same kind of information. We are using the Here+ v2 RTK GPS, all test performed on the ground only with RTK fix:

Walking along a known path --> Very good precision as expected by RTK systems.

Altitude estimates: The RTK GPS doesn’t seem to have any noise… Crazy…

The time lag of the GPS is also very small (around 0.2 seconds). It becomes even smaller when processed by the EKF2 and fused with the accelerometers (reduced to around 0.1 seconds).

Our copter has a 1 meter long extension on its top for some payload, and I mounted the GPS also to this position. I am using a USB 3.0 cable for UART/I²C and safety button/switch extension. This cable is pretty handy because it is shielded and has enough wires for everything. Also, I can detach the whole extension and simply unplug the USB cable. It is nice to see that the arducopter code can discriminate between the motion of the GPS sensor and the motion of the COG (see also next image).

Rotating around GPS sensor. When will we see the first DIY airplane that uses only three RTK GPS modules to estimate its attitude…? :wink:




Thanks very much for sharing this analysis. When the GPS on the top of the 1m mast did you find it was necessary to set the GPS_POS1_X/Y/Z parameters (wiki) or did it seem fine without setting these?

Attitude estimation (i.e. roll and pitch) using only GPS is something I haven’t heard of! if someone can do it then we know the GPSs really have come a long way. Relying on a satellite for attitude estimate, now that would be something!

1 Like

Dear Mackay Randall,
yes, I set the GPS_POS1_X/Y/Z to the correct parameters. I did not try without it, but I guess that the code would not be able to discriminate between GPS and POS (raw GPS position and filtered position of the COG) without this information. But most likely, you are much more into the code than I am.

I however found out (not on purpose…) that the copter freaks out if you enter wrong numbers for GPS_POS1_Z: On my first attempt to fly with GPS, the decimal sign of GPS_POS1_Z disappeared, so that the filters thought the GPS would sit 1000 meteres on top of the COG… That led to permanent GPS glitches (well, actually that is correct bahaviour of the code).

I have very limited experience yet with RTK, but still, I am 100% sure that this would perfectly work - at least on a fixed-wing plane.


A 1000m… that’s a bit much! I’ll add some range checks to the parameters. This is very easy to do and should cause at least some ground stations to kick up a warning (the user will still be able to override it though so if someone wants to attach it to a cargo ship it will still work :-)).