/mavigator

Virtual cockpit for UAVs

Primary LanguageScalaGNU General Public License v3.0GPL-3.0

Build Status

Mavigator - Virtual Cockpit for Drones

Mavigator is a web server and interface simulating a cockpit of an unmanned aerial vehicle. It is compatible with any drone that uses the MAVLink protocol for communication.

Getting Started

  1. Compile and run sbt mavigator-server/run
  2. Go to localhost:8080 to view a mock drone
  3. (TODO: configure connection to a real UAV)

Architecture

Mavigator's main function is to listen for MAVLink messages on some interface (serial port for example) and forward them to a web interface where the data is parsed and displayed. This general flow of data is implemented in various sub-projects, each contained in their own directories:

├── mavigator-bindings    MAVLink utility library, used by all other projects.
├── mavigator-cockpit     Cockpit web interface that displays real-time data from drones.
├── mavigator-server      Web server that relays messages from drones to clients.
├── mavigator-uav         Communication backend for message exchange with drones.
└── project               Build configuration.

Following the path of message from reception to display, here are detailed descriptions of the sub-projects.

mavigator-uav

Contains common message sources, such as a mock connection that generates arbitrary flight data or a serial connection. These backends are accessed through an Akka system extension, exposing them as Akka Stream Flows.

mavigator-server

The server is the main application entry point. It opens a message backend and also serves the web interface cockpit. It is implemented with Akka Http and uses Twirl for HTML templating.

mavigator-cockpit

A web UI built with Scala.js that simulates a cockpit. It connects to the server via websockets and displays MAVLink messages in the form of classic aviation instruments (artificial horizon etc).

mavigator-bindings

Purely a utility project on which all other projects depend. It uses the sbt-mavlink plugin generate Scala code from a MAVLink dialect definition.

Copying

Copyright (C) 2015 The Mavigator Developers

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.