An Overview of GAAS

Help us to understand what you want to learn in the upcoming tutorials by fill out this three-question survey.

Should you have any questions or suggestions to the tutorials or GAAS itself, let us know at our facebook group at:

Here is the video tutorial:

Here is the GitHub for GAAS(Generalized Autonomy Aviation System):

What is GAAS

GAAS (Generalized Autonomy Aviation System) is an open source autonomous aviation software platform, designed for fully autonomous drones and flying cars. GAAS was built to provide a common infrastructure for computer-vision based drone intelligence. In the long term, GAAS aims to accelerate the coming of autonomous VTOLs. Being a BSD-licensed product, GAAS makes it easy for enterprises, researches, and drone enthusiasts to modify the code to suit specific use cases.

Our long-term vision is to implement GAAS in autonomous passenger carrying VTOLs (or "flying cars"). The first step of this vision is to make Unmanned Aerial Vehicles truly "unmanned", and thus make drones ubiquitous. We currently support manned and unmanned multi-rotor drones and helicopters. Our next step is to support VTOLs and eVTOLs.


On the home page of the GAAS repo, you can see those following folders:

  • algorithms includes the implementation of some algorithms for autonomous drones

  1. Scene recoginition, given an image, recover its position in terms of given environment, details can be found in algorithms/scene_retrieving

  2. 3D modeling, details can be found in algorithms/sfm

  3. Object tracking, details can be found in algorithms/object_trace_tracking

  4. Object detection, details can be found in algorithms/image_detection

  5. Instance segmentation, details can be found in algorithms/image_segmentation

  • software includes the following full-functional software modules:

  1. Python scripts for controlling px4 in offboard mode software/px4_mavros_scripts

  2. Navigation in GPS denied environment can be found in: software/SLAM/ygz_slam_ros, currently we are using stereo optical flow;

  3. Obstacle avoidance based on stereo vision can be found in: software/Obstacle_Map;

  4. Path planning can be found in software/Navigator;

  • hardware is the hardware list we are using

  • demo includes the code for this tutorial

  • simulator includes the configuration files for simulation in this tutorial

UAV hardware configurations

Here is the hardware list for building a drone from scrach:

If you wish, we could help you buy all of this hardware and send it to you. Or we can send you the links if you could use Please contact us for more details at

The structure of GAAS

PX4 firmware

The tech stack of UAV autopilot is too long to be held in a single project or component, and the whole system is divided into several independent modules communicating with each other.

GAAS is one of the parts in the stack, it controls the drone with the open-source PX4 firmware. More information can be seen in the following link:

There are some tips for the PX4 firmware:

  • PX4 is working in OFFBOARD mode with GAAS. The OFFBOARD mode is primarily used for controlling vehicle movement and attitude, and supports only a very limited set of MAVLink commands.

  • MAVLink is a kind of protocol for the drones and control stations to communicate with each other.

  • PX4 supports both Software In the Loop (SITL) simulation, where the flight stack runs on computer (either the same computer or another computer on the same network) and Hardware In the Loop (HITL) simulation using a simulation firmware on a real flight controller board. In the tutorial we are using SITL simulation.

  • The drones can be controlled with professional controllers or the QGroundControl software.

This picture shows how PX4 control the drone

The drone here can be either a real drone or a drone in a Simulator, in this tutorial we are using the Gazebo simulator. Notice that the autopilot software must be tested in simulator first before testing on a real drone.


ROS (Robot Operating System) is a general purpose robotics library that can be used with PX4 for offboard control. It uses the MAVROS node to communicate with PX4 running on hardware or using the Gazebo Simulator. The mavros ROS package enables MAVLink extendable communication between computers running ROS, MAVLink enabled autopilots, and MAVLink enabled GCS.

In ROS, each of the running programs is a Node of ROS, and all the ROS nodes can communicate with each other when the roscore is running. Each of the softwares in GAAS is running as an ROS node, the GAAS and PX4 firmware is communicating with MAVROS on ROS platform.

This following picture shows the whole workflow of GAAS and PX4

For more information about the ROS, you can read the ROS document here:

How to use GAAS

I just want to build an autonomous drone

You have come to the right place!

If this is your first time building an autonomous aviation system, check out our first Tutorial. You will get a basic understanding of what MavROS, PX4 and Gazebo are, which are fundamental for the success of your autonomous drone.

If you are stuck with configuration, you may:

  1. Google the error messages and see if someone else has solved a similar problem.

  2. Visit the Issues Page to see if others have provided solutions for a similar problem.

  3. If neither Step 1 or Step 2 were able to help you, submit an issue to let the community know that you need help.

If you are an advanced user, feel free to help others to get started, contribute by solving issues, or share with us about your project on our Gitter group chat.

I want to contribute

We are so grateful for your interest in contributing!

To start contributing, you need to become familiar with PX4 and MavROS, as well as the workflow of GitHub.

A good place to start is to look at the open issues. From there, you may choose one that interests you to tackle, or open an issue of your own to communicate with other developers.

PS: One of the best ways to contribute is to help others to kick off their autonomous drone journey. Pay attention to the “Configuration” label in issues page to help others get started. For more details, please follow


Project initialized by Generalized Intelligence

Distributed under the BSD 3-Clause license. See LICENSE for more information.

Give us a Star 🌟 on Github if you find this tutorial useful.

Support us on Patreon

Last updated