Over the past few months there has been an explosion of new drone announcements. DJI released the Mavic Pro, GoPro released the Karma, Yuneec released the Breeze. This was on top of an already crowded marketplace which included other DJI drones as well as 3DR, Parrot and many more consumer and commercial drones.

What isn’t as obvious is that a significant number of these drone manufacturers are encouraging a mobile developer ecosystem. Most of these drones use a smartphone as the screen for the remote controller and display the video output to the phone and that’s the developer’s entry into these systems.

DJI, Intel and others have opened up APIs, created template apps, ran year long competitions and much more to help the mobile developer create apps that sometimes compete directly with the manufacturer’s app.

Why do they do this? Probably in the hope that we creative types will come up with new an inventive ways to use their drones and extend their market. Chris Anderson, CEO of 3DR put it best…

“We know nothing about agriculture no drone company does. But experts could code a smarter way for Solo to look for leaks or automatically collate data about the state of crops. That’s where apps and platforms kick in.”

From a business perspective the focus at the moment is how to use drones commercially whether that’s in selling real estate, TV journalism or using them to map crops. In this blog we’re going to talk about the current state of the drone market, but also focus on what options are open to software developers who want to investigate this new market.

Tables 1 shows a list of the drone manufacturers along where to find their SDKs.

Manufacturer Drones SDK
DJI Inspire, Phantom, Mavic http://developer.dji.com
3DR Solo http://dronekit.io
GoPro Karma N/A

Table 1: Drone SDKs.

As yet GoPro doesn’t have an SDK for the Karma, but you should expect one soon given that they have SDKs for their cameras. 3DR’s SDK can be found at http://dronekit.io and has excellent tutorials on setting up a sample drone app and simulator. The SDK is built on the open source http://dronecode.org codebase which is also used in Yuneec’s Brreze and Intel’s Aero drone.

DJI

For this blog we’re going to just look at the DJI SDK and toolkit, where to find their sample apps, where to sign up for a key and how to debug your app

  1. Register for an account at http://developer.dji.com/register.html
  2. Generate an App key using the form in Figure 1.
Figure 1: Generate an App Key
  1. Download the sample iOS or Android app from https://github.com/dji-sdk/Mobile-SDK-iOS or https://github.com/dji-sdk/Mobile-SDK-Android
  2. Choose the TapFly example as it gives you a good overview of using the simulator, debugging as well as flying the drone, see https://developer.dji.com/mobile-sdk/documentation/ios-tutorials/P4MissionsDemo.html
  3. The completed app is shown in Figure 2. Buttons make the drone take off and land. The drone’s path is then controlled using the 2 dots as a virtual sticks.
Figure 2: Tap and Fly example.

iOS (Swift or Objective-C) and Android are both supported by the DJI SDK. However there is one major advantage if you’re programming in iOS and that’s the DJI iOS Bridge app which – depending on what you’re working on – can be a crucial part of the development process.

Normal iOS development using Xcode gives you access to what’s going on with the iOS app and phone. But that’s only part of the equation. What we need to be able to do is to know what the remote controller and drone are doing when we or the user makes a change using the app. The iOS Bridge app allows us to do that, see Figure 3.

Figure 3: iOS Bridge App

Creating drone apps are as much about the hardware as the software. DJI provides further OnBoard and Guidance SDKs. You can also create your own DJI Drone using the Matrice 100 platform where you can add or remove modules depending on your needs.

There are already number of very successful apps using the DJI SDK. The best example is the Litchi app which takes the complicated DJI Go app and skinnies it down to provide a simple, direct user interface for people who just want to fly their drones and nothing else. At $24.99 it must be one of the most expensive apps on Google Play but it’s already selling in the 10’s of thousands on Android and probably more on iTunes. There are also many other map based apps such as DroneDeploy and Hivemapper that are selling well. But there are many other drone opportunities for the creative developer.

So whether your preferred model is to use commercial drones such as DJI or to go completely open source using http://dronecode.org. Now is the time to take your best ideas for mapping the world and put them into practice.