Air SDK mission

An Air SDK mission is a packaged software application, powered by Air SDK. Air SDK provides a whole software environment where you can code around and use Parrot APIs, in order to deploy your own code onto the drone or modify some aspects of the drone autopilot.

Here are some examples of what you can do through an Air SDK mission:

  • Retrieve telemetry data

  • Record video and take pictures

  • Have the drone perform specific movements

  • Exchange messages between the drone and your ground station and/or cloud application

A mission runs autonomously on the drone, as soon as you have installed and loaded it. It supports C, C++ and Python.

Composition of a mission

A mission is above all a software package that enables any developer to embed one’s own code onto a Parrot drone.

Services

A mission may contain zero, one or more services. Services are standalone Linux processes running on the drone. They enable you to develop your core application features logic. For advanced autopilot customizing options, autopilot plugins should be used instead (see below).

Autopilot plugins

A mission may also change some aspects of the drone autopilot with autopilot plugins. A mission may define:

  • zero, one or more guidance modes. These are responsible for implementing the drone and cameras trajectories. This is where you can plan the drone next movements.

  • optionally one flight supervisor plugin (ie. fsup). It deals with the flight state machine of the autopilot. Its hidden part is a default state machine, which ensures that necessary states and transitions are properly handled. Flight supervisor enables to customize that state machine: to add (resp. customize) new (resp. existing) states and transitions. Flight supervisor is also responsible for being a message hub : it receives messages from the outside, transfers them to the autopilot, and the other way around.

Mission lifecycle

Once installed on the drone, a mission follows the following lifecycle:

  • UNLOADED: waits to be loaded by a third party (i.e. the ground control station application)

  • IDLE: loaded on the drone, services are running but the mission flight supervisor supervisor plugin is in the idle state

  • ACTIVE: everything is running, services as well as the autopilot plugins. The Fsup plugin has taken over the default state machine, and the custom guidance modes may be enabled

  • UNAVAILABLE: is not running, due to error state. Possible reasons are:

    • BROKEN: the mission will never be able to load , e.g. because firmware version is not supported.

    • LOAD_FAILED: the last load failed, e.g. because of an exception in python code.

../_images/8-mission_state.png

Important

A single mission is activated at the same time; if a mission was previously activated, it will switch back to idle.

How to interact with your mission

While running on the drone, the mission may be managed from a ground station application Remote UI. That can either be a smartphone application using Ground SDK (ex: OpenFlight) or a PC application using Olympe. This mission user interface - Remote UI - can list missions, install one and exchange messages with the mission. You may see the appropriate documentation for each ground controller for further details.

However as you will see in the installation section, that ground control station is optional. A mission can be built, installed and run autonomously on its own, which means without the support of any of the above-quoted ground stations.