Precision Landing with High Precision RTK GPS

Hi, I’m working on a project where I need to get a drone to land in a VERY tight spot, so a precision of ±5 could work in the worst case, but i’m aiming for ± 2cm.

I have a highly accurate GPS module and an excellent RTK system where Mission Planner reports 1cm Horizontal GNSS accuracy.

When testing, I find the GNSS coordinates never drift beyond 3cm while stationary, often this figure is ±2cm.

Currently, when flying, I can only land within 30 - 50cm of the target and I’m not sure why. When landing, I can see the drone reported GNSS coordinates around 30 - 50cm away from the Home position, however the drone doesn’t attempt to move closer once it’s reached this proximity to Home and seems to think this is precise enough.

My question is, am I missing something here?
Is there an ArduCopter parameter that I might need to change to make the drone continue adjusting it’s LAT and LON until it reaches a desired landing precision?

Is there a setting in Mission Planner that needs to be changed to enable this?

Any advice is much appreciated, so thanks for reading.

For RTK, do you have your own RTK base, or are you connecting to a NTRIP server to receive the RTK corrections?

If you’re using your own RTK base, that might be where the problem is coming from. If you setup your base before each flight session, you’ll only have a high relative precision, but not a high absolute precision. That means that your drone can keep its current position very well, or you can tell it to move 5 meters with a precision of 1-2cm. But if you tell it to land at Lat = xx.xxxxx degrees and Lon = xx.xxxxx degrees, then it is highly likely that you’ll land next to that position. That’s because your RTK base station does not know its absolute position with high precision.

It takes 24 hours for the u-blox F9P to know its absolute position with a precision of 1cm. That means you have to leave your RTK base in survey-in mode for 24 hours.

However, if your RTK base has a precision of 1 meter, if you takeoff from your desired landing location, fly around and then Return-To-Home (using the home point created by Ardupilot the moment it arms), you should land exactly back at your takeoff point.

If you want to specify the landing zone with a latitude and longitude, you must first measure the position of that landing zone. Either you:

  • wait for 24 hours for your RTK base to have a 1 cm precision, then measure the landing zone position with your drone (place your drone on the landing zone (while having a RTK Fix), then look at the log). If you leave your RTK base for weeks/months, then that measured landing position will remain valid.
  • setup your RTK base station every flight session with a precision of 1-2 meters, but you need to measure the landing zone position every time you set it up (by placing your drone on the landing zone, then looking at the log).

If you’re connecting to an NTRIP server, then you should measure the landing zone position with your drone (while the GPS has a RTK fix).

1 Like

I’m currently using an NTRIP correction service, but that’s very interesting to know as I was planning on drawing comparisons between NTRIP and standard RTK so thank’s very much!

Currently, I think I am measuring the launch and landing positions using the drone (unless i’m doing this incorrectly), however I still don’t see landing precision of less than 30cm.

I can see as the drone comes in for landing that the reported coordinates are about 30 - 50 cm off the landing position.

My assumption is that the drone know’s it’s 30 - 50 cm away from the landing position, but thinks this is good enough due to a parameter i’m unaware of in the firmware (ie. the way point radius or something similar).
Am I thinking along the right tracks?

You can test that by taking off and landing on a pin and comparing measured deviation and actual deviation.

Precision landing needs both a good position estimate (RTK does a good job at this) and a methodical PID tuning.

You did take care of the first. What steps have you taken to take care of the second?

1 Like

This is what I have been doing so far, but thank you for your interest. I’m sure I’m missing something so all advice is appreciated :slightly_smiling_face:

I’m currently using the stock PID so you might be on to something here, thanks for the link to the PID tuning tool!
I’ve been talking to some other engineers and they recommend increasing the control loop rate to around 100 Hz. Hopefully the H743 chip running at 480 MHz can handle that. Only issue is i’m not sure how to change this yet.
I’m sure Dr Google can help me there though

The control loop runs at 400Hz by default.How big is your copter?

Only copter < 1Kg benefit from faster loop rates.

The tool that I posted does that for you, no need to use google. Learn and use the tool.

1 Like

Can you share a log file, where the drone lands off-target?

And how far off it actually was in that particular case including direction it was off in.