Sviluppo del sistema di controllo dell'assetto di un quadricottero con processore STNucleo
1. Università degli Studi di Trieste
Dipartimento di Ingegneria e Architettura
Corso di Studi in Ingegneria Elettronica ed Informatica
Sviluppo del sistema di controllo
dell'assetto di un quadricottero con
processore STNucleo
Candidato:
Andrea Gulberti
Relatore:
Prof. Ing. Stefano Marsi
Correlatore:
Prof. Ing. Sergio Carrato
2. La tesi:
Lavoro svolto da 2 persone
Descritto da 2 Tesi di Laurea differenti
IO PARLERÒ DELLA PARTE SOFTWARE
• Librerie costruite
• Main loop
5. Libreria I2C
Read
• address I2C_slave_addr | 1
• *data pointer to store the data read
• length number of bytes to read
• repeated don’t send the stop at the end
6. Libreria I2C
Read
• address I2C_slave_addr | 1
• *data pointer to store the data read
• length number of bytes to read
• repeated don’t send the stop at the end
Non é implementato il concetto di registro
interno allo slave
8. Libreria I2C_HW
ReadBytes
• devAddr I2C_slave_addr (7 bit)
• regAddr register address
• length number of bytes to read
• *data pointer to store the data read
9. Libreria I2C_HW
ReadBytes
• devAddr I2C_slave_addr (7 bit)
• regAddr register address
• length number of bytes to read
• *data pointer to store the data read
ReadBytes corrisponde in linea di massima a:
1. Scrittura dell’indirizzo del registro che si vuole andare a leggere
2. Lettura del registro
12. Libreria ESC
setThrottle
1. Prende in input un valore float tra 0 e 1
2. Lo trasforma in un PWM di periodo 20 ms, con
ampiezza dell’impulso variabile tra 1.1 e 2.1ms
Perché il range (1.1 , 2.1)?
15. Libreria MPU6050
Un migliaio di righe di codice
Verrá presentata solo una
funzione, ritenuta
particolarmente interessante
16. Libreria MPU6050
Un migliaio di righe di codice
Verrá presentata solo una
funzione, ritenuta
particolarmente interessante
OffsetCalc
Calcola gli offset per accelerometro e giroscopio, in
modo tale da leggere risultati nulli in condizioni
stazionarie
17. Libreria ESC
OffsetCalc
1. Azzera gli offset attuali
2. Imposta la tolleranza:
• 8 per l’accelerometro
• 1 per il giroscopio
3. Calcola la media di 1000 letture
4. Per ogni asse
Se la media è superiore al range di tolleranza impostato
sottrai all’offset una frazione della media letta
torna al punto 3
Altrimenti
prossimo asse
18. Libreria ESC
OffsetCalc
• Ovviamente dev’essere eseguita in condizioni di
stazionarietà
• Potrebbe non convergere nel caso in cui il sensore
legga molto rumore, in tal caso basta incrementare il
range di tolleranza
19. Main
Il main è stato costruito seguendo il modello di Arduino:
• una funzione per il setup
• un loop infinito
20. Main
Il loop consiste in:
1. Calcolo degli angoli
con filtri complementari o di Kalman
2. Calcolo dei controllori
Due PID per pitch e roll, solo proporzionale per yaw
3. Variazione delle velocitá dei rotori in base all’uscita
dei controllori