The best SDKs for developers of applications for drones: 3D Robotics and DJI
Some companies already have APIs available for developers to program applications and services related to drones, allowing their control by devices such as cell phones or tablets, route planning, 3D modeling...
Drones are already a mature market. Border control, extinction of forest fires, emergencies,, information supply, farming... there are many purposes for which drones are already in use every day. This generates a business linked to the development of very powerful and promising applications and platforms. Companies want developers to personalize these unmanned air vehicles.
According to a recent study by Deloitte, there will be over one million civil drones of 200 dollars or more in 2015, with revenues in the industry of between 200 and 400 million dollars. In this situation, exploring new possibilities can generate revenues. Two examples of the results offered by the new developments are the companies 3D Robotics and DJI, which have launched Software Development Kits (SDKs) and APIs for developers.
DroneKit, the 3D Robotics SDK
3D Robotics offers DroneKit, a flexible and open API in Python for the development of applications that are executed from the on-board computer and communicate with the flight controller ArduPilot with a low latency link.
The API connects with the drone through the MAVLink communication protocol, a commonly used system for connecting a ground control station and an unmanned vehicle to transmit information such as location and velocity. Thanks to this protocol, the API has access to the telemetric data via Bluetooth, WiFi or the radio system 3DR, as well as the parameters of the drone. It also allows control of the movement and operations of the unmanned machine itself.
Among the SDK's functions, it allows developers to:
- Develop applications that improve the flight on automatic pilot.
- Provide smart features for drones, such as remote view via computer, route planning and 3D modeling.
- Allow an air vehicle to follow targets via GPS.
- Help monitor a route marked by GPS receptors.
DroneKit can be installed on Linux, Windows and Mac OS X operating systems and the platform works both on desktops and mobiles. For now, mobile applications can only be developed for the Android operating system, although a launch for iOS is planned soon. In addition, developers can work with SDK and access the API in the cloud, where the DroneShare service is available (it maps flights in real time and shares mission and route data with drones).
An application developed with DroneKit in Python tends to be run on an on-board computer in Linux, but during the development tests it will be most reasonable and normal to try the prototypes on a standard computer that runs on Windows, Mac OS X or Linux with an automatic pilot.
As a result of the work with DroneKit, 3DR has various applications:
- Tower (DroidPlanner3): this is an application that works as a flight control program. It can plan everything needed for a drone route. It is an open-code application: any developer has the programming in GitHub available to make modifications. Developers also have access to the contributions of the other the professionals.
Some of its key features include:
- Create flight routes and control the drone descent by establishing coordinates from a mobile device.
- The system of coordinates allows the drone to move on with smooth curved or orbital trajectories.
- Automatically generate flight patterns with the Survey function, which allows mapping of extensive tracts of ground.
- Three-dimensional scanning of structures of great volume with the Automated Building Mapper function.
- The 3PV Follow Me function allows the drone camera to be focused on a user in movement and adjust the
- Tower Wear: this 3D Robotic app allows the handling of drones with Tower, but through smart watches with the Android Wear system.
The DJI APIs
DJI is another of the companies that are strongly committed to the launch of SDKs for the development of drone apps. At present the company has an API available for the on-board control system and another for the development of mobile applications connected to the drone.
The first of the SDKs allows professionals to supervise and control the drone from any system connected directly to the aircraft's automatic pilot through a standard interface. Thanks to this API, a developer can create an algorithm that is capable of controlling the drone using any type of programming language and for different operating systems.
The development of applications with this SDK will give access to functions such as:
- Control of all the important flight elements: take-off, landing and the route followed by the drone.
- Access to the route data: all the data accumulated by the aircraft are available, as is the system information, and all in real time. Data such as height, velocity, information on the point of origin and destination, possible errors on the route...
- Transmission in real time of all this information: allows transmission of data and secure communication between the drone and mobile device with which all the movement of the unmanned vehicle is controlled.
The most important features of the API for on-board control are:
- Reliable communication: data loss prevention protocol.
- Flexible control system: different flight control methods, from information on the drone's position to its velocity.
- Configurable data monitoring: the flight data can be obtained in customized form.
- Flight autonomy: the flight control mode and information obtained on the route are designed to provide autonomous navigation.
With its other API, DJI allows the creation of mobile applications to connect with the drone from the ground, for both iOS and Android devices.
The SDK provides all kinds of functionalities:
- Take images from the air: access to the common characteristics of the camera from the screen of the mobile device itself and the option to download the material.
- Record video in real time from the screen of a mobile device.
- Control on three axes for the assembly of the camera on the drone: this makes it easier to handle the camera angles and its own stability.
- Battery information.
- Extender to provide greater WiFi connection.
- Remote control: customizable parameters and buttons.
For any programmer who wants to start to work with the mobile SDK and implement the use of images and videos, DJI offers this tutorial.
In the coming years the drone industry will become a sector with major professional potential for developers. It's time to take advantage of it.
Follow us on @CIBBVA