Precision Landing and Loiter¶
Copter supports Precision Landing and Precision Loiter, which use an external position reference (aka “landing target”) to achieve centimeter-level accuracy during landing or while hovering over a target.
Precision Landing is supported via MAVLink LANDING_TARGET messages sent from a companion computer such as the Landmark system, or using the IR-LOCK sensor, beacon, and a rangefinder.
When the vehicle enters Land mode and a landing target is detected, the target’s position will be used to guide the final descent. Precision Landing can also be performed in RTL mode as the final stage of the return-to-launch sequence.
Precision Loiter requires minimal additional setup and is activated by entering Loiter mode mode and invoking the Precision Loiter Auxiliary Function.
This video demonstrates Precision Loiter followed by Precision Landing using the Landmark Precision Landing System.
Available Systems¶
Quick Start¶
Set PLND_ENABLED = 1 and reboot to expose parameters.
Select the landing target position source via PLND_TYPE (e.g., 1 = MAVLink LANDING_TARGET, 2 = IR-LOCK, 3 = Gazebo Sim, 4 = SITL; 0 disables).
If the landing target camera/sensor is not pointing down or the x-axis is not pointing forward, configure the mounting orientation using PLND_ORIENT and PLND_YAW_ALIGN.
Verify the target is detected while disarmed and the reported offsets change as you move the target/vehicle.
Take off and hover above the target.
(Recommended) Confirm stable tracking in Precision Loiter before attempting Precision Landing.
Activate Land mode to initiate Precision Landing.
Note
Precision Landing requires a valid horizontal position estimate and a steady attitude solution. Poor GPS/EKF or a noisy rangefinder will degrade performance.
Operation¶
With Precision Landing enabled and Land mode activated, the external landing target measurements override the target provided by the GPS solution for the final approach.
If the landing target is not found, the vehicle will continue descending vertically until the height specified by PLND_ALT_MAX.
If the landing target is lost, the behaviour depends on PLND_STRICT:
0 – continue landing using standard Land mode logic (not strict).
1 – perform landing retries until PLND_RET_MAX is reached, then land normally.
2 – perform landing retries until PLND_RET_MAX is reached, then hover instead of landing.
When a landing retry is triggered, the vehicle will climb to a height/position determined by PLND_RET_BEHAVE. It will then descend again in hopes of detecting the landing target. It will keep doing this until PLND_RET_MAX retries have occurred. Then, depending on PLND_STRICT, the vehicle will either just land, or it will stay in the air hovering (useful for, say, landing on boats where you don’t want to land on water).
If the landing target is lost below the height specified by PLND_ALT_MIN, the vehicle will continue landing vertically.
ArduPilot’s EKF assumes the landing target is stationary. Set PLND_OPTIONS bit 0 if landing on a moving target.
Repositioning manually by the pilot during the landing will abort the landing unless PLND_OPTIONS bit 1 (Allow Precision Landing after manual reposition)is set.
Final landing speed may be reduced below LAND_SPEED as necessary to assure a precise touchdown. This can be disabled for a faster final land speed by setting PLND_OPTIONS bit 2.
This video demonstrates the behaviour of different PLND_STRICT settings.
Parameters¶
PLND_ENABLED: Set to 1 to enable Precision Landing. Refresh parameters to see following:
PLND_TYPE: Sets the type of landing target position source.
PLND_ORIENT / PLND_YAW_ALIGN: Sets the mounting orientation of the landing target camera/sensor.
PLND_LAND_OFS_X / PLND_LAND_OFS_Y: Sets the desired landing position of the camera/sensor relative to the target. See Sensor Position Offset Compensation page for more information.
PLND_CAM_POS_X / PLND_CAM_POS_Y / PLND_CAM_POS_Z: Sets the camera/sensor position relative to the vehicle body frame.
PLND_XY_DIST_MAX: Even if the landing target is detected, the vehicle will not start descending if it is further than this many meters away. Set to 0 to always descend.
PLND_STRICT: Controls the landing behaviour if the target is lost.
PLND_ALT_MIN: If the target is lost below this height, the vehicle will continue descending vertically. Set to 0 to disable this.
PLND_ALT_MAX: If the target is not detected, the vehicle will continue descending vertically until this height. Below this height, if the target is still not found, the landing retry logic set by PLND_STRICT will be applied. Set to 0 to disable this.
PLND_OPTIONS: Set bit 0 if landing target is moving, set bit 1 to allow the precision landing to continue after a manual reposition, and set bit 2 to enable a faster final descent.
Additional PLND_
parameters are listed in the Complete Parameter List.
Precision Loiter¶
Precision Loiter uses the same backend and parameters as Precision Landing.
To enable Precision Loiter, set an Auxiliary Function Switch to 39 (PrecLoiter Enable).
Entering Loiter mode and activating the switch will cause the vehicle to hold its position above the target.
MAVLink LANDING_TARGET Message Based Systems¶
Using a companion computer, camera, and fiducial marker system such as AprilTag, the position differences to the landing target location can be sent to the autopilot using MAVLink LANDING_TARGET messages. Here is an example system description: Precision Landing with Realsense T265 Camera and AprilTag