The Side Hustle: Building a Quadcopter Controller for iOS

Our engineering blog is home to our stories sharing technical knowledge and lessons learned. But that's only part of the story: we hire passionate people who love what they do and are invested in mastering their craft. Today we launch "The Side Hustle," an occasional series highlighting some side projects from our devs while off the Shopify clock. When Gabriel O'Flaherty-Chan noticed quadcopter controllers on mobile mostly translated analog controls to digital, he took it upon himself to find a better design. 7 minute read For under $50, you can get ahold of a loud little flying piece of plastic from Amazon, and they’re a lot of fun. Some of them even come with cameras and Wi-Fi for control via a mobile app. Unfortunately, these apps are pretty low quality — they’re unreliable and frustrating to use, and look out of place in 2017. The more I used these apps, the more frustrated I got, so I started thinking about ways I could provide a better solution, and two months later I emerged with two things: 1. An iOS app for flying quadcopters called SCARAB, and 2. An open-source project for building RC apps called QuadKit

Gabriel O'Flaherty-Chan
8 min readintermediate
--
View Original

Overview

The article discusses Gabriel O'Flaherty-Chan's journey in developing SCARAB, an iOS app for controlling quadcopters, and QuadKit, an open-source project aimed at building RC apps. It highlights the challenges faced in improving user experience and the technical steps taken to reverse engineer existing quadcopter apps.

What You'll Learn

1

How to design a user-friendly interface for quadcopter control apps

2

Why reverse engineering is essential for developing compatible software for quadcopters

3

How to implement a Swift framework for quadcopter communication

Prerequisites & Requirements

  • Understanding of mobile app development and user interface design
  • Familiarity with reverse engineering tools like class-dump and Hopper(optional)

Key Questions Answered

What is SCARAB and how does it improve quadcopter control?
SCARAB is an iOS app designed to enhance the user experience of controlling quadcopters by prioritizing touch input and providing a more intuitive interface. Unlike existing apps that merely replicate physical controls, SCARAB focuses on optimizing the layout for mobile use, making it easier to manage flight controls without constant visual attention.
What is QuadKit and how does it facilitate quadcopter communication?
QuadKit is an open-source project created to provide a generic framework for communicating with various quadcopter models. It aims to unlock the potential of different quadcopters by allowing developers to adapt the framework for specific models, thus promoting flexibility and collaboration within the developer community.
What challenges did the author face when developing SCARAB for watchOS?
The author encountered significant challenges with Bluetooth communication when trying to control a quadcopter from an Apple Watch. The feedback loop was too long for effective control, and Apple's restrictions on networking from the watch made it difficult to establish a direct connection, leading to a frustrating user experience.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Programming Language
Swift
Used to develop the SCARAB app and the QuadKit framework.
Operating System
Watchos
Platform for the experimental quadcopter control from the Apple Watch.

Key Actionable Insights

1
Prioritize user interface design for mobile applications by focusing on touch interactions rather than mimicking physical controls.
This approach can significantly enhance user experience, especially in applications where quick and intuitive control is essential, such as in quadcopter flying.
2
Leverage existing resources and community knowledge when reverse engineering products to save time and effort.
Utilizing documented experiences from the hardware hacking community can provide valuable insights and accelerate the development process.
3
Consider the implications of hardware limitations when designing software for wearable devices like the Apple Watch.
Understanding the constraints of the device can help in creating more effective and user-friendly applications that align with the capabilities of the hardware.

Common Pitfalls

1
Failing to account for the differences in user interaction between physical and digital controls can lead to poor user experiences.
Many existing quadcopter apps simply ported physical control schemes to digital formats without considering how touch input differs, resulting in frustration for users.

Related Concepts

User Interface Design For Mobile Applications
Reverse Engineering And Its Applications In Software Development
Open-source Software Development And Community Collaboration