How many copters did we sink? :) Check the video above. The development of Precision Landing hardware and software has progressed since our last blog post. The existing controls code has been added to master in APM:Copter (i.e., V3.4-dev). The two demo videos included in this post were produced with a modified version of APM:Copter V3.3 (similar to the master code). This documentation (link) should provide some clarification for advanced users who want to experiment with the features. And the relevant APM Wiki link is here: link.

CONTROLS: Keep in mind that the Precision Landing controls code will probably undergo significant changes in the future. As it stands, the sensor detects the target and outputs an ‘angle-to-target’ reading. The roll/pitch of the copter is subtracted from these readings, assuming the sensor fixed to the copter frame. Coordinates are transformed from body-frame to earth-frame. Then, the altitude of the copter and angle-to-target in earth-frame is used to calculate the distance-to-target in the ‘x-y’ plane. This distance-to-target is used to re-position the copter over the target. One limitation of the current controls method is that the relative altitude wrt the target is required. Fortunately, there are good range-finder options available now.

VARIABLE LOGS: One helpful improvement is that the Precision Landing variables are logged, enabling much more effective post-flight troubleshooting and analysis.

bX/bY: Angle-to-target measurement in the body-frame reference BEFORE accounting for roll/pitch of copter.
eX/eY: Angle-to-target measurement in the earth-frame reference AFTER accounting for roll/pitch of copter.
pX/pY: Calculated distance of target from copter in earth-frame. Note that the distance calculation depends on the altitude measurement. Also, the altitude variable in this particular instance is range limited, such that a negative value or very small value is not used to calculate the position offset.

SENSING: There are improved sensor system options for professional users (MarkOne). There has been significant interest from industrial users/developers regarding the development of automated UAV systems: automated charging, safe automated landing, copter-on-vehicle landing, etc. The boat landing demo video is useful for demonstrating the improved reliability of the sensor readings, which is critical for professional use in automated systems.

Some of the logged sensor readings from the boat landings are plotted below. The green line indicates the altitude of the copter. The red line ('bX') indicates the angle-to-target measured by sensor in the x-direction, relative to the sensor (fixed to the copter). We no longer have issues with false detections, even in challenging operating environments. False detections which would be indicated by immediate, large changes in the ‘bX’ value. (see an example of false detections here: link).

INTERPRETING LOGS: When the LAND mode is initiated, the copter begins moving toward the target, driving the angle measurement toward zero. Oscillations in the angle measurement are typical. 'Flat lines' in the bX/bY plot indicate periods of time when no target is detected. This may due to the target being out of range of the sensor, or out of the field of view of the sensor. In this test (below), the MarkOne beacon is detected at distances of over 15 meters.

Toward the end of the landing, the angle measurement may increase significantly and/or turn into a 'flat line'. A flat line is expected if the copter does not land directly on top of the marker (i.e., 5-30cm away). The marker can easily escape the field of view of the sensor during the final ~10cm of descent. Also, the detection angle can easily become very large when the sensor is very close to the marker.

DEMO 2: Here is a demonstration with 5 consecutive Precision Landings. Below, you will find the following content:
->Video
->Plot of logged variables for 5 landings
->Plot of logged variables for a single landing