POLITECNICO DI MILANO          Corso di Laurea in Ingegneria Informatica          Dipartimento di Elettronica e Informazio...
Questa opera ` protetta da licenza Creative Commons                  eAttribuzione - Non commerciale - Condividi allo stes...
Stay hungry. Stay foolish.
SommarioIl punto di partenza di questo Elaborato ` la modellizzazione di un pendolo                                       ...
RingraziamentiVorrei prima di tutto ringraziare chi mi ha aiutato in questo mio lavoro:naturalmente non solo il Prof. Bitt...
IndiceSommario                                                                          IRingraziamenti                   ...
2.4.2   Confronto tra sistema lineare e sistema non lineare . .         143 Sintesi del controllore                       ...
5.2.4   Costo totale dell’hardware . . . . . . . . . . . . . . . .    48   5.3   La libreria software arduino2lego.h . . ....
Elenco delle figure 2.1   Schematizzazione del robot . . . . . . . . . . . . . . . . . . .          4 2.2   Bilancio forze ...
4.3   Esperimento Simulink: Sistema reale lineare, controllore con-      tinuo . . . . . . . . . . . . . . . . . . . . . ....
Capitolo 1Introduzione1.1     Inquadramento generale e breve descrizioneIl seguente lavoro di tesi incomincia con la scelt...
2                                                  Capitolo 1. Introduzionefuture il software di controllo ` stato basato ...
Capitolo 2Modellizzazione del sistemaIl primo passo da compiere verso la costruzione del robot ` dato dalla model-        ...
4                               Capitolo 2. Modellizzazione del sistemae sono molte le fonti che riportano studi da cui de...
2.2. Modellistica del pendolo inverso                                         5                    Figura 2.2: Bilancio fo...
6                              Capitolo 2. Modellizzazione del sistema                    Figura 2.3: Bilancio forze parte...
2.2. Modellistica del pendolo inverso                                       7Nota di approfondimento: motivazione di una s...
8                                    Capitolo 2. Modellizzazione del sistema2.2.3        Equazioni del modelloL’equazione ...
2.3. Propriet` del sistema             a                                                               92.3     Propriet` ...
10                             Capitolo 2. Modellizzazione del sistema          Figura 2.4: Rappresentazione dell’equazion...
2.3. Propriet` del sistema             a                                                                 11C rappresenta, ...
12                              Capitolo 2. Modellizzazione del sistema2.3.4    Raggiungibilit`                       aDefi...
2.3. Propriet` del sistema             a                                                               13AnalisiPer analiz...
14                              Capitolo 2. Modellizzazione del sistema2.4      Esperimenti in Matlab2.4.1     Una prima a...
2.4. Esperimenti in Matlab                                                           15Figura 2.5: Esperimento Simulink: c...
16                              Capitolo 2. Modellizzazione del sistemarumore bianco in ingresso, condizioni iniziali null...
Capitolo 3Sintesi del controlloreLa modellizzazione del sistema permette di cominciare la creazione di uncontrollore che d...
18                                          Capitolo 3. Sintesi del controllore                               Figura 3.1: ...
3.1. Caratteristiche del controllore                                           19       Figura 3.2: Rappresentazioni equiv...
20                                          Capitolo 3. Sintesi del controllore          • il tempo di assestamento ` dato...
3.1. Caratteristiche del controllore                                          21                      Figura 3.3: Area sul...
22                                            Capitolo 3. Sintesi del controllore       piccolo sar` e minore sar` la forz...
3.2. Esperimenti                                                            23       – questo esperimento ` sicuramente si...
24                                      Capitolo 3. Sintesi del controlloreAlcuni esempi numerici           Di seguito ven...
3.2. Esperimenti                                                    25            Figura 3.4: Esperimento con poli [-60; -...
26                                    Capitolo 3. Sintesi del controlloreIn Simulink sono stati dunque validati i risultat...
3.2. Esperimenti                                                                   27Figura 3.6: Esperimento in Simulink: ...
28   Capitolo 3. Sintesi del controllore
Capitolo 4Ricostruttore dello statoIn questo capitolo si continua il lavoro a partire dal controllore lineare e sisintetiz...
30                                Capitolo 4. Ricostruttore dello stato        • ricostruire tutte le variabili di stato p...
4.1. Premessa teorica                                                         314.1.3    Il ricostruttore dello statoIl si...
32                                   Capitolo 4. Ricostruttore dello stato     • la replica e il sistema originario avrann...
4.1. Premessa teorica                                                         33                  Figura 4.2: Schema del r...
34                                  Capitolo 4. Ricostruttore dello statoEssendo la 4.7 un problema formalmente identico a...
4.2. Alcuni esperimenti                                                             35Questo ` l’esperimento pi` semplice ...
36                                   Capitolo 4. Ricostruttore dello statoin anello aperto tra il sistema non lineare e il...
4.3. Discretizzazione                                                      37superiore non lo `: ` necessario dunque capir...
38                                    Capitolo 4. Ricostruttore dello stato     • impostare il tempo di campionamento Tcam...
4.3. Discretizzazione                                                        39            Figura 4.7: Angolo predetto e r...
40                                    Capitolo 4. Ricostruttore dello stato     Figura 4.8: Prestazioni a confronto con te...
Capitolo 5Realizzazioni sperimentaliLo studio teorico fin qui fatto viene ora validato con una realizzazione pra-tica: l’in...
42                                Capitolo 5. Realizzazioni sperimentaliguadagnare, nei lavori futuri, la capacit` di muov...
5.2. Hardware utilizzato                                                 43                        Figura 5.2: Arduino “Di...
44                                Capitolo 5. Realizzazioni sperimentali Microcontrollore                                 ...
5.2. Hardware utilizzato                                                 45                        Figura 5.3: Grafico rpm-...
46                              Capitolo 5. Realizzazioni sperimentali     • Primo segnale di alimentazione (da 0 a 9V)   ...
5.2. Hardware utilizzato                                                   47   • il primo indica con un fronte di salita ...
48                                Capitolo 5. Realizzazioni sperimentaliin ingresso tensioni tra 0 e Vcc [2] (nel nostro c...
5.3. La libreria software arduino2lego.h                                       49           Figura 5.8: Amplificatore differ...
50                                Capitolo 5. Realizzazioni sperimentali             Figura 5.9: Circuito di condizionamen...
5.4. Il comportamento sperimentale                                          51permette l’evoluzione anche al di fuori dell...
52                                 Capitolo 5. Realizzazioni sperimentali                               Figura 5.12: Dall’...
5.4. Il comportamento sperimentale                                             53         – il vettore y[k] rappresenta la...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso
Upcoming SlideShare
Loading in …5
×

24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso

1,423 views
1,357 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,423
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso

  1. 1. POLITECNICO DI MILANO Corso di Laurea in Ingegneria Informatica Dipartimento di Elettronica e Informazione PROGETTO E IMPLEMENTAZIONE DEL SISTEMA DI CONTROLLO PER UN PENDOLO INVERSO Laboratorio di Automatica del Politecnico di MilanoRelatore: Prof. Sergio BittantiCorrelatore: Prof. Fabio Previdi Tesi di Laurea di: Marco Triverio, matricola 676863 Anno Accademico 2007-2008
  2. 2. Questa opera ` protetta da licenza Creative Commons eAttribuzione - Non commerciale - Condividi allo stesso modo 2.5 (ITALIA) Per maggiori informazioni:http://creativecommons.org/licenses/by-nc-sa/2.5/it/legalcode
  3. 3. Stay hungry. Stay foolish.
  4. 4. SommarioIl punto di partenza di questo Elaborato ` la modellizzazione di un pendolo einverso al fine di studiarne la problematica di controllo.Lo scopo del lavoro ` la ricerca di un controllore lineare, che sappia man- etenere l’equilibrio del sistema dati ragionevoli condizioni iniziali e disturbiesterni, e di un ricostruttore dello stato, che permetta di ottenere il valoredelle variabili di stato di cui non si possiede una misura diretta.Le simulazioni eseguite tramite Matlab e Simulink hanno mostrato un com-portamento compatibile con le specifiche imposte e la realizzabilit` del con- atrollore ` stata verificata sviluppando un prototipo presso il Laboratorio di eAutomatica del Politecnico di Milano: tale implementazione ha sfruttato at-tuatori e componentistica hardware a costo relativamente basso e presentabuona riutilizzabilit` grazie alla libreria software sviluppata. a I
  5. 5. RingraziamentiVorrei prima di tutto ringraziare chi mi ha aiutato in questo mio lavoro:naturalmente non solo il Prof. Bittanti e il Prof. Previdi, ma anche Piero,per i consigli a 360 gradi, Renato, per la spiegazione sugli encoder, Filippo,per aver chiesto a Renato, e Seth, per un piccolo suggerimento.Ma esistono diverse persone che, pur non avendomi aiutato direttamentecon la tesi, in un modo o nell’altro hanno reso fantastici questi tre anni:magari perch´ hanno finanziato dalle tasse universitarie ai concerti la sera, emagari perch´ mi hanno fatto divertire dentro e fuori l’universit` o magari e aperch´ mi sopportano e supportano in ogni momento. eNon posso poi non citare le vere fonti di ispirazione del mio lavoro, Maccioe Rosario.Un bacio infine alla reginetta dei pancake. III
  6. 6. IndiceSommario IRingraziamenti III1 Introduzione 1 1.1 Inquadramento generale e breve descrizione . . . . . . . . . . 1 1.2 Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . . 22 Modellizzazione del sistema 3 2.1 Stato dell’arte . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Modellistica del pendolo inverso . . . . . . . . . . . . . . . . . 4 2.2.1 Carrello . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.2 Parte mobile . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.3 Equazioni del modello . . . . . . . . . . . . . . . . . . 8 2.3 Propriet` del sistema . . . . . . . . . . . . . . . . . . . . . . . a 9 2.3.1 Equilibrio . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.2 Linearizzazione . . . . . . . . . . . . . . . . . . . . . . 9 2.3.3 Stabilit` . . . . . . . . . . . . . . . . . . . . . . . . . . a 11 2.3.4 Raggiungibilit` . . . . . . . . . . . . . . . . . . . . . . a 12 2.3.5 Osservabilit` . . . . . . . . . . . . . . . . . . . . . . . a 12 2.4 Esperimenti in Matlab . . . . . . . . . . . . . . . . . . . . . . 14 2.4.1 Una prima analisi . . . . . . . . . . . . . . . . . . . . 14 V
  7. 7. 2.4.2 Confronto tra sistema lineare e sistema non lineare . . 143 Sintesi del controllore 17 3.1 Caratteristiche del controllore . . . . . . . . . . . . . . . . . . 17 3.1.1 Scelta di un controllore lineare . . . . . . . . . . . . . 17 3.1.2 Definizioni delle condizioni . . . . . . . . . . . . . . . 18 3.1.3 Area sulla mappa dei poli . . . . . . . . . . . . . . . . 20 3.1.4 Criteri di scelta . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Esperimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 Esperimenti in Matlab . . . . . . . . . . . . . . . . . . 22 3.2.2 Esperimenti in Simulink . . . . . . . . . . . . . . . . . 244 Ricostruttore dello stato 29 4.1 Premessa teorica . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.1.1 La necessit` di un ricostruttore dello stato . . . . . . . a 29 4.1.2 I sensori . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.1.3 Il ricostruttore dello stato . . . . . . . . . . . . . . . . 31 4.1.4 Valutazione della matrice L . . . . . . . . . . . . . . . 33 4.2 Alcuni esperimenti . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2.1 Sistema reale lineare, controllore continuo . . . . . . . 34 4.2.2 Sistema reale non lineare, controllore continuo . . . . 35 4.3 Discretizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3.1 Dal tempo continuo al tempo discreto . . . . . . . . . 36 4.3.2 Altri esperimenti in Matlab . . . . . . . . . . . . . . . 375 Realizzazioni sperimentali 41 5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Hardware utilizzato . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.2 Attuatori e ruote . . . . . . . . . . . . . . . . . . . . . 44 5.2.3 Sensori . . . . . . . . . . . . . . . . . . . . . . . . . . 46 VI
  8. 8. 5.2.4 Costo totale dell’hardware . . . . . . . . . . . . . . . . 48 5.3 La libreria software arduino2lego.h . . . . . . . . . . . . . . 49 5.4 Il comportamento sperimentale . . . . . . . . . . . . . . . . . 51 5.4.1 Implementazione di ricostruttore e controllore . . . . . 51 5.4.2 Implementazione del solo controllore . . . . . . . . . . 54 5.4.3 Alcuni problemi con Arduino . . . . . . . . . . . . . . 56 5.4.4 La criticit` del giroscopio . . . . . . . . . . . . . . . . a 576 Direzioni future di ricerca e conclusioni 59 6.1 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.1.1 Modellizzazione . . . . . . . . . . . . . . . . . . . . . . 59 6.1.2 Hardware utilizzato . . . . . . . . . . . . . . . . . . . 60 6.2 Direzioni future di ricerca . . . . . . . . . . . . . . . . . . . . 61Bibliografia 63A Codice 65 A.1 Parti principali di analisi modello robot.m . . . . . . . . . 65 A.1.1 Osservabilit` e raggiungibilit` . . . . . . . . . . . . . . a a 65 A.1.2 Calcolo della matrice K . . . . . . . . . . . . . . . . . 66 A.1.3 Esperimenti . . . . . . . . . . . . . . . . . . . . . . . . 66 A.1.4 Ricostruttore dello stato . . . . . . . . . . . . . . . . . 68 A.2 La S-function del sistema non lineare . . . . . . . . . . . . . . 69 A.3 arduino2lego.h . . . . . . . . . . . . . . . . . . . . . . . . . 71
  9. 9. Elenco delle figure 2.1 Schematizzazione del robot . . . . . . . . . . . . . . . . . . . 4 2.2 Bilancio forze parte inferiore . . . . . . . . . . . . . . . . . . . 5 2.3 Bilancio forze parte superiore . . . . . . . . . . . . . . . . . . 6 2.4 Rappresentazione dell’equazione in forma di stato . . . . . . . 10 2.5 Esperimento Simulink: confronto tra sistema non lineare e il sistema linearizzato corrispondente . . . . . . . . . . . . . . . 15 2.6 Condizione iniziale per l’angolo posta a 0.1 radianti . . . . . . 15 2.7 Condizione iniziale per l’angolo posta a 0.5 radianti . . . . . . 15 2.8 Esperimento: rumore bianco in ingresso . . . . . . . . . . . . 16 2.9 Segnale in ingresso . . . . . . . . . . . . . . . . . . . . . . . . 16 3.1 Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 Rappresentazioni equivalenti del sistema in anello chiuso . . . 19 3.3 Area sulla mappa dei poli . . . . . . . . . . . . . . . . . . . . 21 3.4 Esperimento con poli [-60; -20; -4.1; -4] . . . . . . . . . . . . . 25 3.5 Esperimento con poli [-80; -20; -4.1; -4] . . . . . . . . . . . . . 25 3.6 Esperimento in Simulink: impulso in ingresso con condizioni iniziali nulle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7 Grafico di posizione e angolo per l’esperimento di figura 3.6 . 27 4.1 Schema generico di un ricostruttore . . . . . . . . . . . . . . . 31 4.2 Schema del ricostruttore dello stato . . . . . . . . . . . . . . . 33 IX
  10. 10. 4.3 Esperimento Simulink: Sistema reale lineare, controllore con- tinuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.4 Grafico angolo predetto e reale . . . . . . . . . . . . . . . . . 354.5 I due errori di stato . . . . . . . . . . . . . . . . . . . . . . . 354.6 Esperimento Simulink: Sistema reale lineare, controllore di- screto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.7 Angolo predetto e reale con controllore discreto . . . . . . . . 394.8 Prestazioni a confronto con tempi di campionamento tra 1 e 44 ms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.1 Segway attualmente in commercio . . . . . . . . . . . . . . . 415.2 Arduino “Diecimila” . . . . . . . . . . . . . . . . . . . . . . . 435.3 Grafico rpm-torsione . . . . . . . . . . . . . . . . . . . . . . . 455.4 Grafico corrente-torsione . . . . . . . . . . . . . . . . . . . . . 455.5 LEGOTM NXT Interactive Servo Motor . . . . . . . . . . . . 465.6 Giroscopio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.7 Encoder incrementale dei motori LEGO . . . . . . . . . . . . 475.8 Amplificatore differenziale con correzione d’errore . . . . . . . 495.9 Circuito di condizionamento (fronte e retro) . . . . . . . . . . 505.10 Fronte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.11 Retro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.12 Dall’alto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.13 Funzionamento del controllore senza ricostruttore . . . . . . . 55
  11. 11. Capitolo 1Introduzione1.1 Inquadramento generale e breve descrizioneIl seguente lavoro di tesi incomincia con la scelta di un problema di controllo,che viene studiato applicando le conoscenze acquisite nei corsi legati all’am-bito dell’Automatica ed approfondite in corso d’opera, e che viene infinerealizzato attingendo a capacit` informatiche ed elettroniche. In particolare ail punto di partenza di questo Elaborato ` la modellizzazione di un pendolo einverso al fine di studiarne la problematica di controllo. Lo scopo del lavoro` la ricerca di un controllore lineare, che sappia mantenere l’equilibrio delesistema dati ragionevoli condizioni iniziali e disturbi esterni, e di un rico-struttore dello stato, che permetta di ottenere il valore delle variabili di statodi cui non si possiede una misura diretta.Tale ricerca ` stata convalidata da considerazioni teoriche, elaborazioni tra- emite Matlab e simulazioni tramite Simulink; i risultati ottenuti sono statiapplicati prima in simulazione al sistema non lineare e, in seguito ad alcunetarature, anche al sistema fisico appositamente realizzato presso il Labora-torio di Automatica del Politecnico di Milano.Per garantire la possibilit` di riutilizzare lo stesso hardware per ricerche a
  12. 12. 2 Capitolo 1. Introduzionefuture il software di controllo ` stato basato su una libreria open source eappositamente scritta.1.2 Struttura della tesiLa tesi ` strutturata nel modo seguente: e • Nella sezione due si illustra il processo di modellizzazione del sistema fisico. • Nella sezione tre si descrive il processo di linearizzazione del modello e la sintesi del controllore (con valutazione delle prestazioni). • Nella sezione quattro viene studiato il ricostruttore dello stato. • Nella sezione cinque si mostra una realizzazione del sistema studiato e si analizza la bont` dello studio fatto. a • Nella sezione sei si riassumono i risultati raggiunti e si presentano alcune possibili direzioni di lavoro. • Nell’appendice A si riporta il codice C e Matlab utilizzato
  13. 13. Capitolo 2Modellizzazione del sistemaIl primo passo da compiere verso la costruzione del robot ` dato dalla model- elizzazione del sistema fisico: questa ci fornir` quattro equazioni di stato che asaranno il fondamento necessario per la sintesi del controllore e le simulazionitramite Simulink.2.1 Stato dell’arteUn pendolo semplice ` costituito da un filo inestensibile a cui ` appeso un e epunto materiale di massa che pu` oscillare attorno a un punto fisso detto opolo: la componente della forza peso lungo il filo controbilancia la tensionedel filo stesso, mentre la componente della forza peso perpendicolare al filofunge da forza di richiamo e produce il moto oscillatorio del pendolo.Il pendolo inverso rappresenta un pendolo semplice rovesciato, rigido e pri-vo di punto fisso: la parte pi` bassa pu` dunque muoversi per bilanciare u ole oscillazioni della parte pi` alta e garantire cos` l’equilibrio; il problema u ıdi controllo si riconduce dunque a volere stabilizzare la posizione di un’astavincolata ad un carrello libero di traslare lungo una guida.La modellizzazione del pendolo inverso ` sicuramente un problema ben noto e 3
  14. 14. 4 Capitolo 2. Modellizzazione del sistemae sono molte le fonti che riportano studi da cui derivano modelli con diversilivelli di approssimazione; ci` che ` stato fatto ` svolgere lo studio indi- o e ependentemente, validare quanto fatto attingendo da diverse fonti e sceglierequali dettagli trascurare riferendosi a quale sarebbe stata la realizzazionepratica.La schematizzazione utilizzata ` quella mostrata in figura 2.1. Il testo di e Figura 2.1: Schematizzazione del robotriferimento per la modellizzazione ` stato il sesto capitolo di “Lectures on eDynamic Systems and Control ” [7].2.2 Modellistica del pendolo inversoPer determinare il modello fisico ` necessario isolare le forze che agiscono sul ependolo inverso; per chiarezza ` utile scomporre il robot in due parti, alta e ebassa.2.2.1 CarrelloLa parte inferiore del pendolo inverso ` rappresentata da ruote e piano edi appoggio per i componenti. Le forze che agiscono verticalmente ven-
  15. 15. 2.2. Modellistica del pendolo inverso 5 Figura 2.2: Bilancio forze parte inferioregono compensate dalla reazione del terreno; le forze che invece agisconoorizzontalmente sono date dall’equazione: M x = Fin − N − bx ¨ ˙ (2.1)Come rappresentato in figura 2.2, dove:Fin ` la forza motrice eN e P sono le forze di interazione con la parte superioreM ` la massa della parte inferiore eg ` l’accelerazione gravitazionale ebx ` l’attrito ˙ e2.2.2 Parte mobileLa parte superiore ` rappresentata dal corpo del robot (che conterr` la e ascheda di controllo, il giroscopio e la componentistica elettronica).Il bilancio delle forze che agiscono orizzontalmente ` dato dall’equazione: e ¨ ˙ N = m¨ + mlθ cos θ − mlθ2 sin θ x (2.2)
  16. 16. 6 Capitolo 2. Modellizzazione del sistema Figura 2.3: Bilancio forze parte superioreDove:m¨ forza data dall’accelerazione del robot x ¨lθ cos θ forza data dall’accelerazione angolare ˙lθ2 sin θ forza data dall’accelerazione centripeta Analizzando invece l’equilibrio verticale della parte superiore: δ 2 l cos θ P − mg = m δt2 ˙ ¨ P − mg = −mlθ2 cos θ − mlθ sin θ (2.3) ˙ ¨ P sin θ − mg sin θ = −mlθ2 cos θ sin θ − mlθ sin2 θ Considerando il centro di massa della parte superiore ` possibile scrivere el’equazione che descrive l’equilibrio dei momenti: ¨ I θ = P l sin θ − N l cos θ (2.4)dove I ` il momento d’inerzia rispetto al baricentro della parte superiore. e
  17. 17. 2.2. Modellistica del pendolo inverso 7Nota di approfondimento: motivazione di una semplificazione Svi-luppare i calcoli a questo punto vorrebbe dire riscrivere l’equazione 2.4come: ¨ ˙ ¨ I θ = l sin θ(mg − mlθ2 cos θ − mlθ sin θ) + (2.5) ˙ ¨ − l cos θ(m¨ − mlθ2 sin θ − mlθ cos θ) xe ottenere, semplificando: ¨ (I + ml2 )θ = mgl sin θ − ml¨ cos θ x (2.6)A questo punto bisognerebbe sostituire quanto trovato all’interno dell’equa-zione 2.9.Tale procedimento ` sicuramente il pi` corretto ma, nel nostro caso, non por- e uta necessariamente ad una modellizzazione migliore; infatti, considerandol’implementazione che verr` fatta si possono stimare alcuni parametri: aM la parte inferiore pesa all’incirca 0.285kgm la parte superiore pesa all’incirca 0.09kgl l’altezza della parte superiore ` di 18 cm dunque l = 9cm eI il momento d’inerzia pu` anch’esso essere stimato sia sperimentalmente (a o tal proposito si veda [12]) che numericamente (sfruttando le relazioni mostrate in [1] e [6])In entrambi i casi il valore di I risulta numericamente trascurabile; si pu` odunque proseguire dalla equazione: ¨ ml2 θ = mgl sin θ − ml¨ cos θ x (2.7)
  18. 18. 8 Capitolo 2. Modellizzazione del sistema2.2.3 Equazioni del modelloL’equazione 2.7 che pu` anche essere scritta come: o ¨ 1 θ = (g sin θ − x cos θ) ¨ (2.8) lUnendo le equazioni 2.1 e 2.2 si ottiene: x ¨ ˙ (M + m)¨ + mlθ cos θ = mlθ2 sin θ + Fin − bx ˙ (2.9) A questo punto ` possibile utilizzare quanto trovato nell’equazione 2.8 eall’interno dell’equazione 2.9: x x ˙ (M + m)¨ + m cos θ(g sin θ − l¨ cos θ) = mlθ2 sin θ + Fin − bx ˙ mlθ˙2 sin θ − mg sin θ cos θ + Fin − bx ˙ x = ¨ 2 (2.10) M + m sin θSostituendo nella 2.8: 1 ˙ mlθ2 sin θ − mg sin θ cos θ + Fin − bx ˙¨θ = g sin θ − cos θ = l 2 M + m sin θ ˙ M g sin θ + mg sin θ(sin2 θ + cos2 θ) − mlθ2 sin θ cos θ − Fin cos θ + bx cos θ ˙ = 2 = l(M + m sin θ) ˙ (M + m)g sin θ − mlθ2 sin θ cos θ − Fin cos θ + bx cos θ ˙ = 2 (2.11) l(M + m sin θ) Possiamo a questo punto scrivere il sistema:  x ˙ = x ˙    x ˙ mlθ2 sin θ−mg sin θ cos θ+Fin −bx ˙ ¨ =  M +m sin2 θ (2.12) ˙ θ  = ˙ θ   ¨ θ ˙ (M +m)g sin θ−mlθ2 sin θ cos θ−Fin cos θ+bx cos θ ˙ = l(M +m sin2 θ)Il sistema ` dunque del quarto ordine e presenta quattro variabili di stato: e a ˙ a ˙la posizione x, la velocit` x, l’angolo di piega θ e la velocit` angolare θ.
  19. 19. 2.3. Propriet` del sistema a 92.3 Propriet` del sistema a2.3.1 Equilibrio   x   x ˙  ´E possibile notare che esiste un valore x del vettore di stato x =   e un   θ    ˙ θ   0   0  valore u dell’ingresso Fin per cui x = F(x, u) =  . ˙   0   0   0   0  Esiste dunque un punto di equilibrio in corrispondenza dei valori x =     0   0e Fin = u = 0.2.3.2 LinearizzazioneSe le oscillazioni della parte superiore avvengono attorno al punto di equili-brio ricavato al paragrafo 2.3.1 e hanno entit` limitata si pu` linearizzare il a osistema 2.12 ottenendo:  x ˙   = x ˙  mg b Fin x¨ = −M x − ˙ M θ +  M (2.13) ˙ θ = ˙ θ     ¨ b (M +m)g Fin θ = lM x ˙ + lM θ − lM
  20. 20. 10 Capitolo 2. Modellizzazione del sistema Figura 2.4: Rappresentazione dell’equazione in forma di statoScrivendo in forma matriciale: x = Ax + BFin ˙ (2.14)        x˙ 0 1 0 0 x 0        b − mg    1  x ¨ 0 − M 0 x  M  ˙      =  M   +   Fin  ˙      (2.15) θ  0 0 0 1  θ   0         θ¨ 0 lM (MM l b +m)g 0 ˙ θ 1 − MlCi troviamo di fronte ad un sistema rappresentabile come in figura 2.4, incui:   0 1 0 0   0 − Mb − mg 0   M A=    (2.16) 0 0 0 1   b (M +m)g 0 lM Ml 0   0    1  B= M      (2.17)  0    1 − Ml   1 0 0 0 C=  (2.18) 0 0 0 1
  21. 21. 2.3. Propriet` del sistema a 11C rappresenta, come verr` spiegato nel capitolo 2.3.5, le variabili di stato di acui ` disponibile la misura. e2.3.3 Stabilit` aIl polinomio caratteristico del sistema linearizzato ` dunque: e   s −1 0 0   b mg 0 s + M 0   M det(sI − A) = det   (2.19) −1   0 0 s   0 0 − (MlM +m)g sTrascurando l’attrito (rappresentato dal coefficiente b) si ottiene:   s −1 0 0   mg 0 s 0   M det(sI − A) = det   = (2.20) −1  0 0 s   b (M +m)g 0 − lM − lM s   s −1 = s2 det  = (M +m)g − Ml s (M + m)g = s2 s2 − MlDa cui si nota che il sistema ha: • due poli nell’origine (M +m)g • due poli reali s = ± Ml : il sistema ` dunque instabile (come si e poteva facilmente immaginare dalla fisica sottostante)
  22. 22. 12 Capitolo 2. Modellizzazione del sistema2.3.4 Raggiungibilit` aDefinizione informaleUn sistema ` raggiungibile se in un tempo arbitrario non infinito, esso pu` es- e osere condotto da un qualunque punto dello spazio degli stati ad un qualunquealtro punto.Analisi di raggiungibilit` aAnalizziamo la matrice di raggiungibilit` : a R = B BA BA2 BA3 = (2.21)   1 mg 0 M 0 M 2l    1 mg 0 0  M 2l  M  =    (2.22) 1 (M +m)g   0 − Ml 0 − M 2 l2    1 (M +m)g − Ml 0 − M 2 l2 0Il rango ` massimo e dunque il sistema ` completamente raggiungibile. e eUn’importante considerazione Un sistema completamente raggiungi-bile, quando retroazionato, gode di una particolare propriet`: i poli ad anello achiuso possono essere scelti a piacere e questo faciliter` di molto la sintesi adel controllore.2.3.5 Osservabilit` aDefinizione informaleCon il termine osservabilit` si indica la possibilit` di poter risalire allo stato a ainiziale conoscendo l’evoluzione dell’ingresso e della corrispondente uscita.Se un sistema ` completamente osservabile esiste, dato un ingresso, una ecorrispondenza biunivoca fra stati iniziali e uscite e, cio`, fra l’andamento edell’uscita del sistema e la traiettoria nello spazio degli stati.
  23. 23. 2.3. Propriet` del sistema a 13AnalisiPer analizzare l’osservabilit` ` necessario introdurre la trasformazione di a euscita y = y(t); essa dipende dallo stato attuale e nel nostro caso descrivela lettura data dai sensori: infatti, delle quattro variabili di stato delineate ˙al paragrafo 2.2.3, solo due (la posizione x e la velocit` angolare θ) potranno aessere misurate. y = Cx = (2.23)   x      1 0 0 0 x ˙ x   =    =   (2.24)   0 0 0 1 θ  ˙ θ   ˙ θSi pu` dunque scrivere la matrice di osservabilit`: o a   C    CA    O=  = (2.25) CA2     CA 3   1 0 0 0     0 0 0 1      0 1 0 0    (M +m)g   0 0 0  lM = (2.26)    0  0 − mg M 0     0 (M +m)g   0 0 lM    mg  0  0 0 −M   2  (M +m)g 0 0 Ml 0Anche in questo caso il rango ` massimo per cui il sistema ` osservabile. e e
  24. 24. 14 Capitolo 2. Modellizzazione del sistema2.4 Esperimenti in Matlab2.4.1 Una prima analisiConsiderando le seguenti stime dei parametri:M la parte inferiore pesa all’incirca 0.285kgm la parte superiore pesa all’incirca 0.09kgl l’altezza della parte superiore ` di 18 cm dunque l = 9cm eNella prima parte dello script Matlab analisi modello robot.m, disponi-bile in Appendice A.1, ` stato confermato quanto fin qui dimostrato teori- ecamente: • Il sistema ha un autovalore positivo ed ` dunque instabile; tale verifica e ` stata effettuata utilizzando la funzione eig e • Il sistema ` osservabile (semplice verifica utilizzando il comando rank) e • Il sistema ` raggiungibile ed ` dunque possibile fissare a piacimen- e e to i poli del sistema in anello chiuso (semplice verifica utilizzando il comando rank)2.4.2 Confronto tra sistema lineare e sistema non linearePer comparare il sistema non lineare, descritto dall’equazione 2.12, e il cor-rispondente sistema linearizzato, descritto dall’equazione 2.13 si confronte-ranno i comportamenti in anello aperto con ingressi di vario genere.Prima di tutto ` per` necessario far s` che il sistema non lineare possa essere e o ırappresentato come un blocchetto all’interno del Simulink, un noto toolboxdi Matlab per creare simulazioni in maniera grafica: a tal proposito ` stata escritta una S-function di primo livello (riportata in Appendice A.2).Si pu` dunque impostare l’esperimento Simulink come mostrato in figura 2.5. oGli esperimenti svolti hanno coperto le seguenti casistiche:
  25. 25. 2.4. Esperimenti in Matlab 15Figura 2.5: Esperimento Simulink: confronto tra sistema non lineare e il sistemalinearizzato corrispondentecondizioni iniziali non nulle, nessun ingresso In questo caso si ` po- e sto l’angolo di piega a valori man mano pi` lontani dallo zero; come u si nota dalle figure 2.6 e 2.7 l’approssimazione ` buona per piccoli va- e lori ma all’aumentare di questi la differenza di comportamento inizia a diventare evidente.Figura 2.6: Condizione iniziale per l’angolo Figura 2.7: Condizione iniziale per l’angoloposta a 0.1 radianti posta a 0.5 radianti
  26. 26. 16 Capitolo 2. Modellizzazione del sistemarumore bianco in ingresso, condizioni iniziali nulle il comportamen- to in questo caso `, prima che le uscite divergano, sostanzialmente e identico come si evince dalle figure 2.8 e 2.9.Figura 2.8: Esperimento: rumore bianco in Figura 2.9: Segnale in ingressoingresso Si pu` dunque concludere che il sistema linearizzato approssimi bene il osistema non lineare soltanto nei primi istanti di funzionamento, prima delladivergenza; inoltre quando si impongono delle condizioni iniziali non nulle,si riscontra un comportamento molto simile quando queste sono prossimeal punto di equilibrio; man mano che ci si allontana le differenze diventanonaturalmente molto marcate.
  27. 27. Capitolo 3Sintesi del controlloreLa modellizzazione del sistema permette di cominciare la creazione di uncontrollore che dovr` garantire l’equilibrio del robot rispettando i limiti fisi- aci degli attuatori e ottimizzando il pi` possibile l’energia dell’azione di con- utrollo. Il testo di riferimento per questo capitolo ` “Fondamenti di controlli eautomatici ” [5], i cui concetti sono stati approfonditi ricorrendo a [11].3.1 Caratteristiche del controllore3.1.1 Scelta di un controllore lineareUna volta modellizzato il sistema fisico ` possibile scegliere un controllore e echiudere l’anello, come mostrato in figura 3.1.Il controllore che verr` utilizzato ` di tipo proporzionale e pu` essere dunque a e orappresentato come un vettore K di quattro guadagni; l’azione di controllo` dunque proporzionale alle quattro variabili di stato (posizione, velocit`,e aangolo e velocit` angolare). a K = gposizione gvelocita gangolo gvelocita angolare (3.1)
  28. 28. 18 Capitolo 3. Sintesi del controllore Figura 3.1: SistemaIl sistema in anello chiuso, come mostrato in [11], pu` essere descritto da oun’equazione di stato del tipo (le matrici A, B e C sono state definite neicapitoli 2.3.2 e 2.3.5): Aclosed loop = A − BK Bclosed loop = B (3.2) Cclosed loop = CIl sistema in anello chiuso pu` essere dunque rappresentato in due maniere odel tutto equivalenti mostrate in figura 3.2.3.1.2 Definizioni delle condizioniEssendo il sistema che rappresenta il pendolo inverso raggiungibile ` possi- ebile chiudere l’anello e ricercare un controllore lineare adatto imponendo ipoli ad anello chiuso.In linea teorica ` possibile imporre qualsiasi valore, ma esistono delle condi- ezioni che limitano tale libert`: in primo luogo ci si aspetta che il controllore a
  29. 29. 3.1. Caratteristiche del controllore 19 Figura 3.2: Rappresentazioni equivalenti del sistema in anello chiusostabilizzi il sistema in un tempo opportuno; in secondo luogo gli attuatoriche andremo a utilizzare hanno dei limiti (di coppia e di potenza) che nonvanno in alcun modo sormontati. Vogliamo a questo punto definire alcune condizioni: 1. Si richiede un tempo di assestamento Tassestamento , ovvero il tempo necessario per riportare il sistema in equilibrio, compreso tra 1 e 2.5 s • viene specificato un range di valori che dovrebbe garantire l’equi- librio e che sia ragionevolmente compatibile con le caratteristiche degli attuatori che utilizzeremo (si veda anche il capitolo 5.2.2)
  30. 30. 20 Capitolo 3. Sintesi del controllore • il tempo di assestamento ` dato dalla posizione del polo domi- e nante pdom della funzione di anello chiuso; sapendo che: 5 Tassestamento = (3.3) |pdom | si ottiene che 5 pdom = (3.4) Tassestamento 5 5 ≤ |pdom | ≤ (3.5) Tassest maggiore Tassest minore 2≤ |pdom | ≤5 (3.6) 0.2 ≤ |τpolo dom | ≤ 0.5 (3.7) 2. si vuole inoltre garantire che le oscillazioni del pendolo non superino i 20◦ di ampiezza; si vorr` dunque che: a |θ(t)| ≤ 20◦ ∀t (3.8) tale condizioni non pu` essere trasformata in un requisito sui poli ad o anello chiuso e potr` dunque essere verificata solo sperimentalmente. a 3. Si pone inoltre che lo smorzamento rientri nel seguente range: 0.7 ≤ ξ ≤ 1 (3.9)3.1.3 Area sulla mappa dei poliLe condizioni 1 e 3 delineano una precisa area nel mappa dei poli: questa` mostrata in giallo in figura 3.3 e il polo dominante del sistema in anelloechiuso dovr` essere disposto al suo interno. a
  31. 31. 3.1. Caratteristiche del controllore 21 Figura 3.3: Area sulla mappa dei poli3.1.4 Criteri di sceltaL’area delineata al capitoletto precedente non rappresenta una zona da cuiscegliere indifferentemente il polo dominante; esistono infatti alcuni crite-ri per prediligerne uno piuttosto che un altro. Il primo ` la scelta di un etempo di risposta e di uno smorzamento che garantiscano un’elongazionedell’angolo di piega del pendolo inferiore ai 20◦ ; il secondo invece vigila sul-la potenza impressa dall’azione di controllo, verificandone la compatibililit` acon gli attuatori. A tale proposito verranno valutati due fattori: ∞ 2 • l’integrale del quadrato dell’azione di controllo ( 0 |u(t)| dt): pi` u
  32. 32. 22 Capitolo 3. Sintesi del controllore piccolo sar` e minore sar` la forza mediamente richiesta agli attuatori a a • la funzione di sensitivit` del controllo Q(s) (si veda anche [10]) che de- a scrive lo sforzo di controllo: anch’essa dovr` essere la minore possibile a3.2 Esperimenti3.2.1 Esperimenti in MatlabCome delineato nel capitololetto 3.1.2 i poli in anello chiuso dovranno esserealmeno quattro e la coppia di poli dominanti (eventualmente complessa econiugata) dovr` rispettare precise condizioni. aSi possono naturalmente ipotizzare diversi vettori dei poli compatibili contali richieste, caratterizzati da: • tempo di assestamento pi` o meno veloce (1sec ≤ Tassestamento ≤ u 2.5sec) • poli complessi e coniugati oppure a parte immaginaria nulla • poli su cui non si hanno condizioni pi` o meno “distanti” dai poli u dominantiLo script Matlab analisi modello robot.m permette di creare la matricedegli n tentativi (di dimensione n x 4, essendo quattro i poli da fissare) eper ognuno: • viene calcolata la matrice dei guadagni K tramite la funzione Matlab place(A, B, poli prescelti) • vengono calcolati Aclosed loop , Bclosed loop e Cclosed loop sfruttando le relazioni 3.2 • viene svolto un primo esperimento con condizioni iniziali non nulle e variabile esogena nulla:
  33. 33. 3.2. Esperimenti 23 – questo esperimento ` sicuramente significativo in quanto rappre- e senta lo scenario di fronte al quale si trover` il pendolo inverso a all’inizio del funzionamento   0    0    – il vettore delle condizioni iniziali `  e    0.45   0 – l’unica condizione iniziale non nulla ` dunque relativa all’an- e golo; questa ` espressa in radianti e corrisponde a circa 25◦ e sessagesimali • viene svolto un secondo esperimento con condizioni iniziali nulle e impulso in ingresso – anche questo esperimento risulta significativo in quanto rappre- senta il disturbo pi` semplice che il pendolo pu` incontrare u o – in questo caso viene misurata anche l’azione di controllo e viene ∞ 2 calcolato l’integrale 0 |u(t)| dt; tale valore viene riportato nel titolo della finestra • viene svolto un terzo esperimento con condizioni iniziali nulle e scalino in ingresso: questo esperimento risulta naturalmente meno significati- vo in quanto l’ingresso tipico del sistema ` assimilabile pi` facilmente e u ad impulsi che non ad uno scalino • viene calcolata la funzione di sensitivit` Q(s) definita come: a R(s) Q(s) = (3.10) 1 + R(s)G(s)  1 |C(jw)| |P (jw)| ω ≤ ωt  |Q(jw)|approssimata = ≈ (3.11) |1 + F (jw)|  |C(jw)| ω > ω t e ne vengono tracciati i diagrammi di Bode.
  34. 34. 24 Capitolo 3. Sintesi del controlloreAlcuni esempi numerici Di seguito vengono riportati alcuni dei valorinumerici provati: i. [-60; -20; -4.1; -4] l’energia di controllo ` compatibile con gli e attuatori. Il valore dell’oscillazione massima sfiora i 20◦ . Questo esperimento ` mostrato in figura 3.4 e ii. [-60; -20; -4+4i; -4-4i] i poli complessi coniugati introducono delle oscillazioni ed aumentano l’energia richiesta dal controllo senza per` migliorare il valore dell’oscillazione massima; dal momento che ` o e possibile imporre tutti i poli scegliamo di non sollecitare la struttura inutilmente iii. [-80; -40; -4.1; -4] in questo caso le oscillazioni si riducono a soli 10◦ ; l’energia di controllo ` per` quasi doppia rispetto al caso [-60; -20; e o -4.1; -4] Questo esperimento ` mostrato in figura 3.5 e La scelta dei poli ricade su [-60; -20; -4.1; -4], che permettono un buoncompromesso tra tempistica di risposta, angolo di oscillazione ed energiadell’azione di controllo.3.2.2 Esperimenti in SimulinkUna volta selezionata la matrice dei guadagni Kscelta che meglio controllail sistema in esame ` necessario preparare Simulink per gli esperimenti suc- ecessivi.Simulink sicuramente brilla per la facilit` con cui ` possibile impostare le a esimulazioni ma purtroppo la gestione dei risultati non ` potente quanto Ma- etlab: per questo motivo le analisi approfondite richiederanno di tornare inMatlab.
  35. 35. 3.2. Esperimenti 25 Figura 3.4: Esperimento con poli [-60; -20; -4.1; -4] Figura 3.5: Esperimento con poli [-80; -20; -4.1; -4]
  36. 36. 26 Capitolo 3. Sintesi del controlloreIn Simulink sono stati dunque validati i risultati ottenuti nei precedenti pa-ragrafi ripetendo alcuni degli esperimenti: gli esiti sono risultati compatibilie si ` potuto dunque procedere con la realizzazione del ricostruttore dello estato.
  37. 37. 3.2. Esperimenti 27Figura 3.6: Esperimento in Simulink: impulso in ingresso con condizioni iniziali nulle Figura 3.7: Grafico di posizione e angolo per l’esperimento di figura 3.6
  38. 38. 28 Capitolo 3. Sintesi del controllore
  39. 39. Capitolo 4Ricostruttore dello statoIn questo capitolo si continua il lavoro a partire dal controllore lineare e sisintetizza un ricostruttore dello stato che permetta di far convergere lo statocalcolato dal robot con lo stato reale del sistema.4.1 Premessa teorica4.1.1 La necessit` di un ricostruttore dello stato aIl sistema che andremo a realizzare ` caratterizzato da: esistema reale rappresentato dal pendolo inverso; di questo si conosce so- lo ci` che i sensori misurando quindi non necessariamente tutte le o variabili di stato n`, solitamente, le condizioni iniziali emodello ideale ` all’interno del microcontrollore che implementer` il con- e a trollore lineare e il ricostruttore dello stato; rappresenta il modello semplificato in base a cui viene calcolata l’azione di controllo. Esso deve non solo approssimare al meglio il sistema reale ma deve anche essere in grado di:
  40. 40. 30 Capitolo 4. Ricostruttore dello stato • ricostruire tutte le variabili di stato per cui non ` disponibile la e misura • convergere velocemente ai valori corretti delle variabili di stato nel caso di condizioni iniziali non nulleCome abbiamo visto nel capitolo precedente il controllore realizzato ` di tipo eproporzionale lineare. Ci` vuol dire che ` nella forma: o e K = gposizione gvelocit` gangolo gvelocit` a a angolare (4.1)Esso agisce dunque su ognuna delle quattro variabili di stato e applica sulsistema rappresentato dal pendolo inverso una forza che ` combinazione li- eneare di queste.Ma quali variabili di stato sono realmente misurabili? E se le condizioniiniziali non fossero esattamente nulle?4.1.2 I sensoriLe misure a disposizione sono solamente due (si veda anche il capitolo 5.2.3):posizione tramite gli encoder incrementali presenti all’interno dei motori (si veda anche il capitolo 5.2.2)velocit` angolare tramite un giroscopio (si veda anche il capitolo 5.2.3) a viene misurato non l’angolo di piega ma la velocit` angolare aIl controllore dunque ha la necessit` di calcolare le due misure mancanti: avelocit` longitudinale e angolo di piega. aPer ottenerle si pu` seguire un approccio puramente matematico derivan- odo la posizione e integrando la velocit` angolare: derivazione e integrazio- ane soffrono per` di problemi ben noti ed ` dunque preferibile procedere o ericostruendo asintoticamente lo stato (si veda anche [11]).
  41. 41. 4.1. Premessa teorica 314.1.3 Il ricostruttore dello statoIl sistema reale pu` essere rappresentato dalle equazioni: o   x = Ax + BFin ˙ (4.2)  y = Cx + DF ˙ inNel caso in esame D = 0.Dal momento che questo sistema evolve senza la possibilit` di misurare le acondizioni iniziali si sfrutta il fatto che esiste un sistema nella stessa for-ma 4.2 che, con opportuni valori di A, B e C, converge allo stato delsistema reale qualunque siano la condizioni iniziali. In altre parole esiste unsistema che dati l’ingresso Fin e le uscite y disponibili del sistema reale, avr` auno stato x che converge asintoticamente allo stato x del sistema reale. ˆTale idea ` schematizzata in figura 4.1 e Figura 4.1: Schema generico di un ricostruttoreLa realizzazione Simulink di tale concetto ` data da una serie di passi: e • si rappresenta il sistema reale come lineare (come in equazione 4.2) oppure come non lineare (come verr` fatto nel 4.3.2) a • si crea una replica del sistema (lineare ed eventualmente discretizzato, come verr` fatto nel 4.3.2) a
  42. 42. 32 Capitolo 4. Ricostruttore dello stato • la replica e il sistema originario avranno condizioni iniziali diverse essendo lo stato del sistema reale non noto • si calcola l’errore di ricostruzione dello stato e(t), dato dalla differenza tra lo stato predetto x delle due variabili di cui si possiede una misura ˆ e lo stato reale x proveniente dai sensori • questa quantit`, opportunamente moltiplicata per una matrice dei a guadagni L, viene negata e data in ingresso alla replica del sistema • si pu` dunque osservare, essendo Fin = −K x, come la replica sia o ˆ governata dalle seguenti equazioni:  ˙  x = Aˆ + BFin − L(y − y )  ˆ x ˆ    = (A − LC)ˆ + BFin + Ly x   (4.3)     = (A − BK)ˆ − L(y − y ) x ˆ  ˙   y = Cx ˆ ˆ Dove: E = A − LC = (4.4)     0 1 0 0 k k    11 21    mg 0 0 −M 0 k12 k22  1 0 0 0     =  −   = (4.5)     0 0 0 1  k13 k23  0 0 0 1     (M +m)g 0 0 Ml 0 k14 k24   −k11 1 0 −k21   −k12 0 − mg −k22    M =    (4.6) −k13 0 1 − k23   0   (M +m)g −k14 0 Ml −k24Si ha dunque un sistema come quello rappresentato in figura 4.2.
  43. 43. 4.1. Premessa teorica 33 Figura 4.2: Schema del ricostruttore dello stato4.1.4 Valutazione della matrice LDalle equazioni 4.2 e 4.3 ` possibile ricavare la dinamica dell’errore e(t); essa e` descritta da:e e = (A − LC)e = Ee ˙ (4.7)che ` l’equazione di stato di un sistema dinamico lineare nella forma 4.2 ma econ ingresso nullo.
  44. 44. 34 Capitolo 4. Ricostruttore dello statoEssendo la 4.7 un problema formalmente identico al problema posto dal-la 3.2 possiamo utilizzare le tecniche spiegate nel capitolo 3.2 per trovarela L che impone un certo “tempo di assestamento”, ovvero il tempo che ilricostruttore impiegher` per allineare lo stato reale con quello in memoria. aNello script Matlab (il cui codice ` disponibile in Appendice A.1) dunque esfrutteremo nuovamente il comando place.I poli vengono imposti secondo questo criterio: dal momento che la conver-genza dello stato predetto allo stato reale deve essere molto pi` veloce del utempo di risposta Tassestamento imposto al capitolo 3.1.2, si prenderanno ipoli ad anello chiuso scelti in fondo al capitolo 3.2 e li si moltiplicher` per a10.In questo modo, essendo 5 T = (4.8) |polo|il tempo di annullamento dell’errore di stato sar` di un ordine di grandezza ainferiore al tempo di assestamento del robot.4.2 Alcuni esperimentiUna volta calcolata la matrice L si pu` procedere con alcuni esperimenti che one supportino la bont`. a4.2.1 Sistema reale lineare, controllore continuoIn questo primo esperimento si tratta il sistema reale come se fosse continuoe si utilizza il controllore ricavato nel precedente capitolo. Al sistema reale   0    0   vengono assegnate le condizioni iniziali   ; le condizioni iniziali del si-  0.25   0stema replica sono invece nulle.
  45. 45. 4.2. Alcuni esperimenti 35Questo ` l’esperimento pi` semplice che si possa fare e permette di iniziare e ua valutare le effettive prestazioni dello stimatore dello stato.Lo schema Simulink ` quello in figura 4.3. e Figura 4.3: Esperimento Simulink: Sistema reale lineare, controllore continuoConfrontando le figure 4.4 e 4.5 si pu` notare come l’errore converga effet- otivamente molto pi` velocemente rispetto al tempo di assestamento. uFigura 4.4: Grafico angolo predetto e reale Figura 4.5: I due errori di stato4.2.2 Sistema reale non lineare, controllore continuoIn questo esperimento entra in gioco il sistema non lineare, che meglio do-vrebbe approssimare il sistema reale.Nel capitoletto 2.4.2 abbiamo gi` analizzato le differenze di comportamento a
  46. 46. 36 Capitolo 4. Ricostruttore dello statoin anello aperto tra il sistema non lineare e il corrispondente sistema linea-rizzato.Riutilizzando la S-function sviluppata nel capitolo 2.4.2, possiamo sostituir-la alla parte superiore dell’esperimento (corrispondente al “sistema reale”).Ripetendo le simulazioni si ottengono risultati sostanzialmente identici aquelli ottenuti nel capitoletto precedente.4.3 Discretizzazione4.3.1 Dal tempo continuo al tempo discretoIn questo capitolo si affronta la discretizzazione del controllore; questa sibasa sulla relazione che permette di passare da poli a tempo continuo a polia tempo discreto: pcontinuo −→ pdiscreto = epcontinuo Tcampionamento (4.9)Si vede come sia necessario decidere un tempo di campionamento Tcampionamento :il pendolo inverso sar` controllato da un microcontrollore AVR Atme- aga168, come spiegato nel capitolo 5.2.1. Dunque, considerando che talemicrocontrollore ` capace di campionare fino a 15kSPS (kilo Sample Per eSecond ) [2], il valore di: Tcampionamento = 1ms 1000 fcampionamento = sec = 1kHz (4.10)sembrerebbe ragionevole.Se da un lato il limite inferiore per Tcampionamento ` ben definito, il limite e
  47. 47. 4.3. Discretizzazione 37superiore non lo `: ` necessario dunque capire quale valore ` meglio non e e esuperare al fine di non introdurre oscillazioni e instabilit`. A tal fine sono astati predisposti alcuni esperimenti nel capitoletto 4.3.2. Per modificare i precedenti esperimenti Simulink in modo da poter la-vorare a tempo discreto ` necessario ricalcolare tutte le matrici in gioco etenendo conto che il sistema ` ora discretizzato ad una certa Tcampionamento , eottenendo Ad , Bd , Cd e Dd (quest’ultima ` nulla). eSi passa dunque da un sistema del tipo descritto dall’equazione 4.2 a unsistema:   x[k + 1] = Ad x[k] + Bd Fin [k] (4.11)  y[k] = Cd x[k] + Dd Fin [k]E’ a questo punto necessario calcolare i poli del sistema discretizzato sfrut-tando la formula 4.9; si devono poi imporre i poli ad anello chiuso (esatta-mente come ` stato fatto nel capitolo 3.2 per il sistema a tempo continuo) e eutilizzare il comando Matlab place (che lavora anche con sistemi a tempodiscreto) per ricavare la matrice dei guadagni Kd .In seguito bisogna ricercare nuovamente la matrice Ldisc del ricostruttoredello stato: le modalit` sono identiche a quelle mostrate nel capitolo 4.1.4. aAll’interno del microcontrollore si dovr` dunque implementare la versione adiscreta dell’equazione 4.3, ovvero: x[k + 1] = Ad x[k] + Bd Fin [k] − Ld (y[k] − y [k]) ˆ ˆ ˆ (4.12) = (Ad − Bd Kd )ˆ[k] − Ld (y[k] − y [k]) x ˆ4.3.2 Altri esperimenti in MatlabSistema reale lineare, controllore discretoPer adattare i precedenti esperimenti Simulink al tempo discreto bisogna: • sostituire ad ogni componente il corrispondente discreto
  48. 48. 38 Capitolo 4. Ricostruttore dello stato • impostare il tempo di campionamento Tcampionamento dalla finestra del- le opzioni che si ottiene facendo doppio click su un qualsiasi oggetto Simulink (di default il valore ` “-1” che permette agli oggetti di “ere- e ditare” il tempo di campionamento eventualmente impostato per gli altri oggetti) • sostituire l’integratore con un ritardo unitario • aggiungere un blocchetto “Zero Order Hold ” per simulare il campio- namento dei segnali provenienti dai sensori L’esperimento Simulink corrispondente ` mostrato in figura 4.6. e Dalla figura 4.7 si notano invece le conseguenze della discretizzazione: i Figura 4.6: Esperimento Simulink: Sistema reale lineare, controllore discretotempi di risposta sono invariati ma tutti i grafici sono ora caratterizzati dauna “seghettatura”.
  49. 49. 4.3. Discretizzazione 39 Figura 4.7: Angolo predetto e reale con controllore discretoSistema reale non lineare, controllore discretoIn questo esperimento entra nuovamente in gioco il sistema non lineare, chemeglio dovrebbe approssimare il sistema reale.Riutilizzando la S-function sviluppata nel capitolo 2.4.2 si ottengono risul-tati pressoch` identici a quelli ottenuti nel capitoletto precedente. Esistono eper` due differenze da segnale: in primo luogo la condizione iniziale mas- osima per cui il controllore riesce a garantire la stabilit` del sistema reale ` a eridotta a 0.4 radianti; in secondo luogo si pu` notare come le prestazioni del ocontrollore si degradino all’aumentare del tempo di campionamento.Per valori vicini al valore da noi assunto (Tcampionamento = 1ms) non si os-servano particolari variazioni nella stabilit` del controllo; pi` ci si avvicina a uper` al valore “limite” di 44ms pi` il sistema diventa oscillatorio e, oltre o utale valore, instabile.Quando detto ` bene riassunto dalla figura 4.8. e
  50. 50. 40 Capitolo 4. Ricostruttore dello stato Figura 4.8: Prestazioni a confronto con tempi di campionamento tra 1 e 44 ms
  51. 51. Capitolo 5Realizzazioni sperimentaliLo studio teorico fin qui fatto viene ora validato con una realizzazione pra-tica: l’intento ` quello di creare un robot che, essendo schematizzabile co- eme un pendolo inverso, possa essere mantenuto in equilibrio dal controllorestudiato.5.1 IntroduzioneEsistono diverse realizzazioni sperimentali di unpendolo inverso (si veda ad esempio [12]): tutteutilizzano una componentistica piuttosto costosae propongono esperimenti che lasciano spazio a di-rezioni future di ricerca relative al solo ambito delcontrollo.La realizzazione seguente si propone invece dicreare un robot ispirato al Segwaytm (mostratoin figura 5.1); questo non ` dunque vincolato ad e Figura 5.1: Segway attual-una rotaia come accade nella maggior parte degli mente in commercioesperimenti di laboratorio ma ` autonomo e potr` e a
  52. 52. 42 Capitolo 5. Realizzazioni sperimentaliguadagnare, nei lavori futuri, la capacit` di muoversi nello spazio. aUn’ulteriore differenza ` la componentistica: i motori, i sensori e il micro- econtrollore sono tra i pi` economici disponibili al momento; ciononostante usi ritiene che essi, entro certi limiti, possano essere adatti allo scopo.5.2 Hardware utilizzato5.2.1 ArduinoIl “cuore” della realizzazione sperimentale ` dato dal microcontrollore, il ecomponente al cui interno verranno implementati il controllore lineare e ilricostruttore dello stato.Il microcontrollore scelto ` un Atmel AVR ATmega168: questo ` sta- e eto preferito ai PIC prodotti da Microchip non tanto per le caratteristichetecniche ma perch` ` parte di una piattaforma di sviluppo chiamata Ardui- eeno [4].Con una spesa di poco superiore ad un normale AVR si ha infatti a dispo-sizione una piattaforma (mostrata in figura 5.2) che: • ` formata da una scheda su cui sono presenti vari componenti fonda- e mentali per la programmazione e utili al momento dell’utilizzo: l’AT- mega, uno stabilizzatore di tensione, una porta USB, un convertitore seriale-USB, etc. . . • ` studiata per rendere il pi` semplice possibile il lavoro di program- e u mazione; sul microcontrollore ` infatti precaricato un bootloader che e permette di scrivere in memoria i programmi direttamente via USB • ` open-hardware per cui sono disponibili tutte le specifiche della scheda e (schema e file EAGLE) [3] • offre macro C e librerie gi` pronte per semplificare la gestione del- a l’hardware pi` disparato: ad esempio ` possibile interagire con scher- u e
  53. 53. 5.2. Hardware utilizzato 43 Figura 5.2: Arduino “Diecimila” mi LCD e ricevitori GPS chiamando delle funzioni che mascherano la complessit` sottostante (protocollo di comunicazione, tempistica, a etc. . . ) [4] • offre un Integrated Development Environment (IDE ) open-source, multi- piattaforma e semplice da usare – si collega Arduino alla porta USB – si scrive il programma e lo si compila con un click – lo si carica sul microcontrollore con un solo click • ` stata progettata e viene portata avanti da una vasta community in- e ternazionale; la produzione della scheda avviene inoltre interamente in Italia in industrie in cui sono garantite paghe dignitose e un ambiente di lavoro sicuro Le principali caratteristiche tecniche di Arduino sono:
  54. 54. 44 Capitolo 5. Realizzazioni sperimentali Microcontrollore ATmega168 Tensione di funzionamento 5V Tensione di alimentazione consigliata 7-12 V Tensione di alimentazione minima e massima 6-20 V Ingressi/uscite digitali 14 (di cui 6 PWM) Ingressi analogici 6 Memoria Flash 16 KB (2 KB usati dal bootloader) SRAM 1 KB EEPROM 512 bytes Frequenza del clock 16 MHz5.2.2 Attuatori e ruoteCaratteristicheGli attuatori del moto (figura 5.5) e le ruote utilizzate provengono dal kitLEGOtm Mindstorm NXT disponibile presso il Laboratorio di Automatica.I motori hanno le seguenti caratteristiche (si veda anche [9]): • doppia alimentazione fino a 9V che permette bidirezionalit` a • encoder incrementale interno con precisione di 1◦ ; richiede alimenta- zione a 5V • velocit` di rotazione senza carico con alimentazione a 9V: 170 rpm a • corrente senza carico: 60 mA • le relazioni round per minute-torsione e corrente-torsione sono mostra- te nelle figure 5.3 e 5.4 – torsione con medio carico: 0.167N m (con corrente 0.55 A e 117 rpm) – torsione massima: ∼ 0.5N m = 0.5J (con corrente di 2 A)
  55. 55. 5.2. Hardware utilizzato 45 Figura 5.3: Grafico rpm-torsione Figura 5.4: Grafico corrente-torsioneConnettoriPer comandare i motori ` stato necessario fare il reverse engineering dei econnettori e del significato dei singoli segnali al loro interno.I motori LEGO sono infatti alimentati con un cavo a sei polarit` con connet- atore RJ-12 non standard essendo il gancio di sicurezza spostato di qualchemillimetro.I segnali all’interno del cavo hanno il seguente significato:
  56. 56. 46 Capitolo 5. Realizzazioni sperimentali • Primo segnale di alimentazione (da 0 a 9V) • Secondo segnale di alimentazione (da 0 a 9V) • Terra • Alimentazione dell’encoder (5V) • Primo segnale dell’encoder (onda quadra tra 0 e 5V) • Secondo segnale dell’encoder (onda quadra tra 0 e 5V)Ponte HSiccome Arduino non pu` fornire la corrente necessaria per comandare i omotori ` stato necessario ricorrere ad un integrato, l’L293D, in grado di efornire la corrente necessaria e agire anche come Ponte H.Tramite i quattro ingressi dell’integrato ` dunque possibile comandare due emotori bidirezionalmente.Figura 5.5: LEGOTM NXT Interactive Figura 5.6: GiroscopioServo Motor5.2.3 SensoriEncoderI motori LEGO sono dotati di encoder incrementali interni con precisionepari a 1 grado sessagesimale.Il segnale dell’encoder ` diviso, come mostrato in figura 5.7 su due cavi: e
  57. 57. 5.2. Hardware utilizzato 47 • il primo indica con un fronte di salita o di discesa l’aumento della posizione (sia in un verso che nell’altro) • il secondo permette di capire la direzione di rotazione Figura 5.7: Encoder incrementale dei motori LEGOGiroscopioPer determinare la velocit` angolare ` stato utilizzato il giroscopio Epson a eXV-8100CB [8].Questo sensore ` caratterizzato da: e • essere alimentato a 3V • rilevare al massimo ±100 gradi s mV • avere un fattore di scala di 2.5 gradi sec • avere due uscite: Vr ` un valore costante e pari a circa 1.345V; ` il voltaggio di riferi- e e mento rispetto a cui misurare Vo Vo ha una tensione pari a Vr ± Vvel angolare misurando dunque la tensione tra Vo e Vr si ottiene Vvel angolare , un valore che ` proporzionale alle velocit` angolare e aL’output del sensore pu` essere dunque sia positivo che negativo (a seconda odel senso di rotazione) e avr` un range piuttosto limitato rispetto all’Analog ato Digital Converter (ovvero l’analog in) di Arduino: questo infatti accetta
  58. 58. 48 Capitolo 5. Realizzazioni sperimentaliin ingresso tensioni tra 0 e Vcc [2] (nel nostro caso 5V) e le campiona conprecisione di 10 bit (ha una risoluzione di 4.88mV); inoltre l’accuratezzadell’ADC ` di ±2 LSB. e´E dunque necessario amplificare il segnale e “traslarlo” per ottimizzare almassimo l’utilizzo dell’ADC; a tal proposito si sfrutta un amplificatore dif-ferenziale con correzione di errore, il cui schema ` raffigurato nella 5.8. eAbbiamo: RF + R G R2 RF + R G R1 RF VOU T = VIN 2 + VREF − VIN (5.1) RG R 1 + R2 RG R 1 + R2 RGche nel caso in cui R2 = RF e R1 = RG diventa: R2 VOU T = (VIN 2 − VIN 1 ) + VREF (5.2) R1 Naturalmente si avr`: aVIN 1 a cui verr` agganciato Vr del giroscopio aVIN 2 a cui verr` agganciato Vo del giroscopio aVREF a cui verr` agganciata una tensione costante all’incirca a met` della a a tensione accettata dall’ADC In figura 5.9 ` rappresentata la realizzazione pratica del circuito di con- edizionamento per il giroscopio: si pu` notare come questa presenti un po- otenziometro per regolare la VREF dell’equazione 5.2.La realizzazione pratica sfrutta l’LM324, un amplificatore operazionaleparticolarmente facile da reperire, economico e dall’ottimo slew rate.5.2.4 Costo totale dell’hardwareIl costo totale dell’hardware ` dato da: e
  59. 59. 5.3. La libreria software arduino2lego.h 49 Figura 5.8: Amplificatore differenziale con correzione d’errore Arduino NG (revision C) 16 ¤ + Stabilizzatori di tensione 3¤ + Resistenze, scheda millefori, pila,. . . 10 ¤ + Integrati vari 4¤ + Due attuatori lego e ruote 30 ¤ + Giroscopio 30 ¤ = ————————– Costo totale 93 ¤5.3 La libreria software arduino2lego.hL’ interazione con i componenti del robot (motori, encoder, giroscopio. . . ) ` estata astratta e facilitata dalla creazione di una libreria C++, denominataarduino2lego.h.Con un solo comando ` stato reso possibile impartire una velocit` ai motori e aoppure leggere il valore di velocit` angolare in radianti o in gradi oppure aancora conoscere i metri percorsi dal robot.Ecco alcuni esempi di utilizzo:
  60. 60. 50 Capitolo 5. Realizzazioni sperimentali Figura 5.9: Circuito di condizionamento (fronte e retro)motor.setSpeed(N) imposta la velocit` di rotazione; N ` un numero com- a e preso tra -255 e 255.motor.setSpeedUntil(N, pos) in questo caso la velocit` indicata viene a mantenuta fino a che il robot non avr` percorso il numero di centimetri a specificato da posmotors.setSpeed(N) ` possibile lavorare anche su pi` motori contempora- e u neamente e utilizzare tutti i comandi disponibili sul motore singologyroscope.getAngSpeed() ritorna la velocit` angolare in gradi al secondo agyroscope.getRadSpeed() ritorna la velocit` angolare in radianti al se- a condotouchSensor.getValue() comunica con il sensore di contatto LEGO e re- stituisce 0 o 1 a seconda che al momento della lettura stia avvenendo un contattoQuesta libreria naturalmente rappresenta una buona base per l’interazionetra componentistica LEGO (e non) e Arduino; la sua natura open source ne
  61. 61. 5.4. Il comportamento sperimentale 51permette l’evoluzione anche al di fuori della mia direzione.Il progetto ` stato pubblicato su Sourceforge e l’interfaccia ` consultabile e ein appendice A.3. Figura 5.10: Fronte Figura 5.11: Retro5.4 Il comportamento sperimentale5.4.1 Implementazione di ricostruttore e controlloreDescrizioneLo scopo dell’esperimento ` verificare la realizzabilit` del ricostruttore e del e acontrollore lineare (mostrati nel capitolo 4.3.2) che, all’interno di Simulink,funzionano egregiamente.A tal fine si ` implementato un programma che: e
  62. 62. 52 Capitolo 5. Realizzazioni sperimentali Figura 5.12: Dall’alto • crea gli oggetti C++ necessari al funzionamento del robot (sfruttando la libreria arduino2lego.h) • calibra il giroscopio • attende la pressione di un pulsante posizionato sul corpo del robot; una pressione corta fa partire il programma normalmente mentre una pressione prolungata attiva la modalit` di debug a • la modalit` normale attiva un ciclo che: a – viene eseguito una volta ogni n millisecondi dove n ` il tempo di e campionamento prescelto – implementa l’equazione 4.12, per comodit` riporta di seguito a x[k + 1] = (Ad − Bd Kd )ˆ[k] − Ld (y[k] − y [k]) ˆ x ˆ – il vettore x ha condizioni iniziali nulle ˆ
  63. 63. 5.4. Il comportamento sperimentale 53 – il vettore y[k] rappresenta la misura data dai due sensori dispo- nibili al momento k – applica ai motori una forza pari a −Kd x[k] ˆ • la modalt` debug permette, entro limiti abbastanza stringenti (a tal a proposito si veda il capitolo 5.4.3), di registrare e analizzare off-line gli stati predetti, i valori dei sensori e la forza impressa ai motoriComportamento riscontratoTempo di campionamento In corso d’opera il valore del tempo di cam-pionamento ` stato alzato leggermente rispetto a quello ipotizzato nel capi- etolo 4.3.1 al fine di evitare alcuni casi in cui il controllore sforava il tempoprevisto. Tcampionamento = 4ms 250 fcampionamento = sec = 250HzRobustezza al rumore Il valore riportato dal giroscopio si ` rivelato ecritico per la stabilit` del ricostruttore: per questo motivo ` stato creato a eun esperimento Simulink per dimostrare la resistenza al rumore; in questo` stata aggiunta alla rilevazione sensoriale un segnale costante con entit`e avariabile (fino a 1 rad ). sI risultati sono stati pi` che soddisfacenti: il sistema, in simulazione, non ha umai raggiunto l’instabilit`. aStabilit` del ricostruttore a In simulazione il ricostruttore si ` mostrato enon solo stabile ma anche robusto al rumore.L’implementazione pratica invece non riesce purtroppo nell’intento; gli stati

×