UgCS As a Platform
Right from the beginning UgCS was designed not only as an out of the box ground station software for end users, but also as a platform for custom and integration projects.
By now a number of different custom projects have been implemented using UgCS as the basis for them - integration with perimeter security systems, object surveillance systems, ATC, C&C center integration, UI customizations and others. Moreover, one of our partners has even created custom ground control software for their drone using our SDK.
Below is an under-the-hood diagram of UgCS and the architecture, which makes it all possible:
UgCS has 3 main layers:
- UCS – universal control server
- HCI – human control interface – interface for the user of UgCS
- VSMs – vehicle specific modules
In addition to the aforementioned layers UgCS also has the following components – video server, geoserver, ADS-B receiver module and vehicle emulator.
All components are implemented as separate processes (.exe in case of Windows, etc.) and communicate to each other using TCP protocol. This allows the components to be deployed on separate machines in distributed configuration.
HCI - Human Control Interface
UgCS has a standard client application, which is already well known to the industry. If you have not seen UgCS client before you can see it here -
UgCS can have different client applications with different user interfaces. For example, for one of our integration projects we implemented very simple UI for security officers.
Now we are developing a special version of UgCS UI for tethered drones. It will be a separate application that connects to UCS server and will only have the basic controls for the drone and the camera (drone up/down, camera direction, start/stop recording).
Interesting is the fact that UgCS can serve multiple operators with different clients simultaneously. For example – an operator of a tethered drone can use the simplified UI. If he sees something interesting using the tethered drone camera, he can set a landmark on the map in UgCS. This landmark will be available for the second operator of a “traditional” drone in a standard UgCS client which will be connected to the same server. The second operator can then send the drone for close surveillance of the landmark. Tethered drone operator will see the second drone on the map along with the video stream from the second drone and will be able to provide directions for the operator of the second drone.
Standard UgCS client is written in C# on top of Unity 3D platform. We are working on .Net UCS Interaction SDK and will write a separate article about it soon.
UCS - Universal Control Server
This is the core of UgCS. UCS is responsible for all communications inside of UgCS and core functions such as data storage, route calculation, telemetry processing and event generation, access management etc.
UCS (in Pro version) can serve multiple clients, allowing for multi-operator deployment. UCS also allows user access control based on user roles.
UCS is written in Java.
Furthermore UCS plays the most significant role for integration projects. We have published our server API with samples here - https://github.com/UgCS/ucs-java-client. It is possible to use this API in almost any integration because inside of UgCS the same API is used. We are happy that one of our partners has completed an integration project with video surveillance system without the need for any significant help from our engineers.
VSM - Vehicle Specific Module
Simply put, VSM is the driver for a particular autopilot and their communication channel(s).
For example Ardupilot VSM can serve APM/Pixhawk compatible autopilots and communicate to them using 3DR compatible radios, WiFi or XBee modems.
Out of the box we provide VSMs for the most popular autopilots. But in case one needs to use UgCS with custom autopilot it’s possible to use our VSM SDK and samples (https://github.com/UgCS) and create a VSM for any autopilot. For instance one of our partners created their VSM for their highly customized Ardupilot firmware.
VSMs are written in C++ language.
It is an important goal of ours to make UgCS a convenient platform for custom ground control software developments. We will be glad to address your questions about the architecture of UgCS, existing and planned SDKs.
This is all for the first post about UgCS internals. In future posts we will describe in details different components and functions. We hope that this was an interesting read for you.
You can find more information about UgCS on our site: www.ugcs.com