Precision Landing with Accuracy Management

I was inspired by the recent solar-powered launch system announcement to share some recent precision landing development work.

Automated charging systems require a high level of controls performance, especially during the landing process. This is a challenging problem, especially when operating in outdoor conditions, where a gust of wind can easily push the copter off-course.

The video shows a vision-guided precision landing technique, based on the existing APM:Copter feature (link). The default code has been reported to produce precision landing performance of ~30cm (i.e., the copter lands 0-to-30cm from the visual target). This is great in general, but the aforementioned automation applications require even better performance. Moreover, in some scenarios, a bad landing results in a crashed copter, for example, when ‘landing on a box’.

The video demonstrates a modified version of the default precision landing code. In the modified version, the copter localizes itself with respect to the visual target, and this localization is used to actively monitor and manage the landing accuracy. In this simple example, the copter is programmed to descend when the landing accuracy is within the specified bounds, and to ascend when outside the specified bounds. The image below shows that the error bound is set to 25cm for the AGL altitude range 1m-to-2m.


This approach can be extended and customized in a variety of ways depending on the particular application. The ultimate goal of ensuring safe and accurate landings for automated UAV systems.


IRIS+ Copter

SF10/A Rangefinder

IR-LOCK Sensor

MarkOne Beacon

APM:Copter Code (*modified 3.3.2-rc2)

Note: the default precision landing feature is enabled by default in the master branch of APM:Copter, intended for advanced users/developers

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Hi Mr. Stone

    Thank you very much for your share. I try to land copter on small landing platform using IRLOCK, too. However, I am a little nervous  when copter climbing up in land mode. So, I create a new flight mode "go-around". If copter precision landing accuracy is larger than expected, it will switch to "go-around" flight mode. Go-around flight mode will take copter to 3 meter high and then switch back to land mode. My code is at .  I would be very grateful if you could give me some comment. Thank you

    ArduPlane, ArduCopter, ArduRover source. Contribute to chobitsfan/ardupilot development by creating an account on GitHub.
  • @Randy



    That is not a strange idea. You could get more 'weird' and completely invert the sensing/emission (link). :)

    There are pros and cons for every approach. My users require VERY reliable detection, which we can deliver with our current system .... If we put the emitter on the copter, then we have to worry about other reflectors that may exist in the landing area (e.g., Skysense charging pad, water, etc.). It's not an unworkable idea, but the primary road block for most use cases is controls performance, not the beacon setup.

    Also, moving forward, we would prefer to trend toward reducing the size/weight of the sensor payload. 

    Valve's "Lighthouse" Tracking System May Be Big News for Robotics | Hizook
  • Keep on the good work :-)

    Thomas, it might sound weird but what if you could install both the beacon an sensor on board so the target can be any reflector, like a mirror, so that anyone could easily mark the "land here" spot ?
  • Developer

    Great stuff as always Thomas!

  • By the way, the customized flight code used in the video is linked below. USER BEWARE: It is customized specifically for the particular test platform shown in the video.

    APM Plane, APM Copter, APM Rover source. Contribute to ThomasSFL/ardupilot development by creating an account on GitHub.
  • @benbojangles

    The precision landing feature in APM:Copter is intended to work with other sensors via a companion computer (e.g., webcam connected to computer connected to Pixhawk). 

    However, I am not completely familiar with those other communication methods. The best point of contact is Daniel or Randy. 

  • hello, It's a neat thing that ir-lock :) Is there a github repo for code I can experiment with, making my own module and experimenting with different sensors? best wishes

  • @Jonny

    Perhaps. It depends on the accuracy of the sensor. I don't have much experience with the other types of rangefinders, and the SF10/A has worked great so far. The only negative feature is that the laser rangefinders have a minimum range limit (i.e., accuracy degrades at ~10cm), but that is to be expected.... The IR-LOCK sensor also has issues at super-close range, so we typically mount the sensors 'high' on the copter, if possible.

  • Wonderful! Any thoughts on whether this would be possible with cheap ultrasonic sensors versus the pricey laser rangefinders?

This reply was deleted.