In the previous article, we explained RTK-GPS configuration and accuracy verification. In this article, which is FC17, we will cover Precision Landing. We will explain the technology and implementation for improving landing accuracy—which has an error of several meters with GPS alone—to centimeter-level accuracy using vision markers or IR beacons.
Why Precision Landing is Necessary
Standard GPS landing accuracy is several meters. When a multicopter lands in LAND mode, it may land several meters away from the target due to the limitations of GPS accuracy (CEP 1–3m).
In industrial applications, this error becomes a critical issue. Automatic return to a charging dock (requiring within ±5cm), landing pads for delivery drones, reproducibility of precise takeoff and landing positions for inspection drones, and landing on the deck of a mother ship for maritime drones are not practical with an error of several meters.
Precision Landing solves this problem by detecting markers or beacons installed at the landing site and providing relative position information that is more accurate than GPS to the EKF. While even higher reproducibility can be obtained by combining it with RTK-GPS, it is important that it functions independently even in environments where RTK cannot be used.
Precision Landing Technical Methods
We will organize the main precision landing methods supported by ArduPilot.
The IR-LOCK beacon method uses an IR-LOCK sensor and an infrared beacon. The infrared LED beacon installed at the landing site is detected by the IR sensor mounted on the FC, and the relative angle is measured. It is simple and less susceptible to lighting conditions, but requires power supply to the beacon.
The vision marker method (ArUco/AprilTag) is a method that detects marker patterns on the ground with a camera and calculates the relative position and attitude. It is easy to operate with passive markers that do not require power, but it depends on lighting conditions and image processing performance.
The GPS RTK method uses the high-precision position of RTK-GPS. It does not require a dedicated sensor, but as explained in the previous article, it requires RTK base station infrastructure.
Each method can be used in combination, and ArduPilot can integrate multiple Precision Landing methods with priority levels.
Implementation of the IR-LOCK Method
IR-LOCK is the precision landing sensor with the most extensive integration history with Pixhawk.
The hardware configuration involves mounting an IR-LOCK sensor (MarkOne) facing downward on the FC and installing an IR-LOCK beacon (infrared LED, identified by blinking patterns) on the ground. The sensor communicates with the FC via I2C connection.
The detection principle is that the IR sensor detects the infrared pulse pattern of the beacon through image processing and calculates the angle of the beacon (equivalent to pitch and roll) within the sensor's field of view. Since distance information cannot be obtained, it must be combined with a separate ranging sensor (such as LIDAR-Lite).
For ArduPilot settings, enable precision landing with PLND_ENABLED=1 and set PLND_TYPE=3 (IR-LOCK). Select the estimation method with PLND_EST_TYPE=0 (Kalman Filter) or 1 (Raw Sensor).
The landing sequence automatically triggers Precision Landing during the final descent in LAND mode or RTL. The aircraft continues to correct its horizontal position based on the beacon detection angle while descending, achieving a vertical descent directly above the beacon.
Regarding accuracy performance, IR-LOCK official data reports a landing accuracy of approximately ±10cm. This is a significant improvement from the several meters of GPS alone.
Implementation of the Vision Marker Method (ArUco/AprilTag)
ArUco and AprilTag are marker methods widely used for camera-based precision landing.
The principle of the marker method is to calculate the relative position and orientation (6DOF) of the marker with respect to the camera using the PnP (Perspective-n-Point) algorithm, based on the known size of the marker and its apparent size and distortion in the image.
ArUco markers are generated and detected using the OpenCV aruco module. The markers are square binary patterns that are uniquely identified from a dictionary (dictionary sizes range from 4x4 to 7x7 bits, with up to 1000+ types).
The detection algorithm first detects marker candidates (quadrilaterals) through image binarization and contour extraction. Next, the binary pattern within the candidate region is matched against a known dictionary to determine the ID and confidence level. Finally, the 3D pose of the marker relative to the camera is calculated using solvePnP from the image coordinates of the marker's four corners.
AprilTag is a marker system with a similar purpose to ArUco, but its detection algorithm is considered more robust and reliable. AprilTag3 (the latest version) features GPU implementation and ARM optimization, making it excellent for real-time processing in embedded environments.
Integration with ArduPilot is achieved by using ROS2's apriltag_ros or a custom OpenCV-based detection node to calculate the relative position of the marker and send it to the FC via the MAVLink LANDING_TARGET message.
The fields of the LANDING_TARGET message include angle_x/angle_y (the angular offset of the marker), distance (the distance to the marker), and size_x/size_y (the marker size on the image).
Relative Pose Calculation via PnP
This section explains the relative pose calculation algorithm for ArUco/AprilTag in detail.
Assume the 3D coordinates of the four corners of the marker (in the marker coordinate system, with the marker center as the origin) are known. For a marker size s:
P1=[-s/2,-s/2,0], P2=[s/2,-s/2,0], P3=[s/2,s/2,0], P4=[-s/2,s/2,0]
The PnP problem is solved based on the correspondence between the 2D coordinates p1, p2, p3, p4 detected on the image and P1 through P4.
solvePnP determines the rotation R and translation t of the marker relative to the camera from these correspondences. Because there are only four corresponding points, which is the minimum required, specialized algorithms such as IPPE (Infinitesimal Plane-based Pose Estimation) or EPnP (Efficient PnP) are used.
A problem specific to planar markers is Pose Ambiguity. When the marker appears small (at long distances), two symmetrical solutions (reflections of the actual pose) may be obtained as numerically similar solutions. OpenCV's solvePnP returns multiple solutions via returnSolutions, and post-processing is required to select the correct solution based on the reprojection error.
Combination with Rangefinding Sensors
In precision landing, it is important to accurately grasp not only the horizontal position but also the altitude.
A rangefinding sensor (such as the Garmin LIDAR-Lite v3 or TFmini Plus) is mounted facing downward to measure the exact distance to the ground. Since the accuracy of a barometer (approximately ±1m) is insufficient for the final phase of landing, a rangefinding sensor is essential.
The sensor type is set using the RNGFND_TYPE parameter, and the maximum effective distance is set with RNGFND_MAX_CM. In the landing sequence, the EK3_RNG_USE parameter enables a mode that prioritizes the rangefinding sensor over the barometer.
Integration with EKF3 allows for more accurate vertical velocity control by using the altitude change rate (descent rate) from the rangefinding sensor via the EK3_SRC1_VELZ setting.
In the final phase of landing (within a few meters of the ground), the descent speed is reduced (LAND_SPEED) below the altitude set by the LAND_ALT_LOW parameter to mitigate impact. There is also a setting to allow repositioning via LAND_REPOSITION in case the Precision Landing marker detection is lost near the ground (e.g., the marker goes out of the camera's field of view or due to depth-of-field issues).
Precision Loiter Mode
Precision Landing technology can be applied not only to landing but also to maintaining precise hovering positions.
PrecisionLoiter is a feature that improves hovering accuracy over a marker compared to GPS alone. By setting bit 0 of PLND_OPTIONS, information from the Precision Landing sensor is used for position holding even in LOITER mode.
This is effective for long-term observation tasks at fixed points (such as structural inspections) where higher position-holding accuracy than GPS alone is required. Since the marker must always be within the field of view, operation is limited to low altitudes.
Strategy for Integrating Multiple Sensors
This section explains the design of combining multiple sensors to improve the reliability of precision landing.
Hierarchical fallback is a design that switches sensors according to altitude. By creating a hierarchical structure—GPS (prioritized if RTK is available) at high altitudes, vision markers at medium altitudes, and IR-LOCK or ultrasonic sensors at low altitudes—the optimal sensor for each altitude range can be used.
While ArduPilot's priority setting selects a single method via PLND_TYPE, dynamic switching between multiple methods requires sensor fusion logic on the companion computer side. A practical design involves using ROS2 to monitor the status of the camera, IR-LOCK, and RTK, and sending the output of the most reliable sensor as a LANDING_TARGET message.
Failsafe during sensor failure is controlled by bit 1 of PLND_OPTIONS (aircraft behavior when the marker is lost). You can choose whether to hover in place (waiting for re-detection) or continue landing at the GPS position if the marker is lost.
Accuracy Verification and Log Analysis
This section explains the procedure for verifying the accuracy of the implemented precision landing.
For landing point marking and actual measurement, the actual landing position relative to a fixed marker on the ground (a mark or tape) is measured. The CEP value (the radius within which 50% of landings fall) is statistically evaluated through 10 to 20 landing tests.
In ArduPilot logs, the relative angle and estimated position of the detected target are recorded in the PL (Precision Land) message. LAND_TARGET_X/Y/Z represent the estimated relative position of the landing target.
By overlaying GPS.LatLng and the PL target position, the landing trajectory can be visualized to evaluate the accuracy transition of the final approach path. This allows you to check whether target tracking is stable during descent and if any deviation occurs just before final touchdown.
Resistance to wind disturbance is evaluated by comparing landing accuracy under different wind speed conditions. In windy environments, the camera's field of view may change due to the aircraft's tilt, which can make marker detection unstable. Countermeasures include selecting a camera with a wide field of view or designing the camera mount angle to account for aircraft tilt.
Design Decisions in Implementation
This section organizes the decision axes to consider when designing a precision landing system.
In camera selection, the balance between field of view (FOV) and frame rate is important. A wide field of view (120 degrees or more) increases the margin for marker detection against aircraft tilt and lateral drift, but detection accuracy at long distances decreases because the marker appears smaller in the image. A narrow field of view provides high long-distance accuracy but narrows the detection range at close distances and during tilting.
Marker size design is determined by the relationship with landing altitude. As a general guideline, the marker size is calculated backward from the camera field of view and the maximum landing altitude, designed so that the marker occupies 30–70% of the image at the final approach altitude (a few meters).
Managing processing latency is key to improving accuracy by minimizing the delay from marker detection to reflection in aircraft control. In addition to the 33ms delay per frame at 30fps processing, image processing time (5–20ms) and communication latency (MAVLink, several to tens of ms) accumulate. These are corrected using parameters equivalent to EK3_FLOW_DELAY_MS.
Summary
Precision Landing enables centimeter-level landing accuracy that cannot be achieved with GPS alone by combining IR-LOCK beacons, ArUco/AprilTag markers, and RTK-GPS. In the marker-based method, 6DOF pose estimation using the PnP algorithm is the core, and its combination with a distance sensor ensures vertical accuracy. The hierarchical fallback design of multiple sensors and the compensation for processing latency determine the reliability of a practical system. In the next installment, FC18, we will explain the principles of Optical Flow sensors and their application to low-altitude and indoor navigation.
