An Overview of 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
- 2.3D modeling, details can be found in
- 4.Object detection, details can be found in
- 5.Instance segmentation, details can be found in
- software includes the following full-functional software modules:
- 1.Python scripts for controlling px4 in offboard mode
- 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:
- 4.Path planning can be found in
- 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
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:
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.
- 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.
We are so grateful for your interest in contributing!
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 CONTRIBUTING.md
Project initialized by Generalized Intelligence