What is - JoseAndresMR/ros_magna GitHub Wiki

Introduction

ROS-MAGNA is a general framework for the definition and management of cooperative missions for multiple Unmanned Aircraft Systems (UAS) based on the Robot Operating System (ROS). This framework makes transparent the type of autopilot on-board and creates the state machines that control the behaviour of the different UAS from the specification of the multi-UAS mission. In addition, it integrates a virtual world generation tool to manage the information of the environment and visualize the geometrical objects of interest to properly follow the progress of the mission. The framework supports the coexistence of software-in-the-loop, hardware-in-the-loop and real UAS cooperating in the same arena, being a very useful testing tool for the developer of UAS advanced functionalities. To the best of our knowledge, it is the first framework which endows all these capabilities.

Architecture

The general framework is mainly derived by the structure of ROS and its communications, with different nodes distributed on the Ground Station (GS) or on-board the aerial vehicles. Every node is subdivided into components. Therefore, every node is governed by a parent component and a network of other diverse, adjacent ones. Each component is implemented as a Python class. The standard way to introduce the different parameters of the mission is via JavaScript Object Notation (JSON) files or on the top front-end script.

Our software development is based on different tools. Regarding the low level, which interacts with the on-board autopilot, we have used a previous software development of our research group called UAV Abstraction Layer (UAL). Thanks to its versatility, this framework can control UAS with autopilots supporting the MAVLink protocol, and or autopilots by manufacturers such as DJI and Crazyflie. SMACH is the ROS library applied for the mission and UAS internal state machines. Visualisation tools such as RViz~\cite{rviz} and SMACH viewer provide a full comprehensive insight into the state of the mission.

Figure below offers a general view of the framework built upon an architecture divided into the ground segment, which is executed on land devices, and the aerial node, which is designed to be run onboard the UAS but would also be executed on land for simulation purposes. On top of it, the master node is the front-end where the main features of the mission are defined. It remains active from the beginning of the collection of missions to be performed. For every new mission, the master node spawns its corresponding GS, the storage folders for the generated data and to start, if it is required, the simulator.

Arquitecture