# A Platform of Unmanned Surface Vehicle Swarms for Real Time Monitoring in Aquaculture Environments
## 3 Aquatic Platform  
The proposed platform, illustrated in Figure 1, is comprised of several teams of USVs and buoys that: (1) self-organize in the water through a mission and path planning approach; (2) communicate between themselves to control the mission and path and to never loose connection; (3) sense environment information both from the water and the air; (4) and communicate this information to a chosen Data Gateway Station (DTS) on land. These DTSs are connected to a Server in the cloud that stores the sensed information and the positioning of the USVs during the mission, which are then used by end-user applications such as a real time dashboard, alert platform and a mission control platform. The system is quite versatile and can be used not only to aquaculture applications but also in environmental monitoring in coastal, estuaries and lagoons environments. The system was designed to retrieve the frequently measured parameters that aquaculture operators collect with manual probes or in fixed points and it is highly suitable for aquaculture applications, especially in earth ponds of large dimensions. **Buoys** are stationary stations, usually without wired connectivity, composed of a set of environmental sensors, with the purpose of collecting environmental information that can be used to control scenarios such as aquaculture. The Mission Controller (MC) is a fixed network element on land that gives the orders to each Unmanned Surface Vehicle (USV) to start a mission/task. It receives these orders through a user platform and sends them in the right format to the USV. To be able to access all USVs in the water, through a larger connectivity range, the MC uses the LoRa technology ([[https://lora-alliance.org](https://lora-alliance.org)]([https://lora-alliance.org](https://lora-alliance.org))) to communicate with the USVs. The **DTSs** are also fixed network elements. These nodes act as endpoints connected to servers in the cloud, since they are the final elements of the data dissemination plan. Due to the support of multiple communication technologies in the water between the USVs and between the USVs and Buoys with the DTSs, the gateways will be endpoints for both Wi-Fi and LoRa communications. **USVs** are mobile entities that work within a team. These nodes have both Wi-Fi and LoRa communication capabilities. With the Wi-Fi technology, the communications between elements are assured by a Delay Tolerant Network (DTN), where these elements act as relays in a store-carry and forward fashion. These mobile nodes are responsible for forwarding and collecting the sensing information until it reaches the DTSs. With the LoRa technology, since it is able to reach 2-6 Kms, the communication to the DTSs is direct between the respective USVs and the DTSs. The **Server**, has the responsibility of receiving all the data from the clients and then storing it into a corresponding database for both real-time and posterior use in several applications, both mobile and web. The platform implements a client-server architecture, using a FIWARE ([[https://www.fiware.org/](https://www.fiware.org/)]([https://www.fiware.org/](https://www.fiware.org/))) broker for interoperability between different systems with a fast performance. A client can submit information using REST requests which is then automatically stored in a MongoDB database ([[https://www.mongodb.com/](https://www.mongodb.com/)]([https://www.mongodb.com/](https://www.mongodb.com/))). Another FIWARE module is used to store all the data that comes through the FIWARE broker called Cygnus ([[https://fiware-cygnus.readthedocs.io/en/latest/](https://fiware-cygnus.readthedocs.io/en/latest/)]([https://fiware-cygnus.readthedocs.io/en/latest/](https://fiware-cygnus.readthedocs.io/en/latest/))). This module automatically persists all the data in a PostgressSQL database ([[https://www.postgresql.org/](https://www.postgresql.org/)]([https://www.postgresql.org/](https://www.postgresql.org/))), creating a new table if a new model appears, with the same table structure for all models.