Autonomous Quadrotor Vision-Based Tracking & Landing

Project information

  • Category: Robotics
  • Focus: Quadrotor Control Computer Vision Trajectory Tracking
  • Tech Stack: MATLAB/Simulink CoppeliaSim Image Processing Toolbox Remote API
  • Project date: January 2026
  • Official Repository

~100%

Simulated Landing Success Rate

< 0.5 m

Position Tracking Error

4

Trajectories Validated

Overview

Full reimplementation of Falanga et al. (2017), a complete autonomy pipeline for vision-based quadrotor landing on a moving platform. The system addresses the three core challenges of the problem: detecting a visual tag on the target using only onboard camera images, estimating its position and velocity via a Kalman filter with constant-velocity motion model $$\hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^- + K_k\left(z_k - H\hat{\mathbf{x}}_k^-\right)$$ and tracking it through a cascaded PID controller while executing a smooth landing maneuver.

The architecture is structured as a four-state finite state machine (TAKEOFF, SEARCH, FOLLOW, LANDING) running at 20 Hz in MATLAB/Simulink, co-simulated with CoppeliaSim for real-time camera rendering. A predictive feedforward ($\mathbf{p}_{\text{target}} = \hat{\mathbf{p}} + \hat{\mathbf{v}}\cdot\tau$) compensates for filter lag during tracking. Validated across stationary, linear, circular, and figure-8 platform trajectories, the system achieves position tracking errors below 0.5 m and a ~100% simulated landing success rate in all tested scenarios.

Key Elements

Autonomous FSM

Four-state mission logic: TAKEOFF, SEARCH, FOLLOW, LANDING, with hysteresis-based transitions for robust mode switching.

Vision Pipeline

Tag detection via adaptive thresholding + RANSAC, followed by PnP pose recovery. Adaptive FOV expands from 90° to 135° during final descent.

Kalman + Attitude Gating

Constant-velocity KF for platform state estimation. Measurement updates are gated at $|\phi|, |\theta| > 10^\circ$ to suppress noisy detections during aggressive maneuvers.

Cascaded PID Control

Outer position loop computes desired thrust and tilt angles; inner attitude loop tracks them via PID with inertia feedforward. Anti-windup on all axes.

Contacts

Get in touch with me!