This is a quick overview of my masters research work that you might find interesting. I've been posting in the drones-discuss developer mailing list and a couple of people suggested I make a post over here for everyone to see. The associated paper is titled "Relief and Emergency Communication Network Based on an Autonomous Decentralized UAV Clustering Network" and will be published soon in the 2015 conference proceedings for IEEE SoutheastCon.

What it is

Quoting the abstract from my paper: 

...propose a fully autonomous system to deploy Unmanned Aerial Vehicles (UAV) as the first phase disaster recovery communication network for wide-area relief. An automation algorithm has been developed to control the deployment and positioning of UAVs based on a traditional cell network structure utilizing 7-cell clusters in a hexagonal pattern. The distributed execution of the algorithm is based on a centralized management of UAV cells through assigning higher ranked UAVs referred to as supernodes. The algorithm autonomously elects supernodes based on weighted variables and dynamically handles any changes in total number of UAVs in the system...

So in essence you can launch a bunch of drones in the air to act as communication towers using any protocol like GSM or WiFi.

The System

The system consists of three main parts:

Yes, I just threw the props on for the picture so the orientations are probably wrong :)

On the software side I didn't use MAVProxy or DroneAPI as a whole but I studied them heavily and was able to understand how they were built in order to create my own more streamlined (single-purpose) version. I of course used a lot of helper functions from both MAVProxy and DroneAPI.

The system consists of a Python backend and an HTML user interface. I use WebSockets and Flask to communicate between Python and my interface in real time. I also use Bootstrap and AngularJS as helpers on the frontend side. The interface also allows for setting of parameters and fail-safes. I can control the system from anywhere in the world or on any device by simply using an HTTP tunnel.

With my system, you first start up the Python script and load the web interface. The two will automatically connect via WebSockets as long as the port numbers are the same. After that the interface will automatically recognize any drone connected to the computer and add it to the system. When all that is done all you need to do is initiate the launch and then the control algorithm takes over. The algorithm arranges the drones in a hexagonal honeycombed pattern, which can scale to any size. 

For autonomous control, I implemented a finite-state machine. Each drone added spawned it's own FSM, which allowed for everything to function independently and as a whole at the same time by simply manipulating a master state.

There are a bunch of fail-safes and safety measures in the system but you can read about that in the paper -- I'm not going into too much detail in this post.


Everything in the system is fully functional but the fleet was grounded for some time due to the FAA regulations that went into effect but I'm hoping to get a video out of them all in operation before the end of the semester. I can definitely understand the dangers of 13 drones flying themselves :)

I'll update the post with a link to the paper on this research once it's published -- it goes into much more detail than I've covered here. As far as releasing the full source I have no problem with it but I'll have to see about that from my school since they own the research.

Hopefully this was an interesting read -- it was definitely an awesome project to work on! Now my next project is finding a job ;)

Views: 4624

Comment by Mamoon Syed on April 14, 2015 at 4:45pm

This is really cool, but I have one question: can you command other formations of the drones currently instead of the 7-drone hexagonal formations that you displayed here?

Comment by Paul Bupe on April 14, 2015 at 7:06pm

I didn't include that functionality in this instance but that's just a simple matter of adding a new class in the Python code and then adding a dropdown menu in the UI to select which formation to use. The rest of the logic will function exactly the same.

Comment by Adam Erickson on April 14, 2015 at 7:57pm

Excellent work, Paul. I for one hope the FAA rescinds its proposed rule on swarming.

3D Robotics
Comment by Chris Anderson on April 14, 2015 at 8:42pm

Awesome. Come work for us!!

Comment by Luke Nyhof on April 14, 2015 at 9:05pm

Fantastic work Paul! As a side note, I'm not sure what university you are studying at but over here (Aus) your work remains yours, including ALL intellectual property rights, the only exception is an industry sponsored masters/phd where the rights are stipulated in your contract.

Looking forward to seeing your paper! Well done mate

Comment by Adam Erickson on April 14, 2015 at 9:58pm

No, Paul's right: Here at University of British Columbia, we grad students retain our IP.

Comment by Guy Whittal on April 14, 2015 at 11:15pm

very intensive work dude. keep it up.

Comment by Paul Bupe on April 15, 2015 at 8:42am

Thanks, everyone! It was a huge learning experience and certainly tested my problem solving skills. I would love to see the work on this continue even though I'm graduating -- it's very promising for it's application.

And Chris that would be awesome! I will definitely take you up on that!

Comment by Austin H on April 15, 2015 at 3:23pm

Fantastic work Paul !

you might be interested in this MTIC algorithm for distributed multi target tracking in a sensor network


Comment by Paul Bupe on April 15, 2015 at 4:29pm

Austin, that looks very interesting! I'll have to look more into that.


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service