Realizzazione di un simulatore di elicottero con Simulink e la tecnologia Microsoft Direct3D per il test di un sistema di controllo robusto

M. Caridi, C. Carpinteri, L. Daga

Dipartimento di Informatica e Sistemistica

Università di Roma " La Sapienza"

Via Eudossiana 18 - 00184 ROMA

fax ++39 6 4458 5367

Email: Marco Caridi: marco.caridi@ccesse.it

Leonardo Daga: leonardodaga@libero.it

Sommario

La verifica del corretto funzionamento di un sistema a dinamica non lineare è difficilmente realizzabile analizzando solo le risposte agli ingressi canonici del sistema da controllare. La possibilità di verificare condizioni di funzionamento non canoniche o miste diventa di particolare importanza quando la complessità del modello matematico del sistema da controllare è principalmente dovuta alla instabilità di alcuni suoi modi, alla presenza di non linearità dinamiche e alla variabilità dei suoi parametri rispetto alle condizioni di funzionamento.

Nel presente articolo sarà presentato il procedimento di sintesi di un sistema di controllo per un elicottero, il cui modello matematico non lineare è stato costruito con particolare accuratezza per rappresentare efficacemente le varie condizioni di volo. Per i test di funzionamento basati sulle risposte canoniche è stato implementato il modello matematico dell'elicottero in Simulink, assemblato con il sistema di controllo di tipo robusto progettato con la toolbox mu - Analysis and Synthesis. Per effettuare un test più completo del sistema di controllo è stato realizzato un simulatore di volo in tempo reale utilizzando il Simulink come motore di calcolo e dei blocchi appositamente costruiti per l'interfacciamento con un joystick e l'operatore esterno. Lo stato attuale del sistema viene rappresentato in tempo reale utilizzando un motore grafico tridimensionale realizzato utilizzando la tecnologia Microsoft Direct3D.

La realizzazione del modello matematico, del sistema di controllo e delle componenti per l'interfacciamento con l'operatore saranno qui presentate insieme ad alcune prove di manovra realizzate con il simulatore di volo.

Introduzione

La complessità del modello matematico di un elicottero è principalmente dovuta alla variabilità delle condizioni di volo. Le forze aerodinamiche agenti sui due rotori, sugli impennaggi fissi e sulla fusoliera sono totalmente differenti, a seconda che l'elicottero si trovi in fase di hovering (velocità orizzontale nulla) o si stia muovendo con una velocità non nulla in una qualsiasi direzione. Il modello matematico che risulta dalla modellazione delle forze aerodinamiche è pertanto affetto da pesanti non linearità, quali ad esempio delle variazioni non continue della posizione dei poli stabili ed instabili del modello matematico dovute allo stallo di una o più superfici.

Il controllo di un tale sistema non può prescindere dalle variazioni dei parametri rispetto alle condizioni di volo. Necessita pertanto che il procedimento di sintesi sia capace di generare una legge di controllo stabilizzante e robusta nelle prestazioni.

Per testare la validità del controllo non ci si può limitare al test di risposta indiciale in alcuni punti rappresentativi dell'inviluppo di volo dell'elicottero. Per mezzo di un simulatore di volo del modello non lineare realizzato con il Simulink ed un programma per la visualizzazione di scenari 3D appositamente realizzato su piattaforma Windows, sono state simulate in tempo reale alcune manovre che portano il modello non lineare del velivolo attraverso diverse condizioni di volo. In queste manovre il sistema di controllo robusto del tipo Hinf ha pienamente soddisfatto le richieste di robustezza nelle prestazioni.

Nei paragrafi che seguono saranno mostrati i passi della costruzione del modello matematico, del sistema di controllo e delle interfacce necessarie per il test di robustezza del sistema di controllo.

Il modello matematico dell'elicottero

Aerodinamica. Per il modello matematico [1] sono state adottate alcune assunzioni atte a semplificarne la formulazione per quanto possibile. Per i rotori è stata adottata una modellazione quasi statica, assumendo che la dinamica del rotore sia molto più rapida di quella della fusoliera. Ne consegue che i rotori possono essere descritti da un sistema di equazioni non lineari, algebriche e implicite tempo dipendenti. L'assunzione della quasi staticità è verosimile nelle fasi di volo per cui non sono richieste manovre molto rapide.

Per le altre superfici portanti (impennaggi e fusoliera) si ipotizzano azioni aerodinamiche stazionarie. Ne consegue un set di equazioni algebriche non lineari, tempo indipendenti ed esplicite. Queste equazioni coprono tutto l'intervallo di incidenze tra 0 e 360 gradi per poter riprodurre le situazioni di volo verticale e di stazionamento di cui sono capaci gli elicotteri.

Come si può leggere dalle formule (1), le forze aerodinamiche generate da ognuna di queste superfici viene separatamente calcolata a partire dal valore attuale delle velocità angolari e lineari e dei comandi per generare il valore totale delle forze e dei momenti che agiscono sulla carrozza dell'elicottero, modellizzato come un corpo rigido a 6 gradi di libertà.

equ1 (1)

essendo Q il vettore contenente il valore delle forze e dei momenti risultanti, u la velocità lineare, omega la velocità angolare, ugust il disturbo di velocità (raffica), [thetac,A1,B1] e [thetat] i comandi rispettivamente del rotore principale e di coda, lamdba il vettore iniziale dei parametri su cui si itera nella ricerca della soluzione delle equazioni implicite. Il raggruppamento delle variabili in parentesi quadre rispecchia la costruzione delle funzioni Matlab e il relativo raggruppamento in vettori.

Il calcolo viene eseguito attraverso lo schema Simulink riportato nella figura 1.

fig01

Figura 1: Schema Simulink per il calcolo delle azioni aerodinamiche

Il calcolo delle forze e dei momenti generati dai due rotori necessitano di una procedura di risoluzione iterativa. Il numero di iterazioni richieste viene notevolmente ridotto memorizzando il vettore di parametri lamdba da un ciclo di risoluzione a quello successivo, come è evidente nella figura 1.

Modello matematico non lineare. Il valore totale delle azioni aerodinamiche viene utilizzato per il calcolo della dinamica dell'elicottero, come riportato dalle formule implicite (2).

equ2 (2)

Ne risulta lo schema a blocchi riportato nella figura 2, dove viene mostrato il modo intuitivo in cui la funzione di trasferimento comandi -> posizione + assetto viene realizzata.

fig02

Figura 2: Schema per il calcolo della funzione di trasferimento ingresso - uscita del modello non lineare dell'elicottero

Come l'aerodinamica dell'elicottero, le equazioni per il bilancio delle forze e dei momenti, le equazioni cinematiche e quelle di navigazione contengono un gran numero di non linearità che non possono essere trascurate così come solitamente viene fatto nel caso di un aereo. L'assemblaggio delle equazioni (1) e (2) porta alla funzione di trasferimento non lineare che segue

equ3 (3)

in cui con X è stato indicato il vettore di stato. La (3) verrà utilizzata per le simulazioni del comportamento ingresso -> uscita del modello di elicottero.

Linearizzazione. Il metodo di sintesi del controllo robusto adottato richiede una formulazione lineare del modello matematico dell'elicottero. La linearizzazione dell'equazione (3) premette la determinazione di una condizione di equilibrio (detta condizione di trim) e quindi la posizione dei comandi ctrim=[thetac,A1,B1,thetat]trim per cui fHel(X,ctrim,0) = 0. Tale determinazione può essere realizzata con l'ausilio di uno degli algoritmi di minimizzazione delle funzioni (ad es. fsolve) presenti nel Matlab. La successiva linearizzazione e la determinazione dei modi del sistema da controllare permette di visualizzare il comportamento del modello dinamico dell'elicottero al variare, per esempio, della velocità longitudinale nel caso di moto rettilineo orizzontale. Il sistema linearizzato risultante è riportato nella figura 3, in cui sono riportati gli ingressi del sistema e le variabili di uscita di maggiore importanza agli effetti del controllo.

fig03

Figura 3: Modello linearizzato dell'elicottero : schema degli ingressi e delle uscite di interesse.

Nella figura 4 è stato riportato il grafico degli autovalori del sistema linearizzato al variare della velocità orizzontale longitudinale. Dalla figura sono evidenti le variazioni della posizione degli autovalori stabili ed instabili, particolarmente in corrispondenza delle velocità di transizione (15 e 24m/s) in cui variano in modo discontinuo le condizioni di flusso sulle superfici portanti.

fig04

Figura 4: Variazione degli autovalori del sistema da controllare al variare della velocità. Le cifre nel grafico indicano la velocità, riportata in m/sec.

La sintesi del sistema di controllo robusto Hinf

Nel metodo di sintesi adottato la robustezza del controllore K(s) da progettare viene ottenuta minimizzando la sensibilità della funzione di trasferimento Pwz(s) nei confronti di una perturbazione Delta(s), costruita come nella figura 4. Tale risultato equivale matematicamente alla minimizzazione seguente :

equ4 (4)

Il controllore risultante risulta stabilizzante se gamma < 1 per il valore massimo di perturbazione programmata.

La convenienza del metodo basato sulla costruzione della perturbazione tramite fattorizzazione coprima del sistema da controllare, consiste nella possibilità di avere perturbazioni stabili anche in presenza di modi instabili incerti [2]. La stabilità delle perturbazioni è una condizione necessaria per il progetto di un controllore Hinf.

fig05

Figura 5a e 5b: Schema per la determinazione di un controllore robusto e fattorizzazione del sistema controllare

Il procedimento utilizzato per la sintesi del sistema di controllo si basa sul loopshaping in cui si fissano per tentativi delle funzione di pre e post compensazione. Affinché il numero di tentativi sia il più possibile ridotto, alcuni passi fondamentali devono essere compiuti:

a) Riordinamento e scalatura degli ingressi e delle uscite. Il riordinamento viene effettuato rendendo l'impianto più diagonale possibile in modo che una struttura diagonale di pre e post compensazione conduca ad una sintesi più efficiente. I fattori di scala vengono scelti in modo da riflettere le capacità relative degli attuatori e l'importanza relativa delle uscite.

Il metodo di sintesi adottato si applica preferibilmente ad impianti quadrati mentre come mostra la figura 3 il sistema da controllare ha 4 ingressi e 7 uscite. Per ridurre il numero delle misure a 4 è stata operata la scelta di mescolare le uscite analoghe che hanno contenuti complementari in frequenza (nel nostro caso phi e P, theta e Q, h' e az) seguendo l'approccio del filtro complementare [1]. Per quanto riguarda il riordinamento, gli ingressi e le uscite sono state disposte seguendo il legame intuitivo dell'effetto di ogni attuatore sulle variabili di stato, ottenendo lo schema di figura 6.

fig06

Figura 6: Schema per il riordinamento di ingressi e uscite

b) Scelta delle funzioni peso di pre e post compensazione. Il metodo di sintesi si basa su una parte di loopshaping tramite compensazione e una parte di irrobustimento del sistema risultante ricorrendo alla minimizzazione data nella formula (4). Detto G(s) il sistema da controllare e W1(s) e W2(s) le funzioni di post e pre compensazione, si devono avere per i valori singolari della funzione compensata Gs(s) = W2GW1 le seguenti caratteristiche:
alto guadagno al di sotto della banda passante desiderata
basso guadagno al di sopra della banda passante desiderata
pendenza dei valori singolari compresa tra 20 e 40 dB/dec in corrispondenza della frequenza di taglio per assicurare buoni margini iniziali di stabilità.

Le funzioni di compensazione scelte riflettono i criteri classici di selezione dei sistemi ad un ingresso ed una uscita, con l'inserimento del classico integratore allo scopo di migliorare la precisione della risposta stazionaria.

equ5 (5)

c) Allineamento dei valori singolari alla banda passante. Si determina una matrice reale WA detta di allineamento tale che G(jw o)WA ~= 1 essendo wo la frequenza di crossover desiderata per il sistema compensato. I benefici di questo allineamento sono molteplici [2] tra i quali il miglioramento del profilo delle funzioni di trasferimento a ciclo chiuso e il contemporaneo attraversamento alla frequenza desiderata per tutti i valori singolari del sistema compensato. La matrice di allineamento può essere ottenuta utilizzando la funzione align del Multivariable Toolbox del Matlab.

d) Calcolo del controllore Kinf(s) . Il controllore che realizza la minimizzazione (4) viene calcolato utilizzando la funzione ncfsyn della toolbox mu - Analysis and Synthesis del Matlab. Nel caso in cui il risultato della minimizzazione non sia soddisfacente alcuni ritocchi devono essere fatti sulle sole funzioni di compensazione W1 e W2.

Nelle figure che seguono sono mostrati gli andamenti dei valori singolari della funzione di trasferimento a ciclo aperto e a ciclo chiuso del sistema da controllare, quella del sistema pre compensato, quella dopo l'allineamento e infine quella in cui viene inserito il controllore robusto.

fig07a

Figura 7a: Valori singolari delle funzioni di trasferimento a ciclo aperto e a ciclo chiuso del sistema da controllare durante le varie fasi di progetto : senza e con la compensazione.

fig07b

Figura 7b: Valori singolari delle funzioni di trasferimento a ciclo aperto e a ciclo chiuso del sistema da controllare durante le varie fasi di progetto: allineamento a 10 rad/sec e con il compensatore Kinf.

Dalle figure 7a e 7b risulta chiara la capacità delle funzioni di compensazione W1(s) e W2(s) di modellare le funzioni di sensibilità, della matrice di allineamento WA di uniformare la risposta del sistema compensato in prossimità della banda passante e della funzione Kinf(s) di ridurre i picchi della funzione di sensibilità che compromettono la robustezza del controllo.

Il modello in Simulink del sistema controllato

Modello linearizzato. Determinata la funzione di trasferimento del controllore Kinf(s) si procede con l'assemblaggio del sistema controllato come mostrato in figura 8. Nella figura è stata indicata con W1 la funzione di pre compensazione e con KW2 il prodotto Kinf(s)W2 della funzione di trasferimento del controllore e della funzione di post compensazione. KW20 indica una matrice di guadagno pari alla funzione KW2 valutata per jw = 0, utilizzata per rendere possibile lo spostamento di KW2 nella catena di controreazione.

fig08

Figura 8: Schema del sistema di controllo per il modello linearizzato dell'elicottero.

Il blocco KW2 è stato spostato in catena di controreazione per evitare che le alte frequenze del riferimento entrino direttamente nelle funzione di controllo. Il secondo e terzo ingresso sono stati invertiti in segno per rispettare il modo intuitivo in cui il pilota vede gli angoli di rotazione del velivolo.

Come esempio della bontà del controllo, la simulazione di una risposta ad una variazione a gradino del riferimento sull'angolo di beccheggio è riportata in figura 9. Il sistema al quale si fa riferimento corrisponde alla linearizzazione del modello matematico dell'elicottero in situazione di hovering (velocità orizzontale nulla). Si osservi che per un elicottero, la manovra di inclinazione verso avanti (angolo di beccheggio negativo) corrisponde ad una richiesta di accelerazione verso avanti. È da notare inoltre la nascita di una velocità negativa diretta verso l'asse corpo z (positiva verso il basso) che non viene contrastata dal controllo come variazione di quota in quanto si tratta di una velocità descritta in assi corpo. Alla variazione a gradino del riferimento è stata sovrapposta la risposta del sistema controllato ad una raffica di velocità laterale. Agli angoli di Eulero sono state sommate le quantità di trim necessarie per mantenere le condizioni di volo iniziali.

fig09c

Figura 9: Risposta ad una variazione ad impulso finito del riferimento ed ad una raffica di velocità laterale per il sistema lineare.

Modello non lineare. Nelle risposte del sistema non lineare, la presenza degli accoppiamenti non lineari tra le variabili di stato complica alquanto il ruolo del sistema di controllo. Inoltre, le caratteristiche del modello matematico dell'elicottero variano decisamente quando l'elicottero si discosta dalla situazione di hovering. Lo schema a blocchi Simulink utilizzato per la simulazione della risposta del sistema non lineare è riportato nella figura che segue, dove la presenza dei blocchi yTrim e uTrim è necessaria per compensare le condizioni iniziali di hovering nelle quali si trova l'elicottero.

fig10

Figura 10: Schema del sistema di controllo per il modello non lineare dell'elicottero.

La simulazione di una risposta ad una variazione a gradino del riferimento sull'angolo di beccheggio è riportata in figura 11, analoga a quella riportata in figura 9. Per evidenziare le caratteristiche non lineari del sistema controllato è stata proposta una variazione a gradino del riferimento e un'intensità della raffica laterale pari a 10 volte quella simulata sul sistema lineare.

fig11c

Figura 11: Risposta ad una variazione ad impulso finito del riferimento ed ad una raffica di velocità laterale per il sistema non lineare.

L'accoppiamento tra le variabili di stato diventa sempre più evidente con il crescere della velocità di avanzamento U, come mostra l'accoppiamento tra le uscite al termine dell'impulso su theta + kQQ contrapposto al disaccoppiamento evidente all'inizio dell'impulso.

L'efficacia e la robustezza del sistema di controllato sono state verificate sia nel tempo sia nella frequenza [1], fornendo i risultati soddisfacenti evidenziati nella risposta in condizioni variabili della figura 11.

Il programma di visualizzazione realizzato con Microsoft Direct3D

Nel progetto di un elicottero il test del sistema di controllo ed in generale della manovrabilità si effettua facendo eseguire al velivolo una serie di manovre elementari come spostamenti laterali finiti o virate corrette.

Un metodo per eseguire il test è evidentemente quello usato nei paragrafi precedenti, dove un ingresso canonico viene utilizzato come ingresso del sistema ed i risultati vengono semplicemente riportati in un grafico. Un metodo più efficace, utile per testare la robustezza del sistema di controllo a particolari situazioni non riconducibili a risposte ad ingressi canonici, è l'utilizzazione di un simulatore completo in cui un operatore interagisce in tempo reale sul sistema controllato avendo come feedback la visione 3D della situazione in cui si trova l'elicottero.

Un programma versatile di visualizzazione 3D accoppiato ad un programma modulare di simulazione come il Simulink sarebbe stato improponibile fino a qualche anno fa per macchine semplici come un personal computer. La possibilità di superare le limitazioni intrinseche delle macchine è stata offerta dall'evoluzione incrociata della tecnologia hardware e software nel campo della visualizzazione di ambienti tridimensionali.

Nel campo hardware sono tuttora disponibili numerose schede con acceleratori grafici 3D molto potenti, solitamente sfruttati nel campo dell'intrattenimento multimediale. Per le macchine PC la rivoluzione software è stata costituita soprattutto dalla uscita delle librerie grafiche Microsoft Direct3D disponibili tuttora solo per i sistemi operativi Windows 95 ed NT. La eccezionalità delle librerie è principalmente costituita dalla possibilità di accesso a basso livello del software sulle funzioni e sulla memoria dell'hardware grafico, riducendo notevolmente i tempi di visualizzazione. Inoltre, la possibilità di programmare la visualizzazione con linguaggi ad alto livello utilizzando delle macro istruzioni per funzioni come la rotazione, l'illuminazione o lo spostamento del punto di vista non ha uguali come risultati in termini di qualità del prodotto finale per elaboratori di fascia medio bassa.

Nel suo insieme, il simulatore è composto dal modello matematico non lineare realizzato con il Simulink, analogo a quello mostrato in figura 10, da un programma preposto alla lettura degli ingressi dal joystick e il programma che gestisce la visualizzazione.

Visualizzazione dell'ambiente 3D. Il programma di visualizzazione è un server DDE realizzato in C/C++ utilizzando le istruzioni della menzionata libreria Direct3D. Nel programma l'oggetto da visualizzare può essere costruito seguendo alcune semplici regole e può prevedere più corpi in movimento e in rotazione reciproca. Attraverso il canale DDE il server rimane in attesa dell'assetto corrente dell'elicottero e sugli angoli di comando del rotore (viene visualizzata anche l'inclinazione del rotore). Il Simulink si collega in funzione di client inviando ad ogni passo di campionamento un vettore contenente i dati sull'assetto corrente utilizzando una s-function, come mostra la figura 12.

fig12

Figura 12: Schema della connessione DDE tra i componenti del simulatore

Lettura del joystick. Il programma di lettura del joystick è stato realizzato in C/C++ utilizzando le istruzioni di Win32 (la libreria C su cui è costruito il sistema operativo Windows) preposte all'uso dei dispositivi di puntamento. Si tratta di un programma server DDE che fornisce su richiesta la posizione corrente del joystick secondo una scala prefissata. Il Simulink (che funziona da client) ad ogni istante di campionamento, attraverso una richiede il valore della posizione dei comandi e la interpreta come richiesta in termini di angolo di beccheggio e di angolo di imbardata. Attraverso la tastiera è inoltre possibile modificare il valore attuale della quota e dell'angolo di imbardata dell'elicottero. Ad ogni istante il programma server verifica se il tasto corrispondente ad uno dei comandi viene premuto e in tal caso si aumenta (o si diminuisce) il valore della velocità verticale o della velocità di rotazione richiesta.

Temporizzazione. Per rendere verosimile l'interazione tra operatore e simulatore è necessario temporizzare correttamente il Simulink nel calcolo della dinamica dell'elicottero. Compito ulteriore del programma server di lettura del joystick è di fornire anche il riferimento temporale agganciando l'istante di simulazione al tempo reale fornito dall'orologio di Windows, che può avere precisioni che arrivano fino ad 1 msec. Tale sincronizzazione può essere realizzata attraverso una s-function in cui la risposta alla flag 4 coincide con l'istante attuale fornito dall'orologio in tempo reale.

Il tempo di calcolo dipende ovviamente dal numero di processi in corso sulla stessa macchina ma facilmente, anche con un sistema complesso come quello dell'elicottero + simulatore, è possibile ottenere più di 40 frame/sec su una macchina del tipo PC con processore Pentium 166, 32 Mb di RAM e una scheda Matrox Mistique con 2Mb di memoria (compatibile con le specifiche Direct3D). Si deve tenere presente che le capacità delle schede video attuali sono migliorate radicalmente ed anche nelle schede più semplici è possibile trovare dei processori per l'accelerazione grafica 3D.

Un esempio di manovra

Per mostrare le capacità grafiche del sistema di visualizzazione è stata simulata una semplice manovra di spostamento laterale finito (sidedtep). I comandi impartiti per compiere la manovra sono due impulsi sull'angolo di rollio in direzioni opposte, generando la traiettoria descritta dai grafici della fig.13. La sovrapposizione delle posizioni assunte dall'elicottero durante la manovra è riportata, secondo due punti di vista differenti, nella fig. 14.

fig13c

Figura 13: Risposta dell'elicottero nella simulazione di manovra di spostamento laterale.

fig14a

fig14b

Figura 14: Visualizzazione tridimensionale della risposta dell'elicottero nella simulazione di manovra di spostamento laterale secondo diversi punti di vista.

Conclusioni

Il progetto di un sistema di controllo per un processo fisico molto complesso richiede un lavoro oneroso in termini di tempo di sviluppo di ogni singola parte. La possibilità di poter lavorare secondo livelli di astrazione successivi consente un'organizzazione migliore e la localizzazione degli errori di sintesi che si presentano ad ogni approfondimento di ogni singolo componente del progetto. In questo contesto, un ambiente di progetto ad elevata modularità e ad alta possibilità di astrazione come il Simulink è destinato a sicuro successo, in special modo se in tale ambiente è presente la possibilità di interfacciare parti simulate del processo fisico con dispositivi reali onde simulare il reale funzionamento del processo controllato.

A dimostrazione di quanto l'ambiente di progetto riesca a semplificare il risultato nonostante la complessità dell'obbiettivo, in questo articolo viene riportato il progetto di un simulatore di volo di un elicottero (in cui la complessità del modello matematico è fuori di dubbio) e del relativo sistema di controllo, di un semplice sistema di comando e di un sistema di visualizzazione 3D realizzato con componenti Microsoft.

Riferimenti

[1] L. Daga, 'Dalla simulazione al controllo robusto del modello non lineare di un elicottero monorotore tramite sensori d'assetto GPS/INS', Tesi di dottorato, Roma, Novembre 1997.

[2] R. A. Hyde, 'Hinf Aerospace Control Design', Springer Verlaag, Berlin 1996.

[3] AA. VV. , 'Matlab, The User Guide', The Mathworks 1996.

[4] A. R. S. Bramwell , 'Helicopter Dynamics', Edward Arnold, London 1976.

Questa pagina stata aggiornata il 11/02/01.

Leonardo Daga's Warehouse, http://leonardodaga.insyde.it
Send any Comments to: leonardo.daga@gmail.com