# Unmanned Aerial Traffic Management System Architecture for U-Space In-Flight Services
## 3 Design Framework
### Robot Operating System  
_Robot Operating System_ (ROS) is an open-source framework for robot software development. It consists of a collection of libraries, tools, and conventions to ease the creation of complex applications in robot systems; including hardware abstraction, low-level device control, implementation of commonly-used functionalities, message-passing between processes, and package management. ROS is also well known among the UAS community, as it allows drivers to communicate with a wide spectrum of both open-source and commercial autopilots and onboard sensors. The use of ROS for multi-UAS systems is extending fast, as it paves the way for integration of heterogeneous hardware and software systems. ROS is a framework based on multiple processes (so-called _nodes_) that run in a distributed fashion. These processes can be grouped into _packages_, and communicate with each other by passing _messages_, which are typed data structures. On the one hand, ROS implements asynchronous communication through a publish/subscribe paradigm where nodes can stream messages over different _topics_. On the other hand, synchronous communication is implemented through _services_ for request/response interactions.  
We decided to use ROS as middleware for our UTM architecture because it offers multiple features that fit our design guidelines. First, ROS is designed to create modular and reusable components, and its preferred development model is to write ROS-agnostic libraries with clean functional interfaces. Therefore, ROS yields flexible and scalable systems that can be adapted easily to incorporate new functionalities. Second, ROS is open-source and strongly supported by a large community. Its federated system of code repositories enables collaboration and fast development for UAS complex systems. Communication solutions and drivers for most popular autopilots (e.g., PX4, ArduPilot, DJI, etc.) are already available in ROS. Moreover, ROS provides remarkable tools for system integration and testing, and there exist multiple options for multi-UAS simulation, including _Software-In-The-Loop_ (SITL) solutions for common autopilots [32].  
ROS also presents some issues for multi-UAS systems. Mainly, its centralized nature due to the existence of a single _master_ node that handles all the procedures for node registration, and its lack of proper _Quality of Service_ (QoS) policies. However, there exist efficient solutions for these issues. Multi-master architectures have already been used for applications with multiple UAS [6]; and the adoption of ROS 2 is growing fast among the community, with a smooth transition from primary ROS. ROS 2 proposes a fully distributed scheme, where each node has the capacity to discover other nodes, without the need for a central master. Since it is built on top of the industrial standards DDS (_Data Distribution Service_) and RTPS (_Real-Time Publish-Suscribe_), ROS 2 is capable of offering multiple QoS options for improved communication.  
Even though we have chosen ROS to implement our UTM architecture, mainly due to its advantages for system integration and realistic SITL simulation, it is important to remark that the proposed UTM architecture is a more general concept, and it could be adapted to alternative middleware solutions.