Oussama Belhenniche


Landing a drone accurately is the hardest part about operating it, especially if the operator is far from the landing zone. The goal behind this project is to automate the process of landing. The system is designed to “talk” to the drone to try to center it with the right orientation and then proceed to send the control signal for the landing subroutine.

Hardware block diagram of the system


The hardware was comprised of a portable processing unit, in this case we used a Raspberry Pi, and an image sensor, which was a simple Raspberry Pi camera. To help identify the drone an LEDs attachment is attached to the bottom of the drone. The LEDs were configured in non-symmetrical way for direction recognition (to know which way the drone is pointing). The communication between the drone attachment and Raspberry Pi was established using Xbees.


LEDs attachment sketch
LEDs attachment


Circuit diagram of the Raspberry Pi
Circuit diagram of drone's attachment

Software block diagram

The Software that was developed was a mixture of image processing (filtering, thresholding, convolution) and machine learning (k-means).

The first thing the algorithm does is to filter the static noise (i.e. sun, or a source of light) that could be mistaken by the software as an LED. To filter out the noise the algorithm takes two successive images, one with the LEDs ON, and another with the LEDs OFF, then perform image subtraction so that we are only left with the LEDs. To achieve this, the LEDs has to be flashed at the same frequency as the camera's frequency of taking pictures


LEDs OFF with Noise presence
LEDs ON with Noise presence
LEDs ON with No Noise presence


To accentuate the LEDs and minimize the surrounding, a Template-matching with a Gaussian filter is performed on the image.



Gaussian Filter kernel
Image after Template-matching


The K-means algorithm is used to cluster the bright pixels (i.e. LEDs) together so that the processing afterwards will have less pixels to work with, thus making it less computationally intensive. The basic idea behind K-means clustering is grouping points that are closer to a given centroids (randomly generated points), how close the points are to a certain centroid depends on their Euclidean distance to that centroid compared to other centroids.

K-means with 4 centroids