What I learned from CopterHack 2021

Back In October I connected with some folks from Copter Express, a company that builds drones for education, industry, and really just does everything to push the industry forward. They’ve recently completed work on the clover, a programmable drone kit with an onboard raspberry pi, MAVLink flight controller and really anything a developer could really want or ask for.

And thusly, they were hosting a contest called CopterHack for hundreds of developers from all over the world to compete to see who could push their technology the furthest and come up with the best project. So with no team, a budget test drone and a burning passion I set out to build a drone capable of automatically delivering packages with just the click of a button.

My first big challenge came when I had to figure out how to make my drone go to a specific location. Unfortunately for me the test drone I was using didn’t have an onboard GPS and I didn’t want to be relying on using one, so I had to figure out a way for a drone to go somewhere without actually knowing where it was.

After a lot of painful trial and error I eventually developed an extremely overcomplicated solution that involves velocity calculations, advanced trigonometry and a flask web server that compensates for heading offset. In order for drones to be truly autonomous in the future they need to be able to rely solely on themselves without any external help such as from GPS satellites, and I think if anything the experience of building my location drone definitely showed me that.

My second big challenge came much later. After speaking to my prospective target market, I quickly found out that the intersection between people who could afford personalized package drones and those who actually needed them was very small and that my project would be effectively useless. Despite the fact that I had committed months to this drone and had all sorts of features built out for it such as the obstacle avoidance and wifi control I needed to pretty much throw everything I had out the window.

So I decided to build a project that focused on computer vision that could be used not only for the clover, but for any drone with a front facing camera. I decided to build a drone that could navigate a grocery store with just a set of aruco markers on the wall, scan the shelves and determine how much of each brand was in stock in order to help shop owners do inventory automatically.

The final challenge came about two weeks before the final submission was due. One day I was out with my clover in a local field testing my software to navigate between different aruco markers. When suddenly, just as I was finishing up for the day a massive gust of wind hit and carried my drone away from me and up into the sky.

As I was scrambling at my laptop trying to trigger the emergency landing I lost sight of it, until two minutes later when I heard a faint buzzing sound and looked up to see my drone hung in a tree three stories above the ground. After about an hour of throwing shoes, rocks and sticks another massive gust of wind picked it out of its branch and sent it tumbling down, only when it hit a shrill hiss came from its cracked battery, until suddenly it roared and burst into flames frying all the irreplaceable electronics onboard.

With only a few weeks to submit I threw everything I had into adapting the software in order to make it able to run on my test drone with the same kind of efficiency, despite the fact that I had to re-write half of it in Javascript. To my shock I managed to get into the top 16, and proceeded to stay up for almost 3 days straight practicing my presentation and getting the demo up to par.

In the end, I ended up placing 13th out of the 56 teams entered in the final contest. I’d be lying if I said I wasn’t a little disappointed in myself and it was a really tough experience to get through, but after a while I came to realize something about not only this project, but every single project I’ve ever done.

At every turn I faced some sort of out-of-left-field obstacle. Everything from having to figure out navigation without GPS to breaking my drone at the last minute to having to abandon my entire initial idea were obstacles I never expected to face and made the experience hundreds of times harder than I thought it needed to be. But with every new obstacle, with every new adversity came something more valuable that I later came to be grateful of.

With my navigation program I developed a heading correction routine that became instrumental in keeping my drone from swaying off course in the final demo. With the massive pivot in the middle I got tons of validation for a massive problem that a lot of people seem interested in having solved. With my clover going up in flames I managed to make my general computer vision algorithm applicable to nearly any camera drone with just a few modifications to the navigation methods. The most valuable parts of this experience weren’t the parts that made me feel good or relieved, they were the parts that made me feel spiteful and frustrated.

Building drone projects isn’t easy. Above all it takes a lot of determination to push past the plethora of issues you’re guaranteed to face. But without those issues not only are you losing the ability to test your drive, you’re missing some of the biggest opportunities to grow you’ll probably never get anywhere else. I used to think doing an easy project with little to no unforeseen complications was a godsend, but the truth is that that’s not the case.

Problems are a feature, not a bug.

Check out my full documentation on the official Copter Express website to see more details on my project below: