Routine inspection of difficult-to-reach infrastructure—such as the undersides of bridges or high industrial ceilings—presents a unique challenge for autonomous systems. Hovering in close proximity to these surfaces is energy-intensive and often unstable due to aerodynamic ground effects, which limits the quality of data collection. This project aimed to expand the capabilities of the Crazyflie nano-drone to address this issue. The primary objective was to design a control strategy that allows the drone to quickly approach a surface, stably perch on it for detailed inspection using reverse thrust or velcro, and subsequently detach to resume flight, enabling efficient monitoring of vertical and inverted structures.
Our approach uses tradititon non-linear trajectory optimzation to initially generate a trajectory from the intial state to that of a landing pose. This trajectry is then relayed to the drone over CrazyRadio in the form of setpoints, checkih are then tracked using the on-board PID tracking controller to follow the trajectory. The default PID controller leads to overshoot, particularly when not near hover states, and hence we use TInyMPC to to track the setpoints, which also allows us to take into account linear constraints and hence not bump into the wall.
We demonstrate the sucess of our desired controller initially in Mujoco sim, and then on actual hardware. Lighthouse decks, which are extra expansion modules for the Crazyfliie, are used for state estimation purposes to determine the landing location as well as the state of the flying quadcopter. Using our controller, due to hardware limitations and the lack of reverse thrust due to absent H-bridge, we demonstrate landing on surfaces over 130 degrees on real hardware, while in simulation, we can extend this to any orientation of the landing surface.
In this project, I was particulary responsible for developing the trajectory generation part, as well as for developing and coding the communications stack for transmittion between the flying drone, landing site and the base PC on which the controller was running. Alongside this, I also assisted in deploying the tracking controller using TinyMPC on-board the drone.