Beginnings of a Programmable Drone

The struggle to put code in the loop airside and ground side of an autonomous drone

I think it was the final episode in season 3 of Black Mirror that motivated me to start thinking about building a drone again. That episode - Hated in the Nation - involved swarms of autonomous drones deployed across the UK to replace recently deceased bee colonies.

In this work of fiction the drones wreak havoc. However the connecting of computation and AI to real moving entities in our world really intrigued me.

Although my ambitions are not so great, at least initially(!) I started to investigate possible platforms for building a drone which could be used as the basis for connecting sensors too and connecting back to a central hub.

I found some tantalising glimpses of researchers connecting ranging sensors to allow a drone to move around without crashing into both static and moving obstacles. This tantalising TED talk entitled The astounding athletic power of quadcopters by Raffaello D’Andrea shows some amazing engineering combining sensor inputs and sophisticated mathematical modelling to create creepily amazing behaviours:

As I started to investigate what I’d need to buy to construct the drone I discovered a whole world of choices. I looked at what complete products were available and what components you could buy. I also found numerous software platforms. There are lots of good guides to starting off building drones but the common theme in all of these is that you follow a pretty similar pattern: You build a vehicle that is controlled via an RC controller and/or a laptop based flight planner.

The available choices for hardware are particularly staggering. It is very difficult to know where to start. Different components have different connectivities and limitations. For example:

  • What size of frame would I need to support any custom hardware? This effects everything from propeller, motor, ESC ratings (electronic speed controllers) and battery.
  • Any kind of multi rotor vehicle requires a flight controller for dynamic stabilisation. How can you interface a flight controller to a microprocessor rather than a standard RC (remote controller?) This is made more complicated by the desire to get telemetry data from the flight controller. Telemetry data is things such as the orientation of the vehicle and other useful data such as battery level.
  • How can I remotely communicate from the base station of hub to the vehicle over reasonable distances? Bluetooth and WiFi don’t have the range.
  • What flight controller to use? The subtle limitations and configuration options of these is a big topic in it’s own right.

A photo

This post is just and introduction to my explorations. There is so much detail in this project - much more than I anticipated at the outset. After a number of dead-ends and backtracking I’m now at a stage where I’m pretty confident I have the basis for future work with a solid and extensible drone platform. Today i’ll finish with some initial hardware block diagrams:

Airside hardware block diagram Figure 1: Airside hardware block diagram

Groundside hardware block diagram Figure 2: Groundside hardware block diagram