27
PI D PID PID Applicazione al controllo del movimento di un umberto lamia 5D 2013/14

regolazione Pid con robot lego

Embed Size (px)

DESCRIPTION

PID applicato all'inseguimento di una linea nera

Citation preview

Page 1: regolazione Pid  con robot lego

PID

PIDPIDApplicazione al controllodel movimento di un robot

umberto lamia 5D 2013/14

Page 2: regolazione Pid  con robot lego

PIDSommario

Nell’ambito del corso di Sistemi è stato affrontato il tema dei controlli automatici ed in particolare del controllo PID, argomento di questa tesina.

Dopo una introduzione teorica, descriverò la realizzazione di un piccolo progetto mirato all’inseguimento di un traiettoria da parte un robot didattico Lego Mindstorms NXT in cui ho implementato un controllore PID software.

Durante l’esperienza ho anche confrontato il comportamento del robot nel caso di utilizzo del PID rispetto ad un semplice controllo on-off.

Le principali criticità incontrate nel progetto sono legate all’acquisizione dei dati di input (led + sensore di luminosità) e alla loro successiva interpretazione.

In conclusione sono stati individuati alcuni miglioramenti che potrebbero essere apportati al sistema per aumentare l’efficienza del controllo

umberto lamia

Page 3: regolazione Pid  con robot lego

PIDSistema di controllo

Il controllo automatico di un dato sistema dinamico (di un motore, di un impianto industriale, di una funzione biologica come il battito cardiaco) si prefigge di ottenere in uscita i valori desiderati ed indicati dall’ingresso, nonostante i disturbi.

Il controllo del sistema in esame viene affidato ad un altro sistema, detto controllore, progettato opportunamente.

Si distinguono:Sistemi a catena aperta dove la garanzia della relazione fra ingresso e uscita è affidata unicamente ad un elemento esterno al sistema che va ad agire sullo stesso;

Sistemi a catena chiusa nei quali la regolazione è automatica nel senso che l’uscita viene confrontata con la grandezza di riferimento, in modo da produrre, ogni volta si verifichi una diversità tra segnale di riferimento e segnale di uscita, un’azione correttiva che riporti l’uscita al valore desiderato.

umberto lamia

Page 4: regolazione Pid  con robot lego

PID

Il PIDPID è un sistema di controllo in retroazione negativa.Per retroazione negativa intendiamo la capacità del sistema di auto stabilizzarsi tenendo conto delle uscite precedenti.Es.: in un sistema di puntamento, ogni tiro può essere utilizzato per puntare meglio l'arma e arrivare più vicino al bersaglio.

umberto lamia

La retroazione negativa

G

H

UI +

-

E

Page 5: regolazione Pid  con robot lego

PID

Struttura si un controllore PID

Il PIDPID è la somma di tre diverse operazioni:

Azione proporzionale (P)

il valore del segnale di errore.

Azione integrale (I)i valori passati del segnale di errore.

Azione derivata (D)quanto velocemente il segnale di errore varia.

umberto lamia

Page 6: regolazione Pid  con robot lego

PID

Sensore diSensore diluminositàluminosità

Motore CMotore C Motore BMotore B

umberto lamia

Il Robot Lego Mindstorm NXT

Page 7: regolazione Pid  con robot lego

PIDNXT: Blocchi base

umberto lamia

Page 8: regolazione Pid  con robot lego

PIDNXT: Ambiente di sviluppo SW

umberto lamia

Page 9: regolazione Pid  con robot lego

PIDObiettivo del progetto

Controllare il robot affinché sia in grado di percorrere autonomamente un circuito rappresentato da una linea nera su di un piano, servendosi del sensore di luminosità ed implementando un controllore PIDPID.

umberto lamia

Page 10: regolazione Pid  con robot lego

PIDInseguimento della traccia

umberto lamia

0% 50% 100%Luminositàrilevata

Sensore Led

Page 11: regolazione Pid  con robot lego

PID

La luminosità varia uniformemente tra due limiti: la massima esternamente alla linea nera (chiaro) e la minima internamente (scuro) .

La prima parte del programma calcola la luminosità media (offset) spostando il robot sulle condizioni estreme.

MEDIA: OnFwd(OUT_C,50); Wait (500); Off (OUT_C); Wait (500); chiaro= Sensor(IN_3); OnFwd(OUT_B,50); Wait (700); Off (OUT_B); Wait (500); scuro= Sensor(IN_3); OnFwd(OUT_C,50); Wait (200); offset=(scuro+chiaro)/2;

Ad es. supponiamo chechiaro=50, scuro=40, media=45

umberto lamia

Calcolo della luminosità media

Page 12: regolazione Pid  con robot lego

PIDVariabili del sistema di controllo

umberto lamia

INGRESSI: luminosità misurata dal sensore.

USCITA: velocità di due motori. (Attuatori) Al setpoint (errore = 0, andamento rettilineo) i due motori agiscono al 50% della loro potenza facendo procedere il robot in linea retta

DISTURBI: variazione casuale della luminositàvariazione della tensione di alimentazione a causa dalla scarica della batteria motori diversi

Page 13: regolazione Pid  con robot lego

PIDProve Regolazione On-Off

umberto lamia

• Le prime prove sono state effettua utilizzando un controllo ON-OFF.

• Un controllo ON-OFF prevede solo due posizioni di controllo, cioè solo due possibili valori per la variabile manipolata.

• Nel caso del robot se la luminosità è al di sotto della soglia minima esso procede girando a dx, mentre se è al di sopra di quella massima procederà girando a sinistra

Page 14: regolazione Pid  con robot lego

PID

L'algoritmo PID: approccio per fasi

umberto lamia

Page 15: regolazione Pid  con robot lego

PIDLa luminosità varia in funzione

della posizione del robot rispetto alla traiettoria. La variazione della luminosità rispetto al valore medio iniziale influenza l’azione dei motori (uscita del sistema) in modo proporzionale, ovvero:Y=mx+qE’ possibile costruire un grafico che rappresenti la situazione: ad es. in figura se al valore misurato viene sottratta la media, l’errore sarà un numero compreso tra +5 e -5.All’equazione y=mx possiamo quindi sostituire Turn=Kp*error.La costante Kp ha la funzione di coefficiente angolare e più è grande più l’azione di regolazione è intensa.

Legenda:Turn = giri motoreTurn Left= girare/svoltare sinistraTurn Right= girare/svoltare destraError= errore compreso tra +5 e -5Offeset= media

umberto lamia

Azione proporzionale

Page 16: regolazione Pid  con robot lego

PID

while (true) {

linea= Sensor(IN_3); errore = linea - offset; Turn = Kp * errore; Turn = Turn/100; powerB= Pr + Turn; powerC= Pr - Turn; OnFwd(OUT_C,powerC); OnFwd(OUT_B,powerB);

}Sottraendo Turn alla potenza di riferimento di un motore e sommandolo alla potenza dell’altro, sarà possibile rallentare un motore e accelerare l’altro generando una adatta rotazione. La potenza di riferimento dei motori viene fissata a 50 utilizzando una costante Pr. Turn viene diviso per cento per rientrare nel campo di valori riconosciuto dai motori del robot che va da 0 a 100umberto lamia

Fase 1 - Azione proporzionale

Page 17: regolazione Pid  con robot lego

PID

L’azione integrale consiste nel sommare gli errori ed agire sui motori in modo che tale somma sia nulla.

La variazione di tempo (dt) è costante (tempo di esecuzione di un ciclo sw. La somma degli errori, variabile integrale, è moltiplicata per un fattore Ki per poi essere sommata a Turn.

Bisogna fare in modo che il contributo a Turn non sia eccessivo.

integrale = integrale + error

umberto lamia

Fase 2 - Azione integrale

errore = linea - offset;integrale =((2/3)*integrale)+errore;Turn = (Kp * errore)+(Ki*integrale);

Per avere un ‘PI’ basta aggiungere quanto detto alla parte P (fase 1). L’azione integrale da sola, non può essere usata, in quanto agisce in base agli errori passati.

Page 18: regolazione Pid  con robot lego

PIDFase 2 – Prove sul Wind-Up

umberto lamia

errore = linea - offset;

integrale =(integrale)+errore;

Turn = (Kp * errore)+(Ki*integrale);

Per evitare il wind-up il valore dell’equazione è stato moltiplicato per un numero minore di 1 (e maggiore di 0).

Il wind-up si verifica a causa di grandi errori che superano il range di azione e che durano nel tempo (costante); il robot, allora, tenderà poi a correggerli in modo esagerato.

Page 19: regolazione Pid  con robot lego

PID

La parte derivata permette di prevedere e correggere errori che ancora devono verificarsi.

Questo è possibile tenendo conto degli errori precedenti; infatti, memorizzando l’ultimo errore calcolato e il nuovo errore, con una semplice sottrazione è possibile constatare se esso sta aumentando o diminuendo.

Anche qui è presente una costante Kd.

La derivazione permette di agire prima che l’errore diventi significativo. umberto lamia

Azione derivata

Page 20: regolazione Pid  con robot lego

PID

Basta aggiungere queste istruzioni al PI per creare il PID.

Anche questa azione non può essere utilizzata da sola, anzi, molte volte non viene utilizzata, dato che è molto sensibile ai piccoli errori.

derivata = errore - ultimoerrore;Turn = (Kp * errore) + (Ki*integrale)+ (Kd*derivata);

umberto lamia

Fase 3 - Azione derivata

Page 21: regolazione Pid  con robot lego

PIDRegole di Ziegler-Nichols

Trovare i valori delle costanti è possibile solo attraverso continue prove.È possibile calcolare approssimativamente i valori di Kp, Ki e Kd seguendo questa tabella:

Dove:-Kc è il guadagno critico è il valore del guadagno per cui la variabile controllata presenta oscillazioni sostenute.-Pc è il periodo critico, ovvero, il tempo di cui il robot necessità per oscillare da una parte all’altra della linea a Kp=Kc.

Kc va misurato con Ki e Kd uguali a zero, aumentando Kp.

umberto lamia

Page 22: regolazione Pid  con robot lego

PIDLimiti della implementazione

umberto lamia

Bordo Sx

0% 50% 100%Luminositàrilevata

Bordo Dx

0% 50% 100%Luminositàrilevata

Con un solo sensore di luminosità è necessario scegliere quale bordo della striscia inseguire. Infatti lo stesso valore rilevato può essere interpretato «gira a destra» se sono sul bordo sinistro oppure «gira a sinistra» se sono sul bordo destro.Questa limitazione consente di controllare il robot solo se le curve del percorso sono tutte destrorse (o sinistrorse).

Questa limitazione si riflette anche nella impossibilità di invertire il verso di marcia.

Page 23: regolazione Pid  con robot lego

PIDConclusioni

umberto lamia

E’ possibile migliorare le prestazioni del robot:

Inserendo un ulteriore sensore di luminosità, si superano i limiti legati alla scelta iniziale del bordo da seguire. Sarà possibile far muovere il robot sopra la linea nera e non più sul bordo. Questa soluzione comporta sicuramente una rielaborazione del software di controllo.

Si potrebbero inserire dei momenti di autocalibrazione del sensore di luminosità in modo da renderlo meno sensibile alla luce esterna che può variare in parti diverse del tracciato o durante la prova.

Page 24: regolazione Pid  con robot lego

PID

umberto lamia

Grazie per l'attenzione

Page 25: regolazione Pid  con robot lego

PID

umberto lamia

Allegati

Page 26: regolazione Pid  con robot lego

PID

umberto lamia

Il codice completo

Page 27: regolazione Pid  con robot lego

PID

umberto lamia