The Dronology Architecture is designed to deliver a multi-platform solution. It is designed around the concept of a Dronology Core with Services middleware that support UI development and Groundstation middleware that supports communication with diverse UAS. Here we describe each core component and provide links to other pages containing further details.
Dronology Core provides features for coordinating the flights of multiple sUAS in a shared airspace. This includes centralized collision avoidance, fleet management, internal simulator, and management of vehicle status. Click here to learn more about key components in the Dronology core.
Dronology services are used by various clients to construct user interfaces. The services can be used to perform tasks such as upload flight plans, activate UASs, observe and visualize UAS flights, and register equipment to individual UAS.
Vaadin is an open-source web framework that supports development of rich user interfaces. It has a server-side architecture, which allows most of the logic to run on the server, while Ajax technology on the client side ensures a rich and highly interactive UI. In Dronology, we run Vaadin on TomCat — which can be deployed either centrally or locally. The web-based approach enables our goal of platform portability.
The ground station middleware provides a bridge between the Dronology core and a diverse set of ground stations. It is designed to allow future developers to build their own ground stations. The middleware allows registration of a new ground station. It passes directives from the Dronology core to UAVs registered through their respective ground stations, and forwards UAV data, such as their GPS coordinates from the ground station back to the the core.
Groundstations are responsible for communicating directly with the physical or externally simulated UAVs. Our current ground station is developed in Python using Dronekit Python — and is capable of communicating with UAVs that run ArduPilot.
The runtime monitoring component allows constraints to be defined and various values to be monitored. The monitored variables include UAV specific values such as coordinates, velocity, and battery power, as well as external variables read from sensors on the UAV.