Git Product home page Git Product logo

uavap's Introduction

uavAP

uavAP is a modular autopilot framework for the control of unmanned aerial vehicles. While the main focus of the implemented control and planning algorithms is on fixed-wing UAVs, this framework can be used for other types of UAVs (e.g. Quadcopters). Main contricutions of this project are:

  • A Core framework for Object Interaction
  • Utility classes for Inter-Process and Inter-Device Communication etc
  • A fully implemented Planning and Control Stack

The required operating system is a Linux distribution. The provided setup script runs on Debian/Ubuntu distributions as well as Arch-Linux.

Setup

For the setup of uavAP the setup.sh script can be executed. It installs necessary dependencies from the regular debian repository. Additionally, libraries (such as boost, eigen, protobuf etc.) are compiled from source and installed on the system. The setup script adds the build folders as ./bld/Release and ./bld/Debug. Entering the required path and executing make and (sudo) make install, installs the libraries and executables of uavAP.

If the .proto files are changed, the generate_proto.sh script in the repository root folder has to be executed.

Core Framework

The Core of uavAP is meant to be used for different projects and is thus highly generalized. The main idea is that a specific Helper (e.g. FlightControlHelper) reads in a configuration file and based on that creates specified Objects using Factories. These Objects are aggregated, meaning that they are interconnected to meet the dependencies of each object, and run through 3 RunStages (INIT, NORMAL, FINAL). During these stages the dependencies are evaluated, schedule prepared, and finally started.

Utility Classes

Main utility classes implemented in uavAP are:

  • Inter-Process Communcation (Using Shared Memory or Message Queues)
  • Inter-Device Communcation (Serial Communication)
  • Data Presentation for serialization of structs and objects
  • Scheduler for scheduled execution of tasks (Multi-threaded)
  • APLogger for logging of debug/error messages
  • PropertyMapper for parsing of .json configuration files and mapping the content to objects

Control Stack

The planning and control stack of uavAP is aimed to be as modular as possible, however, its interfaces are mainly focused on fixed-wing UAV control. The stack is structured as follows:

  • MissionPlanner creates/reads a collection of waypoints as a Mission
  • GlobalPlanner takes the Mission and connects the Waypoints with Trajectory pieces (Lines, Orbits, Cubic Splines)
  • LocalPlanner selects a current path section from the trajectory and evaluates the necessary control target to converge towards the section
  • Controller calculates the ControllerOutput based on the ControllerTarget provided by the LocalPlanner

uavap's People

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.