Recent advancements regarding miniaturization of sensors and instruments, as well as the reduction of their cost, promoted a growth in the usage of drones in an increasingly wide range of scenarios such as search and rescue, agriculture and environmental monitoring. However, most currently available mechanisms for drone control still require a constantly aware pilot, thus limiting the convenience of executing complex missions, especially when more than one drone is involved.Major drone and flight controller manufacturers, however, are displaying an increasing interest in providing programming interfaces and development kits that enable the execution of basic autonomous flight, including commands such as taking off, landing and waypoint navigation. These interfaces facilitate the integration of said drones in platforms that aim to abstract manual control from their users. This dissertation proposes a complete and modular solution for controlling one or more drones, enabling an inexperienced user to plan, execute and monitor complex missions with various participants, also implementing the required functionality for the collaboration of a set of drones in the execution of such missions.The proposed solution consists in a modular platform composed of loosely coupled components. Each component is individually designed to handle specific tasks such as flight control hardware interfacing, telemetry acquisition and storage, and mission planning. Components accomplish their interactions by using message brokers, while user interaction is achieved through intuitive web and mobile applications.The functionality of the solution is evaluated through the completion of four experiments, which represent typical scenarios where the control platform may be used. These experiments cover both single-drone and multi-drone functionality, with the first two covering tasks carried out by one drone, while the last two represent scenarios where multiple drones collaborate towards a common goal.
Contents
Contents i
List of Figures v
List of Tables ix
Acronyms xiAcronyms ADC Analog-to-Digital Converter AMQP Advanced Message Queuing Protocol API Application Programming Interface BEC Battery Eliminator Circuit CPU Central Processing Unit CSI Camera Serial Interface ESC Electronic Speed Controller FPV First-Person View GCS Ground Control Station GPIO General Purpose Input Output GPS Global Positioning System HTTP Hypertext Transfer Protocol I2C Inter-Integrated Circuit JSON JavaScript Object Notation LLA Latitude Longitude Altitude LXC Linux Containers LiPo Lithium Polymer MAC Media Access Control MCU Microcontroller Unit MQTT Message Queuing Telemetry Transport NDIR Nondispersive Infrared NED North East Down PID Proportional Integral Derivative PPM Pulse Period Modulation REST Representational State Transfer RTOS Real-Time Operating System SBC Single-Board Computer SDK Software Development Kit UART Universal Asynchronous Receiver-Transmitter UAV Unmanned Aerial Vehicle USB Universal Serial Bus VCP Virtual COM Port VTOL Vertical Take-off and ...