Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per...

130
1 Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: Mrs Jacqueline Wilkie, ICC, Strathclyde University, Glasgow. Proff. Mario Innocenti, Aldo Balestrino, Alberto Landi, Ing. Francesco Nasuti, DSEA, Ingegneria, Università di Pisa.

Transcript of Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per...

Page 1: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

1

Un sentito ringraziamento per l’assistenza

prestata durante lo svolgimento del seguente

lavoro a:

• Mrs Jacqueline Wilkie,

ICC, Strathclyde University, Glasgow.

• Proff. Mario Innocenti, Aldo Balestrino, Alberto Landi,

Ing. Francesco Nasuti,

DSEA, Ingegneria, Università di Pisa.

Page 2: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

2

1. INTRODUZIONE..................................................................................................................................... 3

2. MODELLO NON LINEARE................................................................................................................... 5

2.1 MODELLO ............................................................................................................................................ 72.2 ATTUATORI.......................................................................................................................................... 82.3 RIDUZIONE A 5 INGRESSI ..................................................................................................................... 92.4 DISACCOPPIAMENTO.......................................................................................................................... 11

2.4.1 Piano orizzontale. ..................................................................................................................... 132.4.2 Piano verticale .......................................................................................................................... 162.4.3 Matrice di disaccoppiamento.................................................................................................... 19

3. MODELLO LINEARE .......................................................................................................................... 22

3.1 STATI................................................................................................................................................. 223.2 CONTROLLABILITÀ ED OSSERVABILITÀ ............................................................................................. 233.3 AUTOSTRUTTURA .............................................................................................................................. 263.4 VALORI SINGOLARI ........................................................................................................................... 343.5 RIDUZIONE DEL MODELLO ................................................................................................................ 38

4. CONTROLLO H∞∞∞∞ ................................................................................................................................. 45

4.1 FORMULAZIONE STANDARD DEL PROBLEMA..................................................................................... 454.2 SELEZIONE DELLE FUNZIONI DI PESO ................................................................................................. 494.3 OTTIMIZZAZIONE DELLE FUNZIONI DI PESO........................................................................................ 53

4.3.1 Funzione “hidx”. ...................................................................................................................... 564.3.2 Funzione “hopt”. ...................................................................................................................... 71

5. RISULTATI ............................................................................................................................................ 76

5.1 SENSITIVITÀ E CONTROLLO DELLA SENSITIVITÀ. ............................................................................... 765.2 IMPIANTO A CICLO CHIUSO LINEARIZZATO......................................................................................... 775.3 IMPIANTO NON LINEARE CONTROLLATO ............................................................................................ 80

6. CONTROLLO LQG............................................................................................................................... 90

6.1 TEORIA .............................................................................................................................................. 906.2 ANALOGIE CON IL PROBLEMA H∞ ...................................................................................................... 926.3 DIFFERENZE....................................................................................................................................... 946.4 RISULTATI ......................................................................................................................................... 94

6.4.1 Sensitività e sensitività di controllo .......................................................................................... 956.4.2 Impianto a ciclo chiuso linearizzato ......................................................................................... 96

6.5 IMPIANTO NON LINEARE CONTROLLATO ............................................................................................ 98

7. CONTROLLO ADATTIVO ................................................................................................................ 102

7.1 IDENTIFICAZIONE :........................................................................................................................... 1037.2 ALGORITMI DI IDENTIFICAZIONE MIMO : ....................................................................................... 104

7.2.1 Funzione arx3 ......................................................................................................................... 1107.2.2 Funzione rarx3........................................................................................................................ 112

7.3 CONFRONTO .................................................................................................................................... 1167.4 FUNZIONI PER L’ADATTAMENTO...................................................................................................... 1207.5 RISULTATI ....................................................................................................................................... 125

8. CONCLUSIONI.................................................................................................................................... 127

Page 3: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

3

1. Introduzione

I veicoli subacquei a rimorchio (T.U.V.), correntemente utilizzati sono per lo più passivi.

A causa di errori nella rotta della nave madre, correnti, e vari fattori di disturbo non

prevedibili, desta interesse la possibilità di munirli di un controllo attivo.

Un lavoro per lo sviluppo di un modello matematico non lineare per la simulazione

dinamica di un tale veicolo, è stato svolto in [i].

Lo scopo della presente tesi è sviluppare un sistema di controllo robusto ed affidabile che

consente a un T.U.V. stabilità dell’assetto di navigazione ed un accurato inseguimento delle

traiettorie di riferimento.

Il problema non è semplice per vari motivi:

1) Il comportamento non lineare sia del veicolo che del cavo di traino.

2) La natura multivariabile del sistema, che si manifesta con un alto livello di interazione

tra i canali di comando.

3) L’alto livello di incertezza dovuto ad approssimazioni nel calcolo delle forze

idrodinamiche , a variazioni dei parametri, e a fattori di disturbo non conosciuti

introdotti nella linearizzazione del modello non lineare.

L’obiettivo prefissato è stato comunque raggiunto utilizzando il metodo H∞,che insieme

alla µ-sinthesys è diventato il metodo standard per affrontare problemi di controllo nei

sistemi multivariabili.

Per trovare un controllore H∞, per il sistema, è stato studiato il problema generale di

selezione delle funzioni di peso, ed è stato ricavato un algoritmo in codice Matlab per la

loro ottimizzazione.

Tale algoritmo minimizza una funzione costo che include, per ciascun canale, sia termini

appartenenti al dominio della frequenza (sensitività, frequenza di taglio, ecc), sia termini

appartenenti al dominio del tempo (settling time, overshoot, ecc).

Page 4: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

4

Un controllore H∞ è stato quindi trovato con l’aiuto dell’algoritmo sopra detto, ed è stata

verificata la sua validità sull’impianto non-lineare, definendo il range del campo operativo

in cui, essendo completamente affidabile, può essere utilizzato.

Allo scopo di confrontare il controllo H∞ con un controllo ottimo standard, sono state

messe in luce le analogie e le differenze tra la metodologia H∞ e quella LQG, quindi un

controllo di tipo LQG è stato realizzato e le sue prestazioni sull’ impianto sono state

analizzate e confrontate con le prestazioni del controllore H∞ precedentemente ottenuto.

Infine, al fine di realizzare un controllo H∞ di tipo adattivo, il problema dell’ identificazione

ricorsiva di impianti multivariabili è stato preso in considerazione, realizzando due diversi

algoritmi di natura parallela per l’identificazione multivariabile.

Tali algoritmi, pur essendo confrontabili con quelli presenti nel System Identification

Toolbox, non hanno tuttavia dato risultati soddisfacenti ai fini del controllo adattivo, percui

sono stati indicati altri possibili metodi per realizzare tale tipo di controllo.

Page 5: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

5

2. Modello Non lineare

Il modello non-lineare utilizzato è il risultato del lavoro fatto in [i] ed è riferito a un veicolo

con due gruppi di pinne trasversali, ciascuna delle quali può muoversi indipendentemente

dalle altre.( vedi Fig. 2-1 ).

Fig. 2-1

Page 6: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

6

• VEICOLO

Il veicolo viene considerato come corpo rigido tridimensionale.Il verso di rotazione di

ogni pinna si assume positivo quando è in senso antiorario lungo il proprio asse,ed il

relativo angolo viene indicato con δ; con δw1, per esempio, si indica l’angolo

dell’pinna relativo all’asse w1.

Indicheremo con “B” la terna di riferimento solidale al corpo.

• CAVO

Il cavo è modellato con un numero variabile di segmenti inestensibili collegati da

giunti sferici; la massa di ogni segmento si assume essere alla fine del segmento stesso,

nell’ estremità più vicina al veicolo.

Tutte le forze relative al segmento si conviene siano applicate a questa massa.

È stato considerato un cavo di 100mt diviso in 5 segmenti.

• NAVE

Il punto di attacco della linea di rimorchio alla nave si assume essere nella posizione

[0,0,0] della terna inerziale “E”, fissata a terra; si assume inoltre costante la velocità

della nave: “v-ship”.

Page 7: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

7

2.1 Modello

Il modello può essere scritto in questa forma (con riferimento alle coordinate E):

& ( ) ( , , , , )u M q F q u v vc= δ Eq 2-1

dove:

• u è il vettore contenente la velocità angolare del veicolo (3 numeri) e la velocità di

ogni elemento del cavo, riferita quest’ultima al relativo segmento. Da notare che

vista l’inestensibilità dei segmenti, saranno sufficienti soltanto due numeri per

indicare la velocità di ogni elemento ( vedi [i] ).

• q è il vettore contenente l’assetto del veicolo (3 numeri) e, l’ orientamento di ogni

elemento del cavo rispetto alla terna E. Anche qui, sono sufficienti soltanto due

numeri per indicare la posizione di ogni elemento ( vedi [i] ).

• δδδδ è il vettore contenente la posizione di ogni pinna.

• v è la velocità della nave.

• vc è la velocità della corrente.

• M(q) è la matrice contenente i termini inerziali del sistema.

• F è il vettore delle forze che operano sul sistema.

Questo modello non-lineare viene scritto come Matlab s-function.

• ingressi :

a) δδδδ (vettore 8 per 1)

b) velocità e accelerazione della nave (vettore 6 per 1).

• stato :

Contiene lo stato del sistema, formato da entrambi i vettori q ed u descritti

sopra, è quindi, un vettore di 2*(3+2*N) elementi dove N è il numero dei

segmenti del cavo.

Poichè il cavo è diviso in 5 segmenti, il modello ha 26 stati.

Lo stato iniziale viene automaticamente calcolato a partire dal vettore q nel

punto di equilibrio desiderato.

Page 8: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

8

Il punto di equilibrio si trova memorizzato in un file.Sono disponibili le funzioni

per il calcolo del punto di equilibrio e per l’avvio della s-function.

• uscite:

a) posizione del veicolo rispetto alla terna E.

b) assetto del veicolo rispetto alla terna E.

c) velocità e accelerazione del veicolo rispetto alla terna B.

d) velocità angolare ed accelerazione angolare del veicolo rispetto alla terna B.

e) posizione di ogni elemento del cavo.

f) ampiezza, angolo di attacco e angolo di slittamento della forza trainante

agente sul veicolo, rispetto alla terna B.

La posizione del veicolo rispetto alla terna E è stata considerata misurabile nelle

sue 3 componenti.

2.2 Attuatori

Ogni attuatore è modellato come in Fig. 2-2:

Fcn = 0.5 − ( ((u[2] <= (−0.4363))*(u[1] < 0)) + ((u[2] >= 0.4363)*(u[1] > 0)) )

1

out_1

1

in_1

f(u)

Fcn

Mux

Mux 0

Constant SwitchSaturation

86.0285

s+20Transfer Fcn

1/s

Integrator

−+

Sum

Fig. 2-2

Il primo blocco di saturazione limita la velocità angolare (±10 rad/sec).

Il secondo gruppo, composto dalla funzione e dall’interruttore, limita l’angolo della relativa

pinna (±0.43 rad).

Se angolo e velocità si trovano entro questi limiti, il guadagno che si ottiene è molto vicino

ad uno.

Page 9: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

9

2.3 Riduzione a 5 ingressi

Nel modello base ogni pinna può muoversi indipendentemente dalle altre e pertanto si hanno

8 superfici manovrabili.

Tuttavia, per ottenere un parziale disaccoppiamento del sistema, e per ridurre il numero di

attuatori è stato deciso di considerare accoppiate tutte le pinne contrapposte, eccetto la

coppia orizzontale anteriore, come descritto in seguito.

Il blocco Simulink chiamato “5_2_8” fornisce in uscita l’angolo di ogni pinna (δw1 ... δt4 )

prendendo in ingresso solamente cinque numeri (δ1..δ5):

1. δw1 = -δ1 -δ4

2. δw2 = -δ1 +δ4

3. δw3 = δ2

4. δw4 = -δ2

5. δt1 = -δ5

6. δt2 = δ5

7. δt3 = δ3

8. δt4 = -δ3

Da notare che in questo modo diventa possibile utilizzare per le ultime 6 pinne soltanto 3

attuatori invece di 6.

Per esempio, lo stesso attuatore può fornire gli angoli δ3 e -δ3 per la coppia verticale di

pinne δt3 e δt4.

Quindi il numero totale di attuatori può essere ridotto da 8 a 5.

Page 10: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

10

Il significato dei cinque comandi è quindi questo:

1. δ1 : comando della rotazione attorno all’asse x.

2. δ2 : comando delle pinne verticali anteriori.

3. δ3 : comando delle pinne verticali posteriori.

4. δ4 : comando delle pinne orizzontali anteriori.

5. δ5 : comando delle pinne orizzontali posteriori.

Da notare che i comandi δ2 e δ3 causano un movimento nel piano orizzontale (deriva lungo

y ed imbardata), ed i comandi δ4 e δ5 causano un movimento nel piano verticale (deriva

lungo z e beccheggio).

Il blocco Simulink chiamato “attuatori” fornisce quindi 5 attuatori necessari per le 8 pinne,

come mostrato in Fig. 2-3

−1

Gain5

Single Actuator angle & speed saturation

Act_4

−1

Gain6

Single Actuator angle & speed saturation

Act_5

−1

Gain4

Single Actuator angle & speed saturation

Act_3

1

in_1

Demux

Demux

1

out_1

Mux

Mux2

Single Actuator angle & speed saturation

Act_2

Single Actuator angle & speed saturation

Act_1

Fig. 2-3

Page 11: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

11

2.4 Disaccoppiamento

Per le variabili di posizione ed assetto saranno utilizzate le seguenti notazioni:

• “roll”(rollio): la rotazione ϕ lungo l’asse x nella terna B.

• “sway”(slittamento): lo spostamento Y lungo l’asse y nella terna E.

• “yaw”(beccheggio): la rotazione ψ lungo l’asse z nella terna B.

• “heave”(sollevamento): lo spostamento Z lungo l’asse z nella terna E.

• “pitch”(imbardata): la rotazione θ lungo l’asse y nella

terna B.

È evidente, che avendo un numero n di ingressi, non è possibilie controllare

indipendentemente più di n di uscite, dovremo quindi selezionare tra tutte le uscite

disponibili, le cinque che vogliamo controllare.

Per applicazioni quali il controllo delle tubazioni o dei cavi sul fondo del mare, è molto

importante fornire una buona manovrabilità nell’ assetto (roll, pitch e yaw) e un buon

controllo della posizione, almeno lungo gli assi x ed y della terna E.

A questo punto è necessario verificare se sia veramente possibile, utilizzando i cinque

ingressi descritti sopra, controllare indipendentemente roll, pitch, yaw, sway ed heave.

Questo può essere appurato linearizzando l’impianto con questo insieme di ingressi e uscite

intorno ad un punto di lavoro, e controllando il rango (o il numero di condizione) della

funzione di trasferimento nell’intervallo di frequenza in cui vogliamo controllare il veicolo.

Se il rango non è pieno (o se il numero di condizione, che è il rapporto tra il più alto ed il

più basso dei valori singolari, è molto alto) significa che vicino al punto operativo scelto, il

problema è mal condizionato, vale a dire che non saremo in grado di controllare

indipendentemente tutte le uscite con gli ingressi selezionati, e quindi dovremo considerare

la possibilità di aumentare il numero di ingressi oppure diminuire il numero di uscite da

controllare.

Page 12: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

12

Il punto di lavoro prescelto è quello in cui sia la nave che il veicolo si muovono ad una

velocità di 3 m/s nella direzione dell’asse x, della terna E.

Come potremo vedere nel capitolo 3, la funzione di trasferimento in questo punto operativo

ha rango pieno (ed un numero di condizione di 44 dB), questo significa che vicino a questo

punto sarà possibile controllare l’assetto e le due variabili di posizione.

Ad ogni modo, per fornire una visione più ampia del comportamento del veicolo, faremo un

analisi dell’assetto e della posizione, per un certo numero di punti di lavoro, ognuno dei

quali è un punto di equilibrio risultato da una differente combinazione di valori di ingresso

δ2..δ5.

Page 13: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

13

2.4.1 Piano orizzontale.

In questo esempio, ogni punto di equilibrio si ottiene con un valore diverso degli ingressi

δ2 e δ3 mentre δ1, δ4 e δ5 sono fissati a zero.

Per tutti questi punti operativi, roll, pitch ed heave rimangono fissati a zero, quindi gli

ingressi δ2 e δ3 incidono soltanto sulla posizione nel piano orizzontale.

Il valore assoluto dello sway è rappresentato in Fig. 2-4

−20

−10

0

10

20

−20−10

010

200

10

20

30

40

delta 2delta 3

abs(

Y)

sway

Fig. 2-4

Si nota facilmente che c’è una linea, (chiamata linea dello“zero-sway”), in cui lo sway è

zero, quindi se noi muovessimo le pinne in modo da spostare il punto di equilibrio su

questa linea, il veicolo sarebbe soggetto ad una rotazione (yaw) senza nessun altro

movimento.

Per lo stesso punto di equilibrio, la Fig. 2-5 mostra il valore assoluto dello yaw.

Page 14: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

14

−20−10

010

20

−20

−10

0

10

200

5

10

15

20

delta 2delta 3

abs(

Psi

)

yaw

Fig. 2-5

Anche qui, c’è una linea (linea “zero yaw”), in cui lo yaw è zero, quindi, se muovessimo le

pinne in modo da far rimanere su questa linea il punto di equilibrio, il veicolo sarebbe

soggetto ad uno slittamento (sway) senza nessun altro movimento.

La possibilità di avere lo yaw senza sway o lo sway senza yaw non si sarebbe ottenuta se il

veicolo avesse avuto soltanto una coppia di pinne per il movimento sul piano orizzontale,

(per esempio soltanto la coppia di pinne di coda o soltanto la coppia di pinne anteriori),

invece di due coppie.

Questo fatto suggerisce due cose:

a) se vogliamo controllare sway e yaw indipendentemente, non possiamo unire gli ingressi

δ2 e δ3 per avere un solo ingresso indipendente (per esempio non possiamo utilizzare

solamente δ2 e porre δ3 = K*δ2).

Page 15: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

15

b) Possiamo provare a disaccoppiare yaw e sway utilizzando due comandi diversi

direttamente collegati con δ2 e δ3:

δs (sway command) → causa un movimento lungo la linea“zero yaw”,

cioè uno sway senza yaw.

δy (yaw command) → causa un movimento lungo la linea “zero sway”

cioè, uno yaw senza sway.

Questo si può ottenere utilizzando una matrice che trasforma questi nuovi comandi nella

corretta combinazione di δ2 e δ3:

[ ] [ ][ ]δδ

δδ

2

3 1 1=

a b s

yEq 2-2

δ2 = a * δ3 è l’equazione della linea zero yaw

δ2 = b * δ3 è l’equazione della linea zero sway

Per il punto di equilibrio di riferimento il valore dei due coefficenti è:

a = -2.56

b = 2.63

Page 16: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

16

2.4.2 Piano verticale

Si può procedere con la stessa analisi per il piano verticale.

In questo esempio, ogni punto di equilibrio viene ottenuto con diversi valori per gli ingressi

δ4 e δ5 mentre δ2, δ3 e δ1 sono fissati a zero.

Per tutti questi punti operativi, roll sway e yaw rimangono fissati a zero, e quindi gli

ingressi δ2 e δ3 incidono soltanto sulla posizione nel piano verticale.

Il valore assoluto dell’ heave è mostrato in Fig. 2-6:

−20−10

010

20

−20

−10

0

10

200

10

20

30

40

50

delta 4delta 5

abs(

Z)

heave

Fig. 2-6

C’è una linea “zero-heave” dove l’heave è zero, e quindi se muoviamo le pinne in modo

tale da spostare il punto di equilibrio su questa linea, il veicolo sarà soggetto ad una

rotazione attorno all’asse y (pitch) senza nessun altro movimento.

Page 17: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

17

Per lo stesso punto di equilibrio, la Fig. 2-7 mostra il valore assoluto del pitch.

−20−10

010

20

−20

−10

0

10

200

5

10

15

20

delta 4delta 5

abs(

The

ta)

pitch

Fig. 2-7

Si può vedere una linea “zero-pitch”, dove il pitch è zero, quindi, se muoviamo le pinne in

modo da far rimanere il punto di equilibrio su questa linea, il veicolo sarà soggetto ad uno

spostamento lungo l’asse z (heave) senza alcun altro movimento.

Come già visto nel piano orizzontale, abbiamo che:

a) Se vogliamo controllare indipendentemente gli angoli di heave e di pitch, non possiamo

collegare gli ingressi δ4 e δ5 sotto un unico ingresso indipendente (per esempio

utilizzando soltanto δ4 e ponendo δ5 = K*δ4).

b) Possiamo provare a disaccoppiare pitch ed heave utilizzando due comandi differenti

collegati direttamente con δ4 e δ5:

Page 18: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

18

δh (heave command) → causa un movimento lungo la linea “zero

pitch”, cioè, uno heave senza pitch.

δp (pitch command) → causa un movimento lungo la linea “zero

heave” , esattamente, un pitch senza heave.

Questo si può ottenere utilizzando una matrice che trasformi questi nuovi comandi in una

corretta combinazione di δ4 e δ5:

δδ

δδ

4

5 1 1

=

c d h

p

Eq 2-3

δ4 = c * δ5 è l’equazione della linea “zero pitch”

δ4 = d * δ5 è l’equazione della linea “zero heave”

Per il punto di equilibrio di riferimento il valore dei due coefficenti è:

c = -2.56

d = 1.69

Page 19: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

19

2.4.3 Matrice di disaccoppiamento

Se mettiamo insieme le due matrici per il disaccoppiamento nei piani orizzontale e

verticale, otteniamo una matrice 5 per 5 che potrà essere utilizzata così:

δδδδδ

δδδδδ

1

2

3

4

5

1 0 0 0 0

0 0 0

0 1 1 0 0

0 0 0

0 0 0 1 1

=a b

c d

r

s

y

h

p

Eq 2-4

In questo modo, il nuovo vettore di ingressi δr.. δp, viene trasfomato nel desiderato vettore

di comandi δ1..δ5.

Si può dimostrare che la sensitività dei coefficienti (a, b, c, e d) rispetto alle condizioni di

equilibrio è molto ridotta (la variazione è minore del 10% quando il punto di equilibrio

viene scelto entro un raggio di 40 m2 intorno al punto di equilibrio di riferimento).

Questo significa che l’orientamento di tutte le linee prima descritte, rimane quasi lo stesso

per un raggio di punti di lavoro ragionevolmente ampio, e quindi, probabilmente saremo in

grado di utlizzare controllori molto simili (o forse lo stesso) per punti operativi differenti.

Page 20: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

20

La Fig. 2-8 mostra la posizione del punto di equilibrio ottenuto lavorando sul nuovo

insieme di ingressi.

−100

10 −10

0

10−50

0

50

delta sdelta y

Y

sway

−100

10 −10

0

10−50

0

50

delta h delta p

Z

heave

−100

10 −10

0

10−20

0

20

delta h delta p

The

tapitch

−10

0

10 −10

0

10

−20

0

20

delta s delta y

Psi

yaw

Fig. 2-8

Come si può notare, ogni comando muove il punto di equilibrio su un solo asse, cioè il

veicolo si muove soltanto in una direzione senza alcuna rotazione (o ruota intorno ad un

solo asse senza alcun altro movimento).

Si può mostrare anche che l’ingresso δ1 incide soltanto sul roll.

La matrice di disaccoppiamento è inclusa nel blocco simulink DM.

L’impianto preceduto da questa matrice si presta ad un controllo fatto attraverso metodi più

“classici”: per esempio, si potrebbe ricercare la possibilità di 5 diversi controllori SISO

(single-input single-output), uno per ogni canale.

Page 21: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

21

Lo scopo principale di questa sezione, ad ogni modo, è quello di stabilire gli insiemi di

ingresso ed uscita che saranno utilizzati, piuttosto che provvedere ad un vero

disaccoppiamento del sistema; infatti se il problema non è mal condizionato, il regolatore è

in grado di disaccoppiare il sistema indipendentemente dalla presenza della matrice di

disaccoppiamento.

Effettivamente, sono stati trovati controllori per entrambi gli impianti, con e senza matrice

di disaccoppiamento: le prestazioni sono risultate uguali eccetto alcune differenze molto

piccole imputabili a questioni di tipo numerico.

L’impianto che, quindi, andremo a considerare sarà quello descritto in Fig. 2-9.

2

d23

d34

d4

1

d1

5

d5

Mux

Mux

Demux

Demux1

R2D

rad2deg

Demux

Demux2

2

y4

z1

fi

3

psi

5

th uequ(9:14)

Ship vel & acc

Mux

yequ

Eq. values

CABLE − VEHICLESYSTEM

+

Sum

Actuators 5_2_8

Demixing

D2R

deg2rad

Fig. 2-9

I blocchi “deg2rad” e “rad2deg” provvedono alle trasformazioni da gradi in radianti e

viceversa, per cui gli ingressi del sistema vengono misurati in gradi, e le uscite in gradi e

metri.

Il blocco “costante” yequ e uequ(9:14) fornisce le condizioni iniziali per il sistema.

Le variabili uequ e yequ vengono caricate nello spazio di lavoro dalla funzione “nli.m”,

che deve essere lanciata prima di utilizzare lo schema (vedere l’ help della funzione per

ulteriori dettagli).

Page 22: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

22

3. Modello Lineare

Il modello lineare viene calcolato utilizzando la funzione Matlab “linmod”, per l’estrazione

di un modello lineare da uno schema simulink o da una s-function.

Come risulato avremo un modello lineare instabile con 5 ingressi, 5 uscite, 32 stati, le cui

caratteristiche saranno descritte in dettaglio nella sezione che segue.

3.1 Stati

In base al modo in cui il simulink ordina gli stati delle s-functions riferite ai vari blocchi in

uno schema, il significato fisico degli stati è :

stati 1 .. 5 : stati degli attuatori: derivano dal blocco integratore di ogni attuatore,

nell’ordine in cui appaiono nella Fig. 2-3.

stati 6 .. 8 : roll, pitch e yaw del veicolo.

stati 9 .. 11 : componenti della velocità angolare del veicolo, lungo gli assi x,y,x, di B.

stati 12 .. 13 : θ15 e θ25, orientamento dell’ultimo punto del quinto segmento del cavo (il

punto di aggancio tra il veicolo e il cavo), rispetto alla terna E (vedere [i]

per dettagli).

stati 14 .. 15 : u15 e u25, velocità del punto suddetto rispetto alla terna di riferimento del

segmento (vedere [i] per dettagli).

stati 16 .. 17 : θ14 e θ24, orientamento dell’ultimo punto del quarto segmento del cavo

rispetto alla terna E.

stati 18 .. 19 : u14 e u24, velocità del punto suddetto rispetto alla terna di riferimento del

segmento.

Page 23: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

23

stati 20 .. 21 : θ13 e θ23, orientamento dell’ultimo punto del terzo segmento del cavo

rispetto alla terna E.

stati 22 .. 23 : u13 e u23, velocità del punto suddetto rispetto alla terna di riferimento del

segmento.

stati 24 .. 25 : θ12 e θ22, orientamento dell’ultimo punto del secondo segmento del cavo

rispetto alla terna E.

stati 26 .. 27 : u12 e u22, velocità del punto suddetto rispetto al riferimento del segmento.

stati 28 .. 29 : θ11 e θ21, orientamento dell’ultimo punto del primo segmento del cavo

rispetto alla terna E.

stati 30 .. 31 : u11 e u21, velocità del punto suddetto rispetto alla terna E.

stati 32 .. 36 : stati degli attuatori, più precisamente dei blocchi “transfer-fcn” di ogni

attuatore, nell’ordine in cui appaiono nella Fig. 2-3.

3.2 Controllabilità ed osservabilità

I grahmiani di controllabilità ed osservabilità sono le matrici Gc e Go tali che:

0

0

=++

=++

CCAGGA

BBAGAGT

OOT

TTCC

Eq. 3-1

Indichiamo con Sc e So le matrici diagonali che contengono lungo la diagonale i valori

singolari dei grahmiani di controllabilità e osservabilità, e con Uc e Uo le matrici le cui

colonne sono i vettori singolari di questi grahmiani.

Page 24: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

24

Da notare che essendo i grahmiani simmetrici, i vettori singolari di ingresso sono uguali a

quelli di uscita, ( e sono uguali agli autovettori ) percui si puo’ parlare di vettore singolare i-

esimo senza generare confusione.

Il grahmiano di controllabilità descrive la regione dello spazio degli stati raggiungibile con

un ingresso di una data energia, e con condizioni iniziali nulle.

Il grahmiano di osservabilità descrive la regione di punti nello spazio degli stati che, se

presi come condizioni iniziali, provocano un uscita di una data energia, con un ingresso

nullo.

Queste regioni sono iper-ellissoidi con semiasse i-esimo dato da √(S(i))*U(i), per la

controllabilità, e (1/√(S(i)))*U(i) per l’osservabilità, dove S(i) e’ l’i-esimo valore singolare

ed U(i) il rispettivo vettore singolare.

Volendo una misura dell’osservabilità, faremo riferimento al suo ellissoide inverso, con

semiassi dati da √(S(i))*U(i).

Le equazioni di questi ellissoidi, negli spazi di coordinate xc= Uc-1 x ed xo= Uo

-1 x sono:

1

11

1

=

=−

ooT

o

ccT

c

xSx

xSxEq. 3-2

Per ogni stato, chiameremo controllabilità dello stato stesso il modulo dell’ intersezione tra

la direzione dello stato, e l’ellisse di controllabilità, analogamente chiameremo osservabilità

dello stato il modulo dell’ intersezione tra la direzione dello stato e l’ellissoide inverso di

osservabilità.

Per ogni polo, chiameremo controllabilità del polo stesso il modulo dell’ intersezione tra la

direzione del suo autovettore e l’ellissoide di controllabilità, analogamente chiameremo

osservabilità del polo il modulo dell’ intersezione tra la direzione del suo autovettore , e

l’ellissoide inverso di osservabilità.

Page 25: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

25

La Fig. 3-1 mostra la controllabilità e osservabilità degli stati del sistema.

Fig. 3-1

Alcuni stati dell’attuatore (4,5,35,36 dai due attuatori di coda) hanno una controllabilità

molto limitata, ed è interessante vedere che alcuni stati del cavo diventano meno

controllabili ed osservabili quando il segmento relativo si allontana dal veicolo.

0 5 10 15 20 25 30 35 4010

−8

10−7

10−6

10−5

10−4

10−3

10−2

10−1

100

101

102

state

ctrb

(re

d), o

bsv

(blu

e)ctrb & obsv gram. sv

Page 26: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

26

3.3 Autostruttura

Il sistema ha 32 poli e 30 zeri come mostrato nella Fig. 3-2.

−14 −12 −10 −8 −6 −4 −2 0 2−2.5

−2

−1.5

−1

−0.5

0

0.5

1

1.5

2

2.5

Real Axis

Imag

Axi

s

system poles & zeros

Fig. 3-2

Come possiamo vedere, ci sono molti poli quasi sull’ asse immaginario, si vedrà in seguito

che questi derivano dal cavo, ed alcuni di essi sono scarsamente controllabili, o osservabili,

come si può dedurre dal fatto che sono coperti da zeri.

Page 27: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

27

In dettaglio, i poli del sistema sono:

-10.78267997416636

-12.20943288835049

-12.81857043722292

-12.48110950043442

-8.88568277132924

-0.00000598044715 + 2.43005154563980i

-0.00000598044715 - 2.43005154563980i

-1.35719650928428 + 1.68805104150768i

-1.35719650928428 - 1.68805104150768i

-0.00001694702355 + 1.95889578230110i

-0.00001694702355 - 1.95889578230110i

-1.93370877010762

0.00006274829235 + 1.41675327418150i

0.00006274829235 - 1.41675327418150i

-1.21489866154187

0.00060264088379 + 0.74644629911264i

0.00060264088379 - 0.74644629911264i

-0.70866401731913

Page 28: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

28

-0.62541170112530

-0.49805540421703 + 0.13924393897637i

-0.49805540421703 - 0.13924393897637i

-0.31816541278695

-0.12121713292313

-0.04119107837663

-0.03183408600548 + 0.05569078955429i

-0.03183408600548 - 0.05569078955429i

-6.26215302613939

-6.26215302613923

-6.26215302613926

-13.73784697386058

-13.73784697386077

-13.73784697386074

-13.73784697386074

-13.73784697386075

-6.26215302613925

-6.26215302613923

Page 29: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

29

mentre gli zeri di trasmissione sono:

1.348921368961114e+16 - 4.020845700183954e+14i

-7.619196471470863e+15 + 5.873919545104043e+13i

2.004570579182056e+14 + 1.345073802265565e+12i

-1.884457552285398e+14 + 2.250560231041280e+12i

-1.664662554998474e+15 + 4.168019134461320e+13i

-4.504071436680867e+14 - 3.597053425848050e+13i

1.849889636566270e+05 - 2.486281833308713e+04i

-1.846195790399146e+05 + 2.479175889954268e+04i

-7.443550783881528e+04 - 7.286231184565877e+04i

7.486074650008259e+04 + 7.284723447664162e+04i

7.306837910591389e+04 - 7.465468171851218e+04i

-7.264314122837997e+04 + 7.463961612719821e+04i

-2.464227403396731e+04 - 1.848377944059751e+05i

2.501163846042297e+04 + 1.847667370775895e+05i

-12.81835142914654 - 0.00000000000000i

-12.48074869583046 - 0.00000000000000i

-12.20887247085085 + 0.00000000000004i

-10.75071561219304 - 0.00000000000002i

-0.00000508190568 - 2.43004624109670i

-0.00000508190568 + 2.43004624109669i

Page 30: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

30

-0.00000508190568 - 1.95875225000447i

-0.00000508190569 + 1.95875225000446i

-0.00000508190567 - 1.41604232476610i

-0.00000508190569 + 1.41604232476610i

-0.00000508190569 - 0.74355371345502i

-0.00000508190569 + 0.74355371345502i

-0.69953819552865 + 0.00000000000000i

-0.48317205044712 + 0.00000000000000i

-0.08852299104955 - 0.00000000000000i

-0.26240694205817 + 0.00000000000000i

I primi 14 zeri derivano probabilmente da problemi numerici.

Il sistema è instabile in quanto ci sono due coppie di poli complessi-coniugati appena oltre

l’asse immaginario.

Gli ultimi dieci poli sono quelli introdotti dai cinque attuatori, infatti, come abbiamo visto

nel secondo capitolo linearizzando il modello dell’attuatore, ogni attuatore ha una dinamica

del secondo ordine con i poli in -13.73 and -6.26.

Avendo a disposizione alcune informazioni sul significato fisico degli stati, è interessante

utilizzarle per vedere in che modo i poli del nostro sistema sono correlati agli stati.

Questo potrebbe dirci di più sul significato fisico dei modi del sistema.

Page 31: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

31

I grafici da Fig. 3-3 sino alla Fig. 3-14 mostrano, per ogni polo, un diagramma a barre

rappresentante il valore assoluto delle componenti dell’ autovettore relativo al polo, lungo

le direzioni degli stati, o in altre parole, il modo in cui ogni polo viene ripartito tra gli stati.

Si mostrano anche la controllabilità e osservabilità del polo.

Per ciascuna coppia di autovalori complessi coniugati si mostra soltanto un grafico.

Le Fig. 3-3, 3-4 mostrano le due coppie di autovalori instabili.

Fig. 3-3 Fig. 3-4

Fig. 3-5 Fig. 3-6

È evidente che entrambi modi sono correlati agli stati del cavo.

I due modi rappresentati nelle Fig 3-5, 3-6 sono ugualmente correlati agli stati del cavo.

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

states

abs(

eige

nvec

tor)

Pole : 0.0006026+0.7464i ctrb : 4.596 obsv : 0.0001904

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

states

abs(

eige

nvec

tor)

Pole : 0.00006275+1.417i ctrb : 15.68 obsv : 0.0006203

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

states

abs(

eige

nvec

tor)

Pole : −5.98e−006+2.43i ctrb : 7.211 obsv : 0.01292

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

states

abs(

eige

nvec

tor)

Pole : −0.00001695+1.959i ctrb : 20.06 obsv : 0.002055

Page 32: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

32

I quattro modi rappresentati. da Fig 3-7 a Fig 3-10 invece sono chiaramente correlati al

veicolo, e sono molto più osservabili che controllabili.

Fig. 3-7 Fig. 3-8

Fig. 3-9 Fig. 3-10

Da notare nella Fig. 3-9 la forte influenza degli stati 6 e 9, cioè del roll e della componente

lungo l’asse x della velocità angolare del veicolo.

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

states

abs(

eige

nvec

tor)

Pole : −1.357+1.688i ctrb : 0.05416 obsv : 4.05e−006

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

states

abs(

eige

nvec

tor)

Pole : −0.4981+0.1392i ctrb : 0.004519 obsv : 3.344e−007

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

states

abs(

eige

nvec

tor)

Pole : −1.934 ctrb : 0.05976 obsv : 1.072e−006

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

states

abs(

eige

nvec

tor)

Pole : −1.215 ctrb : 0.02857 obsv : 5.668e−006

Page 33: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

33

Le Fig. 3-11 e 3-12 mostrano due modi correlati agli attuatori, il secondo sembra avere più

influenza sul cavo e sul veicolo rispetto al primo.

Fig. 3-11 Fig. 3-12

Le Fig 3-13, 3-14 mostrano due modi correlati al veicolo e alla parte del cavo vicino al

veicolo.

Fig. 3-13 Fig. 3-14

Tutti i poli degli attuatori (quelli in -6.26 e in -13.73), hanno dei grafici abbastanza simili.

Si potrebbe anche mostrare che i gruppi di poli in -10 e -12 rappresentano modi

scarsamente osservabili, correlati al cavo.

Tutti gli altri modi, sono molto più osservabili che controllabili, e, paiono coinvolgere sia il

cavo che il veicolo, ma è difficile ottenere un’interpretazione più dettagliata.

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

states

abs(

eige

nvec

tor)

Pole : −6.262 ctrb : 0.004594 obsv : 4.722e−007

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

states

abs(

eige

nvec

tor)

Pole : −13.74 ctrb : 0.00002181 obsv : 4.321e−007

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

states

abs(

eige

nvec

tor)

Pole : −0.04119 ctrb : 0.04383 obsv : 1.401e−006

0 5 10 15 20 25 30 35 400

0.1

0.2

0.3

0.4

0.5

0.6

0.7

states

abs(

eige

nvec

tor)

Pole : −0.03183+0.05569i ctrb : 2.394 obsv : 0.0006888

Page 34: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

34

3.4 Valori Singolari

Ad una data frequenza il massimo valore singolare è il guadagno maggiore possibile del

sistema, ed il minimo valore singolare è il minore guadagno possibile [ii].

In dettaglio, i valori singolari della funzione di trasferimento rappresentano il guadagno del

sistema lungo le proprie direzioni principali e cioè, se il segnale di ingresso è nella

direzione di un vettore singolare di ingresso, il segnale di uscita sarà nella direzione del

relativo vettore singolare di uscita e il guadagno del sistema sarà il relativo valore

singolare.

La Fig. 3-15 mostra il comportamento in frequenza dei valori singolari del sistema.

10−3

10−2

10−1

100

101

102

−150

−100

−50

0

50

Frequency (rad/sec)

Sin

gula

r V

alue

s dB

system singular values

Fig. 3-15

Page 35: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

35

La banda passante del sistema è di circa 3 rad/sec, e il guadagno (in ogni direzione)

diminuisce velocemente dopo i 10 rad/sec.

Esistono due direzioni con guadagno alto, ed altre tre con guadagno di circa 0 dB.

Vedremo adesso con un’ analisi dei vettori singolari, quali ingressi e uscite sono coinvolti

in questi guadagni principali.

Dalla Fig 3-16 alla 3-27 sono mostrati, per ciascun valore singolare, due grafici a barre

rappresentanti il valore assoluto delle componenti dei vettori singolari corrispondenti al

valore singolare.

La prima analisi viene fatta per una frequenza di 0.01 rad/sec, e ci mostra una esatta

corrispondenza tra direzioni principali e “canali” del sistema.

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 178

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 44.4

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

Fig. 3-16 Fig. 3-17

A questa frequenza, gli ingressi δ2 e δ4 (coppia di pinne verticali e orizzontali anteriori),

sono fortemente correlati con sway ed heave (misurati in metri), ed in questi canali ci sono i

due guadagni più alti del sistema (vedi Fig 3-16, 3-17).

Page 36: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

36

Le Fig da 3-18 a 3-21 ci mostrano, come già noto,che l’ingresso 1 è fortemente correlato al

roll e che gli ingressi 3 e 5 (coppia di pinne verticali e orizzontali posteriori) sono correlati

alle angolazioni di imbardata e di beccheggio (misurate in gradi).

In questi canali il guadagno è quasi 1.

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 1.5

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 1.214

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

Fig. 3-18 Fig. 3-19

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 1.038

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

1 1.5 2 2.5 3 3.5 4 4.5 5−5

−4.5

−4

−3.5

−3

−2.5

−2

−1.5

−1

input

outp

ut

max.sv.(G(jw,i,j))

Fig. 3-20 Fig. 3-21

Dal momento che le direzioni sono fortemente correlate ai canali del sistema, possiamo

dedurre che a questa frequenza la struttura della funzione di trasferimento dovrebbe essere

piuttosto diagonale, con una “dominanza” nella matrice dei termini (2,2) e (4,4).

La Fig 3-20 ci mostra che questo è vero; infatti,è stata calcolata l’ampiezza di tutti i 25

elementi della funzione di trasferimento e le linee in figura rappresentano le curve di livello

della funzione da N2 a R+ così ottenuta.

Page 37: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

37

Per frequenze maggiori, la situazione è comunque differente e la stessa analisi per una

frequenza di 0.1 rad/sec mostra che il sistema non è più così diagonale.

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 10.24

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 4.051

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

inputab

s(s.

vec

.)

Fig. 3-22 Fig. 3-23

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 0.7151

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 0.2832

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

Fig. 3-24 Fig. 3-25

Page 38: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

38

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

output

abs(

s. v

ec.)

Singular Value : 0.1939

0 1 2 3 4 5 60

0.2

0.4

0.6

0.8

1

input

abs(

s. v

ec.)

1 1.5 2 2.5 3 3.5 4 4.5 5−5

−4.5

−4

−3.5

−3

−2.5

−2

−1.5

−1

input

outp

ut

max.sv.(G(jw,i,j))

Fig. 3-26 Fig. 3-27

Come possiamo vedere nei grafici da fig 3-22 a fig 3-27, c’è un forte accoppiamento tra i

comandi per il movimento sullo stesso piano.

3.5 Riduzione del Modello

Il fatto che ci siano molti stati che mostrano una controllabilità o osservabilità molto scarsa,

suggerisce che probabilmente è opportuno provare una riduzione del modello del sistema

per semplificarlo, senza però perdere nessuna delle sue caratteristiche.

Sappiamo infatti che generalmente, tutti gli algoritmi numerici lavorano meglio e più

velocemente al diminuire delle dimensioni delle matrici coinvolte.

Il modo più comune di ridurre un sistema è quello di ottenerne una realizzazione bilanciata

e dopo, procedere ad un troncamento in modo da liberarsi degli stati meno utili. Esistono

diverse funzioni nell’ambiente Matlab che permettono di fare una cosa del genere.

La funzione “balreal” del “control toolbox” serve per ottenere una realizzazione bilanciata,

ma non funziona se la realizzazione non è minima o se ci sono degli stati che sono molto

poco controllabili o osservabili come nel nostro caso.

La funzione “minreal” del “control toolbox”, serve per ottenere una realizzazione minima,

e, applicata al nostro sistema con una tolleranza di default rimuove soltanto uno stato.

Page 39: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

39

Il risultato non è ancora tale la permettere a “balreal” di funzionare.

Se la tolleranza in “minreal” va oltre 0.3 allora questa funzione rimuove altri stati lasciando

lavorare balreal, ma il risultato non è ancora soddisfacente.

I risultati migliori si ottengono con le funzioni del µ-tools toolbox.

La funzione “sysbal”, elimina automaticamente gli stati non-controllabili o inosservabili.

Non funziona se il sistema è instabile come nel nostro caso; comunque questa non è

una limitazione, poichè non sarebbe prudente eliminare qualche polo instabile anche se la

sua controllabilità ed osservabilità è scarsa.

Si è quindi deciso di procedere in questo modo:

1. Dividere il sistema in due parti, una instabile e l’altra stabile.

2. Bilanciare e ridurre la parte stabile.

3. Aggiungere la parte instabile al sistema ridotto e bilanciato.

4. Confrontare il sistema risultante con quello originale e quindi ripetere tutto il

procedimento fino ad ottenere un risultato soddisfacente.

Come risultato, è stato ottenuto un sistema di 19 stati che non conviene ulteriormente

ridurre per non perdere alcune caratteristiche importanti come ad esempio il numero di

condizionamento e la forma dei vettori singolari.

Page 40: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

40

La Fig. 3-28 mostra la controllabilità e l’osservabilità degli stati del sistema ridotto. Da

notare che ogni informazione sul significato fisico degli stati viene persa perchè vengono

cambiate le coordinate nello spazio degli stati.

Fig. 3-28

0 2 4 6 8 10 12 14 16 18 2010

−1

100

101

102

state

ctrb

(re

d), o

bsv

(blu

e)

ctrb & obsv gram. sv

Page 41: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

41

La Fig. 3-29 mostra i poli e gli zeri del sistema.

−5 0 5 10 15 20−2.5

−2

−1.5

−1

−0.5

0

0.5

1

1.5

2

2.5

Real Axis

Imag

Axi

s

system poles & zeros

Fig. 3-29

Più in dettaglio i poli sono:

0.00006274829235 + 1.41675327418149i

0.00006274829235 - 1.41675327418149i

0.00060264088379 + 0.74644629911264i

0.00060264088379 - 0.74644629911264i

-0.00000573233871 + 2.43005191447068i

Page 42: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

42

-0.00000573233871 - 2.43005191447068i

-0.00001700486128 + 1.95889589084189i

-0.00001700486128 - 1.95889589084189i

-0.03175503176227 + 0.05568076358300i

-0.03175503176227 - 0.05568076358300i

-0.04561044561980

1.64169096029987 + 2.17650615654612i

-1.64169096029987 - 2.17650615654612i

-1.05403974832363 + 1.50335622090630i

-1.05403974832363 - 1.50335622090630i

-0.71813672411532 + 0.40721327794409i

-0.71813672411532 - 0.40721327794409i

-0.28119580369960 + 0.14405349626301i

-0.28119580369960 - 0.14405349626301i

Insieme ai due modi instabili, anche i quattro successivi modi appaiono nel sistema

originale, (vedere Fig da 3-5 a 3-14) gli ultimi quattro modi invece sono propri del modello

ridotto e non trovano riscontro nel modello originale.

Gli zeri del sistema sono:

5.611781738910854e+17 - 8.358571600612663e+18i

-1.347886426525800e+14+ 3.591267196515551e+14i

Page 43: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

43

1.025405654024770e+16+ 1.036423806824973e+14i

-3.734676705916108e+15 - 5.555069415363998e+15i

-3.282825130228596e+15 + 5.355217793995528e+15i

17.53398985391323 - 0.00000000000004i

8.97968262968278 + 0.00000000000001i

5.54758531982268 - 0.93135381773286i

5.54758531982278 + 0.93135381773283i

5.59680561739371 - 0.00000000000000i

0.00006271452900 + 1.41619016832985i

0.00006271452900 - 1.41619016832985i

0.00003173065577 + 1.95879210243769i

0.00003173065578 - 1.95879210243769i

0.00003203827808 + 0.74369685772168i

0.00003203827808 - 0.74369685772168i

-0.00000312190411 + 2.43004852576467i

-0.00000312190411 - 2.43004852576467i

-0.17889854127239 - 0.00000000000000i

I primi tre zeri sono probabilmente dovuti a problemi numerici.

Page 44: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

44

La Fig. 3-30 mostra i valori singolari del sistema.

10−3

10−2

10−1

100

101

102

−80

−60

−40

−20

0

20

40

60

Frequency (rad/sec)

Sin

gula

r V

alue

s dB

system singular values

Fig. 3-30

Non esiste alcuna differenza apprezzabile rispetto agli andamenti dei valori singolari del

sistema originale non ridotto.

Infine, per una frequenza di 0.1 rad/sec, la “struttura” del sistema, cioè la grandezza di tutti

i 25 elementi della matrice, è sostanzialmente identica a quella dell’ impianto originale (Fig

3-21, 3-27).

Page 45: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

45

4. Controllo H∞∞∞∞

Nei capitoli seguenti adotteremo la nomenclatura standard descritta in [iii].(Vedere [iv] per

una dettagliata introduzione all’ argomento, e [v] per la soluzione completa del problema

nello spazio degli stati,).

4.1 Formulazione Standard del Problema

Il diagramma a blocchi utilizzato per la formulazione standard del problema H∞ è riportato

in Fig. 4-1:

P(s)

K(s)

w z

u e

Fig. 4-1

• Il segnale w contiene tutti gli ingressi esterni, inclusi i

disturbi; il segnale z contiene tutte le uscite verso

l’esterno, ed è normalmente utilizzato come un segnale

di errore; e contiene le variabili misurate usate come

ingressi del controllore; u contiene gli ingressi di

controllo, ossia le uscite del controllore.

• P è l’ impianto generalizzato, cioè quello che

generalmente viene chiamato impianto in un problema

di controllo, e comprende anche tutte le funzioni di

peso. Ci riferiremo ad esso con una delle matrici delle

due equazioni seguenti, rispettivamente nel dominio

della frequenza e dello spazio degli stati.

Page 46: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

46

z

y

P P

P P

w

u

=

11 12

21 22

&x

z

y

A B B

C D D

C D D

x

w

u

=

1 2

1 11 12

2 21 22

Eq 4-1 Eq 4-2

• K è il controllore da trovare.

Ci si riferisce all impianto di Fig. 4-1 anche come ad una trasformazione lineare frazionaria

(LFT) su K con coefficiente P.

LFT P K T s P s P s K s P s K s P szw( , ) ( ) ( ) ( ) ( )( ( ) ( )) ( )= = + + −11 12 22

1211 Eq. 4-3

La funzione di trasferimento risultante a circuito chiuso da w a z viene chiamata Tzw.

Per una data matrice hamiltoniana M, denoteremo con Ric(M) la soluzione (se esistente)

della relativa equazione Riccati, come in Eq. 4-4, vedi [iv] per maggiori dettagli.

Ric M X

XM M X XM X MT

( ) =

+ + − =

X t.c.

11 11 12 21 0Eq. 4-4

Si chiama “norma-infinito” di una funzione di trasferimento l’estremo superiore, al variare

della frequenza, del suo massimo valore singolare:

T s T ss j

( ) sup( ( ( ))∞=

σ Eq. 4-5

Tale norma rappresenta in pratica il massimo guadagno possibile del sistema al variare

della direzione e della frequenza del segnale in ingresso.

Un sistema si dice “stabilizzabile” se tutti i suoi poli a parte reale positiva sono

controllabili, si dice “individuabile” se tutti i suoi poli a parte reale positiva sono

osservabili.

Page 47: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

47

Infine, chiameremo ρ(N) il raggio spettrale della matrice N, cioè il valore assoluto del suo

autovalore maggiore in modulo.

Page 48: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

48

Il problema del controllo H∞ è quello di trovare, tra tutti i controllori che portano ad un

sistema a ciclo chiuso internamente stabile, un controllore K che minimizza la norma

infinito di Tzw

Il risultato matematico basilare per questo problema è espresso sia in [iv] che in [v] e segue

questo schema:

Si suppone che P sia tale che:

1. (A,B2) sia stabilizzabile, e (A,C2) sia individuabile.

2. Rango di D12 uguale al suo numero di colonne,

rango di D21 uguale al suo numero di righe.

Sia γ un numero reale positivo.

Siano H∞ e J∞ due matrici hamiltoniane, funzioni di P e γ-2, costruite come spiegato in [iv]

e in [v].

Esiste un controllore Tzw che è internamente stabile, e la cui norma infinito è minore di γ,

se, e soltanto se, si verificano le tre condizioni che seguono:

1. Esistenza di una soluzione semidefinita positiva di Ric(H∞), chiamata X∞.

2. Esistenza di una soluzione semidefinita positiva di Ric(J∞), chiamata Y∞.

3. ρ(X∞Y∞) < γ2.

Inoltre, quando queste condizioni sono soddisfatte, viene data una formula nello spazio

degli stati per calcolare un controllore che risolve il problema.

In pratica, questo teorema viene utilizzato nella maniera che segue:

Per prima cosa viene selezionato un intervallo di valori di γ in cui vogliamo cercare il

valore minimo della norma infinito di Tzw, dopodichè viene adottato il metodo della

bisezione per iterare sul valore di γ e trovare così il controllore H∞ “ottimo” cioè quello che

minimizza la norma infinito di Tzw.

Page 49: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

49

Più dettagliatamente, per ogni γ l’impianto viene scalato per ottenere D11=0, D22=0,

D21D12T=I, D21D12

T=I il che semplifica molto le due matrici hamiltoniane, (senza perdita di

generalità).

Le due matrici hamiltoniane suddette vengono quindi calcolate, e le tre condizioni vengono

testate per stabilire se il controllore esiste o no, dopodichè, il nuovo intervallo di ricerca per

γ sarà delimitato a destra dall’ ultimo valore per cui il controllore esiste ed a sinistra dall’

ultimo valore in cui il controllore non esiste.

Si ripete il procedimento per il γ che divide in due il nuovo intervallo di ricerca

concludendo quando la differenza tra il valore γ ed il precedente è minore della tolleranza

stabilita.

Di solito, quando γ raggiunge il proprio valore ottimale, la soluzione dell’equazione di

Riccati diventa numericamente sensibile per via del fatto che gli autovalori delle matrici

Hamiltoniane corrispondenti si muovono verso l’asse jωdove la soluzione non dà più

controllori stabilizzanti.

L’algoritmo completo sopra descritto viene utilizzato nelle funzioni “hinfsyn” e “hinfsyne”

del “µ tools toolbox” per l’utilizzazione con Matlab [iii].

4.2 Selezione delle funzioni di peso

La Fig. 4-2 sotto mostra il convenzionale ciclo chiuso “ad un grado di libertà” che

adotteremo nel progetto del nostro controllo.

y

++

Sum

r

G(s)

K(s)eu

Fig. 4-2

Page 50: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

50

In particolare chiameremo:

• Sensitività: la matrice S(s) tale che e(s)=S(s)r(s), cioè

(I+G(s)K(s))-1.

• Sensitività di controllo:la matrice M(s) tale che u(s)=M(s)r(s), cioè S(s)K(s).

• Sensitività complementare: la matrice T(s) tale che y(s)=T(s)r(s), cioè G(s)M(s).

L’aspetto più cruciale nel modello di controllo H∞ ,è la definizione delle specifiche di

progetto in termini di funzioni di peso.

Normalmente il sistema a circuito chiuso richiesto si deve comportare in maniera molto

diversa a basse o ad alte frequenze[ii].

Alle basse frequenze, dove si assume una conoscenza soddisfacente dell’ impianto, le

necessità più importanti sono l’inseguimento del segnale di riferimento ed una buona

reiezione dei segnali di disturbo.

Queste necessità possono entrambe essere soddisfatte mantenendo la sensitività bassa, visto

che questo significa una buona reiezione dei segnali di disturbo, ed una sensitività

complementare vicina all’ identità, il che implica che il segnale uscita sia vicino a quello di

riferimento.

Al contrario, alle alte frequenze, le necessità più importanti sono il rigetto del rumore dei

sensori ed una stabilità robusta a fronte delle incertezze dovute a dinamiche non modellate,

non linearità, troncamenti del sistema, che di solito sono fattori che diventano rilevanti

all’aumentare della frequenza di lavoro.

Inoltre, generalmente vogliamo che l’energia spesa per il controllo venga ridotta il più

possibile a queste frequenze, visto che non dobbiamo seguire nessun segnale di riferimento.

Si può mostrare facilmente (vedi [ii]) che tutte queste necessità possono essere ottenute

tenendo la sensitività di controllo, e di conseguenza la sensitività complementare più bassa

possibile.

La sensitività di controllo infatti è la funzione trasferimento vista da una incertezza additiva

sull’ impianto, e quindi, per evitare un circuito chiuso instabile tra l’ impianto controllato e

l’incertezza, deve essere ridotta.

Page 51: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

51

Inoltre tenere la sensitività di controllo bassa significa tenere basso il segnale di controllo e

la sensitività complementare, avendo così una buona reiezione del rumore dei sensori.

In termini di valori singolari, queste specifiche di progetto significano minimizzare

σmax(S(jω)) alle basse frequenze e σmax(M(jω)) alle alte frequenze.

Se prendiamo

W s M s

W s S s

m

s

( ) ( )

( ) ( )

max

max

=

=

1

1Eq. 4-6

dove Smax(jω) e Mmax(jω) esprimono in qualche modo la forma desiderata per S ed M,

allora possiamo esprimere le nostre specifiche di progetto in questi termini:

σ ω ωσ ω ω

( ( ) ( ))

( ( ) ( ))

W j S j

W j M js

m

<<1

1Eq. 4-7

Si può mostrare [ii] che se:

W s S s

W s M s

s

m

( ) ( )

( ) ( )

∞< 1 Eq. 4-8

allora le Eq. 4-7 sono soddisfatte su tutte le frequenze.

Quindi, se il controllore è tale da soddisfare la condizione 4-8, le nostre specifiche saranno

rispettate.

Inoltre, tanto più la norma infinito nella 4-8 sarà minore di 1,tanto più saranno ampi i

margini con cui le specifiche verranno rispettate, e quindi migliore sarà il controllore.

Page 52: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

52

Ora, se costruiamo l’impianto P in modo tale che:

T sW s S s

W s M swz

s

m( )

( ) ( )

( ) ( )=

Eq. 4-9

Il problema di trovare un controllore tale che le 4-6 siano soddisfatte diventa quello di

trovare un controllore tale che:

[ ]T swz ( )∞

< 1 Eq. 4-10

ossia diventa un problema H∞ standard.

La procedura H∞ infatti riesce a trovare il controllore che minimizza la norma infinito di

Twz(s), se questa norma è anche minore di 1 allora tale controllore è tale da soddisfare la 4-

11 e quindi le 4-6.

Rimane da specificare come costruire l’impianto P in modo da soddisfare la 4-10.

Ciò si può fare facilmente “portando fuori” dall’ impianto i punti tra i quali possiamo

misurare S(s) ed M(s), e moltiplicare le uscite per le funzioni di peso Ws(s) e Wm(s) scelte

come detto sopra.

Page 53: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

53

La costruzione dell’ impianto è mostrata in fig. 4-3.

y

++

Sum

reu

Wm(s) Ws(s)

z2 z1

G(s)

Fig. 4-3

4.3 Ottimizzazione delle funzioni di peso.

Anche se controllori H∞ sono facili da ottenere utilizzando pacchetti software esistenti, la

maggior parte dei “controllisti” ha non poche difficoltà nella scelta delle funzioni di peso.

Questo è essenzialmente dovuto al fatto che esistono aspetti familiari dei problemi di

controllo che non vengono completamente catturati dall’approccio nel dominio della

frequenza descritto sopra.

Inoltre, qualche volta, a causa di problemi numerici, la sensitività del controllore finale a

fronte di piccoli cambiamenti delle funzioni di peso, è veramente alta.

Quindi, sarà necessario spendere molto tempo provando varie funzioni di peso per ottenere

un controllore soddisfacente.

Questo è vero specialmente in caso di complessi impianti multivariabili dove le relazioni

tra specifiche di progetto, matrici di sensitività, e funzioni di peso, spesso diventano difficili

da gestire.

L’algoritmo descritto sotto, potrebbe essere uno strumento utile ai progettisti nel lavoro di

selezione delle funzioni di peso.

Page 54: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

54

Le principali idee da cui deriva l’ algoritmo sono:

• Se i canali dell’ impianto non sono molto differenti tra

di loro, e richiediamo più o meno lo stesso tipo di

prestazioni da ogni canale possiamo selezionare una

matrice di peso diagonale con la stessa funzione per

ogni canale ( altrimenti possiamo sempre scalare l’

impianto per ottenere la condizione di somiglianza tra i

canali ).In questo modo il problema si riduce alla

selezione di due funzioni scalari di peso, una per S(s) e

una per M(s) o T(s).

• Se utilizziamo una forma standard per queste funzioni

scalari di peso (per esempio usando funzioni di primo

ordine), allora sarà possibile descriverle con pochi

numeri, per esempio la frequenza di taglio e il

guadagno. In questo modo le due matrici delle funzioni

di peso vengono descritte completamente da un vettore

in uno spazio quadrimensionale.

• È possibile costruire una funzione che prenda in

ingresso questo vettore, calcoli le relative matrici delle

funzioni di peso,il controllore H∞, compia varie

simulazioni per testare il controllore ( a questo punto è

possibile anche una simulazione su un impianto non-

lineare), e alla fine come risultato delle simulazioni,

fornisca un indice di qualità del controllore basato sui

termini di dominio temporale e sulle quantità, come ad

esempio il valore finale γ o la posizione dei poli del

controllore.

• È possibile applicare a questa funzione qualche

algoritmo standard di ottimizzazione vincolata per

minimizzare l’indice di qualità e quindi trovare il

Page 55: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

55

migliore controllore possibile (semprechè l’indice di

qualità rifletta veramente le specifiche di progetto e le

intenzioni del progettista).

L’algoritmo è scritto completamente in codice Matlab, e nella sezione che segue ne daremo

una spiegazione dettagliata.

Page 56: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

56

4.3.1 Funzione “hidx”.

Questa funzione è il cuore del programma di ottimizzazione.La sua sintassi di chiamata è:

[f,g]=hidx(x) dove

• x è il vettore che descrive le matrici delle funzionidi

peso.

• f è l’indice di qualità che deve essere minimizzato nella

regione ammissibile.

• g definisce la regione ammissibile come quella regione

nello spazio delle x in cui ogni elemento di g è minore

di zero.

Come già detto, adotteremo matrici diagonali delle funzioni di peso con la stessa funzione

della frequenza per ogni canale.

Sia:

σ ω ωσ ω ω

( ( )) ( )

( ( )) ( )

M j lm j

S j ls j

<<

Eq.4-11

Per il modo in cui definiremo le funzioni di peso (vedere sezione 4.2), dovremo prima

definire ls(s) e lm(s) come funzioni invertibili di primo ordine, e quindi per ognuna di esse,

avremo bisogno di tre numeri:

1. frequenza del polo.

2. frequenza dello zero.

3. guadagno per s=∞ per s=0.

Per ls la frequenza del polo è fissata a 10^(-6) rad/sec e dovremo fornire la frequenza dello

zero (maggiore di quella del polo) e per il guadagno in s=∞.

I primi due elementi di x si riferiscono ad ls ed hanno questo significato:

x(1) = guadagno per ls(s=inf) in decibel.

x(2) tale che 10^x(2) = frequenza dello zero di ls in rad/sac.

Page 57: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

57

Per lm la frequenza dello zero è fissata a 10^(6) rad/sec e dovremo fornire la frequenza del

polo (minore di quella dello zero) e per il guadagno in s=0.

Gli ultimi due elementi di x hanno questo significato:

x(3) = guadagno per lm(s=0) (decibel).

x(4) tale che 10^x(2) = frequenza del polo di ls(rad/sac).

Prima di chiamare questa funzione, le variabili che seguiranno devono essere definite nello

spazio di lavoro come globali; normalmente questa funzione è chiamata da una funzione

più esterna, la quale provvede a ciò, e quindi non sarà necessario preoccuparsi di questo, a

meno che, non vogliamo utilizzare la funzione indipendentemente dall’algoritmo di

ottimizzazione.

Queste variabili sono:

plt, se è diversa da zero abilita l’esposizione automatica di alcuni risultati e deve

essere tenuta a zero durante il procedimento di ottimizzazione per evitare di

rallentarlo eccessivamente.

nl, se è diversa da zero abilita una simulazione sull’impianto non lineare e viene

generalmente mantenuta a zero se tale simulazione necessita di tempi

piuttosto lunghi.

sz, numero di righe e colonne dell’ impianto in A B C D (quadrato).

A B C D, modello lineare del sistema G in

Ak Bk Ck Dk, sono le variabili destinate ad essere riempite dalle matrici del controllore.

a1 b1 c1 d1, sono le variabili destinate ad essere riempite dal sistema che rappresenta la

matrice delle funzioni di peso per la sensitività, cioè Ws(s).

Page 58: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

58

a2 b2 c2 d2, sono le variabili destinate ad essere riempite dal sistema che rappresenta la

matrice delle funzioni di peso per la sensitività di controllo, cioè Wm(s).

Le variabili uequ yequ e N, vengono riempite rispettivamente con u e y, nel punto di

equilibrio, e con il numero dei segmenti nel cavo; quindi queste sono variabili che

riguardano il sistema particolare e che non dovrebbero più essere nello spazio di lavoro per

un altro sistema.

Le variabili che seguono sono necessarie soltanto per la procedura di ottimizzazione:

X, È una matrice contenente in ogni colonna il vettore x corrispondente ai

quattro migliori controllori ottenuti (la prima colonna individua il miglior

controllore ottenuto).

F, È un numero che rappresenta il migliore indice

ottenuto { F=max(0,1e5*g(X(:,1)))+f(X(:,1)) }.

CT, È un contatore che indica quante volte questa funzione è stata chiamata

Vediamo il codice con maggiori dettagli:

• Per prima cosa c’è l’inizializzazione e l’incremento del

contatore globale:

global plt nl sz A B C D Ak Bk Ck Dk a1 b1 c1 d1 a2 b2 c2 d2 uequ yequ N X F CT

CT=CT+1,

Page 59: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

59

• L’ istruzione:

w=logspace(-6,6,100);

definisce un vettore di 100 punti spaziato logaritmicamente tra 10^-6 e 10^6, che

utilizzeremo come frequenza.

• Le due linee:

[a1,b1,c1,d1]= hfot(-6,x(2),x(1),1,sz);

[a2,b2,c2,d2]= hfot (6,x(4),x(3),1,sz);

servono per la creazione delle matrici delle funzioni di peso a partire dal vettore x

(vedere l’ help nella funzione hfot per maggiori dettagli).

• Le linee:

[aw1,bw1,cw1,dw1]=hfot(-6,x(2),x(1),0,1);

[aw2,bw2,cw2,dw2]=hfot(6,x(4),x(3),0,1);

sw1=max([sigma(aw1,bw1,cw1,dw1,w);-inf*ones(size(w))]);

sw2=max([sigma(aw2,bw2,cw2,dw2,w);-inf*ones(size(w))]);

costruiscono ls(s) e lm(s) e li immagazzinano nei vettori sw1 e sw2.

A cosa serve la riga -inf*ones(size(w)) ?.

Supponiamo che essa non ci sia e che sigma(aw2,bw2,cw2,dw2,w) esprima l’andamento

in frequenza di un solo valore singolare.In tal caso l’istruzione “max”estrarrebbe il

massimo valore in frequenza di questa risposta.Quello che noi vogliamo,invece,è la

risposta in frequenza tutta intera,e per questo motivo è necessaria la presenza della riga -

inf.*ones(size(w)).

Page 60: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

60

Adesso che abbiamo sistemi e funzioni di peso, dobbiamo costruire l’ impianto nella forma

generale come mostrato in Fig. 4-3 per la procedura H∞.

Esistono vari metodi in Matlab per l’interconnessione dei sistemi, il µ-tools toolbox

fornisce anche un m-file chiamato “sysic” piuttosto semplice da utilizzare.

Dopo aver fatto alcuni confronti, è stato deciso di interconnettere i blocchi utilizzando

l’interfaccia grafica Simulink, e dopo utilizzare “linmod” per estrarre il modello lineare di

tutto il sistema ottenuto.

Questo viene fatto tramite le istruzioni “[ap,bp,cp,dp]=linmod('hloop');”

dove ap,bp,cp,dp è l’impianto da controllare e hloop è lo schema in Fig. 4-4.

emu

Demux2

6

e67

e78

e89

e910

e10

5

e5

4

e4

3

e3

2

e2

1

e1

emu

Demux1

++

Sum

10

u10

8

u8

Mux

Mux2

9

u9

7

u7

6

u6

15

e15

14

e14

13

e13

12

e12

11

e11

emu

Demux3

x’ = Ax+Bu y = Cx+Du

System

1

u12

u2

5

u5

4

u4

3

u3

Mux

Mux1x’ = Ax+Bu y = Cx+Du

W2(s)

x’ = Ax+Bu y = Cx+Du

W1(s)

Fig. 4-4

Page 61: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

61

Le ragioni di questa scelta tra i vari metodi di interconnessione possibili sono tre:

1) È il metodo più adatto per l’utente ed è facile da gestire.

2) È il metodo più veloce, e questo è importante visto che utilizzeremo questa funzione

diverse volte durante l’ottimizzazione.

3) È stato provato essere il metodo numericamente più affidabile, specialmente per sistemi

complessi di ordine elevato.

Svantaggi possibili di questo metodo sono:

1) Necessità di utilizzare variabili globali.

2) Necessità di cambiare il numero delle porte di input ed output nello schema Simulink, se

vogliamo utilizzare l’algoritmo di ottimizzazione per un altro impianto con un numero

diverso di ingressi o uscite

• L’istruzione:

plant=pck(ap,bp,cp,dp);

Impacchetta l’impianto nella forma ” packed state space” utilizzata in µ-tools.

• Con le istruzioni

gmax=1;

[K,P,gf]=hinfsyne(plant,sz,sz,0,gmax,.01,inf,1);

viene fatto un primo tentativo di trovare la soluzione per γ nell’intervallo 0-1.

Page 62: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

62

• Se il tentativo fallisce,l’intervallo di ricerca per γ viene

successivamente esteso fino a che non si trova un

controllore:

while K==[]:

gmax=10*gmax;

[K,P,gf]=hinfsyne(plant,sz,sz,0,gmax,.01,inf,1);

end

• Con l’istruzione:

[Ak,Bk,Ck,Dk]=unpck(K);

il controllore viene poi memorizzato nelle variabili globali Ak,Bk,Ck,Dk.

La sezione che segue fornisce la sensitività dell’ impianto a circuito chiuso ottenuto.

• L’ istruzione:

[ap1,bp1,cp1,dp1]=linmod('hloop1');

dove hloop1 è lo schema della Fig. 4-5, serve per calcolare le variabili ap1,bp1,cp1,dp1,

che contengono la funzione di trasferimento della sensitività.

1

u12

u2

5

u5

4

u4

3

u3

Mux

Mux1

++

Sum

x’ = Ax+Bu y = Cx+Du

System

x’ = Ax+Bu y = Cx+Du

Control

5

e5

4

e4

3

e3

2

e2

1

e1

emu

Demux1

Fig. 4-5

Page 63: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

63

• L’ istruzione:

sv1=max([sigma(ap1,bp1,cp1,dp1,w);-inf*ones(size(w))]);

calcola la risposta in frequenza della sensitività.

• L’istruzione successiva è:

ow1=20*log10(min(sw1./sv1));

dove la variabile ow1 è una misura in decibel della distanza tra il valore singolare

massimo della sensitività e il limite superiore ls(s), questa variabile potrebbe essere

utilizzata nel calcolo dell’indice di qualità.

• Il blocco di istruzioni:

if plt,

f1=fig.;

subplot(2,1,1);

semilogx(w,20*log10(sw1),'w');

hold on

semilogx(w,20*log10(sv1),'r');

title('sensitivity');

end

serve per disegnare l’andamento della sensitività e di ls(s) nel caso che la variabile plt

sia diversa da zero.

Page 64: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

64

La sezione che segue calcola la sensitività di controllo dell’impianto a circuito chiuso.

• L’ istruzione:

[ap2,bp2,cp2,dp2]=linmod('hloop2');

dove hloop2 è lo schema della Fig. 4-5, serve per calcolare le variabili ap2,bp2,cp2,dp2,

che contengono la funzione di trasferimento della sensitività di controllo.

emu

Demux1

1

e12

e23

e34

e45

e5

1

u12

u2

5

u5

4

u4

3

u3

Mux

Mux1

x’ = Ax+Bu y = Cx+Du

System

x’ = Ax+Bu y = Cx+Du

Control

++

Sum

Fig. 4-6

• L’istruzione:

sv2=max([sigma(ap2,bp2,cp2,dp2,w);-inf*ones(size(w))]);

calcola la risposta in frequenza della sensitività di controllo.

Page 65: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

65

• L’istruzione successiva è:

ow2=20*log10(min(sw2./sv2));

dove la variabile ow2 è una misura in decibel della distanza tra il valore singolare

massimo della sensitività di controllo e il limite superiore lm(s), questa variabile

potrebbe essere utilizzata nel calcolo dell’indice di qualità.

La sezione successiva calcola le risposte nel tempo (una per ogni canale), del segnale di

controllo con un gradino come comando di riferimento nell’ingresso relativo:

• Le relative istruzioni sono:

mxu=zeros(1,sz);

for n=1:sz;

[y,xsys,t]=step(ap2,bp2(:,n),cp2(n,:),dp2(n,n),1);

mxu(n)=max(y);

end

• L’istruzione:

mxu=max(abs(mxu));

estrae il valore massimo del segnale di controllo, anche questo valore potrà essere

utilizzato nel calcolo dell’indice di qualità.

Page 66: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

66

• Il blocco di istruzioni:

if plt,

subplot(2,1,2);

semilogx(w,20*log10(sw2),'w');

hold on

semilogx(w,20*log10(sv2),'b');

title('control sensitivity');

end

serve per disegnare l’andamento della sensitività di controllo e di lm(s),se plt è diversa

da zero.

La sezione che segue analizzerà completamente l’ impianto a ciclo chiuso.

Le matrici nello spazio degli stati dell’ impianto a ciclo chiuso potrebbero essere calcolate

interconnettendo il sistema A,B,C,D ed il controllore Ak Bk Ck Dk, ad ogni modo è stato

deciso di ottenere queste matrici applicando il controllore direttamente all’ impianto non

lineare e linearizzando poi tutto l’impianto, poichè questa è la maniera più affidabile, nel

senso che l’impianto lineare a ciclo chiuso così ottenuto è più vicino a quello vero di quanto

lo sia quello calcolato direttamente interconnettendo i sistemi lineari tra loro.

• L’istruzione:

s4=lmc2('nl3c',[0;0;0;0;0],[3;0;0],[0;0;0]);

Restituisce il modello lineare impacchettato nella variabile s4.

La funzione “lmc2” linearizza l’ impianto nel punto operativo di riferimento (vedere l’

help della funzione per maggiori dettagli).

Page 67: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

67

• Le istruzioni:

mp4=max(real(spoles(s4)));

mf4=abs(max(spoles(s4)));

calcolano le variabili mp4 ed mf4 che rappresentano rispettivamente la massima parte

reale di un polo, e il massimo valore assoluto di un polo, tra tutti i poli dell’ impianto.

La sezione seguente calcola le risposte del tempo dell’ impianto a ciclo chiuso per ogni

canale con un gradino come comando di riferimento nel relativo ingresso.

• Le istruzioni:

[A4,B4,C4,D4]=unpck(s4);

g4=D4-C4*inv(A4)*B4;

“spacchettano” l’impianto a ciclo chiuso, e calcolano la matrice di trasferimento per s=0

ogni colonna della quale, come è noto, rappresenta anche il valore delle uscite per t=∞

quando all’ ingresso corrispondente alla colonna viene applicato un gradino.

• Istruzione di inizio ciclo:

for n=1:sz;

Page 68: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

68

• Le istruzioni seguenti:

[y,xsys,t]=step(A4,B4(:,n),C4(n,:),D4(n,n),1);

g0=g4(n,n);

Calcolano la risposta al gradino per l’ n-esimo canale ed il suo valore in t=∞.

• L’istruzione:

ts4(n)=max(t'.*(abs(y-g0)>.05*abs(g0)));

calcola il settling time della risposta y(t) (notare che g0=y(∞)):

• La linea che calcola l’ overshoot delle stesse risposte è:

os4(n)=abs(max(y-g0)/g0);

• Istruzione di fine ciclo:

end

• Le istruzioni:

ts4=max(ts4);

os4=max(os4);

Calcolano il valore massimo dell’ overshoot e del setting time tra i diversi canali:

Page 69: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

69

C’è poi una parte della funzione che, se la variabile nl è diversa da zero, permette di fare

una simulazione sull’ impianto non-lineare.

Questa parte richiede tempi di calcolo molto lunghi e per questo non è stata utilizzata

nell’ottimizzazione, ma soltanto per analizzare i risultati a procedura di ottimizzazione

conclusa.

Essendo poi abbastanza complessa ed irrilevante per la comprensione dell’algoritmo, non è

stata qui presa in considerazione.

L’indice di qualità è ottenuto come prodotto di un vettore q contenente tutte le variabili

che possono essere utilizzate, per un vettore di coefficenti scelti dal progettista, e

dipendenti dalle specifiche di impianto.

• Le istruzioni

q =[ x(1); x(2); x(3); x(4); ow1; ow2; gf; mxu; mp4; mf4; os4; ts4]

f = [0, 0, 0, 0, 0, 0, 1e-1, 0, 0, 0, 0, 1 ]*q

servono appunto per definire il vettore delle variabili che possono essere usate, e

calcolare l’ indice di qualità f come prodotto di questo vettore per un vettore di

coefficienti scelti dall’ utente.

I vincoli sono espressi dalla relazione g <= 0.

• L’istruzione che definisce il vettore g è:

g=[mxu-2;1e7*mp4]

Page 70: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

70

La funzione costo e i vincoli mostrati sopra, sono proprio quelli utilizzati nel nostro caso.

Il vincolo è fatto in modo che il sistema a ciclo chiuso sia stabile (1e7*mp4 < 0), che il

segnale di controllo sia sempre minore di 2 con un gradino in ingresso (mxu-2 < 0).

La quantità da minimizzare è una combinazione tra il settling time (1*ts4), ed il valore

finale di γ (1e-1*gf).

• L’istruzione:

if min([ finite(f) finite(g') ])==0, f=inf;g=inf; end

pone f e g ad infinito se qualcuno dei loro valori non è un numero finito.

Cio’ viene fatto per evitare possibili propagazioni di NaN (Not A Number) attraverso la

procedura di ottimizzazione.

• L’istruzione:

fc=max(max(g),0)*1e5+f;

calcola l’indice utilizzato per confrontare i vari controllori ( che è uguale ad f se g <= 0

).

• Il blocco di istruzioni:

if fc<F,

F=fc;

X=[reshape(x,4,1) X(:,1:3)]

end

sposta a destra le prime tre colonne di X, perdendo l’ultima e salva il vettore x relativo al

miglior controllore, come prima colonna di X.

Page 71: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

71

Il mantenimento in memoria dei migliori controllori trovati rende possibile fermare la

routine di ottimizzazione e vedere quale è il controllore migliore trovato fino a quel

momento.

• Istruzione di fine funzione:

end

4.3.2 Funzione “hopt”.

Questo m-file è l’interfaccia esterna dell’algoritmo di ottimizzazione.

La variabile s0 è destinata a contenere il sistema che deve essere controllato, ed è l’unica

variabile che deve essere messa nello spazio di lavoro prima di far funzionare hopt.

• L’istruzione:

global plt nl sz A B C D Ak Bk Ck Dk a1 b1 c1 d1 a2 b2 c2 d2 X F N uequ yequ CT

inizializza come “globali” le variabili in essa contenute.

• L’istruzione:

plt=0;nl=0;

pone a zero le variabili plt ed nl , in modo da saltare la routine di visualizzazione e la

routine per calcolare la risposta dell’ impianto non lineare in hidx.

Page 72: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

72

• Le istruzioni:

[A,B,C,D]=unpck(s0);

sz=size(B,2);

format long

CT=0;

F=inf;

X=zeros(4,4);

servono per inizializzare le variabili globali.

La variabile options contiene opzioni per la funzione “constr” utilizzata per

l’ottimizzazione ( vedere help FOPTIONS per ulteriori dettagli ).

• Le istruzioni:

options=[];

options(14)=40;

servono per settare a 40 il massimo numero delle iterazioni, e lasciare le altre opzioni ai

valori di default.

Dopo la scelta della funzione da minimizzare, la scelta del punto di partenza è la parte

più critica della procedura di ottimizzazione.

Il punto di partenza dovrebbe essere scelto secondo alcuni metodi come quello presentato

in sezione 4.2; è sicuramente utile, se non necessario, lanciare alcune volte la funzione

hidx, per conoscere le quantità con cui abbiamo a che fare e per migliorare l’idoneità degli

indici, dei punti di partenza e dei limiti.

Page 73: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

73

I limiti definiscono la regione in cui stiamo cercando la soluzione, che non dovrebbe essere

troppo grande se scegliamo un buon punto di partenza.

Per il nostro problema, punto di partenza e limiti, sono stati trovati come risultato di varie

ricerche per il punto minimo e sono così definiti:

• L’istruzione:

x=[6.63071609934561 -0.00000001000000 29.24136343802332 0.67538629717924]';

definisce il punto di partenza.

• Le istruzioni:

vlb=x-[5 .5 10 1]';

vub=x+[5 .5 10 1]';

definiscono i limiti inferiore e superiore.

La parte che segue serve per la ricerca di un punto di partenza migliore nella regione

definita dai limiti, e può essere saltata se siamo sicuri che non esistono punti di partenza

migliori nelle vicinanze di quello che abbiamo scelto.

• L’istruzione:

eval('[f,g]=hidx(x);','');

esegue hidx sul punto di partenza.

Page 74: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

74

La funzione hidx viene chiamata indirettamente con la sintassi eval('[f,g]=hidx(x);','');

perchè così, se questa si arresta per qualche motivo, il programma non si ferma e considera

un altro punto.

In ognuna delle quattro direzioni dello spazio di x , avremo un segmento (indichiamo con

lseg la sua lunghezza), che và dal limite inferiore a quello superiore, ed avrà il punto di

partenza fornito all’ inizio come suo punto medio.

In questo segmento vengono considerati due punti vicini alle estremità, essi sono:

limite inferiore più 1/5*lseg, e limite superiore meno 1/5*lseg.

Avremo quindi un totale di 16 punti che individuano un ipercubo nello spazio delle x.

• Il blocco di istruzioni:

stp1=(vub(1)-vlb(1))/5;

for i1=[vlb(1)+stp1 vub(1)-stp1],

stp2=(vub(2)-vlb(2))/5;

for i2=[vlb(2)+stp2 vub(2)-stp2],

stp3=(vub(3)-vlb(3))/5;

for i3=[vlb(3)+stp3 vub(3)-stp3],

stp4=(vub(4)-vlb(4))/5;

for i4=[vlb(4)+stp4 vub(4)-stp4],

x=[i1 i2 i3 i4];

eval('[f,g]=hidx(x);','');

end

end

end

end

effettua le ricerca del miglior punto tra i 16 suddetti.

Page 75: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

75

• Il seguente blocco di istruzioni:

error=0;

x=X(:,1);

while (error < 3)&(CT < options(14)),

eval('constr(''hidx'',x,options,vlb,vub);',...

'x=X(:,1)+rand(size(X(:,1)));error=error+1');

end

seleziona come punto di partenza il punto migliore trovato ed esegue la funzione

“constr”, se qualcosa va male nel corso dell’ottimizzazione, essa viene rieseguita (per

non più di due volte) partendo dal migliore tra punti disponibili in quel momento.

• Le istruzioni:

nl=1;plt=1;

[f,g]=hidx(X(:,1));

save sc3 Ak Bk Ck Dk X s0

visualizzano i risultati e salvano i dati relativi al miglior controllore.

Page 76: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

76

5. RisultatiLa procedura di ottimizzazione descritta nel capitolo precedente, applicata al modello

lineare ridotto, con il punto di partenza e la funzione costo precedentemente mostrati, ha

dato come risultato un controllore H∞ (5 ingressi, 5 uscite, 29 stati, stabile), per il punto di

equilibrio scelto.

5.1 Sensitività e controllo della sensitività.

La Fig. 5-1 mostra il valore singolare massimo della sensitività, e della sensitività di

controllo, ed i relativi limiti superiori ls(s) e lm(s).

10−6

10−4

10−2

100

102

104

106

−150

−100

−50

0

50sensitivity

10−6

10−4

10−2

100

102

104

106

−200

−100

0

100control sensitivity

Fig. 5-1

Come possiamo vedere, alle basse frequenze la sensitività, che si trova leggermente al di

sotto del suo limite superiore, è abbastanza piccola, e discende con 20 dB/dec,il che

Page 77: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

77

dovrebbe garantire buone prestazioni in termini di reiezione dei disturbi ed inseguimento

del segnale di riferimento.

Alle alte frequenze la sensitività di controllo è molto al di sotto dei propri limiti, e discende

con 40 dB/dec.,il che dovrebbe garantire un buona reiezione del rumore dei sensori, e

buona robustezza a fronte di incertezze additive.

5.2 Impianto a ciclo chiuso linearizzato.

Chiameremo impianto “a ciclo chiuso linearizzato” l’ impianto ottenuto dalla

linearizzazione del circuito chiuso tra il sistema non lineare di Fig. 2-9 e controllore.

Questo è un impianto stabile di 5 ingressi, 5 uscite, 65 stati, le cui caratteristiche saranno

descritte in questa sezione.

Per via del modo in cui il Simulink ordina gli stati, i primi 31 stati sono esattamente quelli

descritti in sezione 3.1, ci sono poi i 29 stati del controllore, e gli ultimi 5 stati

appartengono alla funzione di trasferimento del blocco fcn degli attuatori.

La Fig. 5-2 mostra i poli e gli zeri del sistema, i valori singolari, controllabilità e

osservabilità degli stati, e guadagno di ogni elemento della funzione di trasferimento ad una

frequenza di 0.1 rad/sec.

Page 78: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

78

−2 −1 0 1

x 106

−20

−10

0

10

20

Real Axis

Imag

Axi

s

system poles & zeros

10−4

10−2

100

102

−200

−100

0

100

Frequency (rad/sec)

Sin

gula

r V

alue

s dB

system singular values

0 20 40 60 8010

−5

100

105

1010

1015

state

ctrb

(re

d), o

bsv

(blu

e)

ctrb & obsv gram. sv

1 2 3 4 5−5

−4

−3

−2

−1

input

outp

ut

max.sv.(G(jw,i,j))

Fig. 5-2

A causa dei tre zeri attorno a -1*10^(6) non possiamo vedere bene le posizioni degli altri

zeri e dei poli.

Per ciò che riguarda controllabilità e osservabilità, è interessante notare che tutti gli stati del

controllore sono molto più controllabili che osservabili, e ad ogni modo la controllabilità e

l’osservabilità hanno circa lo stesso valore medio (il che non si verificava nell’ impianto a

ciclo aperto).

Dal diagramma dei valori singolari possiamo vedere che fino a 1 rad/sec il guadagno del

sistema è 1 in ogni direzione, questo dovrebbe garantire un buon tracking del segnale di

riferimento a queste frequenze.

Possiamo anche vedere che il guadagno del sistema diminuisce velocemente dopo 10

rad/sec.

Page 79: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

79

Infine, a 0.1 rad/sec la struttura del sistema è molto diagonale, come si potrebbe mostrare

anche con una analisi dei vettori singolari: questo dovrebbe garantire un buon

disaccoppiamento (almeno intorno al punto di lavoro ).

La Fig. 5-3, mostra le risposte al gradino relative ad ogni elemento della funzione di

trasferimento.

0 5 100

1

2

0 1 2

x 106

−5

0

5x 10

−4

0 1 2

x 106

−2

0

2x 10

−4

0 1 2

x 106

−1

0

1x 10

−5

0 1 2

x 106

−2

0

2x 10

−4

0 5 10

x 105

−2

0

2x 10

−5

0 100 2000

1

2

0 5 10

x 105

−2

0

2x 10

−5

0 5 10

x 105

−2

0

2x 10

−6

0 5 10

x 105

−2

0

2x 10

−5

0 1 2

x 106

−5

0

5x 10

−4

0 1 2

x 106

−5

0

5x 10

−4

0 5 100

1

2

0 50 100−0.05

0

0.05

0 5 10

x 105

−5

0

5x 10

−4

0 5 10

x 105

−1

0

1x 10

−5

0 1000 2000−0.02

0

0.02

0 5 10

x 105

0

x 10−4

0 20 400

1

2

0 5 10

x 105

−5

0

5x 10

−6

0 1 2

x 106

0

x 10−4

0 1 2

x 106

−2

0

2x 10

−4

0 5 10

x 105

−2

0

2x 10

−4

0 5 10

x 105

−2

0

2x 10

−5

0 10 200

1

2

Fig. 5-3

Si può vedere che il settling time va dai 2 ai 4 secondi, e l’ accoppiamento tra i canali è

molto limitato.

Page 80: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

80

5.3 Impianto non lineare controllato

In questa sezione analizzeremo tutte le risposte dell’ impianto non lineare controllato.

Nelle figure dalla Fig. 5-4 alla 5-17, sono riportate le risposte del sistema quando si insegue

una rampa di pendenza 0,1 e ampiezza 15, applicata in un unico ingresso.

Questo è un modo per capire quanto è ampia la regione circostante il punto di lavoro dove

il controllore lavora bene, e come la capacità del sistema di seguire comandi piuttosto

semplici, diminuisce quando ci muoviamo lontano dal punto di lavoro.

• Primo canale (regolazione del roll):

0 50 100 150 200 250−2

0

2

4

6

8

10

12

14

16

time

chan

nel1

nonlinear plant response

Fig. 5-4

l’ inseguimento del segnale di comando è perfetto.

Page 81: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

81

• Secondo canale (sway):

0 50 100 150 200 2500

2

4

6

8

10

12

14

16

time

chan

nel2

nonlinear plant response

Fig. 5-5

l’inseguimento è molto buono fino a 14 metri.

• Terzo canale (yaw):

0 50 100 150 200 250−2

0

2

4

6

8

10

12

14

16

18

time

chan

nel3

nonlinear plant response

Fig. 5-6

Page 82: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

82

Il terzo canale sembra essere il più critico: dopo 13 gradi, la non-linearità dell’ impianto

inizia ad agire, anche se l’attuatore è ancora in grado di seguire il riferimento ma con un

errore che può raggiungere i 2 gradi.

• Canali quarto (heave), e quinto (pitch):

0 50 100 150 200 2500

2

4

6

8

10

12

14

16

time

chan

nel4

nonlinear plant response

Fig. 5-7

0 50 100 150 200 2500

2

4

6

8

10

12

14

16

time

chan

nel5

nonlinear plant response

L’inseguimento del comando è molto buono.

Page 83: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

83

Si potrebbe mostrare che in tutti questi casi l’interazione fra i canali è scarsa.

Nelle figure dalla Fig. 5-8 alla Fig. 5-12 è riportata la risposta del sistema ad un comando

più complesso.

Viene dato come comando una rampa di ampiezza 5 metri con una pendenza di 0.2 ,prima

per lo sway , dopo 150 secondi per l’heave e dopo intervalli di 150 secondi lo stesso

comando (5 gradi di ampiezza, pendenza 0.2) viene dato per pitch, yaw e roll.

Tutto ciò allo scopo di vedere come si comporta il sistema quando è soggetto

contemporeanamente a comandi su canali differenti.

• Comando dopo 1 secondo: 5 metri di sway:

0 100 200 300 400 500 600 700 800−1

0

1

2

3

4

5

6

Fig. 5-8

Page 84: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

84

• Comando dopo 150 secondi: 5 metri di heave.

0 100 200 300 400 500 600 700 800−1

0

1

2

3

4

5

6

Fig. 5-9

• Comando dopo 300 secondi: 5 gradi di pitch.

0 100 200 300 400 500 600 700 800−1

0

1

2

3

4

5

6

Fig. 5-10

Page 85: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

85

• Comando dopo 450 secondi: 5 gradi di yaw.

0 100 200 300 400 500 600 700 800−1

0

1

2

3

4

5

6

Fig. 5-11

• Comando dopo 600 secondi: 5 gradi di roll.

0 100 200 300 400 500 600 700 800−1

0

1

2

3

4

5

6

Fig. 5-12

Page 86: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

86

Come possiamo notare, il comportamento del sistema è molto buono, può seguire tutti i 5

comandi indipendentemente con un’interazione molto limitata.

Nei grafici daFig. 5-13 a Fig. 5-17 è riportata la risposta del sistema relativa ad un comando, simile al

precedente, avente però ampiezza 10 anzichè 5.

• Comando dopo 1 secondo: 10 metri di sway.

0 100 200 300 400 500 600 700 800−2

0

2

4

6

8

10

12

Fig. 5-13

Page 87: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

87

• Comando dopo 150 secondi: 10 metri di heave:

0 100 200 300 400 500 600 700 800−2

0

2

4

6

8

10

12

Fig. 5-14

• Comando dopo 300 secondi: 10 gradi di pitch:

0 100 200 300 400 500 600 700 800−2

0

2

4

6

8

10

12

Fig. 5-15

Page 88: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

88

• Comando dopo 450 secondi: 10 gradi di yaw.

0 100 200 300 400 500 600 700 800−2

0

2

4

6

8

10

12

Fig. 5-16

• Comando dopo 600 secondi: 10 gradi di roll.

0 100 200 300 400 500 600 700 800−0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

Fig. 5-17

Page 89: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

89

Come prevedibile il comportamento del sistema non è stato buono come nel caso

precedente; infatti l’interazione tra canali è maggiore, ed in particolare l’interazione tra

pitch ed heave.

Il sistema segue difficilmente comandi più severi e contemporanei per heave, pitch, e roll.

Da notare però che, in pratica, di un comando così articolato ne avremo bisogno raramente,

e che comunque i comandi isolati di heave e pitch funzionano molto bene.

In conclusione, il funzionamento di questi controllori è molto buono nell’arco dei 5 metri-5

gradi , e potrebbe essere accettabile nell’arco di 10 metri-10 gradi, a meno di non voler

inseguire contemporeanamente 5 comandi abbastanza ampi..

Fuori dall’arco dei 15 metri-15gradi le prestazioni del sistema diminuiscono rapidamente,

quindi, se vogliamo controllare il veicolo fuori da questi limiti, dovremo affrontare la non-

linearità dell’ impianto e progettare un controllore gain-scheduling o self-tuning.

Page 90: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

90

6. Controllo LQG

Allo scopo di confrontare il controllo H∞ con un controllo di tipo standard è stato realizzato

un controllo di tipo lineare quadratico gaussiano (LQG).

6.1 TeoriaIl problema del controllo LQG è il seguente:

Supponiamo di avere un sistema nello spazio degli stati:

[ ] [ ][ ] [ ]&( )

( )

( )

( )

( )

( )x t

y t

A B

C D

x t

u tW

V

d t

d t= +

1

2

1

2

0

0

1

2Eq 6-1

dove il vettore d(t) è un rumore bianco con densità spettrale di potenza:

Φdd s I( ) = Eq 6-2

percui i rumori w(t) e v(t) entranti rispettivamente sugli stati e sulle uscite hanno densità

spettrali di potenza:

Φ

ΦΦ

wwT

vvT

wv

s W W

s V V

s

( )

( )

( )

= = ≥

= = >=

0

0

0Eq 6-3

Il problema è allora trovare un controllo tale da minimizzare l’indice di costo:

J E z t z t dtt

Tt

= ∫

→∞

lim ( ) ( )0

Eq 6-4

Page 91: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

91

dove:

z tz t

z tQ

R

x t

u t( )

( )

( )

( )

( )=

=

1

2

1

2

1

2

0

0Eq 6-5

per cui, all’ interno dell’ integrale le matrici che pesano stati e ingressi sono:

Q Q

R R

T

T

= ≥

= >

0

0Eq 6-6

Il controllore che risolve il problema ha la seguente funzione di trasferimento:

K s K sI A BK K C K DK Kc c f f c f( ) ( )= − − + + + −1 Eq 6-7

con

K R B Ric H

K Ric J C V

cT

fT

=

=

12

21

( )

( )Eq 6-8

dove H2 ed J2 sono le seguenti matrici hamiltoniane:

HA BR B

Q A

JA C V C

W A

T

T

T T

T

2

1

2

1

=−

− −

=−

− −

− Eq 6-9

Da notare che K(s) contiene tanti stati quanti ne contiene l’impianto.

Page 92: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

92

6.2 Analogie con il problema H∞∞∞∞

Data una funzione di trasferimento T(s) si chiama “norma-due” della funzione la quantità:

( )T s tr T s T s dsT

j

j

( ) ( ) ( )2

1

2= ∫

− ∞

π Eq 6-10

dove con tr(M) si indica la traccia della matrice M, ossia la somma degli elementi sulla

diagonale principale.

La norma-due è la radice quadrata della potenza media in uscita dal sistema quando in

ingresso è presente un rumore bianco, essa quindi dà precise informazioni sul guadagno di

potenza medio del sistema ( la norma-infinito riguardava invece il guadagno massimo ).

L’indice dell’ Eq. 6-4 ha un analogo corrispondente nel dominio della frequenza[ii]:

( )J tr s dszz

j

j

= ∫− ∞

∞1

2πΦ ( ) Eq 6-11

Applicando la legge di controllo:

u s K s y s( ) ( ) ( )= Eq 6-12

dove K(s) è quello descritto nell Eq. 6-7, l’unico segnale entrante del sistema rimane d(s).

Tra d(s) e z(s) ci sarà una funzione di trasferimento Tzd(s) (che ovviamente dipenderà anche

dal controllo K(s)), percui si ha:

Φ Φzz zdT

dd zd zdT

zds T s s T s T s T s( ) ( ) ( ) ( ) ( ) ( )= = Eq 6-13

e quindi l’indice che viene minimizzato dal controllo LQG è:

( )J T szd= ( ) 2

2Eq 6-14

Page 93: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

93

Da notare che Tzd(s)=LFT(K,P) dove P è l’impianto descritto dall’ Eq. 6-15:

&( )

( )

( )

( )

( )

( )

( )

( )

x t

z t

z t

y t

A W B

Q

R

C V D

x t

d t

d t

u t

1

2

1

2

1

2

1

2

1

2

1

2

0

0 0 0

0 0 0

0

=

Eq 6-15

graficamente:

+

+

+

Sum_y

+

+

Sum_x

1

d12

d23

u

3

y

B

W^(1/2)

V^(1/2)

R^(1/2)

Q^(1/2)

2

z21

z1C

D

sI−A)^(−1)

Fig. 6-1

Si può dimostrare [4] che il metodo H∞ per valori di γ molto elevati di fatto minimizza la

norma-due della LFT, cioè:

lim ( ( ), ) ( , )γ

γ→∞ ∞ =LFT K P LFT K P 2 Eq 6-16

A questo punto, possiamo concludere che il problema LQG è un caso particolare del

problema H∞ nel senso che, se aggiungiamo al sistema da controllare gli ingressi fittizi d(t),

e le uscite fittizie z(t) “pesandoli” con le matrici W1/2 V1/2 Q1/2 R1/2,come in Fig. 6-1, ed

applichiamo la procedura illustrata nel capitolo 4 con un γ → ∞, il controllore risultante

sarà un controllore LQG, che minimizzerà l’indice dell’ Eq. 6-4.

Page 94: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

94

6.3 DifferenzeOltre al fatto che la procedura LQG è indubbiamente molto più semplice, ci sono tre

differenze che vale la pena di notare, in particolare le ultime due sono fondamentali e

rappresentano la vera ragione del successo del metodo H∞.

1) Il controllo LQG minimizza la norma-due di una funzione di trasferimento, percui

minimizza un guadagno medio di potenza. La procedura H∞ invece minimizza la

norma-infinito e quindi un guadagno massimo.

2) La f.d.t minimizzata da LQG non è la f.d.t. vista da una qualche incertezza applicata

all’ impianto, ecco perchè LQG non è un controllo robusto. La f.d.t minimizzata da H∞

può essere scelta a piacere e normalmente comprende la f.d.t. vista da una incertezza

additiva applicata all’ impianto (sensitività di controllo).

3) Nel metodo H∞ normalmente le matrici di peso sono funzioni della frequenza e questo

vuol dire che:

A) Il controllore H∞ avrà degli stati in più rispetto al controllore LQG e precisamente

tutti gli stati delle matrici di peso.

B) Con un controllo LQG non riusciamo a modellare l’andamento in frequenza della

funzione di trasferimento che viene minimizzata, cosa che invece riesce

facilmente con il controllo H∞.

6.4 Risultati

Dopo diverse prove sono state scelte queste matrici di peso:

R V I

Q I

W I

= =

=

= −

5

191 37

192 39

10

10

*

*

.

.

si è calcolato il controllore descritto dalla 6-7 e lo si è applicato all’ impianto, con i seguenti

risultati:

Page 95: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

95

6.4.1 Sensitività e sensitività di controllo

La Fig. 6-2 mostra il massimo valore singolare della sensitività e della sensitività di

controllo:

10−6

10−4

10−2

100

102

104

106

0

2

4

6sensitivity

10−6

10−4

10−2

100

102

104

106

−150

−100

−50

0

50control sensitivity

Fig. 6-2

La sensitività di controllo potrebbe essere accettabile, la sensitività però ha un picco attorno

ad 1 rad/sec e anche a basse frequenze si mantiene costante sopra 0dB anzichè scendere.

Questo ci fa supporre che le prestazioni del controllore in termini di inseguimento dei

comandi non saranno buone.

Page 96: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

96

6.4.2 Impianto a ciclo chiuso linearizzato

In questa sezione chiameremo impianto “a ciclo chiuso linearizzato” l’ impianto ottenuto

dalla linearizzazione del circuito chiuso tra il sistema non lineare di Fig. 2-9 e controllore

LQG. Questo è un impianto stabile di 5 ingressi, 5 uscite, 55 stati, le cui caratteristiche

saranno descritte.

Per via del modo in cui il Simulink ordina gli stati, i primi 31 stati sono esattamente quelli

descritti in sezione 3.1, ci sono poi i 19 stati del controllore, e gli ultimi 5 stati

appartengono alla funzione di trasferimento del blocco fcn degli attuatori.

La Fig. 6-3 mostra i poli e gli zeri del sistema, i valori singolari, controllabilità e

osservabilità degli stati, e guadagno di ogni elemento della funzione di trasferimento ad una

frequenza di 0.1 rad/sec; ne derivano le seguenti considerazioni:

−40 −20 0 20−4

−2

0

2

4

Real Axis

Imag

Axi

s

system poles & zeros

10−4

10−2

100

102

−300

−200

−100

0

100

Frequency (rad/sec)

Sin

gula

r V

alue

s dB

system singular values

0 20 40 6010

−10

10−5

100

105

state

ctrb

(re

d), o

bsv

(blu

e)

ctrb & obsv gram. sv

1 2 3 4 5−5

−4

−3

−2

−1

input

outp

ut

max.sv.(G(jw,i,j))

Fig. 6-3

Page 97: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

97

Non ci sono zeri a grande distanza dall’ origine.

Per ciò che riguarda controllabilità e osservabilità, non si riscontra una sostanziale

differenza tra l’osservabilità e la controllabilità degli stati del controllore.

L’ andamento dei valori singolari è molto meno “liscio” di quello che si aveva con il

controllo H∞, inoltre anche a basse frequenze il guadagno del sistema non è lo stesso in

ogni direzione, e questo è una conferma del fatto che probabilmente il tracking del segnale

di riferimento non sarà molto buono.

Anche in questo caso il guadagno del sistema diminuisce velocemente dopo 10 rad/sec.

Infine, come si poteva immaginare, a 0.1 rad/sec la struttura del sistema non è così

diagonale come nel caso precedente.

La Fig. 6-4, mostra le risposte al gradino relative ad ogni elemento della funzione di

trasferimento.

0 50000

0.05

0.1

0 100 2000

0.1

0.2

0 2000 4000−0.2

0

0.2

0 100 200−0.02

0

0.02

0 2000 4000−0.2

−0.1

0

0 50 1000

0.5

0 50 1000

0.5

1

0 50 1000

0.5

1

0 50 1000

0.1

0.2

0 50 100−0.4

−0.2

0

0 200 400−0.4

−0.2

0

0 50 100−0.5

0

0 2000 4000−0.5

0

0.5

0 50 100−0.1

0

0.1

0 5000

0.1

0.2

0 1 2

x 104

−5

0

5x 10

−3

0 50 100−0.01

−0.005

0

0 5000 10000−0.01

0

0.01

0 50 1000

0.2

0.4

0 50 1000

0.1

0.2

0 500 1000−0.2

0

0.2

0 50 100−0.1

0

0.1

0 500 1000−0.5

0

0.5

0 500

0.2

0.4

0 200 4000

0.2

0.4

Fig. 6-4

Page 98: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

98

Si può vedere che il settling time va dai 20 ai 40 secondi, ( un ordine di grandezza in più

rispetto al caso precedente ) e l’ accoppiamento tra i canali è considerevole.

6.5 Impianto non lineare controllato

In questa sezione analizzeremo la risposta dell’ impianto non lineare controllato con il

controllore LQG, allo stesso comando dato come ultimo caso nel capitolo 5 cioè la rampa

di ampiezza 5 metri con una pendenza di 0.2 , prima per lo sway , dopo 150 secondi per

l’heave e dopo intervalli di 150 secondi lo stesso comando (5 gradi di ampiezza, pendenza

0.2) viene dato per pitch, yaw e roll.

• Comando dopo 1 secondo: 15 metri di sway:

0 100 200 300 400 500 600 700 800−25

−20

−15

−10

−5

0

5

10

15

Fig. 6-5

Page 99: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

99

• Comando dopo 150 secondi: 15 metri di heave.

0 100 200 300 400 500 600 700 800−0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

Fig. 6-6

• Comando dopo 300 secondi: 15 gradi di pitch.

0 100 200 300 400 500 600 700 800−3

−2

−1

0

1

2

3

4

Fig. 6-7

Page 100: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

100

• Comando dopo 450 secondi: 15 gradi di yaw.

0 100 200 300 400 500 600 700 800−50

−40

−30

−20

−10

0

10

Fig. 6-8

• Comando dopo 600 secondi: 15 gradi di roll.

0 100 200 300 400 500 600 700 800−1

0

1

2

3

4

5

6

Fig. 6-9

Page 101: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

101

La Fig. 6-10 mostra , per un confronto più facile, le risposte che si avevano nel caso H∞

(tutte insieme):

0 100 200 300 400 500 600 700 800−2

0

2

4

6

8

10

12

Fig. 6-10

Al di la del fatto che il comando è molto impegnativo e che probabilmente è utile solo per

confrontare i tipi di controllo, si vede subito che il confronto con il controllo H∞ è

improponibile: il controllore LQG non riesce a disaccoppiare i canali, e dopo 450 secondi,

in corrirpondenza del comando sullo yaw, il sistema esce si esce definitivamente dalla zona

di linearità.

Page 102: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

102

7. Controllo Adattivo

Allo scopo di gestire meglio le nonlinearità dell’ impianto si è provato a realizzare un

controllo di tipo adattivo, ossia un meccanismo che identifica alcuni parametri dell’

impianto durante il funzionamento e si adatta agli eventuali cambiamenti di tali parametri

ridisegnando il controllore.

Lo schema risultante è mostrato in Fig. 7-1:

Demux

Demux2

5T

4Z

3P

2Y

1F

Yaw

Pitch

Roll

Heave

Sway

1 f 2 y 3 p 5 t

Mux Mux2

4 z

Mux

yequ

Eq. values

CABLE − VEHICLESYSTEM

Demux

Demux1

R2D

rad2deguequ(9:14)

Ship vel & acc

Actuators −

+

Sum1

Mux Mux

1

Gainreference

roll

sway

yaw

heave

pitch

1/s

Lint11/s

Lint21/s

Lint31/s

Lint41/s

Lint5

Mux

Mux3

Clock zoh4

tTws4

ada1

Adaptation

x’ = Ax+Bu y = Cx+Du

Control

+++−

Sum2

blwnSign

1

Gain1

Mux Mux4

5_2_8

Demixing

D2R

deg2rad

y Tws2

zoh2zoh3

u Tws3

Load Data and model initialization

Fig. 7-1

In definitiva si cerca di realizzare un controllore che possa adattarsi ai cambiamenti dell’

impianto dovuti a fattori di tipo esterno (disturbi) o interni (spostamento dello stato dal

punto operativo).

Il blocco ‘ada1’ riceve in entrata ingressi ed uscite dell’

impianto, li campiona, e li usa per costruirsi un nuovo modello che a sua volta serve per

calcolare un nuovo controllore.

Sono necessarie quindi funzioni per l’identificazione (magari ricorsiva) di sistemi

multivariabili.

Page 103: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

103

7.1 Identificazione :

Il problema dell’ identificazione per sistemi lineari tempoinvarianti tempodiscreti [vi] è:

[ ]h g V e h g

y t g t u t h t e t

h g

n(. ), (. ) arg min ( (., (. ), (. ))

( ) ( ) ( ) ( ) ( )

( ) , ( )

== ⊗ + ⊗

= =0 1 0 0

Eq 7-1

Nel caso di identificazione “parametrica” le funzioni h(.) e g(.) dipendono da un vettore di

parametri θ , e la notazione che si usa é questa :

y t G q u t H q e t( ) ( , ) ( ) ( , ) ( )= +ϑ ϑ Eq 7-2

G ed H sono le z-trasformate delle risposte impulsive g ed h:

G q g k q

H q h k q

k

k

k

k

( , ) ( , )

( , ) ( , )

ϑ ϑ

ϑ ϑ

= ∑

= +∑

=

∞ −

=

∞ −

1

11

Eq 7-3

Le quantità X(q)y(t) rappresentano x(t)⊗ y(t) nel dominio del tempo, o X(q)Y(q) nel

dominio della frequenza.

La quantità da minimizzare è in genere la norma del segnale e(t), il quale rappresenta la

cosiddetta “innovazione” ossia la parte di y(t) che non puo’ essere predetta dai valori

passati di y(t) ed u(t).

Vn en

e t e tt

nT( (. )) ( ) ( )= ∑

=

1

2 1 Eq 7-4

Page 104: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

104

7.2 Algoritmi di identificazione MIMO :

Il system identification toolbox del Matlab [vii], supporta le seguenti funzioni per

l’identificazione multivariabile:

Consideriamo la funzione arx:

Si suppone che il modello abbia la seguente struttura:

G q A q B q

H q A q

( ) = ( ) ( )

( ) = ( )

-1

-1 Eq 7-5

cioè obbedisca all’ equazione:

A q y t B q u t e t( ) ( ) = ( ) ( ) + ( ) Eq 7-6

dove A(q) e B(q) sono matrici polinomiali i cui elementi sono:

a a q a q

b b q b q

ij ij ij ij

naij naij

ij ij

nkij

ij

nbij nbij

= + + ... +

= + ... +

δ 1 1

1

− −

− − Eq 7-7

la struttura è quindi individuata dalle 3 matrici na nb ed nk,

la prima è quadrata di dimensione ny, le altre due rettangolari di dimensione ny*nk.

la sintassi è la seguente:

th=arx([[[[y u]]]],[[[[na nb nk]]]]);

dove ogni riga di y (u) è il vettore delle uscite (ingressi) ad un certo istante, th è una matrice

che contiene la stima dei parametri, la loro varianza,ed altre utili informazioni.

Il modello arx è a regressione lineare, cioè le uscite sono una funzione lineare del vettore di

parametri θ il quale puo’ essere calcolato quindi con una semplice pseudoinversione di una

matrice contenente i dati, l’algoritmo è pertanto molto veloce.

Page 105: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

105

Un altra funzione adatta all’identificazione multivariabile è iv4

Il modello si suppone avere la stessa struttura vista in arx.

La sintassi è esattamente la stessa, si usa pero’ un altro criterio di minimizzazione, quello

delle variabili strumentali: in sostanza si tenta di imporre che alcune proiezioni della norma

di e(t) vadano a zero.

L’algoritmo è più lento di arx e da risultati leggermente inferiori rispetto a quest’ultimo.

Il problema con questo tipo di algoritmi è che i risultati sono fortemente dipendenti dal tipo

di struttura che si vuole identificare, e la struttura del sistema (che è comunque soggetta a

variazioni durante il funzionamento), non si conosce a priori.

Per sistemi SISO questo problema può essere risolto mediante le funzioni arxstruc e

selstruc:

Formando una matrice nn in modo che ogni sua riga sia del tipo [na nb nk], ed individui

quindi una struttura, la funzione arxstruc calcola per ogni struttura un indice v (loss-

function), rappresentante il valore della funzione minimizzata.

La sintassi è:

V=arxstruc([ye ue],[yv uv],nn);

[ye ue] sono i dati usati per calcolare il modello,

[yv uv] sono i dati usati per calcolare la funzione errore, usando il modello calcolato

precedentemente (cross validation).

V è il vettore contenente i valori di v per ogni struttura.

La funzione selstruc seleziona tra tutte le strutture quella con il minor valore di v:

nn=selstruc(V,0);

se il secondo argomento è ‘AIC’ o ‘FPÈ anzichè 0, si usa un criterio per compensare la

diminuzione di v all’ aumentare del numero di parametri della struttura nel caso in cui si

usino per la validazione gli stessi dati usati per la stima.

Page 106: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

106

La funzione spa (spectral analisys) è quella che, nel campo dell’identificazione non

parametrica, da i risultati migliori, ed è inoltre l’unica a poter essere usata per i sistemi

MIMO.

La risposta in frequenza del sistema viene calcolata direttamente nel seguente modo:

G e juu yu( ) ( ) ( )ω ω ω= −Φ Φ1 Eq 7-8

dove Φuu e Φyu sono le stime delle densità spettrali di potenza in ingresso,e mutua uscita

ingresso.

Si puo’ dimostrare che facendo cio’ viene implicitamente minimizzata una certa funzione

della norma di e(t).

I risultati ottenuti sono comunque inferiori di molto a quelli ottenuti con l’identificazione

parametrica.

La funzione forse più adatta all’ identificazione multivariabile (off line) è la funzione pem

(prediction error method).

Il modello è rappresentato nello spazio degli stati:

G q C qI A B

H q C qI A K I

( ) = ( )

( ) = ( ) +

-1

-1

−Eq 7-9

e si aggiunge ad y(t) il contributo di uno stato iniziale x(0) :

y t G q u t H q e t C qI A x t( ) = ( ) ( ) + ( ) ( ) + ( ) ( )-1− ( )0 δ Eq 7-10

Il tutto si puo esprimere più sinteticamente così:

[ ] [ ]x t

y t

A B K x

C I

x t

u t

e t

t

( )

( )

( )

( )

( )

( )

( )

=

0

0 0

δ

Eq 7-11

Page 107: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

107

La struttura delle matrici è questa:

• Ogni elemento di B, K, x(0) è un parametro da

identificare.

• A è una matrice di 0 ed 1 con ny righe piene di

parametri da identificare, la posizione della prima riga e

le ny-1 distanze tra una di queste righe e la precedente si

dicono indici di pseudo-osservabilità e rappresentano in

sostanza il max numero di ritardi usati per la rispettiva

uscita; la loro somma è uguale al numero di righe di A,

cioè all’ ordine del sistema da identificare.

• C è una matrice di zeri, con degli 1 posizionati in

funzione degli indici di pseudo-osservabilità, e quindi

completamente nota.

Questo tipo di struttura risponde all’esigenza di avere una realizzazione minima di un certo

ordine, con il minimo numero di parametri da stimare, e di essere identificabile.

Per maggiori dettagli vedi Ljung 1987,pag.115-125.

La sintassi del comando pem è la seguente:

th=pem([y u],canstart([y u],[[[[v1 ... vny]]]],nu));

th y u hanno lo stesso significato visto in precedenza,

v1 ... vny, sono gli indici di pseudo osservabilità, nu è il numero di ingressi.

L’algoritmo minimizza la norma dell’errore usando un metodo di tipo Gauss-Newton.

I risultati sono ottimi con indici di pseudo osservabilità tra 8 e 12, tuttavia ciò da luogo ad

un numero di parametri dell’ordine di 20*nu*ny, e quindi ad una generale perdita di

affidabilità all’ aumentare della grandezza del sistema, e comunque ad una calcolo

Page 108: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

108

estremamente lento (1h per un sistema 2*3, 486dx33), percui l’algoritmo non è applicabile

on-line, almeno nel nostro caso(sistema 5*5).

Esiste una versione ricorsiva degli algoritmi di identificazione in cui si compie una

iterazione nello stesso tempo in cui una nuova osservazione si aggiunge alle precedenti:

ϑ ϑ( ) ( ) ( ) ( ) ( )t t Q t t e t= −1 + ϕ Eq 7-12

e(t) è l’errore di predizione ϕ(t) è il suo gradiente rispetto a θ.

La scelta di Q(t) condiziona la direzione ed il passo della ricerca, ci sono 3 diverse filosofie

di scelta di Q(t):

1) Metodi del gradiente, in cui Q(t)=γI o Q(t)=(γ/|ϕ(t)|)I.

2) Q è calcolata dalle equazioni del filtro di kalman.

3) Forgetting factor, nella formula si aggiunge un valore λ che porta alla minimizzazione

della seguente funzione:

( )V e e k e ktt k

k

tT( (.)) ( ) ( )= ∑ −

1Eq 7-13

In pratica le osservazioni vengono pesate in modo da far contare quelle vecchie sempre di

meno, moltiplicandole per λ ad ogni passo, il valore 1/(1-λ) può essere pensato come

l’orizzonte di osservazione.

Questo approccio sembra particolarmente adatto per un uso on-line dove occorre

dimenticare le uscite troppo vecchie.

Esiste una versione ricorsiva di arx e pem; queste funzioni in pratica compiono un singolo

passo della ricerca ogni volta che vengono chiamate, la loro sintassi è la seguente:

[th,yh,P,phi]=rarx([y u], [na nb nk],adm,adg,th0,P0,phi0);

Page 109: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

109

[y u] e [na nb nk] hanno il significato visto.

adm,adg specificano il metodo di scelta della Q(t),per esempio, adm=‘ff’, adg=0.99,

specificano un algoritmo di tipo forgetting factor con fattore , λ=0.99.

th0,P0,phi0, contengono rispettivamente i parametri , la loro matrice di covarianza,e i dati

al tempo zero; questi ultimi sono ottenuti con una prima chiamata della funzione:

[th0,yh0,P0,phi0]=rarx([y u], [na nb nk],adm,adg);

th,P,phi sono i valori aggiornati di un passo rispetto a th0,P0 ...

yh è l’uscita predetta al tempo t.

L’identificazione ricorsiva è particolarmente adatta ad essere applicata on-line, e quindi

sfruttata in un controllo adattivo; sfortunatamente però nessuno di tali algoritmi è in grado

di maneggiare sistemi MIMO.

Verranno ora presentate due funzioni arx3, e la sua versione ricorsiva rarx3, che effettuano

una stima sfruttando un modello di tipo arx e selezionando automaticamente la migliore

struttura anche nel caso di sistemi multivariabili.

L’idea di fondo che queste funzioni sfruttano è semplice:

tutte le funzioni di trasferimento di cui la matrice di trasferimento è composta vengono

trattate separatamente,(in parallelo), per ognuna di esse si seleziona la struttura migliore e

poi si estrae un modello; alla fine tutti i modelli vengono messi insieme ottenendo un unico

modello nello spazio degli stati.

Nonostante l’apparente complessità le funzioni, basandosi su algoritmi lineari sono molto

veloci.

Page 110: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

110

7.2.1 Funzione arx3

Segue il listato, in linguaggio Matlab, della funzione arx3:

function th=arx3(y,u,mxs)

% th=arx3(y,u,mxs) MIMO model obtained joining all the MISO arx models% between inputs and each output.% Each arx model is chosen with the structure that achieve the smallest AIC,% according to a simple search algorithm, in which the first half of data% is used for estimation, the second for cross validation.% Each column of y,(z) contains the story of the related output,(input).% the stable part of the whole system is balanced and truncated in order% to reduce the states to mxs if possible (mxs=inf skips reduction).

% Giampiero Campa 12-12-95

% initializationno=size(y,2);ni=size(u,2);

f=size(y,1);l=floor(f/2);

% outer cycle (constructs matrices row by row)A=[];B=[];C=[];D=[];K=[];X0=[];for i=1:no,

% computes optimal structuren0=struc(1:3,1:3,0:3);n0=[n0(:,1) n0(:,2)*ones(1,ni) n0(:,3)*ones(1,ni)];n1=sls3(arxstruc([y(1:l,i) u(1:l,:)],[y(l+1:f,i) u(l+1:f,:)],n0),'AIC');vtx=(n1==3);c=0;

while any(vtx)&(c<9),n0=struc(n1(1)-vtx(1):n1(1)+vtx(1),n1(2)-vtx(2):n1(2)+vtx(2),n1(2+ni)-vtx(2+ni):n1(2+ni)+vtx(2+ni));n0=[n0(:,1) n0(:,2)*ones(1,ni) n0(:,3)*ones(1,ni)];n2=sls3(arxstruc([y(1:l,i) u(1:l,:)],[y(l+1:f,i) u(l+1:f,:)],n0),'AIC');vtx=(n2==(n1+1));n1=n2;c=c+1;end

th=arx([y(:,i) u],n1);[a,b,c,d,k,x0]=th2ss(th);

% state space matrices construction

Page 111: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

111

A=[A zeros(size(A,1),size(a,2)); zeros(size(a,1),size(A,2)) a];B=[B;b];C=[C zeros(size(C,1),size(c,2)); zeros(size(c,1),size(C,2)) c];D=[D;d];K=[K zeros(size(K,1),size(k,2)); zeros(size(k,1),size(K,2)) k];X0=[X0; x0];

% outer cycleend

% balance and truncation if requiredif ~isinf(mxs),

% system in continuous time domains0=bilinz2s(pck(A,[B K X0(1:size(A,1))],C,[D eye(size(K,2)) zeros(size(D,1),1)]),1);

% extract unstable part[ss0,su0] = sdecomp(s0,-1e-12);

% stable part balanced realization[s6,h6]=sysbal(ss0);[ty6,no6,ni6,ns6]=minfo(s6);if ty6=='cons', s6=[s6,zeros(size(s6,1));zeros(size(s6,2)),-inf]; end

% stable part truncation and reduced system constructions2=madd(strunc(s6,max(0,mxs-su0(1,size(su0,2)))),su0);

% modal form with sorted eigenvalues[ty2,no2,ni2,ns2]=minfo(s2);if ty2=='cons', s2=[s2,zeros(size(s2,1));zeros(size(s2,2)),-inf]; end[T,E]=eig(s2(1:ns2,1:ns2));[l,i]=sort(real(diag(E)));

% final discrete time system% s3=bilins2z(statecc(s2,T(:,i)),1);s3=bilins2z(s2,1);

A=s3(1:ns2,1:ns2);B=s3(1:ns2,ns2+[1:ni]);C=s3(ns2+[1:no],1:ns2);D=s3(ns2+[1:no],ns2+[1:ni]);K=s3(1:ns2,ns2+ni+[1:no]);X0=s3(1:ns2,ns2+ni+no+1);

% end ifend

Page 112: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

112

% final theta formatth=ss2th(A,B,C,D,K,X0);

%bodeplot([th2ff(th) spa([y u],30*ones(1,no))]);end

7.2.2 Funzione rarx3

La funzione rarx3 è la versione ricorsiva di arx3, segue il suo listato:

function [th,datan]=rarx3(y,u,mxs,adm,adg,data0)

% [th,datan]=rarx3(y,u,mxs,adm,adg,data0) MIMO model obtained joining% all the MISO recursive arx models between inputs and each output.% Each rarx model is chosen on the first time, with the structure that achieve% the smallest AIC, according to a simple search algorithm, in which the first% half of data is used for estimation, the second for cross validation.% Each column of y,(z) contains the story of the related output,(input).% The stable part of the whole system is balanced and truncated in order% to reduce the states to mxs if possible.% mxs=inf simply skips balance and truncation, it is advisable to skip it% during recursive use, since it requires many computations.% data0 should be zero in the first execution of this function, then,% once the structure is selected, use data0 as the output datan of the last% execution, it contains parameters, covariance matrix, regression vectors, for% each of the transfer functions.% adm: Adaptation mechanism. adg: Adaptation gain% adm='ff', adg=lam: Forgetting factor algorithm, with forg factor lam% adm='kf', adg=R1: The Kalman filter algorithm with R1 as covariance% matrix of the parameter changes per time step% adm='ng', adg=gam: A normalized gradient algorithm, with gain gam% adm='ug', adg=gam: An Unnormalized gradient algorithm with gain gam

% Giampiero Campa 12-12-95

% initializationno=size(y,2);ni=size(u,2);

dt1=[];dt2=[];

fex=size(data0,1);f=size(y,1);l=floor(f/2);cnt=0;

Page 113: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

113

% outer cycle (constructs matrices row by row)A=[];B=[];C=[];D=[];K=[];X0=[];for i=1:no,

cnt=cnt+1;

if fex<2, % first time: computes optimal structure

n0=struc(1:3,1:3,1:3);n0=[n0(:,1) n0(:,2)*ones(1,ni) n0(:,3)*ones(1,ni)];n1=sls3(arxstruc([y(1:l,i) u(1:l,:)],[y(l+1:f,i) u(l+1:f,:)],n0),'AIC');vtx=(n1==3);c=0;

while any(vtx)&(c<9),n0=struc(n1(1)-vtx(1):n1(1)+vtx(1),n1(2)-vtx(2):n1(2)+vtx(2),n1(2+ni)-vtx(2+ni):n1(2+ni)+vtx(2+ni));n0=[n0(:,1) n0(:,2)*ones(1,ni) n0(:,3)*ones(1,ni)];n2=sls3(arxstruc([y(1:l,i) u(1:l,:)],[y(l+1:f,i) u(l+1:f,:)],n0),'AIC');vtx=(n2==(n1+1));n1=n2;c=c+1;end

% execution of algorithm for first time[tmn,yh,Pn,Phn]=rarx([y(:,i) u],n1,adm,adg);

else% NOT FIRST TIME, it is all in data0

n1=data0(1,(8+2*ni)*(cnt-1)+[1:1+2*ni]);

la1=data0(1,(8+2*ni)*(cnt-1)+2+2*ni);la2=data0(1,(8+2*ni)*(cnt-1)+3+2*ni);lb1=data0(1,(8+2*ni)*(cnt-1)+4+2*ni);lb2=data0(1,(8+2*ni)*(cnt-1)+5+2*ni);lc1=data0(1,(8+2*ni)*(cnt-1)+6+2*ni);lc2=data0(1,(8+2*ni)*(cnt-1)+7+2*ni);ldt=data0(1,(8+2*ni)*(cnt-1)+8+2*ni);

% construction of matrices from second row of data0tm0=reshape(data0(2,ldt+[1:la1*la2]),la1,la2);P0=reshape(data0(2,ldt+la1*la2+[1:lb1*lb2]),lb1,lb2);Ph0=reshape(data0(2,ldt+la1*la2+lb1*lb2+[1:lc1*lc2]),lc1,lc2);

% execution of recursive algorithm[tmn,yh,Pn,Phn]=rarx([y(:,i) u],n1,adm,adg,tm0(la1,:),P0,Ph0);

Page 114: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

114

% end if first timeend

% takes only last row of tmn to avoid data explosion% anyway could be skipped without many consequencestmn=tmn(size(tmn,1),:);

% new data constructionla1=size(tmn,1);la2=size(tmn,2);lb1=size(Pn,1);lb2=size(Pn,2);lc1=size(Phn,1);lc2=size(Phn,2);ldt=size(dt2,2);

dt1=[dt1 n1 la1 la2 lb1 lb2 lc1 lc2 ldt];dt2=[dt2 reshape(tmn,1,la1*la2) reshape(Pn,1,lb1*lb2) reshape(Phn,1,lc1*lc2)];

% puts theta in state space formBB=[];for j=1:niBB=[BB zeros(1,n1(1+ni+j)) tmn(la1,n1(1)+[1:n1(1+j)])];endAA=[1 tmn(la1,1:n1(1))];th=arx2th(AA,BB,1,ni);[a,b,c,d,k,x0]=th2ss(th);

% state space matrices constructionA=[A zeros(size(A,1),size(a,2)); zeros(size(a,1),size(A,2)) a];B=[B;b];C=[C zeros(size(C,1),size(c,2)); zeros(size(c,1),size(C,2)) c];D=[D;d];K=[K zeros(size(K,1),size(k,2)); zeros(size(k,1),size(K,2)) k];X0=[X0; x0];

% outer cycleend

% datan from dt1 and dt2l1=size(dt1,2);l2=size(dt2,2);if l2>l1,datan=[dt1 zeros(1,l2-l1);dt2];elsedatan=[dt1; dt2 zeros(1,l1-l2)];end

Page 115: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

115

% balance and truncation if requiredif ~isinf(mxs),

% system in continuous time domains0=bilinz2s(pck(A,[B K X0(1:size(A,1))],C,[D eye(size(K,2)) zeros(size(D,1),1)]),1);

% extract unstable part[ss0,su0] = sdecomp(s0,-1e-12);

% stable part balanced realization[s6,h6]=sysbal(ss0);[ty6,no6,ni6,ns6]=minfo(s6);if ty6=='cons', s6=[s6,zeros(size(s6,1));zeros(size(s6,2)),-inf]; end

% stable part truncation and reduced system constructions2=madd(strunc(s6,max(0,mxs-su0(1,size(su0,2)))),su0);

% modal form with sorted eigenvalues[ty2,no2,ni2,ns2]=minfo(s2);if ty2=='cons', s2=[s2,zeros(size(s2,1));zeros(size(s2,2)),-inf]; end[T,E]=eig(s2(1:ns2,1:ns2));[l,i]=sort(real(diag(E)));

% final discrete time system% s3=bilins2z(statecc(s2,T(:,i)),1);s3=bilins2z(s2,1);

A=s3(1:ns2,1:ns2);B=s3(1:ns2,ns2+[1:ni]);C=s3(ns2+[1:no],1:ns2);D=s3(ns2+[1:no],ns2+[1:ni]);K=s3(1:ns2,ns2+ni+[1:no]);X0=s3(1:ns2,ns2+ni+no+1);

% end ifend

% final theta formatth=ss2th(A,B,C,D,K,X0);

% Comparation with spectral analysis if is the first time or a reduction is required%if (~isinf(mxs) | fex<2),%bodeplot([th2ff(th) spa([y u],30*ones(1,no))]);%end

end

Page 116: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

116

7.3 Confronto

Segue un confronto tra tutte le funzioni viste, il modello utilizzato è un sistema con 2 uscite

e 3 ingressi, proposto come esempio nel manuale del System Identification toolbox, pag 1-

32.

Nelle figure dalla 7-2 alla 7-7 vengono mostrati i diagrammi in ampiezza e fase della f.d.t.

tra il primo ingresso e la prima uscita.

Su ciascun diagramma vengono riportati gli andamenti sia della f.d.t. vera che della f.d.t.

identificata.

1) spa:

10−2 10−1 100 10110−4

10−2

100

102

104

frequency (rad/sec)

AMPLITUDE PLOT, input # 1 output # 1

10−2 10−1 100 101−1500

−1000

−500

0

500PHASE PLOT, input # 1 output # 1

frequency (rad/sec)

phas

e

Fig. 7-2

Page 117: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

117

2) arx (struttura nota).

10−2 10−1 100 10110−4

10−2

100

102

frequency (rad/sec)

AMPLITUDE PLOT, input # 1 output # 1

10−2 10−1 100 101−1000

−500

0

500PHASE PLOT, input # 1 output # 1

frequency (rad/sec)

phas

e

Figure 7-3

3) iv4 (struttura nota).

10−2

10−1

100

101

10−4

10−2

100

102

frequency (rad/sec)

AMPLITUDE PLOT, input # 1 output # 1

10−2

10−1

100

101

−400

−200

0

200PHASE PLOT, input # 1 output # 1

frequency (rad/sec)

phas

e

Page 118: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

118

4) pem (ps-idx=3):

10−2

10−1

100

101

10−4

10−2

100

102

frequency (rad/sec)

AMPLITUDE PLOT, input # 1 output # 1

10−2

10−1

100

101

−400

−200

0

200PHASE PLOT, input # 1 output # 1

frequency (rad/sec)

phas

e

Fig. 7-4

5) pem (ps-idx=10):

10−2

10−1

100

101

10−4

10−2

100

102

frequency (rad/sec)

AMPLITUDE PLOT, input # 1 output # 1

10−2

10−1

100

101

−600

−400

−200

0

200PHASE PLOT, input # 1 output # 1

frequency (rad/sec)

phas

e

Fig. 7-5

Page 119: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

119

5) arx3:

Fig. 7-6

6) rarx3:

Fig. 7-7

10−2

10−1

100

101

10−4

10−2

100

102

frequency (rad/sec)

AMPLITUDE PLOT, input # 1 output # 1

10−2

10−1

100

101

−600

−400

−200

0

200PHASE PLOT, input # 1 output # 1

frequency (rad/sec)

phas

e

10−2

10−1

100

101

10−4

10−2

100

102

frequency (rad/sec)

AMPLITUDE PLOT, input # 1 output # 1

10−2

10−1

100

101

−400

−200

0

200PHASE PLOT, input # 1 output # 1

frequency (rad/sec)

phas

e

Page 120: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

120

7.4 Funzioni per l’adattamentoVediamo infine la struttura delle due funzioni che realizzano il controllo adattivo.

La seconda, ada2 , è la versione ricorsiva della prima, ed è un po più complessa.

Si da il loro listato in Matlab:

function [ret,x0] = ada1(t,x,u,flag,name,ts,tn,nst,buf)

% [ret,x0] = ada1(t,x,u,flag,name,ts,tn,nst,buf) adaptive control function,% computes a new controller every tn seconds in the scheme 'name'% the first 5 entries of u are supposed to be inputs of system,% the last 5 its outputs, both are sampled every ts seconds.% This function finds a new model based on the story of inputs% and outputs stored in a buffer of size buf ( buf*ts=horizon ).% it execute the function arx3 every tn seconds.% The model can be balanced and truncated% in order to have a whole linear system of nst states,% (if nst==NaN the balance and truncation is disabled).% An H infinity controller with weighting matrices% (depending on vector x) stored in a1 .. d2 is then found% and stored in the block "control".% This controller is in any case "fixed" to have the same% number of states of the initial controller.

global N uequ yequ A B C D Ak Bk Ck Dk Df yd ud

if flag==0,[ni,no]=size(Dk);ret=[0 1 0 ni+no 0 0];x0 = 0;ud=[];yd=[];

elseif abs(flag)==2,ret = x;

elseif abs(flag)==4,ret = t+ts; % next step time.

elseret = [];

end

if (abs(flag)==2) & (abs(round(t/ts) - t/ts) < 1e-8),% step time

% size of the (square) plant

Page 121: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

121

[ni,no]=size(Dk);

if x==0,% not enough data yetud=[ud; u(1:ni)'];yd=[yd; u(ni+[1:no])'];if size(ud,1)>buf,x=1;end

else% enough dataud=[ud(2:size(ud,1),:); u(1:ni)'];yd=[yd(2:size(yd,1),:); u(ni+[1:no])'];

% end if x==0 or notend

if (abs(round(t/tn) - t/tn) < 1e-8) & (t>=0.9*tn),% time to find a new controller

% new plantth=arx3(yd,ud,nst);[A,B,C,D,K,Xe]=th2ss(thd2thc(sett(th,ts),'del','NoP'));

% creation of weighting functionsxc=[6.63071609934561 -0.00000001000000 29.24136343802332 0.67538629717924]';[a1,b1,c1,d1]=hfot(-6,xc(2),xc(1),1,no);[a2,b2,c2,d2]=hfot(6,xc(4),xc(3),1,ni);

G=pck(A,B,C,D);s_out=mmult([-eye(no) eye(no)],daug(G,eye(no)));s_kos=abv(eye(no),pck(a1,b1,c1,d1));s_kks=abv(pck(a2,b2,c2,d2),eye(ni));s_kin=mmult(daug(eye(ni),s_out),daug(s_kks,eye(no)));s_fin=mmult(daug(eye(ni),s_kos),s_kin);

plant=mmult([zeros(no,ni+no) eye(no); eye(ni+no) zeros(ni+no,no)],...s_fin,...[zeros(ni,no) eye(ni); eye(no) zeros(no,ni)]);

% new controller computationgmax=1;[K,P,gf]=hinfsyne(plant,no,ni,0,gmax,.01,inf,1);while K==[],gmax=10*gmax;[K,P,gf]=hinfsyne(plant,no,ni,0,gmax,.01,inf,1);endK=nsfix(K,size(Ak,1),1,1);

Page 122: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

122

[Ak,Bk,Ck,Dk]=unpck(K);

% [ak,bk,ck,dk]=reg(A,B,C,D,...% lqr(A,B,10^(1.37464278889085)*eye(size(A,1)),eye(size(B,2))),...% lqe(A,eye(size(A,1)),C,10^(-2.39996276978935)*eye(size(A,1)),eye(size(C,1))));% [Ak,Bk,Ck,Dk]=unpck(nsfix(pck(ak,bk,ck,dk),size(Ak,1),1,1));

s_l3=starp(mmult([eye(no);eye(no)],G,K),[-eye(no) eye(no)],no,no);[A3,B3,C3,D3]=unpck(s_l3);mp3=max(real(eig(A3)));mf3=max(abs(eig(A3)));g3=D3-C3*inv(A3)*B3;

% feedforward matrixDf=inv(g3);B3=B3*Df;D3=D3*Df;

% set parameters in the blockset_param([name,'/','Control'],'A',Ak,'B',Bk,'C',Ck,'D',Dk);set_param([name,'/','F-fwd'],'D',Df);

% end controller or notend

ret=x;% end step timeend

Page 123: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

123

function [ret,x0] = ada2(t,x,u,flag,name,ts,tn,nst,adm,adg)

% [ret,x0] = ada2(t,x,u,flag,name,ts,tn,nst,adm,adg) adaptive control function,% computes a new controller every tn seconds in the scheme 'name'.% the first 5 entries of u are supposed to be inputs of system,% the last 5 its outputs, both are sampled every ts seconds.% This function finds a new model based on the story of these inputs% and outputs, executing a step of the function rarx3 every ts seconds.% the stable part of this model can be balanced and truncated% in order to have a whole linear system of nst states,% (if nst==NaN the balance and truncation is disabled).% An H infinity controller with weighting matrices% (depending on vector x) stored in a1 .. d2 is then found% and stored in the global variables Ak .. Dk% This controller is in any case "fixed" to have the same% number of states of the initial controller.

global N uequ yequ A B C D Ak Bk Ck Dk Df data yd ud

if flag==0,[ni,no]=size(Dk);ret=[0 1 0 ni+no 0 0];x0 = 0;ud=[];yd=[];

elseif abs(flag)==2,ret = x;

elseif abs(flag)==4,ret = t+ts; % next step time.

elseret = [];

end

if (abs(flag)==2) & (abs(round(t/ts) - t/ts) < 1e-8),% step time

% size of the plant[ni,no]=size(Dk);

if (abs(round(t/tn) - t/tn) < 1e-8) & (t>=0.9*tn),% time to find a new controller

% new plant[th,data]=rarx3(u(ni+[1:no])',u(1:ni)',nst,adm,adg,data);

Page 124: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

124

[A,B,C,D,K,Xe]=th2ss(thd2thc(sett(th,ts),'del','NoP'));

% creation of weighting functionsxc=[6.63071609934561 -0.00000001000000 29.24136343802332 0.67538629717924]';[a1,b1,c1,d1]=hfot(-6,xc(2),xc(1),1,no);[a2,b2,c2,d2]=hfot(6,xc(4),xc(3),1,ni);

G=pck(A,B,C,D);s_out=mmult([-eye(no) eye(no)],daug(G,eye(no)));s_kos=abv(eye(no),pck(a1,b1,c1,d1));s_kks=abv(pck(a2,b2,c2,d2),eye(ni));s_kin=mmult(daug(eye(ni),s_out),daug(s_kks,eye(no)));s_fin=mmult(daug(eye(ni),s_kos),s_kin);

plant=mmult([zeros(no,ni+no) eye(no); eye(ni+no) zeros(ni+no,no)],...s_fin,...[zeros(ni,no) eye(ni); eye(no) zeros(no,ni)]);

% new controller computationgmax=1;[K,P,gf]=hinfsyne(plant,no,ni,0,gmax,.01,inf,1);while K==[],gmax=10*gmax;[K,P,gf]=hinfsyne(plant,no,ni,0,gmax,.01,inf,1);end

K=nsfix(K,size(Ak,1),1,1);[Ak,Bk,Ck,Dk]=unpck(K);

% [ak,bk,ck,dk]=reg(A,B,C,D,...% lqr(A,B,10^(1.37464278889085)*eye(size(A,1)),eye(size(B,2))),...% lqe(A,eye(size(A,1)),C,10^(-2.39996276978935)*eye(size(A,1)),eye(size(C,1))));% [Ak,Bk,Ck,Dk]=unpck(nsfix(pck(ak,bk,ck,dk),size(Ak,1),1,1));

s_l3=starp(mmult([eye(no);eye(no)],G,K),[-eye(no) eye(no)],no,no);[A3,B3,C3,D3]=unpck(s_l3);mp3=max(real(eig(A3)));mf3=max(abs(eig(A3)));g3=D3-C3*inv(A3)*B3;

% feedforward matrixDf=inv(g3);B3=B3*Df;D3=D3*Df;

% set parameters in the blockset_param([name,'/','Control'],'A',Ak,'B',Bk,'C',Ck,'D',Dk);set_param([name,'/','F-fwd'],'D',Df);

Page 125: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

125

else% not yet time to find a new controller

if x==0,% there is no structure yet

% update ud & ydud=[ud; u(1:ni)'];yd=[yd; u(ni+[1:no])'];

if t>0.9*tn,% first time of execution[th,data]=rarx3(yd,ud,inf,adm,adg,0);ud=[];yd=[];x=1;

end

else% there is the structure% just a step needed[th,data]=rarx3(u(ni+[1:no])',u(1:ni)',inf,adm,adg,data);

% end if x==0 or notend

% end controller or notend

ret=x;% end step timeend

7.5 Risultati

Purtroppo il controllo adatttivo non da i risultati sperati in quanto l’identificazione in

closed-loop non è altrettanto buona, con nessuno dei metodi visti sopra, per cui succede che

a volte, specialmente in presenza di segnali di riferimento costanti, il sistema identificato è

diverso da quello vero, e ed il controllore non riesce a stabilizzare l’impianto.

L’algoritmo di identificazione che funziona meglio, pem, per un sistema 5*5 occupa

rapidamente tutta la memoria del sistema, bloccando la simulazione.

Page 126: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

126

La combinazione tra identificazione pem e controllo adattivo H∞ potrebbe quindi

funzionare su un sistema con maggiori risorse di memoria RAM tuttavia essa sarebbe di

gran lunga troppo complessa per essere usata in un controllo on-line.

Risulta chiaro quindi che l’unico modo di affrontare la non-linearità dell’ impianto è quello

di sfruttare il più possibile la conoscenza fisica dell’ impianto stesso.

Ciò può essere fatto sia con un controllo gain-scheduling, o ancora con un controllo

adattivo.

Tuttavia, volendo seguire la strada del controllo adattivo, bisognerà provvedere ad un

meccanismo di identificazione che, identificando alcuni parametri fisici del sistema sia in

grado, sfruttando la conoscenza fisica del veicolo, di costruirne un modello affidabile, in

modo da permettere la realizzazione di un controllore idoneo.

Page 127: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

127

8. Conclusioni

L’ obiettivo di dotare il veicolo sottomarino trainato (TUV) di un sistema di controllo atto a

consentire stabilità dell’ assetto di navigazione ed un accurato inseguimento delle traiettorie

di riferimento, è stato raggiunto tramite un controllore sviluppato con il metodo H∞.

Il range del campo operativo in cui il controllore può essere adoperato risulta esteso fino a

spostamenti di 15 metri e rotazioni di 15 gradi, ed è quindi abbastanza ampio da

comprendere la maggior parte delle situazioni che normalmente si verificano durante la

navigazione.

Oltre tale range le prestazioni del sistema di controllo decadono, od occorre provvedere ad

un controllo di tipo gain scheduling o self-tuning.

Il risultato suddetto è stato raggiunto tramite i seguenti passi:

• Studio del modello non lineare di un veicolo subacqueo

trainato.

• Scelta degli insiemi di ingresso e uscita appropriati.

• Linearizzazione del modello ed analisi del modello

linearizzato, con particolare attenzione per l’

autostruttura ed i vettori singolari.

• Riduzione del modello con ulteriori analisi del modello

ridotto.

• Messa a punto di un algoritmo per la selezione

automatica e l’ottimizzazione delle funzioni di peso per

un controllore H∞.

• Uso dell’ algoritmo suddetto per l’ottenimento di un

controllore.

Page 128: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

128

• Verifica della validità del suddetto controllore sull’

impianto non lineare, e definizione del suo range di

validità.

Page 129: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

129

Inoltre, è stata verificata la migliore performance del controllo H∞ rispetto a quello LQG,

mettendo in rilievo le analogie e le differenze tra i due metodi.

Un ulteriore miglioramento del sistema di controllo potrebbe ottenersi rendendo adattivo il

sistema di controllo trovato.

Tale possibilità è stata studiata, e sono stati scritti due di algoritmi di natura parallela, per

l’identificazione multivariabile.

Tali algoritmi, pur essendo confrontabili con quelli presenti nel System Identification

Toolbox, non hanno tuttavia dato risultati soddisfacenti ai fini del controllo adattivo, percui

sono stati indicati altri possibili metodi per realizzare tale tipo di controllo, migliorando

quello già trovato.

Page 130: Un sentito ringraziamento per l’assistenza prestata ... Un sentito ringraziamento per l’assistenza prestata durante lo svolgimento del seguente lavoro a: • Mrs Jacqueline Wilkie,

130

Bibliografia:

[i] F.Nasuti, “Sviluppo di un simulatore per la dinamica di veicoli sottomarini trainati”, Electrical Engineering Thesis,Apr-1994. University of Pisa.

[ii] J.M.Maciejowski, “Multivariable Feedback Design”, Addison-Wesley 1989.[iii] J.C.Doyle, K.Glover, A.Packard, R.Smith, G.Balas, “µ-analysis and synthesis toolbox for use with MATLAB”, Jan

1994 The Math Works Inc.

[iv] J.C.Doyle, K.Glover, P.Khargonekar, B.Francis “State space solutions for standard H2 and H∞ control problems”IEEE transactions on automatic control, Aug 1989.

[v] J.C.Doyle, K.Glover, “State space formulae for all stabilizing controllers that satisfy an H∞ norm bound and relactionto risk sensitivity” system and control letters, vol 11, 1988.

[vi] L.Ljung, “System Identification: Theory for the User” Prentice Hall 1987.

[vii] L.Ljung “System Identification Toolbox for use with Matlab” July 1991 The Math Works Inc.