SlideShare a Scribd company logo
1 of 87
Download to read offline
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 Milano




Relatore: Prof. Sergio Bittanti
Correlatore: Prof. Fabio Previdi



                                            Tesi di Laurea di:
                           Marco Triverio, matricola 676863


                Anno Accademico 2007-2008
Questa opera ` protetta da licenza Creative Commons
                  e
Attribuzione - Non commerciale - Condividi allo stesso modo 2.5
                          (ITALIA)




                  Per maggiori informazioni:
http://creativecommons.org/licenses/by-nc-sa/2.5/it/legalcode
Stay hungry. Stay foolish.
Sommario

Il punto di partenza di questo Elaborato ` la modellizzazione di un pendolo
                                         e
inverso al fine di studiarne la problematica di controllo.
Lo scopo del lavoro ` la ricerca di un controllore lineare, che sappia man-
                    e
tenere l’equilibrio del sistema dati ragionevoli condizioni iniziali e disturbi
esterni, e di un ricostruttore dello stato, che permetta di ottenere il valore
delle 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-
                                                                  a
trollore ` stata verificata sviluppando un prototipo presso il Laboratorio di
         e
Automatica del Politecnico di Milano: tale implementazione ha sfruttato at-
tuatori e componentistica hardware a costo relativamente basso e presenta
buona riutilizzabilit` grazie alla libreria software sviluppata.
                     a




                                       I
Ringraziamenti

Vorrei 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 direttamente
con 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,
            e
magari perch´ mi hanno fatto divertire dentro e fuori l’universit` o magari
            e                                                    a
perch´ mi sopportano e supportano in ogni momento.
     e
Non posso poi non citare le vere fonti di ispirazione del mio lavoro, Maccio
e Rosario.


Un bacio infine alla reginetta dei pancake.




                                     III
Indice

Sommario                                                                          I

Ringraziamenti                                                                  III

1 Introduzione                                                                   1
  1.1   Inquadramento generale e breve descrizione . . . . . . . . . .           1
  1.2   Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . .     2

2 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
2.4.2   Confronto tra sistema lineare e sistema non lineare . .         14

3 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 . . . . . . . . . . . . . . . . .       24

4 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 . . . . . . . . . . . . . . .       37

5 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
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                                                  57

6 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 . . . . . . . . . . . . . . . . . . . .   61

Bibliografia                                                                    63

A 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
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
4.3   Esperimento Simulink: Sistema reale lineare, controllore con-
      tinuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   35
4.4   Grafico angolo predetto e reale . . . . . . . . . . . . . . . . .        35
4.5   I due errori di stato   . . . . . . . . . . . . . . . . . . . . . . .   35
4.6   Esperimento Simulink: Sistema reale lineare, controllore di-
      screto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    38
4.7   Angolo predetto e reale con controllore discreto . . . . . . . .        39
4.8   Prestazioni a confronto con tempi di campionamento tra 1 e
      44 ms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     40

5.1   Segway attualmente in commercio . . . . . . . . . . . . . . .           41
5.2   Arduino “Diecimila” . . . . . . . . . . . . . . . . . . . . . . .       43
5.3   Grafico rpm-torsione . . . . . . . . . . . . . . . . . . . . . . .       45
5.4   Grafico corrente-torsione . . . . . . . . . . . . . . . . . . . . .      45
5.5   LEGOTM NXT Interactive Servo Motor . . . . . . . . . . . .              46
5.6   Giroscopio . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    46
5.7   Encoder incrementale dei motori LEGO . . . . . . . . . . . .            47
5.8   Amplificatore differenziale con correzione d’errore . . . . . . .         49
5.9   Circuito di condizionamento (fronte e retro) . . . . . . . . . .        50
5.10 Fronte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     51
5.11 Retro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      51
5.12 Dall’alto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    52
5.13 Funzionamento del controllore senza ricostruttore . . . . . . .          55
Capitolo 1


Introduzione


1.1     Inquadramento generale e breve descrizione

Il 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 infine
realizzato attingendo a capacit` informatiche ed elettroniche. In particolare
                               a
il punto di partenza di questo Elaborato ` la modellizzazione di un pendolo
                                         e
inverso al fine di studiarne la problematica di controllo. Lo scopo del lavoro
` la ricerca di un controllore lineare, che sappia mantenere l’equilibrio del
e
sistema dati ragionevoli condizioni iniziali e disturbi esterni, e di un rico-
struttore dello stato, che permetta di ottenere il valore delle variabili di stato
di cui non si possiede una misura diretta.
Tale ricerca ` stata convalidata da considerazioni teoriche, elaborazioni tra-
             e
mite Matlab e simulazioni tramite Simulink; i risultati ottenuti sono stati
applicati prima in simulazione al sistema non lineare e, in seguito ad alcune
tarature, 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
2                                                  Capitolo 1. Introduzione


future il software di controllo ` stato basato su una libreria open source
                                e
appositamente scritta.


1.2     Struttura della tesi

La 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
Capitolo 2


Modellizzazione del sistema


Il primo passo da compiere verso la costruzione del robot ` dato dalla model-
                                                          e
lizzazione del sistema fisico: questa ci fornir` quattro equazioni di stato che
                                              a
saranno il fondamento necessario per la sintesi del controllore e le simulazioni
tramite Simulink.



2.1     Stato dell’arte

Un pendolo semplice ` costituito da un filo inestensibile a cui ` appeso un
                    e                                          e
punto materiale di massa che pu` oscillare attorno a un punto fisso detto
                               o
polo: la componente della forza peso lungo il filo controbilancia la tensione
del filo stesso, mentre la componente della forza peso perpendicolare al filo
funge 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         o
le 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’asta
vincolata ad un carrello libero di traslare lungo una guida.
La modellizzazione del pendolo inverso ` sicuramente un problema ben noto
                                       e

                                       3
4                               Capitolo 2. Modellizzazione del sistema


e sono molte le fonti che riportano studi da cui derivano modelli con diversi
livelli di approssimazione; ci` che ` stato fatto ` svolgere lo studio indi-
                              o     e             e
pendentemente, validare quanto fatto attingendo da diverse fonti e scegliere
quali dettagli trascurare riferendosi a quale sarebbe stata la realizzazione
pratica.
La schematizzazione utilizzata ` quella mostrata in figura 2.1. Il testo di
                               e




                      Figura 2.1: Schematizzazione del robot


riferimento per la modellizzazione ` stato il sesto capitolo di “Lectures on
                                   e
Dynamic Systems and Control ” [7].


2.2        Modellistica del pendolo inverso

Per determinare il modello fisico ` necessario isolare le forze che agiscono sul
                                 e
pendolo inverso; per chiarezza ` utile scomporre il robot in due parti, alta e
                               e
bassa.


2.2.1      Carrello

La parte inferiore del pendolo inverso ` rappresentata da ruote e piano
                                       e
di appoggio per i componenti. Le forze che agiscono verticalmente ven-
2.2. Modellistica del pendolo inverso                                         5




                    Figura 2.2: Bilancio forze parte inferiore


gono compensate dalla reazione del terreno; le forze che invece agiscono
orizzontalmente sono date dall’equazione:


                            M x = Fin − N − bx
                              ¨              ˙                          (2.1)


Come rappresentato in figura 2.2, dove:

Fin ` la forza motrice
    e

N e P sono le forze di interazione con la parte superiore

M ` la massa della parte inferiore
  e

g ` l’accelerazione gravitazionale
  e

bx ` l’attrito
 ˙ e


2.2.2   Parte mobile

La parte superiore ` rappresentata dal corpo del robot (che conterr` la
                   e                                               a
scheda 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)
6                              Capitolo 2. Modellizzazione del sistema




                    Figura 2.3: Bilancio forze parte superiore


Dove:

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
                                                          e
l’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
2.2. Modellistica del pendolo inverso                                       7


Nota di approfondimento: motivazione di una semplificazione Svi-
luppare i calcoli a questo punto vorrebbe dire riscrivere l’equazione 2.4
come:


                   ¨                  ˙            ¨
                 I θ = l sin θ(mg − mlθ2 cos θ − mlθ sin θ) +            (2.5)
                                       ˙            ¨
                      − l cos θ(m¨ − mlθ2 sin θ − mlθ cos θ)
                                 x


e 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                  u
ta necessariamente ad una modellizzazione migliore; infatti, considerando
l’implementazione che verr` fatta si possono stimare alcuni parametri:
                          a


M la parte inferiore pesa all’incirca 0.285kg


m la parte superiore pesa all’incirca 0.09kg


l l’altezza della parte superiore ` di 18 cm dunque l = 9cm
                                  e


I 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`
                                                                           o
dunque proseguire dalla equazione:


                               ¨
                           ml2 θ = mgl sin θ − ml¨ cos θ
                                                 x                       (2.7)
8                                    Capitolo 2. Modellizzazione del sistema


2.2.3        Equazioni del modello

L’equazione 2.7 che pu` anche essere scritta come:
                      o


                                 ¨ 1
                                 θ = (g sin θ − x cos θ)
                                                ¨                                   (2.8)
                                    l

Unendo 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
                   e
all’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 θ.
2.3. Propriet` del sistema
             a                                                               9


2.3     Propriet` del sistema
                a


2.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
                                                                         
                                                                         0
e Fin = u = 0.




2.3.2    Linearizzazione


Se 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               o
sistema 2.12 ottenendo:
                       
                       x
                       ˙
                       
                       
                             =                 x
                                               ˙
                                              mg
                                   b                     Fin
                       x¨   =    −M x −
                                     ˙         M θ   +
                       
                                                         M
                                                                        (2.13)
                       ˙
                       θ    =                 ˙
                                               θ
                       
                       
                       
                       
                         ¨        b         (M +m)g         Fin
                       θ    =   lM x
                                    ˙   +     lM    θ   −   lM
10                             Capitolo 2. Modellizzazione del sistema




          Figura 2.4: Rappresentazione dell’equazione in forma di stato




Scrivendo 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
                                                        − Ml

Ci troviamo di fronte ad un sistema rappresentabile come in figura 2.4, in
cui:                                                    
                           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
2.3. Propriet` del sistema
             a                                                                 11


C rappresenta, come verr` spiegato nel capitolo 2.3.5, le variabili di stato di
                        a
cui ` disponibile la misura.
    e




2.3.3    Stabilit`
                 a


Il 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
                                                                s

Trascurando 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 −
                                                Ml

Da 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)
12                              Capitolo 2. Modellizzazione del sistema


2.3.4    Raggiungibilit`
                       a

Definizione informale

Un sistema ` raggiungibile se in un tempo arbitrario non infinito, esso pu` es-
           e                                                             o
sere condotto da un qualunque punto dello spazio degli stati ad un qualunque
altro punto.


Analisi di raggiungibilit`
                         a

Analizziamo 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    0

Il rango ` massimo e dunque il sistema ` completamente raggiungibile.
         e                             e


Un’importante considerazione Un sistema completamente raggiungi-
bile, quando retroazionato, gode di una particolare propriet`: i poli ad anello
                                                            a
chiuso possono essere scelti a piacere e questo faciliter` di molto la sintesi
                                                         a
del controllore.


2.3.5    Osservabilit`
                     a

Definizione informale

Con il termine osservabilit` si indica la possibilit` di poter risalire allo stato
                           a                        a
iniziale conoscendo l’evoluzione dell’ingresso e della corrispondente uscita.
Se un sistema ` completamente osservabile esiste, dato un ingresso, una
              e
corrispondenza biunivoca fra stati iniziali e uscite e, cio`, fra l’andamento
                                                           e
dell’uscita del sistema e la traiettoria nello spazio degli stati.
2.3. Propriet` del sistema
             a                                                               13


Analisi



Per analizzare l’osservabilit` ` necessario introdurre la trasformazione di
                             a e
uscita y = y(t); essa dipende dallo stato attuale e nel nostro caso descrive
la 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
                                                         a
essere 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             0

Anche in questo caso il rango ` massimo per cui il sistema ` osservabile.
                              e                            e
14                              Capitolo 2. Modellizzazione del sistema


2.4      Esperimenti in Matlab

2.4.1     Una prima analisi

Considerando le seguenti stime dei parametri:

M la parte inferiore pesa all’incirca 0.285kg

m la parte superiore pesa all’incirca 0.09kg

l l’altezza della parte superiore ` di 18 cm dunque l = 9cm
                                  e

Nella prima parte dello script Matlab analisi modello robot.m, disponi-
bile in Appendice A.1, ` stato confermato quanto fin qui dimostrato teori-
                       e
camente:

     • 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 lineare

Per 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 toolbox
di Matlab per creare simulazioni in maniera grafica: a tal proposito ` stata
                                                                    e
scritta una S-function di primo livello (riportata in Appendice A.2).
Si pu` dunque impostare l’esperimento Simulink come mostrato in figura 2.5.
     o
Gli esperimenti svolti hanno coperto le seguenti casistiche:
2.4. Esperimenti in Matlab                                                           15




Figura 2.5: Esperimento Simulink: confronto tra sistema non lineare e il sistema
linearizzato corrispondente


condizioni 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’angolo
posta a 0.1 radianti                         posta a 0.5 radianti
16                              Capitolo 2. Modellizzazione del sistema


rumore 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 ingresso
ingresso



     Si pu` dunque concludere che il sistema linearizzato approssimi bene il
          o
sistema non lineare soltanto nei primi istanti di funzionamento, prima della
divergenza; inoltre quando si impongono delle condizioni iniziali non nulle,
si riscontra un comportamento molto simile quando queste sono prossime
al punto di equilibrio; man mano che ci si allontana le differenze diventano
naturalmente molto marcate.
Capitolo 3


Sintesi del controllore


La modellizzazione del sistema permette di cominciare la creazione di un
controllore che dovr` garantire l’equilibrio del robot rispettando i limiti fisi-
                    a
ci degli attuatori e ottimizzando il pi` possibile l’energia dell’azione di con-
                                       u
trollo. Il testo di riferimento per questo capitolo ` “Fondamenti di controlli
                                                    e
automatici ” [5], i cui concetti sono stati approfonditi ricorrendo a [11].




3.1     Caratteristiche del controllore

3.1.1    Scelta di un controllore lineare

Una volta modellizzato il sistema fisico ` possibile scegliere un controllore e
                                        e
chiudere l’anello, come mostrato in figura 3.1.
Il controllore che verr` utilizzato ` di tipo proporzionale e pu` essere dunque
                       a            e                           o
rappresentato come un vettore K di quattro guadagni; l’azione di controllo
` dunque proporzionale alle quattro variabili di stato (posizione, velocit`,
e                                                                         a
angolo e velocit` angolare).
                a


            K = gposizione gvelocita    gangolo gvelocita   angolare      (3.1)
18                                          Capitolo 3. Sintesi del controllore




                               Figura 3.1: Sistema


Il sistema in anello chiuso, come mostrato in [11], pu` essere descritto da
                                                      o
un’equazione di stato del tipo (le matrici A, B e C sono state definite nei
capitoli 2.3.2 e 2.3.5):


                           Aclosed   loop    = A − BK

                           Bclosed   loop    = B                          (3.2)

                           Cclosed   loop    = C


Il sistema in anello chiuso pu` essere dunque rappresentato in due maniere
                              o
del tutto equivalenti mostrate in figura 3.2.


3.1.2    Definizioni delle condizioni

Essendo il sistema che rappresenta il pendolo inverso raggiungibile ` possi-
                                                                    e
bile chiudere l’anello e ricercare un controllore lineare adatto imponendo i
poli ad anello chiuso.
In linea teorica ` possibile imporre qualsiasi valore, ma esistono delle condi-
                 e
zioni che limitano tale libert`: in primo luogo ci si aspetta che il controllore
                              a
3.1. Caratteristiche del controllore                                           19




       Figura 3.2: Rappresentazioni equivalenti del sistema in anello chiuso


stabilizzi il sistema in un tempo opportuno; in secondo luogo gli attuatori
che andremo a utilizzare hanno dei limiti (di coppia e di potenza) che non
vanno 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)
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 poli

Le 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 anello
e
chiuso dovr` essere disposto al suo interno.
           a
3.1. Caratteristiche del controllore                                          21




                      Figura 3.3: Area sulla mappa dei poli


3.1.4    Criteri di scelta

L’area delineata al capitoletto precedente non rappresenta una zona da cui
scegliere indifferentemente il polo dominante; esistono infatti alcuni crite-
ri per prediligerne uno piuttosto che un altro. Il primo ` la scelta di un
                                                         e
tempo di risposta e di uno smorzamento che garantiscano un’elongazione
dell’angolo di piega del pendolo inferiore ai 20◦ ; il secondo invece vigila sul-
la potenza impressa dall’azione di controllo, verificandone la compatibililit`
                                                                            a
con gli attuatori. A tale proposito verranno valutati due fattori:

                                                               ∞      2
   • l’integrale del quadrato dell’azione di controllo (      0 |u(t)| dt):   pi`
                                                                                u
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
                                                    a


3.2      Esperimenti

3.2.1     Esperimenti in Matlab

Come delineato nel capitololetto 3.1.2 i poli in anello chiuso dovranno essere
almeno quattro e la coppia di poli dominanti (eventualmente complessa e
coniugata) dovr` rispettare precise condizioni.
               a
Si possono naturalmente ipotizzare diversi vettori dei poli compatibili con
tali 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
       dominanti

Lo script Matlab analisi modello robot.m permette di creare la matrice
degli n tentativi (di dimensione n x 4, essendo quattro i poli da fissare) e
per 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:
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.
24                                      Capitolo 3. Sintesi del controllore


Alcuni esempi numerici           Di seguito vengono riportati alcuni dei valori
numerici 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 buon
compromesso tra tempistica di risposta, angolo di oscillazione ed energia
dell’azione di controllo.


3.2.2      Esperimenti in Simulink

Una volta selezionata la matrice dei guadagni Kscelta che meglio controlla
il sistema in esame ` necessario preparare Simulink per gli esperimenti suc-
                    e
cessivi.
Simulink sicuramente brilla per la facilit` con cui ` possibile impostare le
                                          a         e
simulazioni ma purtroppo la gestione dei risultati non ` potente quanto Ma-
                                                       e
tlab: per questo motivo le analisi approfondite richiederanno di tornare in
Matlab.
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]
26                                    Capitolo 3. Sintesi del controllore


In Simulink sono stati dunque validati i risultati ottenuti nei precedenti pa-
ragrafi ripetendo alcuni degli esperimenti: gli esiti sono risultati compatibili
e si ` potuto dunque procedere con la realizzazione del ricostruttore dello
     e
stato.
3.2. Esperimenti                                                                   27




Figura 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
28   Capitolo 3. Sintesi del controllore
Capitolo 4


Ricostruttore dello stato


In questo capitolo si continua il lavoro a partire dal controllore lineare e si
sintetizza un ricostruttore dello stato che permetta di far convergere lo stato
calcolato dal robot con lo stato reale del sistema.



4.1     Premessa teorica

4.1.1    La necessit` di un ricostruttore dello stato
                    a

Il sistema che andremo a realizzare ` caratterizzato da:
                                    e


sistema 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
                          e


modello 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:
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 nulle

Come abbiamo visto nel capitolo precedente il controllore realizzato ` di tipo
                                                                     e
proporzionale 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 sul
sistema rappresentato dal pendolo inverso una forza che ` combinazione li-
                                                        e
neare di queste.
Ma quali variabili di stato sono realmente misurabili? E se le condizioni
iniziali non fossero esattamente nulle?




4.1.2   I sensori

Le 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
                                                       a

Il controllore dunque ha la necessit` di calcolare le due misure mancanti:
                                    a
velocit` longitudinale e angolo di piega.
       a
Per ottenerle si pu` seguire un approccio puramente matematico derivan-
                   o
do la posizione e integrando la velocit` angolare: derivazione e integrazio-
                                       a
ne soffrono per` di problemi ben noti ed ` dunque preferibile procedere
              o                         e
ricostruendo asintoticamente lo stato (si veda anche [11]).
4.1. Premessa teorica                                                         31


4.1.3    Il ricostruttore dello stato

Il sistema reale pu` essere rappresentato dalle equazioni:
                   o
                         
                          x = Ax + BFin
                           ˙
                                                                           (4.2)
                          y = Cx + DF
                           ˙           in


Nel caso in esame D = 0.
Dal momento che questo sistema evolve senza la possibilit` di misurare le
                                                         a
condizioni 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 del
sistema reale qualunque siano la condizioni iniziali. In altre parole esiste un
sistema che dati l’ingresso Fin e le uscite y disponibili del sistema reale, avr`
                                                                                a
uno 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 ricostruttore


La 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
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      −k24


Si ha dunque un sistema come quello rappresentato in figura 4.2.
4.1. Premessa teorica                                                         33




                  Figura 4.2: Schema del ricostruttore dello stato



4.1.4    Valutazione della matrice L


Dalle 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
    e
con ingresso nullo.
34                                  Capitolo 4. Ricostruttore dello stato


Essendo la 4.7 un problema formalmente identico al problema posto dal-
la 3.2 possiamo utilizzare le tecniche spiegate nel capitolo 3.2 per trovare
la L che impone un certo “tempo di assestamento”, ovvero il tempo che il
ricostruttore impiegher` per allineare lo stato reale con quello in memoria.
                       a
Nello script Matlab (il cui codice ` disponibile in Appendice A.1) dunque
                                   e
sfrutteremo 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
                                                                u
tempo di risposta Tassestamento imposto al capitolo 3.1.2, si prenderanno i
poli ad anello chiuso scelti in fondo al capitolo 3.2 e li si moltiplicher` per
                                                                          a
10.
In questo modo, essendo
                                           5
                                   T =                                      (4.8)
                                         |polo|

il tempo di annullamento dell’errore di stato sar` di un ordine di grandezza
                                                 a
inferiore al tempo di assestamento del robot.



4.2     Alcuni esperimenti

Una volta calcolata la matrice L si pu` procedere con alcuni esperimenti che
                                      o
ne supportino la bont`.
                     a


4.2.1    Sistema reale lineare, controllore continuo

In questo primo esperimento si tratta il sistema reale come se fosse continuo
e 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
                                                
                                               0
stema replica sono invece nulle.
4.2. Alcuni esperimenti                                                             35


Questo ` l’esperimento pi` semplice che si possa fare e permette di iniziare
       e                 u
a 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 continuo


Confrontando le figure 4.4 e 4.5 si pu` notare come l’errore converga effet-
                                     o
tivamente molto pi` velocemente rispetto al tempo di assestamento.
                  u




Figura 4.4: Grafico angolo predetto e reale      Figura 4.5: I due errori di stato



4.2.2    Sistema reale non lineare, controllore continuo

In 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
36                                   Capitolo 4. Ricostruttore dello stato


in 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 a
quelli ottenuti nel capitoletto precedente.




4.3        Discretizzazione

4.3.1      Dal tempo continuo al tempo discreto

In questo capitolo si affronta la discretizzazione del controllore; questa si
basa sulla relazione che permette di passare da poli a tempo continuo a poli
a 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-
                      a
ga168, come spiegato nel capitolo 5.2.1. Dunque, considerando che tale
microcontrollore ` capace di campionare fino a 15kSPS (kilo Sample Per
                 e
Second ) [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
4.3. Discretizzazione                                                      37


superiore non lo `: ` necessario dunque capire quale valore ` meglio non
                 e e                                        e
superare al fine di non introdurre oscillazioni e instabilit`. A tal fine sono
                                                           a
stati 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
                        e
tenendo conto che il sistema ` ora discretizzato ad una certa Tcampionamento ,
                             e
ottenendo Ad , Bd , Cd e Dd (quest’ultima ` nulla).
                                          e
Si passa dunque da un sistema del tipo descritto dall’equazione 4.2 a un
sistema:
                  
                   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
           e
utilizzare il comando Matlab place (che lavora anche con sistemi a tempo
discreto) per ricavare la matrice dei guadagni Kd .
In seguito bisogna ricercare nuovamente la matrice Ldisc del ricostruttore
dello stato: le modalit` sono identiche a quelle mostrate nel capitolo 4.1.4.
                       a
All’interno del microcontrollore si dovr` dunque implementare la versione
                                        a
discreta 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 Matlab

Sistema reale lineare, controllore discreto

Per adattare i precedenti esperimenti Simulink al tempo discreto bisogna:

   • sostituire ad ogni componente il corrispondente discreto
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 discreto


tempi di risposta sono invariati ma tutti i grafici sono ora caratterizzati da
una “seghettatura”.
4.3. Discretizzazione                                                        39




            Figura 4.7: Angolo predetto e reale con controllore discreto


Sistema reale non lineare, controllore discreto

In questo esperimento entra nuovamente in gioco il sistema non lineare, che
meglio 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
             e
per` due differenze da segnale: in primo luogo la condizione iniziale mas-
   o
sima per cui il controllore riesce a garantire la stabilit` del sistema reale `
                                                          a                   e
ridotta a 0.4 radianti; in secondo luogo si pu` notare come le prestazioni del
                                              o
controllore 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                  u
per` al valore “limite” di 44ms pi` il sistema diventa oscillatorio e, oltre
   o                              u
tale valore, instabile.
Quando detto ` bene riassunto dalla figura 4.8.
             e
40                                    Capitolo 4. Ricostruttore dello stato




     Figura 4.8: Prestazioni a confronto con tempi di campionamento tra 1 e 44 ms
Capitolo 5


Realizzazioni sperimentali


Lo studio teorico fin qui fatto viene ora validato con una realizzazione pra-
tica: l’intento ` quello di creare un robot che, essendo schematizzabile co-
                e
me un pendolo inverso, possa essere mantenuto in equilibrio dal controllore
studiato.



5.1     Introduzione

Esistono diverse realizzazioni sperimentali di un
pendolo inverso (si veda ad esempio [12]): tutte
utilizzano una componentistica piuttosto costosa
e propongono esperimenti che lasciano spazio a di-
rezioni future di ricerca relative al solo ambito del
controllo.
La realizzazione seguente si propone invece di
creare un robot ispirato al Segwaytm (mostrato
in figura 5.1); questo non ` dunque vincolato ad
                          e
                                                        Figura 5.1: Segway attual-
una rotaia come accade nella maggior parte degli mente in commercio
esperimenti di laboratorio ma ` autonomo e potr`
                              e                a
42                                Capitolo 5. Realizzazioni sperimentali


guadagnare, nei lavori futuri, la capacit` di muoversi nello spazio.
                                         a
Un’ulteriore differenza ` la componentistica: i motori, i sensori e il micro-
                       e
controllore sono tra i pi` economici disponibili al momento; ciononostante
                         u
si ritiene che essi, entro certi limiti, possano essere adatti allo scopo.


5.2       Hardware utilizzato

5.2.1     Arduino

Il “cuore” della realizzazione sperimentale ` dato dal microcontrollore, il
                                            e
componente al cui interno verranno implementati il controllore lineare e il
ricostruttore dello stato.
Il microcontrollore scelto ` un Atmel AVR ATmega168: questo ` sta-
                           e                                e
to preferito ai PIC prodotti da Microchip non tanto per le caratteristiche
tecniche ma perch` ` parte di una piattaforma di sviluppo chiamata Ardui-
                 ee
no [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
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:
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 MHz


5.2.2     Attuatori e ruote

Caratteristiche

Gli attuatori del moto (figura 5.5) e le ruote utilizzate provengono dal kit
LEGOtm 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)
5.2. Hardware utilizzato                                                 45




                        Figura 5.3: Grafico rpm-torsione




                      Figura 5.4: Grafico corrente-torsione


Connettori

Per comandare i motori ` stato necessario fare il reverse engineering dei
                       e
connettori e del significato dei singoli segnali al loro interno.
I motori LEGO sono infatti alimentati con un cavo a sei polarit` con connet-
                                                               a
tore RJ-12 non standard essendo il gancio di sicurezza spostato di qualche
millimetro.
I segnali all’interno del cavo hanno il seguente significato:
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 H

Siccome Arduino non pu` fornire la corrente necessaria per comandare i
                      o
motori ` stato necessario ricorrere ad un integrato, l’L293D, in grado di
       e
fornire la corrente necessaria e agire anche come Ponte H.
Tramite i quattro ingressi dell’integrato ` dunque possibile comandare due
                                          e
motori bidirezionalmente.




Figura 5.5:    LEGOTM NXT Interactive
                                               Figura 5.6: Giroscopio
Servo Motor



5.2.3     Sensori

Encoder

I motori LEGO sono dotati di encoder incrementali interni con precisione
pari a 1 grado sessagesimale.
Il segnale dell’encoder ` diviso, come mostrato in figura 5.7 su due cavi:
                        e
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 LEGO



Giroscopio

Per determinare la velocit` angolare ` stato utilizzato il giroscopio Epson
                          a          e
XV-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                           a

L’output del sensore pu` essere dunque sia positivo che negativo (a seconda
                       o
del senso di rotazione) e avr` un range piuttosto limitato rispetto all’Analog
                             a
to Digital Converter (ovvero l’analog in) di Arduino: questo infatti accetta
48                                Capitolo 5. Realizzazioni sperimentali


in ingresso tensioni tra 0 e Vcc [2] (nel nostro caso 5V) e le campiona con
precisione di 10 bit (ha una risoluzione di 4.88mV); inoltre l’accuratezza
dell’ADC ` di ±2 LSB.
         e
´
E dunque necessario amplificare il segnale e “traslarlo” per ottimizzare al
massimo l’utilizzo dell’ADC; a tal proposito si sfrutta un amplificatore dif-
ferenziale con correzione di errore, il cui schema ` raffigurato nella 5.8.
                                                   e
Abbiamo:

                 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       RG

che nel caso in cui R2 = RF e R1 = RG diventa:

                                                 R2
                      VOU T = (VIN 2 − VIN 1 )      + VREF                (5.2)
                                                 R1

     Naturalmente si avr`:
                        a


VIN 1 a cui verr` agganciato Vr del giroscopio
                a


VIN 2 a cui verr` agganciato Vo del giroscopio
                a


VREF 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-
                  e
dizionamento per il giroscopio: si pu` notare come questa presenti un po-
                                     o
tenziometro per regolare la VREF dell’equazione 5.2.
La realizzazione pratica sfrutta l’LM324, un amplificatore operazionale
particolarmente facile da reperire, economico e dall’ottimo slew rate.


5.2.4     Costo totale dell’hardware

Il costo totale dell’hardware ` dato da:
                              e
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.h

L’ interazione con i componenti del robot (motori, encoder, giroscopio. . . ) `
                                                                              e
stata astratta e facilitata dalla creazione di una libreria C++, denominata
arduino2lego.h.
Con un solo comando ` stato reso possibile impartire una velocit` ai motori
                    e                                           a
oppure leggere il valore di velocit` angolare in radianti o in gradi oppure
                                   a
ancora conoscere i metri percorsi dal robot.
Ecco alcuni esempi di utilizzo:
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 pos

motors.setSpeed(N) ` possibile lavorare anche su pi` motori contempora-
                   e                               u
     neamente e utilizzare tutti i comandi disponibili sul motore singolo

gyroscope.getAngSpeed() ritorna la velocit` angolare in gradi al secondo
                                          a

gyroscope.getRadSpeed() ritorna la velocit` angolare in radianti al se-
                                          a
     condo

touchSensor.getValue() comunica con il sensore di contatto LEGO e re-
     stituisce 0 o 1 a seconda che al momento della lettura stia avvenendo
     un contatto

Questa libreria naturalmente rappresenta una buona base per l’interazione
tra componentistica LEGO (e non) e Arduino; la sua natura open source ne
5.4. Il comportamento sperimentale                                          51


permette l’evoluzione anche al di fuori della mia direzione.
Il progetto ` stato pubblicato su Sourceforge e l’interfaccia ` consultabile
            e                                                 e
in appendice A.3.




          Figura 5.10: Fronte                      Figura 5.11: Retro




5.4     Il comportamento sperimentale

5.4.1    Implementazione di ricostruttore e controllore

Descrizione

Lo scopo dell’esperimento ` verificare la realizzabilit` del ricostruttore e del
                          e                           a
controllore lineare (mostrati nel capitolo 4.3.2) che, all’interno di Simulink,
funzionano egregiamente.
A tal fine si ` implementato un programma che:
             e
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
                       ˆ
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 motori


Comportamento riscontrato

Tempo di campionamento            In corso d’opera il valore del tempo di cam-
pionamento ` stato alzato leggermente rispetto a quello ipotizzato nel capi-
           e
tolo 4.3.1 al fine di evitare alcuni casi in cui il controllore sforava il tempo
previsto.


                            Tcampionamento = 4ms
                                             250
                            fcampionamento =
                                             sec
                                           = 250Hz


Robustezza al rumore Il valore riportato dal giroscopio si ` rivelato
                                                           e
critico per la stabilit` del ricostruttore: per questo motivo ` stato creato
                       a                                      e
un esperimento Simulink per dimostrare la resistenza al rumore; in questo
` stata aggiunta alla rilevazione sensoriale un segnale costante con entit`
e                                                                         a
variabile (fino a 1 rad ).
                    s

I risultati sono stati pi` che soddisfacenti: il sistema, in simulazione, non ha
                         u
mai raggiunto l’instabilit`.
                          a


Stabilit` del ricostruttore
        a                         In simulazione il ricostruttore si ` mostrato
                                                                     e
non solo stabile ma anche robusto al rumore.
L’implementazione pratica invece non riesce purtroppo nell’intento; gli stati
54                                Capitolo 5. Realizzazioni sperimentali


divergono in pochi millisecondi e l’azione di controllo non ` dunque efficace.
                                                            e
Questo accade per diversi motivi:


     • il sensore ` risultato essere piuttosto rumoroso
                  e


     • l’ADC introduce un errore dovuto all’arrotondamento


     • l’ADC ha una accuratezza di ±2 LSB che aggiunge incertezza alla
       misura


Tutti questi fattori contribuiscono a rendere instabile il ricostruttore e obbli-
gano a seguire una strada differente: implementare il solo controllore lineare
e calcolare le variabili di stato non fornite dai sensori attraverso derivazione
e integrazione.



5.4.2      Implementazione del solo controllore

Descrizione

In seguito ai problemi riscontrati con il ricostruttore si ` deciso di seguire
                                                           e
una strada diversa: rinunciare al ricostruttore dello stato e procedere con
un’implementazione pi` semplice.
                     u
Per risalire dalle due misure alle quattro variabili di stato ` dunque neces-
                                                              e
sario implementare nel software un derivatore e un integratore per ricavare
dalla posizione e dalla velocit` angolare rispettivamente i valori di velocit`
                               a                                             a
e angolo di piega.
Per verificare la bont` di questa idea anche nel caso in cui le condizioni ini-
                     a
ziali fossero differenti ` stato creato un esperimento Simulink, mostrato in
                        e
figura 5.13: il robot viene stabilizzato per condizioni iniziali piuttosto lon-
tane dalla posizione perfettamente verticale e anche in presenza di disturbi
esterni.
5.4. Il comportamento sperimentale                                         55




          Figura 5.13: Funzionamento del controllore senza ricostruttore


Comportamento riscontrato

Il comportamento sperimentale ` risultato soddisfacente: il robot ha dimo-
                              e
strato di poter rimanere in equilibrio.
Gli stessi motivi che causano l’instabilit` del ricostruttore sono per` alla
                                          a                           o
base delle leggere oscillazioni che si riscontrano in particolare dopo alcuni
istanti di funzionamento.
In questo caso ci si rende particolarmente conto della criticit` dell’angolo;
                                                               a
questo viene ricavato per integrazione e quindi fattori come:

   • il rumore sul sensore

   • l’errore di arrotondamento dell’ADC

   • l’accuratezza dell’ADC

   • gli errori dovuti agli arrotondamenti fatti dal microcontrollore
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

More Related Content

What's hot

Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D
Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D
Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D Andrea Bidinost
 
MARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARY
MARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARYMARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARY
MARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARYvantasso
 
Apprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov ModelApprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov ModelFausto Intilla
 
Il Linux OpenSound System
Il Linux OpenSound SystemIl Linux OpenSound System
Il Linux OpenSound SystemAntonioTringali
 
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientaleInterfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientaleLuigi De Russis
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMDavide Ciambelli
 
Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)Fulvio Corno
 
Pattern Recognition Lecture Notes
Pattern Recognition Lecture NotesPattern Recognition Lecture Notes
Pattern Recognition Lecture NotesRobertoMelfi
 
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Alberto Scotto
 
mastertesi
mastertesimastertesi
mastertesiReply
 
GaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in LinuxGaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in LinuxAmmLibera AL
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...fcecutti
 
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Tesi
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - TesiAnalisi di prestazione dell'interprete tuProlog su piattaforma Java - Tesi
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - TesiMicheleDamian
 
Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)Gerardo Di Iorio
 
Joseki : un server per interrogare risorse RDF attraverso un interfaccia Web
Joseki : un server per interrogare risorse RDF attraverso un interfaccia WebJoseki : un server per interrogare risorse RDF attraverso un interfaccia Web
Joseki : un server per interrogare risorse RDF attraverso un interfaccia WebCyclope86
 
Il tutorial di Python
Il tutorial di PythonIl tutorial di Python
Il tutorial di PythonAmmLibera AL
 

What's hot (20)

Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D
Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D
Sviluppo e confronto di tecniche di stima della traiettoria di sensori 3D
 
MARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARY
MARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARYMARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARY
MARKETING ED ECOMMERCE NELL’EDITORIA: IL CASO TRADING LIBRARY
 
Apprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov ModelApprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov Model
 
A.Dionisi Thesis
A.Dionisi ThesisA.Dionisi Thesis
A.Dionisi Thesis
 
Il Linux OpenSound System
Il Linux OpenSound SystemIl Linux OpenSound System
Il Linux OpenSound System
 
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientaleInterfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
 
a4_centrata
a4_centrataa4_centrata
a4_centrata
 
Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)Esercizi di programmazione in C (v. 2.01)
Esercizi di programmazione in C (v. 2.01)
 
Pattern Recognition Lecture Notes
Pattern Recognition Lecture NotesPattern Recognition Lecture Notes
Pattern Recognition Lecture Notes
 
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
 
mastertesi
mastertesimastertesi
mastertesi
 
GaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in LinuxGaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in Linux
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
 
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Tesi
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - TesiAnalisi di prestazione dell'interprete tuProlog su piattaforma Java - Tesi
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Tesi
 
Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)
 
Dynamic Scheduling
Dynamic SchedulingDynamic Scheduling
Dynamic Scheduling
 
Andrea_Gangemi_tesi
Andrea_Gangemi_tesiAndrea_Gangemi_tesi
Andrea_Gangemi_tesi
 
Joseki : un server per interrogare risorse RDF attraverso un interfaccia Web
Joseki : un server per interrogare risorse RDF attraverso un interfaccia WebJoseki : un server per interrogare risorse RDF attraverso un interfaccia Web
Joseki : un server per interrogare risorse RDF attraverso un interfaccia Web
 
Il tutorial di Python
Il tutorial di PythonIl tutorial di Python
Il tutorial di Python
 

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

Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Daniele Ciriello
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Maurizio Cacace
 
Inoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxInoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxCe.Se.N.A. Security
 
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Pasquale Naclerio
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...michael_mozzon
 
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...GabrieleGandossi
 
Un metodo di progettazione di reti locali con esigenze di qualità del servizio
Un metodo di progettazione di reti locali con esigenze di qualità del servizioUn metodo di progettazione di reti locali con esigenze di qualità del servizio
Un metodo di progettazione di reti locali con esigenze di qualità del servizioClaudio Bortone
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Myrteza Kertusha
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsLorenzo Stacchio
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Gianluca Ritrovati
 
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...Domenico Schillaci
 
CaputiDomenicoMagistrale
CaputiDomenicoMagistraleCaputiDomenicoMagistrale
CaputiDomenicoMagistraleDomenico Caputi
 
[Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System [Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System Stefano Bonetta
 
Reti di partecipazione fra società di capitale in Italia: presenza di topolog...
Reti di partecipazione fra società di capitale in Italia: presenza di topolog...Reti di partecipazione fra società di capitale in Italia: presenza di topolog...
Reti di partecipazione fra società di capitale in Italia: presenza di topolog...Andrea Cavicchini
 
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàTesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàRiccardo Melioli
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionAmmLibera AL
 

Similar to 24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pendolo-inverso (19)

Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques
 
Inoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxInoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linux
 
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
 
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
 
Un metodo di progettazione di reti locali con esigenze di qualità del servizio
Un metodo di progettazione di reti locali con esigenze di qualità del servizioUn metodo di progettazione di reti locali con esigenze di qualità del servizio
Un metodo di progettazione di reti locali con esigenze di qualità del servizio
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistems
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
 
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
 
Monitoraggio di rete con nagios
Monitoraggio di rete con nagiosMonitoraggio di rete con nagios
Monitoraggio di rete con nagios
 
CaputiDomenicoMagistrale
CaputiDomenicoMagistraleCaputiDomenicoMagistrale
CaputiDomenicoMagistrale
 
[Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System [Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System
 
Reti di partecipazione fra società di capitale in Italia: presenza di topolog...
Reti di partecipazione fra società di capitale in Italia: presenza di topolog...Reti di partecipazione fra società di capitale in Italia: presenza di topolog...
Reti di partecipazione fra società di capitale in Italia: presenza di topolog...
 
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàTesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisition
 
Tesi Nicola Pretto
Tesi Nicola PrettoTesi Nicola Pretto
Tesi Nicola Pretto
 

Recently uploaded

Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 

Recently uploaded (6)

Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 

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

  • 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 Milano Relatore: Prof. Sergio Bittanti Correlatore: Prof. Fabio Previdi Tesi di Laurea di: Marco Triverio, matricola 676863 Anno Accademico 2007-2008
  • 2. Questa opera ` protetta da licenza Creative Commons e Attribuzione - Non commerciale - Condividi allo stesso modo 2.5 (ITALIA) Per maggiori informazioni: http://creativecommons.org/licenses/by-nc-sa/2.5/it/legalcode
  • 3. Stay hungry. Stay foolish.
  • 4.
  • 5. Sommario Il punto di partenza di questo Elaborato ` la modellizzazione di un pendolo e inverso al fine di studiarne la problematica di controllo. Lo scopo del lavoro ` la ricerca di un controllore lineare, che sappia man- e tenere l’equilibrio del sistema dati ragionevoli condizioni iniziali e disturbi esterni, e di un ricostruttore dello stato, che permetta di ottenere il valore delle 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- a trollore ` stata verificata sviluppando un prototipo presso il Laboratorio di e Automatica del Politecnico di Milano: tale implementazione ha sfruttato at- tuatori e componentistica hardware a costo relativamente basso e presenta buona riutilizzabilit` grazie alla libreria software sviluppata. a I
  • 6.
  • 7. Ringraziamenti Vorrei 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 direttamente con 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, e magari perch´ mi hanno fatto divertire dentro e fuori l’universit` o magari e a perch´ mi sopportano e supportano in ogni momento. e Non posso poi non citare le vere fonti di ispirazione del mio lavoro, Maccio e Rosario. Un bacio infine alla reginetta dei pancake. III
  • 8.
  • 9. Indice Sommario I Ringraziamenti III 1 Introduzione 1 1.1 Inquadramento generale e breve descrizione . . . . . . . . . . 1 1.2 Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . . 2 2 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
  • 10. 2.4.2 Confronto tra sistema lineare e sistema non lineare . . 14 3 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 . . . . . . . . . . . . . . . . . 24 4 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 . . . . . . . . . . . . . . . 37 5 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
  • 11. 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 57 6 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 . . . . . . . . . . . . . . . . . . . . 61 Bibliografia 63 A 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
  • 12.
  • 13. 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
  • 14. 4.3 Esperimento Simulink: Sistema reale lineare, controllore con- tinuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.4 Grafico angolo predetto e reale . . . . . . . . . . . . . . . . . 35 4.5 I due errori di stato . . . . . . . . . . . . . . . . . . . . . . . 35 4.6 Esperimento Simulink: Sistema reale lineare, controllore di- screto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7 Angolo predetto e reale con controllore discreto . . . . . . . . 39 4.8 Prestazioni a confronto con tempi di campionamento tra 1 e 44 ms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.1 Segway attualmente in commercio . . . . . . . . . . . . . . . 41 5.2 Arduino “Diecimila” . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 Grafico rpm-torsione . . . . . . . . . . . . . . . . . . . . . . . 45 5.4 Grafico corrente-torsione . . . . . . . . . . . . . . . . . . . . . 45 5.5 LEGOTM NXT Interactive Servo Motor . . . . . . . . . . . . 46 5.6 Giroscopio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.7 Encoder incrementale dei motori LEGO . . . . . . . . . . . . 47 5.8 Amplificatore differenziale con correzione d’errore . . . . . . . 49 5.9 Circuito di condizionamento (fronte e retro) . . . . . . . . . . 50 5.10 Fronte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.11 Retro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.12 Dall’alto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.13 Funzionamento del controllore senza ricostruttore . . . . . . . 55
  • 15. Capitolo 1 Introduzione 1.1 Inquadramento generale e breve descrizione Il 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 infine realizzato attingendo a capacit` informatiche ed elettroniche. In particolare a il punto di partenza di questo Elaborato ` la modellizzazione di un pendolo e inverso al fine di studiarne la problematica di controllo. Lo scopo del lavoro ` la ricerca di un controllore lineare, che sappia mantenere l’equilibrio del e sistema dati ragionevoli condizioni iniziali e disturbi esterni, e di un rico- struttore dello stato, che permetta di ottenere il valore delle variabili di stato di cui non si possiede una misura diretta. Tale ricerca ` stata convalidata da considerazioni teoriche, elaborazioni tra- e mite Matlab e simulazioni tramite Simulink; i risultati ottenuti sono stati applicati prima in simulazione al sistema non lineare e, in seguito ad alcune tarature, 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
  • 16. 2 Capitolo 1. Introduzione future il software di controllo ` stato basato su una libreria open source e appositamente scritta. 1.2 Struttura della tesi La 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
  • 17. Capitolo 2 Modellizzazione del sistema Il primo passo da compiere verso la costruzione del robot ` dato dalla model- e lizzazione del sistema fisico: questa ci fornir` quattro equazioni di stato che a saranno il fondamento necessario per la sintesi del controllore e le simulazioni tramite Simulink. 2.1 Stato dell’arte Un pendolo semplice ` costituito da un filo inestensibile a cui ` appeso un e e punto materiale di massa che pu` oscillare attorno a un punto fisso detto o polo: la componente della forza peso lungo il filo controbilancia la tensione del filo stesso, mentre la componente della forza peso perpendicolare al filo funge 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 o le 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’asta vincolata ad un carrello libero di traslare lungo una guida. La modellizzazione del pendolo inverso ` sicuramente un problema ben noto e 3
  • 18. 4 Capitolo 2. Modellizzazione del sistema e sono molte le fonti che riportano studi da cui derivano modelli con diversi livelli di approssimazione; ci` che ` stato fatto ` svolgere lo studio indi- o e e pendentemente, validare quanto fatto attingendo da diverse fonti e scegliere quali dettagli trascurare riferendosi a quale sarebbe stata la realizzazione pratica. La schematizzazione utilizzata ` quella mostrata in figura 2.1. Il testo di e Figura 2.1: Schematizzazione del robot riferimento per la modellizzazione ` stato il sesto capitolo di “Lectures on e Dynamic Systems and Control ” [7]. 2.2 Modellistica del pendolo inverso Per determinare il modello fisico ` necessario isolare le forze che agiscono sul e pendolo inverso; per chiarezza ` utile scomporre il robot in due parti, alta e e bassa. 2.2.1 Carrello La parte inferiore del pendolo inverso ` rappresentata da ruote e piano e di appoggio per i componenti. Le forze che agiscono verticalmente ven-
  • 19. 2.2. Modellistica del pendolo inverso 5 Figura 2.2: Bilancio forze parte inferiore gono compensate dalla reazione del terreno; le forze che invece agiscono orizzontalmente sono date dall’equazione: M x = Fin − N − bx ¨ ˙ (2.1) Come rappresentato in figura 2.2, dove: Fin ` la forza motrice e N e P sono le forze di interazione con la parte superiore M ` la massa della parte inferiore e g ` l’accelerazione gravitazionale e bx ` l’attrito ˙ e 2.2.2 Parte mobile La parte superiore ` rappresentata dal corpo del robot (che conterr` la e a scheda 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)
  • 20. 6 Capitolo 2. Modellizzazione del sistema Figura 2.3: Bilancio forze parte superiore Dove: 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 e l’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
  • 21. 2.2. Modellistica del pendolo inverso 7 Nota di approfondimento: motivazione di una semplificazione Svi- luppare i calcoli a questo punto vorrebbe dire riscrivere l’equazione 2.4 come: ¨ ˙ ¨ I θ = l sin θ(mg − mlθ2 cos θ − mlθ sin θ) + (2.5) ˙ ¨ − l cos θ(m¨ − mlθ2 sin θ − mlθ cos θ) x e 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 u ta necessariamente ad una modellizzazione migliore; infatti, considerando l’implementazione che verr` fatta si possono stimare alcuni parametri: a M la parte inferiore pesa all’incirca 0.285kg m la parte superiore pesa all’incirca 0.09kg l l’altezza della parte superiore ` di 18 cm dunque l = 9cm e I 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` o dunque proseguire dalla equazione: ¨ ml2 θ = mgl sin θ − ml¨ cos θ x (2.7)
  • 22. 8 Capitolo 2. Modellizzazione del sistema 2.2.3 Equazioni del modello L’equazione 2.7 che pu` anche essere scritta come: o ¨ 1 θ = (g sin θ − x cos θ) ¨ (2.8) l Unendo 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 e all’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 θ.
  • 23. 2.3. Propriet` del sistema a 9 2.3 Propriet` del sistema a 2.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   0 e Fin = u = 0. 2.3.2 Linearizzazione Se 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 o sistema 2.12 ottenendo:  x ˙   = x ˙  mg b Fin x¨ = −M x − ˙ M θ +  M (2.13) ˙ θ = ˙ θ     ¨ b (M +m)g Fin θ = lM x ˙ + lM θ − lM
  • 24. 10 Capitolo 2. Modellizzazione del sistema Figura 2.4: Rappresentazione dell’equazione in forma di stato Scrivendo 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 − Ml Ci troviamo di fronte ad un sistema rappresentabile come in figura 2.4, in cui:   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
  • 25. 2.3. Propriet` del sistema a 11 C rappresenta, come verr` spiegato nel capitolo 2.3.5, le variabili di stato di a cui ` disponibile la misura. e 2.3.3 Stabilit` a Il 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 s Trascurando 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 − Ml Da 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)
  • 26. 12 Capitolo 2. Modellizzazione del sistema 2.3.4 Raggiungibilit` a Definizione informale Un sistema ` raggiungibile se in un tempo arbitrario non infinito, esso pu` es- e o sere condotto da un qualunque punto dello spazio degli stati ad un qualunque altro punto. Analisi di raggiungibilit` a Analizziamo 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 0 Il rango ` massimo e dunque il sistema ` completamente raggiungibile. e e Un’importante considerazione Un sistema completamente raggiungi- bile, quando retroazionato, gode di una particolare propriet`: i poli ad anello a chiuso possono essere scelti a piacere e questo faciliter` di molto la sintesi a del controllore. 2.3.5 Osservabilit` a Definizione informale Con il termine osservabilit` si indica la possibilit` di poter risalire allo stato a a iniziale conoscendo l’evoluzione dell’ingresso e della corrispondente uscita. Se un sistema ` completamente osservabile esiste, dato un ingresso, una e corrispondenza biunivoca fra stati iniziali e uscite e, cio`, fra l’andamento e dell’uscita del sistema e la traiettoria nello spazio degli stati.
  • 27. 2.3. Propriet` del sistema a 13 Analisi Per analizzare l’osservabilit` ` necessario introdurre la trasformazione di a e uscita y = y(t); essa dipende dallo stato attuale e nel nostro caso descrive la 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 a essere 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 0 Anche in questo caso il rango ` massimo per cui il sistema ` osservabile. e e
  • 28. 14 Capitolo 2. Modellizzazione del sistema 2.4 Esperimenti in Matlab 2.4.1 Una prima analisi Considerando le seguenti stime dei parametri: M la parte inferiore pesa all’incirca 0.285kg m la parte superiore pesa all’incirca 0.09kg l l’altezza della parte superiore ` di 18 cm dunque l = 9cm e Nella prima parte dello script Matlab analisi modello robot.m, disponi- bile in Appendice A.1, ` stato confermato quanto fin qui dimostrato teori- e camente: • 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 lineare Per 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 toolbox di Matlab per creare simulazioni in maniera grafica: a tal proposito ` stata e scritta una S-function di primo livello (riportata in Appendice A.2). Si pu` dunque impostare l’esperimento Simulink come mostrato in figura 2.5. o Gli esperimenti svolti hanno coperto le seguenti casistiche:
  • 29. 2.4. Esperimenti in Matlab 15 Figura 2.5: Esperimento Simulink: confronto tra sistema non lineare e il sistema linearizzato corrispondente condizioni 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’angolo posta a 0.1 radianti posta a 0.5 radianti
  • 30. 16 Capitolo 2. Modellizzazione del sistema rumore 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 ingresso ingresso Si pu` dunque concludere che il sistema linearizzato approssimi bene il o sistema non lineare soltanto nei primi istanti di funzionamento, prima della divergenza; inoltre quando si impongono delle condizioni iniziali non nulle, si riscontra un comportamento molto simile quando queste sono prossime al punto di equilibrio; man mano che ci si allontana le differenze diventano naturalmente molto marcate.
  • 31. Capitolo 3 Sintesi del controllore La modellizzazione del sistema permette di cominciare la creazione di un controllore che dovr` garantire l’equilibrio del robot rispettando i limiti fisi- a ci degli attuatori e ottimizzando il pi` possibile l’energia dell’azione di con- u trollo. Il testo di riferimento per questo capitolo ` “Fondamenti di controlli e automatici ” [5], i cui concetti sono stati approfonditi ricorrendo a [11]. 3.1 Caratteristiche del controllore 3.1.1 Scelta di un controllore lineare Una volta modellizzato il sistema fisico ` possibile scegliere un controllore e e chiudere l’anello, come mostrato in figura 3.1. Il controllore che verr` utilizzato ` di tipo proporzionale e pu` essere dunque a e o rappresentato come un vettore K di quattro guadagni; l’azione di controllo ` dunque proporzionale alle quattro variabili di stato (posizione, velocit`, e a angolo e velocit` angolare). a K = gposizione gvelocita gangolo gvelocita angolare (3.1)
  • 32. 18 Capitolo 3. Sintesi del controllore Figura 3.1: Sistema Il sistema in anello chiuso, come mostrato in [11], pu` essere descritto da o un’equazione di stato del tipo (le matrici A, B e C sono state definite nei capitoli 2.3.2 e 2.3.5): Aclosed loop = A − BK Bclosed loop = B (3.2) Cclosed loop = C Il sistema in anello chiuso pu` essere dunque rappresentato in due maniere o del tutto equivalenti mostrate in figura 3.2. 3.1.2 Definizioni delle condizioni Essendo il sistema che rappresenta il pendolo inverso raggiungibile ` possi- e bile chiudere l’anello e ricercare un controllore lineare adatto imponendo i poli ad anello chiuso. In linea teorica ` possibile imporre qualsiasi valore, ma esistono delle condi- e zioni che limitano tale libert`: in primo luogo ci si aspetta che il controllore a
  • 33. 3.1. Caratteristiche del controllore 19 Figura 3.2: Rappresentazioni equivalenti del sistema in anello chiuso stabilizzi il sistema in un tempo opportuno; in secondo luogo gli attuatori che andremo a utilizzare hanno dei limiti (di coppia e di potenza) che non vanno 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)
  • 34. 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 poli Le 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 anello e chiuso dovr` essere disposto al suo interno. a
  • 35. 3.1. Caratteristiche del controllore 21 Figura 3.3: Area sulla mappa dei poli 3.1.4 Criteri di scelta L’area delineata al capitoletto precedente non rappresenta una zona da cui scegliere indifferentemente il polo dominante; esistono infatti alcuni crite- ri per prediligerne uno piuttosto che un altro. Il primo ` la scelta di un e tempo di risposta e di uno smorzamento che garantiscano un’elongazione dell’angolo di piega del pendolo inferiore ai 20◦ ; il secondo invece vigila sul- la potenza impressa dall’azione di controllo, verificandone la compatibililit` a con gli attuatori. A tale proposito verranno valutati due fattori: ∞ 2 • l’integrale del quadrato dell’azione di controllo ( 0 |u(t)| dt): pi` u
  • 36. 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 a 3.2 Esperimenti 3.2.1 Esperimenti in Matlab Come delineato nel capitololetto 3.1.2 i poli in anello chiuso dovranno essere almeno quattro e la coppia di poli dominanti (eventualmente complessa e coniugata) dovr` rispettare precise condizioni. a Si possono naturalmente ipotizzare diversi vettori dei poli compatibili con tali 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 dominanti Lo script Matlab analisi modello robot.m permette di creare la matrice degli n tentativi (di dimensione n x 4, essendo quattro i poli da fissare) e per 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:
  • 37. 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.
  • 38. 24 Capitolo 3. Sintesi del controllore Alcuni esempi numerici Di seguito vengono riportati alcuni dei valori numerici 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 buon compromesso tra tempistica di risposta, angolo di oscillazione ed energia dell’azione di controllo. 3.2.2 Esperimenti in Simulink Una volta selezionata la matrice dei guadagni Kscelta che meglio controlla il sistema in esame ` necessario preparare Simulink per gli esperimenti suc- e cessivi. Simulink sicuramente brilla per la facilit` con cui ` possibile impostare le a e simulazioni ma purtroppo la gestione dei risultati non ` potente quanto Ma- e tlab: per questo motivo le analisi approfondite richiederanno di tornare in Matlab.
  • 39. 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]
  • 40. 26 Capitolo 3. Sintesi del controllore In Simulink sono stati dunque validati i risultati ottenuti nei precedenti pa- ragrafi ripetendo alcuni degli esperimenti: gli esiti sono risultati compatibili e si ` potuto dunque procedere con la realizzazione del ricostruttore dello e stato.
  • 41. 3.2. Esperimenti 27 Figura 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
  • 42. 28 Capitolo 3. Sintesi del controllore
  • 43. Capitolo 4 Ricostruttore dello stato In questo capitolo si continua il lavoro a partire dal controllore lineare e si sintetizza un ricostruttore dello stato che permetta di far convergere lo stato calcolato dal robot con lo stato reale del sistema. 4.1 Premessa teorica 4.1.1 La necessit` di un ricostruttore dello stato a Il sistema che andremo a realizzare ` caratterizzato da: e sistema 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 e modello 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:
  • 44. 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 nulle Come abbiamo visto nel capitolo precedente il controllore realizzato ` di tipo e proporzionale 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 sul sistema rappresentato dal pendolo inverso una forza che ` combinazione li- e neare di queste. Ma quali variabili di stato sono realmente misurabili? E se le condizioni iniziali non fossero esattamente nulle? 4.1.2 I sensori Le 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 a Il controllore dunque ha la necessit` di calcolare le due misure mancanti: a velocit` longitudinale e angolo di piega. a Per ottenerle si pu` seguire un approccio puramente matematico derivan- o do la posizione e integrando la velocit` angolare: derivazione e integrazio- a ne soffrono per` di problemi ben noti ed ` dunque preferibile procedere o e ricostruendo asintoticamente lo stato (si veda anche [11]).
  • 45. 4.1. Premessa teorica 31 4.1.3 Il ricostruttore dello stato Il sistema reale pu` essere rappresentato dalle equazioni: o   x = Ax + BFin ˙ (4.2)  y = Cx + DF ˙ in Nel caso in esame D = 0. Dal momento che questo sistema evolve senza la possibilit` di misurare le a condizioni 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 del sistema reale qualunque siano la condizioni iniziali. In altre parole esiste un sistema che dati l’ingresso Fin e le uscite y disponibili del sistema reale, avr` a uno 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 ricostruttore La 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
  • 46. 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 −k24 Si ha dunque un sistema come quello rappresentato in figura 4.2.
  • 47. 4.1. Premessa teorica 33 Figura 4.2: Schema del ricostruttore dello stato 4.1.4 Valutazione della matrice L Dalle 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 e con ingresso nullo.
  • 48. 34 Capitolo 4. Ricostruttore dello stato Essendo la 4.7 un problema formalmente identico al problema posto dal- la 3.2 possiamo utilizzare le tecniche spiegate nel capitolo 3.2 per trovare la L che impone un certo “tempo di assestamento”, ovvero il tempo che il ricostruttore impiegher` per allineare lo stato reale con quello in memoria. a Nello script Matlab (il cui codice ` disponibile in Appendice A.1) dunque e sfrutteremo 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 u tempo di risposta Tassestamento imposto al capitolo 3.1.2, si prenderanno i poli ad anello chiuso scelti in fondo al capitolo 3.2 e li si moltiplicher` per a 10. In questo modo, essendo 5 T = (4.8) |polo| il tempo di annullamento dell’errore di stato sar` di un ordine di grandezza a inferiore al tempo di assestamento del robot. 4.2 Alcuni esperimenti Una volta calcolata la matrice L si pu` procedere con alcuni esperimenti che o ne supportino la bont`. a 4.2.1 Sistema reale lineare, controllore continuo In questo primo esperimento si tratta il sistema reale come se fosse continuo e 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   0 stema replica sono invece nulle.
  • 49. 4.2. Alcuni esperimenti 35 Questo ` l’esperimento pi` semplice che si possa fare e permette di iniziare e u a 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 continuo Confrontando le figure 4.4 e 4.5 si pu` notare come l’errore converga effet- o tivamente molto pi` velocemente rispetto al tempo di assestamento. u Figura 4.4: Grafico angolo predetto e reale Figura 4.5: I due errori di stato 4.2.2 Sistema reale non lineare, controllore continuo In 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
  • 50. 36 Capitolo 4. Ricostruttore dello stato in 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 a quelli ottenuti nel capitoletto precedente. 4.3 Discretizzazione 4.3.1 Dal tempo continuo al tempo discreto In questo capitolo si affronta la discretizzazione del controllore; questa si basa sulla relazione che permette di passare da poli a tempo continuo a poli a 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- a ga168, come spiegato nel capitolo 5.2.1. Dunque, considerando che tale microcontrollore ` capace di campionare fino a 15kSPS (kilo Sample Per e Second ) [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
  • 51. 4.3. Discretizzazione 37 superiore non lo `: ` necessario dunque capire quale valore ` meglio non e e e superare al fine di non introdurre oscillazioni e instabilit`. A tal fine sono a stati 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 e tenendo conto che il sistema ` ora discretizzato ad una certa Tcampionamento , e ottenendo Ad , Bd , Cd e Dd (quest’ultima ` nulla). e Si passa dunque da un sistema del tipo descritto dall’equazione 4.2 a un sistema:   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 e utilizzare il comando Matlab place (che lavora anche con sistemi a tempo discreto) per ricavare la matrice dei guadagni Kd . In seguito bisogna ricercare nuovamente la matrice Ldisc del ricostruttore dello stato: le modalit` sono identiche a quelle mostrate nel capitolo 4.1.4. a All’interno del microcontrollore si dovr` dunque implementare la versione a discreta 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 Matlab Sistema reale lineare, controllore discreto Per adattare i precedenti esperimenti Simulink al tempo discreto bisogna: • sostituire ad ogni componente il corrispondente discreto
  • 52. 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 discreto tempi di risposta sono invariati ma tutti i grafici sono ora caratterizzati da una “seghettatura”.
  • 53. 4.3. Discretizzazione 39 Figura 4.7: Angolo predetto e reale con controllore discreto Sistema reale non lineare, controllore discreto In questo esperimento entra nuovamente in gioco il sistema non lineare, che meglio 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 e per` due differenze da segnale: in primo luogo la condizione iniziale mas- o sima per cui il controllore riesce a garantire la stabilit` del sistema reale ` a e ridotta a 0.4 radianti; in secondo luogo si pu` notare come le prestazioni del o controllore 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 u per` al valore “limite” di 44ms pi` il sistema diventa oscillatorio e, oltre o u tale valore, instabile. Quando detto ` bene riassunto dalla figura 4.8. e
  • 54. 40 Capitolo 4. Ricostruttore dello stato Figura 4.8: Prestazioni a confronto con tempi di campionamento tra 1 e 44 ms
  • 55. Capitolo 5 Realizzazioni sperimentali Lo studio teorico fin qui fatto viene ora validato con una realizzazione pra- tica: l’intento ` quello di creare un robot che, essendo schematizzabile co- e me un pendolo inverso, possa essere mantenuto in equilibrio dal controllore studiato. 5.1 Introduzione Esistono diverse realizzazioni sperimentali di un pendolo inverso (si veda ad esempio [12]): tutte utilizzano una componentistica piuttosto costosa e propongono esperimenti che lasciano spazio a di- rezioni future di ricerca relative al solo ambito del controllo. La realizzazione seguente si propone invece di creare un robot ispirato al Segwaytm (mostrato in figura 5.1); questo non ` dunque vincolato ad e Figura 5.1: Segway attual- una rotaia come accade nella maggior parte degli mente in commercio esperimenti di laboratorio ma ` autonomo e potr` e a
  • 56. 42 Capitolo 5. Realizzazioni sperimentali guadagnare, nei lavori futuri, la capacit` di muoversi nello spazio. a Un’ulteriore differenza ` la componentistica: i motori, i sensori e il micro- e controllore sono tra i pi` economici disponibili al momento; ciononostante u si ritiene che essi, entro certi limiti, possano essere adatti allo scopo. 5.2 Hardware utilizzato 5.2.1 Arduino Il “cuore” della realizzazione sperimentale ` dato dal microcontrollore, il e componente al cui interno verranno implementati il controllore lineare e il ricostruttore dello stato. Il microcontrollore scelto ` un Atmel AVR ATmega168: questo ` sta- e e to preferito ai PIC prodotti da Microchip non tanto per le caratteristiche tecniche ma perch` ` parte di una piattaforma di sviluppo chiamata Ardui- ee no [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
  • 57. 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:
  • 58. 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 MHz 5.2.2 Attuatori e ruote Caratteristiche Gli attuatori del moto (figura 5.5) e le ruote utilizzate provengono dal kit LEGOtm 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)
  • 59. 5.2. Hardware utilizzato 45 Figura 5.3: Grafico rpm-torsione Figura 5.4: Grafico corrente-torsione Connettori Per comandare i motori ` stato necessario fare il reverse engineering dei e connettori e del significato dei singoli segnali al loro interno. I motori LEGO sono infatti alimentati con un cavo a sei polarit` con connet- a tore RJ-12 non standard essendo il gancio di sicurezza spostato di qualche millimetro. I segnali all’interno del cavo hanno il seguente significato:
  • 60. 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 H Siccome Arduino non pu` fornire la corrente necessaria per comandare i o motori ` stato necessario ricorrere ad un integrato, l’L293D, in grado di e fornire la corrente necessaria e agire anche come Ponte H. Tramite i quattro ingressi dell’integrato ` dunque possibile comandare due e motori bidirezionalmente. Figura 5.5: LEGOTM NXT Interactive Figura 5.6: Giroscopio Servo Motor 5.2.3 Sensori Encoder I motori LEGO sono dotati di encoder incrementali interni con precisione pari a 1 grado sessagesimale. Il segnale dell’encoder ` diviso, come mostrato in figura 5.7 su due cavi: e
  • 61. 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 LEGO Giroscopio Per determinare la velocit` angolare ` stato utilizzato il giroscopio Epson a e XV-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 a L’output del sensore pu` essere dunque sia positivo che negativo (a seconda o del senso di rotazione) e avr` un range piuttosto limitato rispetto all’Analog a to Digital Converter (ovvero l’analog in) di Arduino: questo infatti accetta
  • 62. 48 Capitolo 5. Realizzazioni sperimentali in ingresso tensioni tra 0 e Vcc [2] (nel nostro caso 5V) e le campiona con precisione di 10 bit (ha una risoluzione di 4.88mV); inoltre l’accuratezza dell’ADC ` di ±2 LSB. e ´ E dunque necessario amplificare il segnale e “traslarlo” per ottimizzare al massimo l’utilizzo dell’ADC; a tal proposito si sfrutta un amplificatore dif- ferenziale con correzione di errore, il cui schema ` raffigurato nella 5.8. e Abbiamo: 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 RG che nel caso in cui R2 = RF e R1 = RG diventa: R2 VOU T = (VIN 2 − VIN 1 ) + VREF (5.2) R1 Naturalmente si avr`: a VIN 1 a cui verr` agganciato Vr del giroscopio a VIN 2 a cui verr` agganciato Vo del giroscopio a VREF 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- e dizionamento per il giroscopio: si pu` notare come questa presenti un po- o tenziometro per regolare la VREF dell’equazione 5.2. La realizzazione pratica sfrutta l’LM324, un amplificatore operazionale particolarmente facile da reperire, economico e dall’ottimo slew rate. 5.2.4 Costo totale dell’hardware Il costo totale dell’hardware ` dato da: e
  • 63. 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.h L’ interazione con i componenti del robot (motori, encoder, giroscopio. . . ) ` e stata astratta e facilitata dalla creazione di una libreria C++, denominata arduino2lego.h. Con un solo comando ` stato reso possibile impartire una velocit` ai motori e a oppure leggere il valore di velocit` angolare in radianti o in gradi oppure a ancora conoscere i metri percorsi dal robot. Ecco alcuni esempi di utilizzo:
  • 64. 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 pos motors.setSpeed(N) ` possibile lavorare anche su pi` motori contempora- e u neamente e utilizzare tutti i comandi disponibili sul motore singolo gyroscope.getAngSpeed() ritorna la velocit` angolare in gradi al secondo a gyroscope.getRadSpeed() ritorna la velocit` angolare in radianti al se- a condo touchSensor.getValue() comunica con il sensore di contatto LEGO e re- stituisce 0 o 1 a seconda che al momento della lettura stia avvenendo un contatto Questa libreria naturalmente rappresenta una buona base per l’interazione tra componentistica LEGO (e non) e Arduino; la sua natura open source ne
  • 65. 5.4. Il comportamento sperimentale 51 permette l’evoluzione anche al di fuori della mia direzione. Il progetto ` stato pubblicato su Sourceforge e l’interfaccia ` consultabile e e in appendice A.3. Figura 5.10: Fronte Figura 5.11: Retro 5.4 Il comportamento sperimentale 5.4.1 Implementazione di ricostruttore e controllore Descrizione Lo scopo dell’esperimento ` verificare la realizzabilit` del ricostruttore e del e a controllore lineare (mostrati nel capitolo 4.3.2) che, all’interno di Simulink, funzionano egregiamente. A tal fine si ` implementato un programma che: e
  • 66. 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 ˆ
  • 67. 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 motori Comportamento riscontrato Tempo di campionamento In corso d’opera il valore del tempo di cam- pionamento ` stato alzato leggermente rispetto a quello ipotizzato nel capi- e tolo 4.3.1 al fine di evitare alcuni casi in cui il controllore sforava il tempo previsto. Tcampionamento = 4ms 250 fcampionamento = sec = 250Hz Robustezza al rumore Il valore riportato dal giroscopio si ` rivelato e critico per la stabilit` del ricostruttore: per questo motivo ` stato creato a e un esperimento Simulink per dimostrare la resistenza al rumore; in questo ` stata aggiunta alla rilevazione sensoriale un segnale costante con entit` e a variabile (fino a 1 rad ). s I risultati sono stati pi` che soddisfacenti: il sistema, in simulazione, non ha u mai raggiunto l’instabilit`. a Stabilit` del ricostruttore a In simulazione il ricostruttore si ` mostrato e non solo stabile ma anche robusto al rumore. L’implementazione pratica invece non riesce purtroppo nell’intento; gli stati
  • 68. 54 Capitolo 5. Realizzazioni sperimentali divergono in pochi millisecondi e l’azione di controllo non ` dunque efficace. e Questo accade per diversi motivi: • il sensore ` risultato essere piuttosto rumoroso e • l’ADC introduce un errore dovuto all’arrotondamento • l’ADC ha una accuratezza di ±2 LSB che aggiunge incertezza alla misura Tutti questi fattori contribuiscono a rendere instabile il ricostruttore e obbli- gano a seguire una strada differente: implementare il solo controllore lineare e calcolare le variabili di stato non fornite dai sensori attraverso derivazione e integrazione. 5.4.2 Implementazione del solo controllore Descrizione In seguito ai problemi riscontrati con il ricostruttore si ` deciso di seguire e una strada diversa: rinunciare al ricostruttore dello stato e procedere con un’implementazione pi` semplice. u Per risalire dalle due misure alle quattro variabili di stato ` dunque neces- e sario implementare nel software un derivatore e un integratore per ricavare dalla posizione e dalla velocit` angolare rispettivamente i valori di velocit` a a e angolo di piega. Per verificare la bont` di questa idea anche nel caso in cui le condizioni ini- a ziali fossero differenti ` stato creato un esperimento Simulink, mostrato in e figura 5.13: il robot viene stabilizzato per condizioni iniziali piuttosto lon- tane dalla posizione perfettamente verticale e anche in presenza di disturbi esterni.
  • 69. 5.4. Il comportamento sperimentale 55 Figura 5.13: Funzionamento del controllore senza ricostruttore Comportamento riscontrato Il comportamento sperimentale ` risultato soddisfacente: il robot ha dimo- e strato di poter rimanere in equilibrio. Gli stessi motivi che causano l’instabilit` del ricostruttore sono per` alla a o base delle leggere oscillazioni che si riscontrano in particolare dopo alcuni istanti di funzionamento. In questo caso ci si rende particolarmente conto della criticit` dell’angolo; a questo viene ricavato per integrazione e quindi fattori come: • il rumore sul sensore • l’errore di arrotondamento dell’ADC • l’accuratezza dell’ADC • gli errori dovuti agli arrotondamenti fatti dal microcontrollore