[ PROJECT: 004 ] [ MODE: DETAIL_VIEW ]

Autonomous Drone Landing

May 2025

ControlsMATLABVisionPIDParrot MamboSimulink

Landing Accuracy

8 cm CEP

Sim Trials

25 validated

Platform

Parrot Mambo

System ArchitectureINTERACTIVE_DIAGRAM

Overview

A vision-based autonomous landing system for the Parrot Mambo mini-drone. A downward-facing camera detects an ArUco marker on the landing platform. A PID guidance law closes the loop on the marker's image-plane position error, commanding velocity inputs to the drone until touchdown within 8 cm circular error probable (CEP).

Problem Statement

Precision landing on designated pads is critical for drone logistics and autonomous recharging. GPS provides meter-level accuracy — insufficient for small landing pads. Vision-based landing using onboard cameras can reach centimeter-level precision. The challenge is designing a guidance law that is robust to marker partial occlusion, varying altitude, and aerodynamic disturbances near ground effect.

Digital Twin in MATLAB/Simulink

The complete system — drone dynamics, camera model, image processing pipeline, and PID controller — was implemented as a Simulink model. The drone is modeled as a rigid body with aerodynamic drag and rotor thrust. Ground effect is approximated with an altitude-dependent thrust boost factor. 25 Monte Carlo trials with randomized wind disturbances and marker offsets validated the guidance law before hardware deployment.

Vision Pipeline — ArUco Detection

The Parrot Mambo's downward camera streams frames at 30 FPS. OpenCV's ArUco detector locates the 6×6 marker and estimates its pose relative to the camera using solvePnP. The image-plane centroid error (pixels from frame center) and altitude estimate from the onboard barometer are fused to compute a 3D position error in the drone body frame.

PID Guidance Law

Three independent PID loops control x, y (horizontal position) and z (altitude) separately. The horizontal PIDs act on image-plane error scaled by altitude — as the drone descends, the same pixel error corresponds to smaller physical displacement, so the gain is altitude-adaptive. The altitude PID commands descent rate, decelerating as the drone approaches the pad to ensure gentle contact.

Hardware Results

On the Parrot Mambo, the system achieves an 8 cm CEP across 10 hardware landing trials from 1.5 m starting altitude. The controller handles marker partial occlusion up to 40% without loss of lock. Ground effect is compensated within 0.3 m altitude, preventing hover instability during final approach.

landing_controller.pyflight
def track_target(self, frame):
    target = self.detect_marker(frame)
    error = target.pos - self.uav.pos

    cmd = self.pid.compute(error)
    self.publish_velocity(cmd)
videocamProject Demo
VIDEO

Tools & Stack

MATLAB R2024aSimulinkPython 3.11OpenCVParrot MamboArUcoPID ControlsolvePnP

Key Outcomes

  • 8 cm CEP on hardware across 10 landing trials

  • 25 successful Simulink simulation trials with wind disturbances

  • Altitude-adaptive PID gain scheduling for robust descent

  • Marker tracking maintained through 40% occlusion