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.
- Compile and run
sbt mavigator-server/run
- Go to
localhost:8080
to view a mock drone - (TODO: configure connection to a real UAV)
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.
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 Flow
s.
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.
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).
Purely a utility project on which all other projects depend. It uses the sbt-mavlink plugin generate Scala code from a MAVLink dialect definition.
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/.