Autonomous Perching of Quadrotors on Inclined Surfaces
Autonomous Perching of Quadrotors on Inclined Surfaces
Problem Statement
This project aimed to enable a Crazyflie 2.1 to autonomously perch on surfaces with angles from 30° to 90° using trajectory optimization and advanced tracking controllers.
Key Results: Successfully demonstrated vertical perching at steep angles (80°-90°) by integrating a custom Mellinger tracking controller with an offline CasADi-based trajectory optimizer.
Crazyflie 2.1+
Vertical Landing Maneuver
Vertical Landing Maneuver
Trajectory Optimization & Constraints
We formulated perching as a constrained optimal control problem solved via CasADi and IPOPT.
Problem Setup: Minimized control effort and reference tracking error over a 5-second horizon (N=500, dt= 0.01s).
Key Constraints:
Dynamics: Enforced physically plausible motion using RK4 integration.
Thrust Positivity: Ensured the solver only produced non-negative motor angular velocities.
Safety: Added z-coordinate constraints to prevent ground penetration during aggressive maneuvers.
Hardware Implementation & Controller Tuning
I conducted extensive hardware testing and fine-tuned the on-board Mellinger controller to bridge the gap between simulation and reality.
Mellinger vs. PID: Evaluated multiple controllers, selecting the Mellinger for its superior performance in high-angle, agile maneuvers.
Handling the "Push-Back" Effect: Identified an aerodynamic cushion effect that pushed the drone away at steep angles. I mitigated this by tuning a target offset along the landing pad normal, commanding the drone to fly slightly "into" the surface for reliable adhesion.
Battery-Aware Performance: Discovered and documented thrust degradation as battery voltage dropped, leading to a modified testing protocol involving continuous power-bank charging for reference drones.
Drone with Velcro Attachements
Lighthouse Setup (Global Positioning)
Landing Pad Setup
Failed landing
Failed landing (Push-Back effect)
Trajectory Tracking Comparison
X Position
Roll Angle
Y Position
Pitch Angle
Z Position
Yaw Angle
Communication Architecture & Network Design
I designed and implemented the communication pipeline between the base PC and the drone fleet.
CRTP Protocol: Established a robust 100 Hz uplink/downlink using the CrazyRadio PA.
Uplink Strategy: To overcome the 32-byte payload limit, I utilized a custom compression scheme to pack position, velocity, acceleration, and orientation data into a 28-byte packet.
State Logging: Designed the downlink to monitor real-time drone poses (X, Y, Z, Roll, Pitch, Yaw) at 100 Hz for post-flight analysis.
System Performance & Lessons Learned
Generalization: Our framework successfully generalized across a wide range of slopes (30° to 90°) without needing manual gain scheduling for each angle.
Hardware Reliability: Gained deep experience in debugging low-level firmware and managing sensor limitations (e.g., Lighthouse tracking loss during extreme flips).
Results at Scale: While reliability decreased slightly at 90° due to aggressive maneuvering requirements, the system maintained a consistent success rate for vertical perching.
Technical Skills Demonstrated
Embedded Systems: Crazyflie Firmware (C/C++), CRTP Communication Protocol.
Control Theory: Nonlinear Trajectory Optimization, Mellinger Controller Tuning, TVLQR.
Software: CasADi, Python, MuJoCo Visualization.
Hardware: Crazyflie 2.1+ drones, Lighthouse Positioning System