FlytOS

FlytOS is a software framework which provides Drone APIs and SDKs for building high-level drone applications such as aerial delivery, precision agriculture, surveys, photography, industrial inspections and disaster management. It is designed to enable drone-developers build advanced drone applications using its open APIs.

FlytOS is based on Linux and ROS (Robot Operating System), making it an ideal platform for building commercial as well as research orientated drone applications. It supports a wide range of hardware options such as Raspberry Pi 3, Odroid XU4, Nvidia TX1, Intel Edison, Intel Aero and FlytPOD. It uses MAVLink to communicate with the autopilot, and exposes high level FlytAPIs in ROS, CPP, Python, REST and Websocket.

../_images/flytosccsupport.jpg

Supported Companion Computers

This makes it easy to build high-level applications using computer-vision, machine-learning, cloud-connectivity and enables developers to create their custom user-interfaces on web/mobile devices of their choice. FlytOS also has modules to manage payloads, security and updates. The modular design of FlytOS allows for integration with external ROS/Linux libraries and custom data plumbing between onboard and offboard apps. FlytOS aims to provide a standard language for the drone application developers to talk to their drones.


../_images/FlytOSArch.png

FlytOS Architecture Diagram

Developer Tools

FlytOS provides several developer tools, such as FlytSDK and FlytSIM, to further help developers quickly get started.

FlytSDK is the software development kit for web and android developers. A number of sample applications are available on github, that can be used as templates/reference to build custom applications.

FlytSIM is a ROS/Gazebo based simulator to test applications built using FlytAPIs. This allows developers to build and test drone applications, safely and efficiently, minimizing the requirement for flight-tests.

Supported Companion Computers

Supported Languages

FlytOS offers Drone APIs for building applications with onboard as well as remote components. These drone APIs not only provide you, the control over vehicle’s navigation, payloads (gimbal, camera, etc.) but also has few inbuilt AI/ML modules such as object detection and tracking, obstacle detection etc.

Onboard APIs

These are APIs available onboard the companion computer and can be used for developing domain specific intelligence and business logic. Typical candidates are tasks requiring high reliability, low latency and relatively low processing power as offered by the onboard computers.

Click on corresponding links to know more about building custom apps in cpp and python.

Remote APIs

These are APIs for building web/mobile apps for remote devices and are helpful for creating custom User Interfaces specific to the application as well as for integrating any off-board processing. They are available as RESTful and WebSocket requests, where typically REST is used for sending commands to the drone and WebSocket for getting continual data stream (telemetry). Click one of the below links, to know more about building custom apps for web and mobile.

Sample Applications

We have made available, a few sample apps to help you get started with drone application development. You can find them on github at FlytSamples github repository. These sample apps are written in all of the above supported languages. Web/android developers could begin with a simple Joystick App. A couple of easy-to-understand CPP/Python/ROS based apps are also available.

Vision-based Object-Tracking and Following

FlytOS comes bundled with Vision-based Object-Tracking and Following module. To learn more about it, checkout this blog.


Deep Learning with Nvidia

Using FlytOS on Nvidia-TX1/Nvidia-TX2 opens up possible integration of deep learning applications with drone. To begin with, you could install caffe, a popular deep learning framework by follwing our deep learning tutorial. We also have a sample object classification and tracking example using caffe. Read more.


GPS based Object Following

This android app would enable you to control your drone to follow you wherever you go based on your device’s GPS location. Take a look at the GPS Follow Me code, install it in your mobile and see FlytOS in action.

SONAR based obstacle detection

You could enable your drone with a minimalistic obstacle detection by using SONAR, capturing its data, integrating it with FlytOS and eventually maneuvering the drone through an obstacle course. We have provided a sample implementation, of using Arduino to trigger SONAR and then transmit the captured data to a companion computer. Using this data, you could write a simple onboard ROS/cpp/python app navigating the drone using FlytAPIs.