Nowadays, drone-related technologies are growing rapidly. Although they are widely used in the military field, their lower costs are enabling their spread both in the professional and in the hobbyist fields. At the same time, a rapid growth of developer communities contributing to drone-related software development is overtaking. The largest open-source community in this field is Ardupilot. Every 5-6 months a new version of their software is released with new features up-to-date with the always evolving new boards. The board, along with the rotors, is the main piece of hardware that composes a drone. The board is equipped with a firmware which is the component in charge of collecting the sensors' output and use it to plan engine adjustments in order to achieve a stable flight. The Ardupilot firmware uses a control loop, which manages sensor readings and executes tasks periodically. These tasks process the sensor data and send information to the engines. The computation on incoming data is performed in any case, even if pieces of data detected by sensors do not vary. We would rather like to run a system that reacts only to new sensor readings, thus optimizing the system response and decreasing the computation time. This improvement enables the execution of a larger number of control tasks giving a further increase in the drone's flight stability. The Reactive Programming Paradigm, with its peculiarity of dynamically reacting to changes in input values, seems to be a natural fit for drone control loops; but nobody applied it to them before. In this thesis we explain how we applied this paradigm to the Ardupilot firmware and how we overcame hardware and software limitations of the existing reactive programming libraries when integrated with the Ardupilot firmware by developing a brand-new open-source library. We evaluate the performance of our custom firmware comparing two different flight plans executed with the original and custom firmware. Thanks to the data obtained, we are able to demonstrate that our custom firmware is more precise at positioning the vehicle and more efficient in terms of computation time compared to the original one.

L’uso più comune dei droni ad oggi è stato quello militare, ma i recenti sviluppi tecnologici in questo campo con la conseguente diminuzione dei loro costi ha reso accessibile al pubblico il loro acquisto. Inoltre, questo fenomeno ha dato luogo ad un sostanziale aumento del software per il controllo di droni da parte delle comunità di sviluppatori. Una delle più importanti e più attive oggigiorno è Ardupilot. Un drone è generalmente costituito da due componenti principali: i motori rotazionali e la scheda di controllo. Su quest’ultima viene installato il firmware del drone: un software di controllo che garantisce un volo stabile leggendo i dati forniti dai sensori e utilizzandoli per governare i motori. Nel caso di Ardupilot, il firmware svolge le sue funzioni per mezzo di un ciclo di controllo eseguito periodicamente, che quindi raccoglie dati anche in assenza di una loro variazione. Ci siamo resi conto che sarebbe meglio avere un sistema che, anziché agire in modo periodico, reagisca alle variazioni dei dati in ingresso. Ciò porterebbe ad ottimizzare la risposta del sistema stesso a ridurre il tempo richiesto per la computazione rendendo possibile l’esecuzione di altre funzionalità di controllo che migliorino a loro volta la stabilità del drone durante il volo. Il Reactive Programming Paradigm (Paradigma di Programmazione Reattiva) ci è sembrato essere particolarmente adatto allo scopo, proprio per la sua intrinseca capacità di reazione dinamica alle variazioni dei dati in ingresso. In questa tesi spieghiamo come abbiamo applicato questo paradigma al firmware di Ardupilot e come abbiamo sviluppato nella sua interezza una libreria open-source per il Reactive Programming date le incompatibilità sia software che hardware di quelle già esistenti con le più utilizzate schede di controllo. La valutazione del nostro firmware modificato è stata fatta tramite l’analisi di due piani di volo, il primo eseguito con il firmware originale, il secondo con quello modificato. Dai dati ottenuti si evince che il nostro firmware garantisce, rispetto a quello originale, una maggiore precisione nel posizionamento del drone e una maggiore efficienza per quanto riguarda i tempi di computazione.

Re-engineering of aerial drone autopilot firmware with reactive programming

BREGU, ENDRI
2014/2015

Abstract

Nowadays, drone-related technologies are growing rapidly. Although they are widely used in the military field, their lower costs are enabling their spread both in the professional and in the hobbyist fields. At the same time, a rapid growth of developer communities contributing to drone-related software development is overtaking. The largest open-source community in this field is Ardupilot. Every 5-6 months a new version of their software is released with new features up-to-date with the always evolving new boards. The board, along with the rotors, is the main piece of hardware that composes a drone. The board is equipped with a firmware which is the component in charge of collecting the sensors' output and use it to plan engine adjustments in order to achieve a stable flight. The Ardupilot firmware uses a control loop, which manages sensor readings and executes tasks periodically. These tasks process the sensor data and send information to the engines. The computation on incoming data is performed in any case, even if pieces of data detected by sensors do not vary. We would rather like to run a system that reacts only to new sensor readings, thus optimizing the system response and decreasing the computation time. This improvement enables the execution of a larger number of control tasks giving a further increase in the drone's flight stability. The Reactive Programming Paradigm, with its peculiarity of dynamically reacting to changes in input values, seems to be a natural fit for drone control loops; but nobody applied it to them before. In this thesis we explain how we applied this paradigm to the Ardupilot firmware and how we overcame hardware and software limitations of the existing reactive programming libraries when integrated with the Ardupilot firmware by developing a brand-new open-source library. We evaluate the performance of our custom firmware comparing two different flight plans executed with the original and custom firmware. Thanks to the data obtained, we are able to demonstrate that our custom firmware is more precise at positioning the vehicle and more efficient in terms of computation time compared to the original one.
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-lug-2015
2014/2015
L’uso più comune dei droni ad oggi è stato quello militare, ma i recenti sviluppi tecnologici in questo campo con la conseguente diminuzione dei loro costi ha reso accessibile al pubblico il loro acquisto. Inoltre, questo fenomeno ha dato luogo ad un sostanziale aumento del software per il controllo di droni da parte delle comunità di sviluppatori. Una delle più importanti e più attive oggigiorno è Ardupilot. Un drone è generalmente costituito da due componenti principali: i motori rotazionali e la scheda di controllo. Su quest’ultima viene installato il firmware del drone: un software di controllo che garantisce un volo stabile leggendo i dati forniti dai sensori e utilizzandoli per governare i motori. Nel caso di Ardupilot, il firmware svolge le sue funzioni per mezzo di un ciclo di controllo eseguito periodicamente, che quindi raccoglie dati anche in assenza di una loro variazione. Ci siamo resi conto che sarebbe meglio avere un sistema che, anziché agire in modo periodico, reagisca alle variazioni dei dati in ingresso. Ciò porterebbe ad ottimizzare la risposta del sistema stesso a ridurre il tempo richiesto per la computazione rendendo possibile l’esecuzione di altre funzionalità di controllo che migliorino a loro volta la stabilità del drone durante il volo. Il Reactive Programming Paradigm (Paradigma di Programmazione Reattiva) ci è sembrato essere particolarmente adatto allo scopo, proprio per la sua intrinseca capacità di reazione dinamica alle variazioni dei dati in ingresso. In questa tesi spieghiamo come abbiamo applicato questo paradigma al firmware di Ardupilot e come abbiamo sviluppato nella sua interezza una libreria open-source per il Reactive Programming date le incompatibilità sia software che hardware di quelle già esistenti con le più utilizzate schede di controllo. La valutazione del nostro firmware modificato è stata fatta tramite l’analisi di due piani di volo, il primo eseguito con il firmware originale, il secondo con quello modificato. Dai dati ottenuti si evince che il nostro firmware garantisce, rispetto a quello originale, una maggiore precisione nel posizionamento del drone e una maggiore efficienza per quanto riguarda i tempi di computazione.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2015_07_Bregu.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 6.7 MB
Formato Adobe PDF
6.7 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/108876