• Non ci sono risultati.

Realizzazione e Controllo di un Veicolo a Guida Autonoma su Banda Magnetica per Applicazioni Industriali

N/A
N/A
Protected

Academic year: 2021

Condividi "Realizzazione e Controllo di un Veicolo a Guida Autonoma su Banda Magnetica per Applicazioni Industriali"

Copied!
82
0
0

Testo completo

(1)

Dipartimento di Ingegneria dell’Informazione

Corso di Laurea in Ingegneria Robotica e dell’Automazione

Realizzazione e Controllo di un Veicolo a Guida

Autonoma su Banda Magnetica per Applicazioni

Industriali

Candidato Relatori

Francesca Damiani Prof.ssa Lucia Pallottino Ing. Emanuele Mazzi

Anno Accademico

2017-2018

(2)
(3)

Indice dei contenuti i

lista figure ii

Abstract 2

Introduzione 4

1 Requisiti Funionali del Sistema ed Obiettivi 9

1.1 Requisiti funzionali . . . 10

1.2 Obiettivi della Tesi . . . 13

2 Design dell’AGV 14 2.1 Sistema di navigazione . . . 16

2.2 Panoramica dei Componenti Impiegati . . . 18

2.2.1 Componenti per la trasmissione del moto . . . 18

2.2.2 Sensoristica . . . 21

2.2.3 Componenti elettrici . . . 27

2.3 Cablaggio . . . 28

3 Modello del processo e Path Following Controller 32 3.1 Modello cinematico del robot . . . 32

3.2 Funzione di trasferimento del sistema . . . 34

3.3 Path-Following Controller . . . 38

3.3.1 Simulazioni . . . 40

4 Design della pista e controllo di alto livello 43 4.1 Logica di controllo . . . 44

4.1.1 Progettazione della pista . . . 51

4.1.2 Controllo di alto livello . . . 52

5 Test su pista e controllore di velocit`a 57 5.1 Test sequenziali con controllo del tempo giro . . . 57

5.2 Performance Stabilizer Controller . . . 60

(4)

6 Conclusioni 63

A Appendice i

(5)

1 Esempi di AGV industriali per il trasporto merci ([2],[3]) . . . 5

2 Esempio AGV per trasporto di bancali [4] . . . 5

3 Esempio AGV per trasporto di container [5] . . . 6

4 Esempio AGV per l’ufficio [6] . . . 6

5 Esempio AGV per le pulizie casalinghe [7] . . . 7

2.1 Configurazione finale dell’AGV . . . 14

2.2 Chassis dell’AGV . . . 15

2.3 Motore utilizzato . . . 19

2.4 Dettaglio dei componenti per la trasmissione del moto . . . 20

2.5 Componenti per la movimentazione . . . 20

2.6 Sensore Magnetico RoboteQ MGS1600 . . . 21

2.7 Alloggiamento del sensore nello chassis . . . 22

2.8 Configurazione dei componenti prinicpali nello chassis . . . 22

2.9 Misura dell’uscita analogica . . . 23

2.10 Gestione della biforcazione nel percorso magnetico . . . 23

2.11 Caratteristiche del MagSensor . . . 23

2.12 Sensori ad ultrasuoni utilizzati . . . 25

2.13 Beam pattern Max-Botix . . . 26

2.14 Configurazione dei sensori . . . 26

2.15 Sensori ad aultrasuoni . . . 26

2.16 Centralina della B&R X90 . . . 27

2.17 Joystick per la modalit`a manuale . . . 28

2.18 Cablaggio di tutto il sistema . . . 30

(6)

2.20 Connessioni del sensore . . . 31

2.21 AGV completato . . . 31

3.1 Modello cinematico . . . 33

3.2 Schema a blocchi del sistema . . . 36

3.3 Lettura del sensore . . . 37

3.4 Anello di controllo per l’inseguimento della banda magnetica . . . 39

3.5 Controllore Path-Following . . . 40

3.6 Schema Simulink per simulare il sistema . . . 41

3.7 Risultati della simulazione: andamento della lettura del sensore . . . 42

3.8 Risultati della simulazione: percorso compiuto dall’AGV . . . 42

4.1 Controllo di alto e basso livello . . . 44

4.2 Ingressi, uscite e parametri della chart di Stateflow . . . 45

4.3 Diagramma degli stati . . . 50

4.4 Progettazione della pista . . . 51

4.5 Diagramma degli stati: Path Following Mode . . . 52

4.6 Diagramma degli stati: Long Path . . . 54

4.7 Diagramma degli stati: Short Path . . . 56

4.8 Foto dell’AGV e della pista durante la realizzazione . . . 56

5.1 Andamento del tempo giro con il veicolo alimentato dalla batteria . . 58

5.2 Foto del veicolo con gli alimentatori . . . 59

5.3 Andamento del tempo giro con alimentazione costante . . . 60

5.4 Andamento della corrente . . . 61

5.5 Andamento tempo giro rispetto al numero di giri con e senza control-lore per la stabilizzazione delle performance . . . 62

(7)

Questo lavoro di tesi `e stato svolto presso l’azienda Pure Power Control di Navac-chio, in cui ci siamo occupati della realizzazione e del controllo di un Automated Guided Vehicle (AGV) che `e stato commissionato da un cliente dell’azienda stessa. Il cliente ha richiesto un sistema per l’acquisizione automatica di immagini di veicoli su piazzale.

Il requisito funzionale pi`u importante `e quello di seguire un perimetro, di grandezza variabile, attorno al veicolo. L’Automated Guided Vehicle (AGV) realizzato fa uso di guida basata su banda magnetica, giudicata essere quella pi`u adatta ad un am-biente esterno soggetto ad ampie variazioni di luce, sporco ed umidit`a.

Al fine di seguire il perimetro identificato con l’utilizzo della banda magnetica `e stato impiegato un sensore magnetico della RoboteQ, in grado di misurare la distanza tra il centro della banda magnetica ed il centro del sensore lungo il suo asse orizzontale. La misura `e stata utilizzata come variabile d’ingresso in un controllore PD atto a controllare la velocit`a differenziale del veicolo.

Oltre al controllore PD `e stato realizzato un controllo ad alto livello sviluppato in Stateflow per la gestione di tutto il veicolo. Dato che il veicolo dovr`a operare in un ambiente dinamico, in cui sono presenti persone, `e stato necessario dotare il vei-colo autonomo di sensori ad ultrasuoni, al fine di consentire l’arresto dell’AGV in caso di ostacoli. Il lavoro svolto include la progettazione elettrica del veicolo, la sua

(8)

realizzazione meccanica ed elettrica ed il controllo, ottenendo un AGV in grado di inseguire perfettamente la banda magnetica e, tramite l’utilizzo di marker, in grado di gestire biforcazioni e raccordi.

(9)

Non esiste una definizione universalmente accettata per il termine Automated Gui-ded Vehicle (AGV). Usualmente `e definito come un veicolo senza guidatore che possiede una forma di alimentazione, di solito a batteria, ed `e inoltre in grado di eseguire delle operazioni automatiche. Principalmente sono veicoli impiegati nel contesto industriale e grazie a vari tipi di sensori sono in grado di operare in totale sicurezza anche in ambienti dinamici, in cui `e presente del personale.

Gli AGV sono usati in un’ampia variet`a di applicazioni includendo industri al fine di svolgere molteplici funzionalit`a, tra le quali: assemblaggio, raccolta, trasporto, immagazzinamento, spostamento e gestione di ordini, operazioni militari, in campo medico (per consegne farmaceutiche) e nelle case (per esempio robot per pulire pa-vimento).

Il primo Automated Guided Veicle `e stato inventato nel 1953, e l’applicazione prin-cipale era quella di trasportare materiali attorno lo stabilimento di produzione o magazzino [1].

(10)

Stato dell’Arte

Le applicazioni pi`u comuni in cui sono impiegati gli AGV sono:

• Trasporto e gestione di merci durante tutto il processo di produzione di mate-riali grezzi o lavorati come per esempio carta, di acciaio, di gomma, plastica e molto altro. In Figura 1 sono presenti due esempi di tali AGV: nell’immagine di sinistra si trova un AGV atto al trasporto di carta dell’azienda DEMATIC mentre a destra un AGV atto al trasporto di acciaio dell’azienda Vollert.

Figura 1: Esempi di AGV industriali per il trasporto merci ([2],[3])

• Trasporto e gestione di bancali. Rappresentano un’applicazione molto popola-re perch`e la movimentazione di bancali sono comuni a strutture di produzione e distribuzione. Un esempio di questo AGV `e in Figura 2, un AGV dell’azien-da Rocla atto appunto al trasporto di pallet.

(11)

• Un’ulteriore applicazione si pu`o trovare in alcuni terminal marittimi per lo spostamento di container. Con il vantaggio di ridurre i costi di manodopera e prestazioni pi`u affidabili.

Figura 3: Esempio AGV per trasporto di container [5]

• Negli ultimi tempi sono stati sviluppati anche AGV per l’ufficio, veicoli auto-nomi da interni che supportano ed agevolano il lavoro umano. Tra questi si trova ad esempio JOBOT sviluppato dall’Eutronica mostrato in Figura 4.R

Figura 4: Esempio AGV per l’ufficio [6]

• Altri robot mobili autonomi che stanno prendendo il campo sono AGV per la casa, il cui scopo `e quello di aiutare nei lavori domestici come dare l’aspira-polvere, come quello mostrato in Figura 5 dell’azienda Dyson.

(12)

Figura 5: Esempio AGV per le pulizie casalinghe [7]

Questi che sono stati elencati sono solo alcune delle applicazioni presenti nello stato dell’arte in cui gli AGV sono utilizzati .

Dati i requisiti e l’applicazione al quanto particolare richiesta dal cliente dell’azienda in cui `e stata svolta questa tesi, e dato che i veicoli in commercio sono progettati per applicazioni specifiche anche molto diverse dalla nostra applicazione, si `e deciso di costruire un AGV ad-hoc a partire da zero, in modo tale da andanre a soddisfare i requisiti funzionali che il cliente ha imposto.

Struttura della Tesi

La tesi `e organizzata come segue:

• nel Capitolo 1 si trova una descrizione dello scopo dell’AGV e l’elenco dei requisiti funzionali che deve soddisfare, ed infine gli obiettivi di questa tesi.

• Nel Capitolo 2 si trova una descrizione dei componenti utilizzati durante la realizzazione del veicolo e la progettazione del cablaggio realizzato.

• Nel Capitolo 3 viene descritto il modello del processo e la strategia di controllo utilizzata per il path-following.

(13)

• Nel Capitolo 4 viene descritta la pista che `e stata progettata al fine di rispettare i requisiti del cliente e la logica di controllo ad alto livello sviluppata per la gestione delle periferiche.

• Nel Capitolo 5 vengono riportati i risultati di test su pista ed il controllore implementato per stabilizzare le performance.

(14)

1

Requisiti Funionali del Sistema ed

Obiettivi

Il veicolo autonomo realizzato durante questa tesi `e stato commisionato all’azienda Pure Power Control (P2C) da una grande azienda che si occupa di vendere e ripa-rare veicoli, sia veicoli commerciali che veicoli ad uso personale, come ad esempio motociclette o automobili.

Lo scopo per cui `e stato richiesto l’AGV `e quello di automatizzare e rendere pi`u dettagliato possibile il processo di registrazione delle macchine portate all’azienda per effettuare un intervento meccanico.

Il veicolo autonomo ha come scopo ultimo quello di fare una scansione della macchina (o moto o veicolo commerciale) scattandone delle foto, senza che nessuna parte del veicolo rimanga non fotografata, e a questo punto creare un database in cui `e presente un elenco delle auto scansionate con associate le rispettive foto. Nel database saranno scritti tutti i dettagli necessari alla registrazione e al riconoscimen-to del veicolo (proprietario, data di arrivo) con associate le tutte le foriconoscimen-to scattate. Grazie alle fotografie sar`a possibile avere una panoramica di eventuali danni alla carrozzeria prima dell’intervento meccanico. Grazie a questo il cliente possieder`a uno schedario, aggiornatosi in modo automatico all’arrivo di ogni nuovo veicolo sul piazzale, con il relativo stato dei danni alla carrozzeria comprovato dalle foto. Que-ste foto forniranno una garanzia per il proprietario dell’officina per provare ai clienti,

(15)

alla ricezione della propria auto dopo l’intervento meccanico, che non sono stati fatti danni durante gli interventi meccanici. Inoltre in uno sviluppo futuro si pu`o pensare di utilizzare le foto per una ricostruzione 3D del veicolo e per una diagnosi automa-tica.

L’obbiettivo primario dell’AGV da realizzare `e quello di percorrere un perimetro attorno al veicolo, parcheggiato su piazzale, e di scattare tutte le foto possibili, prima che il veicolo venga portato in officina, senza lasciare parti dell’auto non fo-tografate e prestando particolare attenzione agli angoli del veicolo (in quanto parti particolarmente soggette a danneggiamenti).

1.1

Requisiti funzionali

I requisiti funzionali che il veicolo a guida autonoma deve soddisfare sono derivanti dai requisiti funzionali espressamente richiesti dal cliente e dai requisiti che un AGV deve soddisfare per poter essere messo in commercio e venduto. Adesso viene pre-sentata una panoramica di quelli di maggior rilievo da soddisfare:

1. Tracking di un perimetro: il veicolo dove effettuare un giro intorno al veico-lo da fotografare posizionato in un’apposita area di parcheggio. Per fare questo vi sono due possibili opzioni: la prima tramite un laser scanner 3D, effettuando una mappatura dell’ambiente e programmare il veicolo perch`e compia il giro intorno all’auto, la seconda consiste invece nel disegnare un perimetro a terra e programmare il robot affinch`e segua tale perimetro. Per una questione di semplicit`a e, soprattuto di robustezza `e stato scelta la seconda opzione.

(a) Predisposizione ad operare all’esterno: in quanto il veicolo da fotografare sar`a portato in un piazzale e in questo dove lavorare il robot. L’AGV deve essere quindi realizzato con materiali resistenti all’acqua. Inoltre anche il perimetro dovre essere robusto a condizioni ambientali che possono

(16)

variare molto( come ad esempio diverse condizioni di luce, di umidit`a e di sporco).

(b) Predisposizione a perimetri variabili: difatti il perimetro deve essere rea-lizzato in modo da avere perimetri concentrici ma di grandezza diversa cos`ı da essere predisposto alle possibili dimensioni che il veicolo da foto-grafare pu`o avere. Quindi anche la logica di controllo deve essere predi-sposta alla gestione di diversi perimetri. Il perimetro che dovr`a percorre-re il veicolo verr`a scelto dall’utente prima di iniziare il giro. I perimetri inoltre dovranno essere approssimazioni rettangolari.

(c) Gestione di biforcazioni e raccordi: la pista, come detto nel punto pre-cedente, sar`a composta da perimetri concentrici. L’AGV dovr`a essere quindi in grado di gestire le biforcazioni ed i raccordi della pista senza sbandamenti.

(d) Scatti di foto durante il percorso: ci dovranno essere una o pi`u fotocamere per scattare foto al veicolo durante il giro del perimetro. La frequenza degli scatti, il numero di fotocamere e l’altezza a cui dovranno essere posizionate saranno da valutarsi sperimentalmente. Non ci dovranno, inoltre, essere parti del veicolo non fotografate. Una volta terminato il giro le foto dovranno essere inviate in rete tramite un backup al fine di comporre il database.

(e) Maggior numero di foto in vicinanza degli angoli: come detto in prece-denza, il cliente ha richiesto una particolare attenzione agli angoli del veicolo in quanto punti soggetti in modo particolare a piccoli danni.

2. Presenza di un safety system: La presenza di un safety system `e necessaria in quanto il veicolo dovr`a operare in un ambiente dinamico in cui saranno presenti persone e quindi dovr`a essere in grado di riconoscere un ostacolo e fermarsi fino a che l’ostacolo non `e pi`u presente. Inoltre, affinch`e possa assere messo in commercio necessita di un fungo di emergenza, che in caso di pericolo

(17)

(ad esempio, nel remoto caso in cui la centralina non rispondesse pi`u) l’utente lo possa premere e staccare immediatamente i motori dall’alimentazione.

3. Sistema di luci lampeggianti: il veicolo deve essere provvisto di luci lam-peggianti rossa,gialla e verde che segnalino lo stato dell’AGV. I possibili stati in cui pu essere l’AGV sono: AGV pronto (luce verde), in movimento (luce gialla), problema al veicolo o batterie scariche (luce rossa).

4. Controllo dello stato della batteria: un controllo dello stato della batteria `

e necessario in quanto deve essere garantito un livello minimo di batteria per cui sia possibile per l’AGV completare il percorso: quindi di non scaricarsi, e di conseguenza fermarsi, mentre l’AGV sta percorrendo il perimetro.

5. Stazione di ricarica: La stazione di ricarica (docking station) deve essere quindi posizionata nel punto di partenza del perimetro in modo che se il livello della batteria `e troppo basso, l’AGV non partir per percorrere il perimentro e potr`a essere messo in ricarica dall’utente in modo semplice e veloce.

6. Tasto di accensione: L’AGV dovr`a essere fornito di una chiave con due possibili stati: uno che permette la ricarica delle batterie, uno che collega le batterie all’intero circuito accendendo la centralina di controllo. L’AGV sar`a inoltre previsto di un ulteriore tasto ON-OFF tramite cui l’utente potr`a attivare il veicolo.

7. Presenza di un joystick: L’AGV dovr`a essere fornito di un joystick che possa permettere la guida manuale del veicolo autonomo fuori dal perimetro. Il joystick deve avere un livello di priorit`a maggiore rispetto all’inseguimento della traccia, in modo che l’utente,se ce ne fosse bisogno, possa essere in grado di controllare il robot anche mentre percorre il perimetro e sta scattando le fotografie all’auto.

(18)

1.2

Obiettivi della Tesi

Gli obbiettivi di questa tesi sono la realizzazione meccanica (in quanto il progetto meccanico `e stato realizzato da un Ing. meccanico), la scelta della guida da utilizzare, il progetto elettrico (che comprende la scelta dei componenti e la realizzazione del cablaggio del veicolo) e il controllo del veicolo.

Per il controllo del veicolo serve sia un controllo di basso livello che si occupi di inseguire la banda magnetica, che un controllo di alto livello che si occupi di gestire tutte le comunicazioni tra i sensori e il comportamento del veicolo in ogni possibile situazione, nonch´e un controllo della velocit`a di avanzamento durante il percorso.

La logica di controllo `e stata realizzata implementando un diagramma degli stati

sul tulboox di Matlab Stateflow in sinergia con il toolbox SimulinkR .R

Durante questo lavoro di tesi `e stato quindi realizzato un AGV completamente funzio-nante a partire da zero. Unico requisito, di cui non ci siamo occupati in questo lavoro di tesi, `e quello riguardante le fotocamere e la creazione del database che sar`a sviluppato in futuro, prima della consegna del robot al cliente.

L’ AGV realizzato `e stato programmato in modo da poter essere ampliato con ulteriori funzionalit`a. Tramite piccole modifiche del codice pu`o essere predisposto a lavorare ad esempio in un’industria atto al carico/scarico delle merci seguendo la banda.

(19)

2

Design dell’AGV

Un disegno del progetto dell’AGV `e visibile in Figura 2.1.

Figura 2.1: Configurazione finale dell’AGV

Al centro dell’AGV vi `e un’asta in cui sono inserite le fotocamere (due fotocamere in quanto da uno studio preliminare sembrano essere il numero adatto, ma la verifica di tale numero sar`a da valutarsi tramite prove empiriche) e le luci lampeggianti indicative dello stato dell’AGV.

(20)

Tutta la progettazione e la realizzazione dell’AGV `e stata decisa al fine di rispondere a tutti i requisiti funzionali richiesti dal cliente, con l’obiettivo di renderlo il pi`u robusto possibile. Inolre, si `e cercato di non aggiungere componenti che non siano strettamen-te legati alla realizzazione dei requisiti funzionali. L’aggiunta infatti di tali componenti porterebbe a una complicazione del sistema nonch´e ad una diminuzione di affidabilit`a del veicolo (in quanto si aggiungono parti, non necessarie, che potrebbero rompersi) ed inoltre porterebbero anche ad un dispendio economico superfluo.

Il modello utilizzato per la realizzazione dell’AGV `e un differential drive, ossia uno chassis fornito di due ruote motrici comandate separatamente e due ruote castor necessarie per la stabilizzazione. In Figura 2.2 vi `e una foto dello chassis nelle prime fasi della costruzione. Lo chassis `e composto da un telaio in acciaio spesso 3mm, adatto a sopportare carichi elevati (infatti solo il pacco batterie pesa circa 40Kg) e anche molto robusto dal punto di vista meccanico. Le ruote anteriori sono le castor, mentre le posteriori sono quelle motrici.

(21)

2.1

Sistema di navigazione

In letteratura esistono diversi sistemi di navigazione implementati con successo negli AGV [8], [10], ognuno dei quali presenta pro e contro per le diverse applicazioni. I pi`u importanti sono:

• Guida a filo: in cui si dispone un filo percorso da corrente immediatamente sotto la superficie del pavimento.

Pro: Una coppia di solenoidi disposti sul veicolo sono in grado di rilevare la posizione del filo ed tramite una logica di controllo relativamente semplice si pu`o controllare lo sterzo.

Contro: La modifica del percorso `e molto onerosa e non adatto ad ambienti esterni.

• Banda colorata: Realizzata per mezzo di vernici o nastri colorati.

Pro: Modifiche del percorso semplici e controllo ancora semplice tramite un sensore ottico.

Contro: Adatta ad ambienti puliti ed interni in quanto sono presenti molte variazioni di luce che potrebbero portare ad una lettura errata da parte del sensore.

• Banda magnetica: La banda magnetica pu`o anche essere posta sotto al pavimento o meno. Sfruttando le diverse polarit`a della banda `e permesso l’utilizzo e l’indivi-duazione di marker, utili per lo svilupoo di una logica di controllo di alto livello. Pro: Si ha una logica di controllo relativamente semplice, il percorso `e modificabile semplicemente ed inoltre, `e una tipologia di navigazione che si presta bene ad am-bienti esterni in quanto non risente di variazioni come la luce, l’umidit`a e lo sporco. Contro: Necessita della banda magnetica per indicare il percorso da seguire e non

(22)

pu`o essere utilizzata in zone dove sono presenti ulteriori campi magnetici che possono disturbare la guida.

• Guida odometrica: Guida ottenuta tramite dei sensori a laser e attraverso dei catarifrangenti.

Pro: Si utilizza la triangolazione al fine di conoscere la posizione dell’AGV, riuscendo a guidarlo lungo traiettorie decise a priori.

Contro: Potrebbero verificarsi errori sulla stima della posizione dell’AGV e questo potrebbe portare a comportamenti errati. Inoltre, questa tipologia di guida risente delle variazioni di luce e per questo non `e adatta all’utilizzo in ambienti esterni.

• GPS: Si utilizza il GPS per conoscere la posizione dell’AGV con elevata precisione e in seguito riuscire a guidarlo.

Pro: Si tratta di una guida preciso e non ha bisogno dell’individuazione di percorsi tramite bande, rendendo il veicolo in grado di compiere percorsi diversi andando ad agire sulla logica di controllo.

Contro: Questa tipologia `e ovviamente utilizzabile solo all’esterno, e come per la guida odometrica, una stima non esatta della posizione potrebbe indurre il veicolo ad un comportamento indesiderato.

Considerando i requisiti funzionali descritti in 1.1, si `e scelto di utilizzare un sistema di guida con banda magnetica.

Con questa guida, adatta ad ambienti esterni come quello su cui dovr`a operare l’AGV, `

e possibile comporre diversi percorsi, richiesti nei requisiti funzionali, di modificarli se necessario aggiungendo ad esempio ulteriori percorsi. Inoltre, con l’utilizzo dei marker si

(23)

pu`o programmare l’AGV perch`e segua un percorso invece che l’altro nonch´e andare ad individuare tratti curvi facendo s`ı che in quei tratti la velocit`a di avanzamento del veicolo sia inferiore rispetto a quella nei tratti rettilinei.

2.2

Panoramica dei Componenti Impiegati

Di seguito si riporta una panoramica di tutti i componenti che sono stati necessari alla realizzazione dell’AGV e alla sua programmazione.

2.2.1

Componenti per la trasmissione del moto

I motori che sono stati impiegati sono due motori DC con spazzole, in Figura 2.3 viene mostrata la foto di uno dei due. Le specifiche di tale motore sono:

• Model: LY1080

• Rate speed: 2800RPM

• Voltage: 36VDC

• Output:800W

Tipicamente questo tipo di motore viene utilizzato su scooter elettrici e sono stati difatti trovati nel mecato dei componenti di ricambio per scooter.

La scelta di questa tipologia di motore `e dovuta al fatto che si sono rilevati essere il giusto trade-off tra costo e performance.

(24)

Figura 2.3: Motore utilizzato

Il motore come si vede in Figura 2.3 ha due ingressi: il cavo nero che rappresenta il GROUND (GND) ed il cavo rosso che rappresenta l’alimentazione (VCC). La velocit`a di rotazione del motore dipende dal segnale in ingresso che deve essere un segnale PWM (Pulse-Width Modulation). Quando il duty cycle (durata di un impulso in rapporto al periodo tra due impulsi successivi) `e pari a zero allora la potenza trasferita `e nulla, quando `

e il 100% allora la potenza `e massima. La DAC in uscita dalla centralina, di cui si parler`a pi`u avanti, fornisce un segnale analogico in tensione. La trasformazione di tale segnale a bassa tensione in un segnale PWM di potenza `e affidato ad un driver, uno per ogni motore. I driver utilizzati nell’AGV sono visibili sul lato sinistro della Figura 2.5. Inoltre, dato che una sola direzione di avanzamento `e sufficiente per soddisfare i requisiti funzionali descritti nel primo capitolo, i driver adottati sono in grado di generare unicamente tensioni positive da applicare ai motori.

Per la trasmissione meccanica sono state utilizzate due catene di tipo Galle, costituite da anelli articolati e scomponibili in grado di flettere su un solo asse, di solito utilizzate nelle biciclette. Le catene vengono mantenute in tensione da due tendicatene, in Figura 2.4 viene mostrato in dettaglio la configurazione utilizzata. La catena collega direttamente

(25)

la ruota motrice con il pignone del motore.

Figura 2.4: Dettaglio dei componenti per la trasmissione del moto

Questa configurazione, senza l’utilizzo di riduttori, rappresenta il giusto compromesso tra semplicit`a e robustezza.

Per quanto riguarda l’alimentazione dell’AGV `e stato utilizzato un pacco batterie composto da tre batterie al piombo da 12V in serie. In questo modo i driver dei motori vengono alimentati a 36V mentre la centralina di controllo, ed altri componenti che saranno illustrati nel prossimo paragrafo, viene alimentata a 24V.

(26)

In Figura 2.5 vi `e un riassunto di tutti componenti necessari per la movimentazione dell’AGV: driver, motori, batterie, componenti delle ruote e caricabatterie.

2.2.2

Sensoristica

Come detto nel paragrafo 2.1, si `e scelto di controllare l’AGV per mezzo di una banda magnetica incollata al pavimento.

Il sensore magnetico [14] scelto per rilevare la banda `e un sensore della RoboteQ, il modello MGS1600, mostrato in Figura 2.6. Il sensore `e capace di rilevare e comunicare

Figura 2.6: Sensore Magnetico RoboteQ MGS1600

la posizione di un campo magnetico lungo il suo asse orizzontale. Il sensore utilizza un’avanzata elaborazione del segnale per misurare con precisione la sua distanza laterale dal centro della pista, come si vede in Figura 2.9, con una risoluzione di 1mm. Il range di misura `e di 160mm, e corrisponde difatti anche alla lunghezza del suo asse orizzontale. La banda magnetica deve avere una cert polarit`a sul lato in superficie la polarit`a opposta nel lato adesivo. Nel nostro caso `e stata utilizzata una banda magnetica avente polarit`a

(27)

Nord sulla parte adesiva rivolta verso il terreno e una polarit`a Sud sulla parte rivolta verso l’alto.

I marker invece sono costituiti da polarit`a opposte: il lato con l’adesivo di polarit`a Sud ed il lato opposto di polarit`a Nord. La banda magnetica utilizzata `e larga 25mm.

Secondo le specifiche sul datasheet, il sensore si deve trovare, per operare in configu-razione ottimale, a 50mm di altezza da terra. Per questo, nello chassis dell’AGV, come si vede in Figura 2.7, `e stato inserito all’interno di un alloggiamento dello chassis costruito ad-hoc. Inoltre, come si vede in Figura 2.8, il centro del sensore si trova anche sull’asse longitudinale dell’AGV.

Figura 2.7: Alloggiamento del sensore nello chassis

(28)

Di seguito verranno indicate le caratteristiche pi`u importanti del sensore magnetico andando a descrivere il PIN-OUT del sensore (ad ogni PIN viene associato il nome della variabile utilizzata in Simulink):

• Un output digitale: ”Track detected ” che rileva la presenza o meno della banda magnetica;

• Un output analogico: ”MagSensor ” il quale fornisce la distanza rispetto al centro della banda magnetica lungo il suo asse orizzontale. La misura viene espressa in tensione: vale 1.50V quando il nastro `e centrato, vale 0 e 3V quando il nastro `e da uno o dall’altro lato del sensore;

Figura 2.9: Misura dell’uscita

analogica

Figura 2.10: Gestione della

bifor-cazione nel percorso magnetico

Figura 2.11: Caratteristiche del MagSensor

• Due output digitali: ”Left Marker ” e ”Right Marker ” che sono atti al rilevamento dei marker di polarit`a inversa rispetto alla banda che si trovano a destra o a sinistra della pista principale;

• Due input digitali: ”Fork Left ” e ”Fork Right ” che permettono di scegliere se l’out-put analogico deve fornire la distanza rispetto alla banda di sinistra o rispetto a

(29)

quella di destra. Questa particolare funzione `e permessa da un controllore interno al sensore, il quale assume sempre che siano presenti due piste, come si vede in Figu-ra 2.10 (la pista destFigu-ra R e la pista sinistFigu-ra L). Quando `e presente una sola pista, il sensore assume che siano due piste sovrapposte. In alternativa, `e in grado di fornire la distanza rispetto all’una o all’altra a seconda di come vengono impostati i due PIN di input, come riportato in Tabella 2.1;

• Il sensore `e provvisto anche di un’uscita in PWM a 250Hz o 500Hz e di un CAN fino a 1Mbit/s;

• Ampia gamma di funzionamento da 4,5 V a 30 V CC;

• Ambiente operativo che va dai -40 ai +85◦C;

• IP64 e resistente agli spruzzi d’acqua.

Fork Left Fork Right Analog Output

Low Low No change

High Low Left Track Position

Low High Right Track Position

High High Left or Right Track Position

Tabella 2.1

Per quanto riguarda la parte di visualizzazione degli ostacoli sono stati utilizzati dei sensori ad ultrasuoni [15] della Max-Botix: i Max-Sonar R MB7467, mostrati in Figura

(30)

2.12.

Figura 2.12: Sensori ad ultrasuoni utilizzati

I sensori ad ultrasuoni sono sensori per il rilevamento di oggetti in aria (senza il bisogno di un contatto) e sensori di distanza. I sensori ad ultrasuoni utilizzano il suono ad alta frequenza per rilevare e localizzare gli oggetti nell’ambiente, misurando il tempo di volo del suono che `e stato trasmesso e poi riflesso dall’oggetto. Basandosi sul tempo di volo viene quindi calcolata la distanza che viene data in uscita, in questo caso, tramite un’uscita in corrente.

Questi sensori sono certificati IP67 e quindi adatti all’utilizzo in ambiente esterno, pre-sentano una risoluzione di circa 1.6mm e riescono a misurare una distanza da 0.5m fino a 5m. Il sensore `e provvisto di un imbuto, come si vede in Figura 2.13, il quale permette al beam pattern di avere unottima direzionalit come si pu vedere dai grafici che sono stati riportati sul datasheet del sensore e mostrati in Figura 2.13. I beam pattern si riferiscono a due diversi diametri del tassello e per quanto riguarda il rilevamento di una persona il beam pattern cade tra le due caratteristiche.

Data l’elevata direzionalit`a del raggio ed il target dell’AGV si `e deciso di utilizzare due sensori: uno posizionato frontalmente in modo da individuare oggetti e persone che si

(31)

Figura 2.13: Beam pattern Max-Botix Figura 2.14: Configurazione dei sensori

Figura 2.15: Sensori ad aultrasuoni

trovano esattamente davanti, l’altro posizionato in maniera da individuare l’ostacolo che si trovi immediatamente dopo la curva, altrimenti di difficile rilevamento, come si vede in Figura 2.14.

Questi sensori hanno un filtro che gli fa avere un’elevata reiezione del rumore e possiedo-no una compensazione interna della velocit`a del suono al variare della temperatura. Per quanto riguarda le connessioni sono provvisti del seguente Pin Out:

• Un Pin per il ground;

• Un Pin per la misura della distanza tramite un’uscita analogica in corrente: 4-20mA;

• Un Pin di alimentazione

Grazie alla presenza di un filtro interno, pi`u sensori ad ultrasuoni possono essere utilizzati nelle stesse posizioni. Infatti il filtro anti-rumore interno `e in grado di filtrare il rumore ultrasonico di altri sensori con interferenze minime. L’errore infatti rientra in ±1cm.

(32)

2.2.3

Componenti elettrici

L’elettronica di controllo `e stata affidata ad una centralina fornita dalla B&R, preci-samente il modello X90CP174 [16], munita di un processore ARM e di 48 porte I/O. Il software di programmazione della centralina `e Automation StudioTM e si integra con gli ambienti di modellazione Simulink R e Stateflow R, consentendo di progettare e

implemen-tare un sistema di controllo sul PLC della B&R. Con Simulink, `e possibile modellare e simulare un controllore e generare il codice ANSI C o il testo strutturato IEC 61131 per l’importazione in Automation Studio. La centralina `e mostrata in Figura 2.16

Figura 2.16: Centralina della B&R X90

Per la movimentazione del robot in modalit`a manuale `e impiegato un joystick, mostrato in Figura 2.17. Dei quattro switch presenti nel Joystick, sono stati utilizzati solo i tre corrispondenti alle direzioni permesse ai motori ovvero avanti, destra, sinistra.

Ulteriori componenti montati sull’AGV per completarne le funzionalit`a sono:

• un pacco batterie costituito da 3 batterie da 12V in serie;

• un fungo di emergenza;

• un Rel´e a due vie che permette di staccare l’alimentazione ai motori quando il fungo di emergenza viene premuto;

(33)

Figura 2.17: Joystick per la modalit`a manuale

• la chiave di accensione a due stati: nel primo stato permette la ricarica delle batterie, nel secondo le batterie vengono collegate a tutto il circuito e lo alimentano;

• Tasto di Start dell’AGV.

Al fine di migliorare l’affidabilit`a e ridurre i costi, non `e previsto l’utilizzo di encoder, o altri tipi di trasduttori in grado di misurare la velocit`a, in quanto si `e preferito prediligere per l’utilizzo dei componenti strettamente necessari a soddisfare le specifiche indicate dal cliente, e tra queste non sono state date specifiche sui tempi o sulla velocit`a del veicolo.

2.3

Cablaggio

Tutti i componenti descritti sono stati collegati seguendo il progetto del cablaggio mostrato in Figura 2.18.

In particolare, in Figura 2.19 e 2.20 sono mostrati i pin out della centralina e del sensore. Per quanto riguarda la centralina ha come ingrassi, oltre all’alimentazione da 24V e il GND:

(34)

• 4 pin in ingresso collegati al sensore magnetico, ovvero il Track Detect, ingresso digitale per rilevare la banda magnetica, l’ Analog Track che fornisce la misura della distanza in V, i Left Marker e Right Marker, ingressi digitali che rilevano la presenza di marker.

• 2 pin di ingresso analogici in corrente provenienti dai sensori ad ultrasuoni

• 3 pin di ingresso digitali collegati al joystick

• 1 pin di ingresso digitale collegato al mushroom

• 1 pin di ingresso digitale collegato al tasto di accensione

• 3 pin di output analogici in tensione verso le centraline dei motori

• 3 pin di output digitali verso le luci

• 1 pin di output digitale verso il rel´e che va a staccare le centraline dei motori dall’alimentazione

• 2 pin di output digitali verso il sensore, Fork Left e Fork Right, che come descrit-to nella sezione 2.2.2 saranno utilizzati per scegliere quale distanza deve fornire il sensore.

(35)
(36)

Figura 2.19: Connessioni della centralina

Figura 2.20: Connessioni del sensore

Terminata la costruzione meccanica e realizzate le connessioni elettriche il prototipo si mostra come in Figura 2.21.

(37)

3

Modello del processo e Path

Following Controller

In questa sezione viene descritto il modello del processo ed il controllore sviluppato per il path-following.

3.1

Modello cinematico del robot

Nel modello cinematico ([17], [18]) del robot si `e assunta l’ipotesi del vincolo di non slitta-mento. Il vincolo `e di tipo anolonomo, ossia non riduce lo spazio della variabili di configu-razioni, e si traduce per un robot mobile in una restrizione dei possibili valori di modulo e direzione della velocit`a e, di conseguenza, delle possibili traiettorie rendendolo per`o in grado di raggiungere, compatibilmente con il vincolo, qualsiasi posizione e orientazione.

Siano q = [x, y, θ]T le variabili di configurazione: (x, y) posizione del centro

dell’inte-rasse e θ l’orientazione come mostrato in Figura 3.1. Dato il vincolo di non strisciamento si ha

(38)

Figura 3.1: Modello cinematico        ˙ x − Rωcos(θ) = 0 ˙ y − Rωsin(θ) = 0 che scritto in forma Pfaffiana,

A(q) ˙q =  sin(θ) − cos(θ) 0          ˙ x ˙ y ˙ θ         = 0

Si nota che la direzione lungo l’interasse delle ruote `e interdetta. Il rango della matrice A(q) `e 1, quindi lo spazio nullo ha dimensione 2, ovvero esistono 2 quasi velocit`a:

˙ q = S(q)υ =         cos(θ) 0 sin(θ) 0 0 1             υ1 υ2    

υ1 diretta perpendicolarmente e rappresenta la velocit`a di avanzamento del veicolo v, υ2

(39)

Le equazioni che rappresentano il processo da implementare sono quindi: ˙ q = S(q)υ =         cos(θ) sin(θ) 0         v +         0 0 1         ω

A questo punto si ottengono le variabili di stato x, y, θ integrando.

Inoltre dall’equazione di vede anche che la posizione (x, y) e l’orientazione θ sono con-trollate indipendentemente. La posizione viene difatti controllata dalla velocit`a di avan-zamento, mentre l’orientazione del veicolo `e controllata dalla velocit`a angolare. In questo caso, affinch´e si abbia path-following, la velocit`a di avanzamento pu`o essere mantenuta costante, mentre la variabile da controllare `e la velocit`a differenziale. Si deve quindi agire sull’orientazione del veicolo in modo da mantenerlo sulla banda.

3.2

Funzione di trasferimento del sistema

Poich`e si ha un modello a guida differenziale ([19], [20]) la velocit`a di modo comune (ossia quella di avanzamento) e la velocit`a angolare sono legate alle velocit`a di rotazione delle ruote nel seguente modo:

    v ω     =     R 2 R 2 R L − R L         ˙ θR ˙ θL     (3.1)

Quindi, andando ad invertire la matrice, si possono ricavare le velocit`a di rotazione delle ruote, destra e sinistra, date le velocit`a, angolare e di avanzamento, di riferimento:

    ˙ θR ˙ θL     = 1 R     1 L2 1 −L2         v ω     (3.2)

(40)

Al fine di inseguire la banda magnetica `e necessario che il controllore controlli la velocit`a di rotazione, mentre quella di avanzamento pu`o rimanere costante.

In uscita dalla catena di controllo si hanno due riferimenti di tensione, UR e UL che

vengono applicati alla DAC in modo da generare i due comandi analogici per i driver moto-ri. Questi due valori saranno per semplicit`a chiamati ”Comando in tensione” o ”Comando in velocit`a” in quanto la velocit`a di rotazione dei motori a regime `e legato al comando in tensione secondo una certa legge che dipende dalle caratteristiche del motore e da altre non linearit`a presenti nel sistema. Nel range di funzionamento dei motori `e possibile trascurare le non linearit`a, considerando quindi una correlazione lineare fra le due: Ui∝ ˙θi.

Il controllore di basso livello, si deve occupare di fornire una tensione differenziale u = UR− UL da applicare ai motori, che, nell’ipotesi di correlazione lineare precedentemente

esposta, corrisponde ad una velocit`a differenziale tale da tenere il veicolo sulla banda. A questo punto, data la tensione differenziale di riferimento e una tensione di modo comune (che sar`a decisa da un controllore di alto livello, descritto nel Capitolo 4) si calcolano le tensioni URe ULdi riferimento da applicare alla DAC tramite l’equazione 3.2.

Queste tensioni di riferimento alle ruote, come detto in precedenza faranno avere alle ruote le velocit`a di rotazione ˙θL e ˙θR secondo una legge di proporzionalit`a: θ = Ku.˙

Il valore di K pu`o essere calcolato andando a calcolare il rapporto tra il riferimento in tensione e la velocit`a angolare delle ruote.

Secondo le prove sperimentali, la velocit`a del robot applicata alla DAC un riferimento ad entrambi i motori di 600 `e di 0.4m/s (calcolati nella condizione particolare in cui i motori erano stati appena accesi). Noto il raggio delle ruote di 0.27m, il coefficiente di

(41)

proporzionalit`a vale: 0.0037.

Questo coefficiente include il prercorso del segnale dalla DAC alle ruote, includendo la dinamica dei motori e per questo il coefficiente di proporzionalit`a non `e costante ma dipendente dalla temperatura e altre non linearit`a.

Il diagramma a blocchi del sistema diviene quindi quello in Figura 3.2.

Figura 3.2: Schema a blocchi del sistema

Per il calcolo della funzione di trasferimento del sistema si deve andare a derivare la misura data dal sensore in funzione dell’ingresso, ovvero rispetto al comando di velocit`a differenziale u = UR− UL. Si vuole quindi ricavare

G(s) = d(s) u(s)

Si deve quindi ricavare la misura del sensore d in funzione dell’orientazione del veicolo. In riferimento alla Figura 3.3, si assumono due sistemi di riferimento: il primo x, y solidale con il veicolo ed il secondo X, Y solidale con la banda. Si ipotizza inoltre che il robot segua correttamente la traccia, e le variazioni siano infinitesime.

Secondo queste assunzioni la misura che deve essere presa in considerazione `e quella lungo l’asse delle Y che verr`a indicata con dy. Inoltre dy pu`o essere calcolata come la

(42)

Figura 3.3: Lettura del sensore

sovrapposizione di due effetti: una componente dTy dovuta alla sola velocit`a di traslazione v e l’altra componente dRy data dalla sola velocit`a di rotazione ˙θ.

La componente dovuta solo alla velocit`a di avanzamento (v=costante)`e:

dTy(t) = Z

vydt = v

Z

sin(θ)dt

linearizzando si ha: dTy(t) = vR θdt. Trasformando con Laplace diviene:

dTy(s) = v1 sθ(s)

Mentre per quanto riguarda la componente effetto della sola velocit`a di rotazione (quindi il robot compie un arco infinitesimo di circonferenza con raggio R):

dRy(t) = 2Rsin(α)sin(90 − θ)

con α angolo coperto dalla rotazione del veicolo. Linearizzando e sostituendo ad α =R ˙ θdt si ha: dRy(t) = 2RRθdt. Trasformando si ha quindi:˙

dRy = 2R1 sθ˙

(43)

A questo punto si ha che ˙θ = ω. Dall’equazione in 3.2 si ricava che ω = RL( ˙θR− ˙θL).

Essendo, come detto in precedenza, ˙θR− ˙θL= Ku = K(UR− UL) si ha:

dy(s) = v 1 s2 KR L u(s) + 2R 1 s KR L u(s) e quindi si ricava la funzione di trasferimento:

G(s) = d(s) u(s) = KR L  v 1 s2 + 2R 1 s 

3.3

Path-Following Controller

L’uscita analogica del sensore magnetico `e compresa tra gli 0 e i 3V, e quando si trova al centro della banda magnetica vale 1.5V. Questo valore `e quindi il riferimento da seguire per portare il veicolo al centro della banda.

Il segnale in uscita dal sensore passa attraverso un ADC avente un fattore di conversio-ne di 3276710 . Per poter confrontare il valore in uscita dall’ADC con il valore di riferimento 1.5V si moltiplica per l’inverso del fattore di conversione, come mostrato in Figura 3.4. Si nota come all’interno del cerchio tratteggiato ci sia tutto ci`o che deve essere implementato nel modello che verr`a poi programmato all’interno della centralina.

La differenza tra il valore di riferimento e il valore ottenuto rappresenta quindi l’errore, ovvero la variabile da controllare.

Il controllore che in figura `e rappresentato dal blocco ”Path-Following Controller” `e implementato in una Simulink function all’interno della chart di Stateflow. L’implemen-tazione del controllore Path-Following comprende il controllore PD ed il blocco chiamato

(44)

Figura 3.4: Anello di controllo per l’inseguimento della banda magnetica

”Calcolo di UR e UL” (raffigurato precedentemente in Figura 3.2) e viene raffigurato in

Figura 3.5.

La funzione che implementa il controllore pu`o essere richiamata all’interno di uno stato andando a specificare due ingressi: error, ovvero il valore del errore calcolato in base alla lettura del sensore, e Vel forward, ovvero il riferimento di velocit`a di avanzamento desiderato in quel momento. Quest’ultimo verr`a specificato da un controllore di alto livello.

Il controllore realizzato viene richiamato all’interno di uno stato andando a scrivere nello stato stesso [UL, UR] = P d(error, V el F orward).

La realizzazione tempo discreta del PD `e ottenuta aggiungendo un polo ad alta frequen-za, in modo da avere una risposta limitata alle alte frequenze, ed utilizzando la formula di discretizzazione di Eulero in avanti. Quindi la formula del PD utilizzato `e:

P D(z) = KP + KD

N

1 +N ∗Sample T imez−1

Con N = 100 e Sample T ime = 0.01s. Per quanto riguarda i guadagni questi sono stati inizialmente tarati utilizzando le regole di Ziegler-Nichols e aggiustati poi tramite prove empiriche e valgono KD = 100, KP = 360.

(45)

Figura 3.5: Controllore Path-Following

3.3.1

Simulazioni

Prima di programmare la centralina, con il modello del controllore implementato, sono state effettuate delle simulazioni.

`

E stata implementata una funzione che simula il comportamento del sensore assumendo che la banda si trovi, senza perdere in generalit`a, sulla retta delle x.

I motori delle ruote hanno la propria dinamica che non `e stata presa in considearazione nello schema a blocchi precedente, dove il controllore infatti agiva direttamente sulla velo-cit`a. Nella realt`a ci`o `e impossibile. La centralina fornisce un segnale elettrico al driver dei motori dando in uscita un segnale PWM di potenza che fa girare il motore con la velocti`a di rotazione corrispondente (in relazione con il duty cycle). La relazione che lega il duty cycle e la velocit`a `e non lineare ma stazionaria. Tuttavia, ci sar`a un ritardo tra il momen-to in cui viene damomen-to il riferimenmomen-to in tensione al momomen-tore e quando il momomen-tore ha raggiunmomen-to la velocit`a corrispondente e pu`o essere modellato come una funzione di trasferimento del primo ordine ([21], [22]) come segue:

(46)

M (s) = 1 τ s + 1

La costante di tempo utilizzata nelle simulazioni `e di 0.01s. Lo schema Simulink implementato `e mostrato in Figura 3.6.

Figura 3.6: Schema Simulink per simulare il sistema

I risultati del controllore sono mostrati in Figura 3.7, in cui si nota che la distanza diminuisce ed in 1.5s il veicolo si `e portato sulla banda, come dimostra anche la Figura 3.8 in cui viene mostrato il percorso dell’AGV nel piano (x,y).

(47)

Figura 3.7: Risultati della simulazione: andamento della lettura del sensore

(48)

4

Design della pista e controllo di alto

livello

Per realizzare la logica di controllo dell’AGV `e stato utilizzato il toolbox di Matlab Statflow in sinergia con il toolbox Simulink. Con Stateflow `e possibile modellare la logica del sistema utilizzando macchine a stati, modellando le modalit`a operative del sistema come stati e rappresentando la logica per passare da una modalit`a all’altra con l’uso di transizioni e giunzioni.

La logica di controllo ad alto livello si occupa della supervisione di tutti i componenti del veicolo (come le luci, segnali provenienti dai mushroom, e dai sensori ad ultrasuoni) e si occupa soprattutto, come si vede dalla Figura 4.1, di decidere la velocit`a di avanzamento del veicolo e di darla come riferimento al controllore di basso livello che invece si occupa di controllare i motori. Questa logica `e stata implementata in Stateflow.

Grazie al ”B&R Automation Studio Toolbox for Simulink” `e possibile generare auto-maticamente il codice del modello sviluppato su Stateflow e Simulink ed importarlo sulla centralina B&R.

(49)

Figura 4.1: Controllo di alto e basso livello

4.1

Logica di controllo

Grazie al toolbox `e possibile quindi inserire nel modello i blocchi della B&R che rap-presentano gli ingressi nel sistema di controllo, mostrati in Figura 4.2 e rappresentati dal blocco ”B&R IN”, le uscite, rappresentate da ”B&R OUT, ed i parametri, ”B&R PARAMETER”.

Come ingressi alla chart di Stateflow (seguendo l’ordine della Figura 4.2):

• LOCAL INT MagSensor : lettura dell’uscita analogica in tensione di posizione del sensore magnetico. Ovviamente il valore letto dalla centralina `e l’uscita dalla ADC. Questo valore, come spiegato nel Capitolo 3, `e stato moltiplicato per il fattore di conversione in Volt e poi sottratto al riferimento in modo che in entrata alla chart ci sia esattamente l’errore, la variabile che deve essere controllata dal PD.

(50)

Figura 4.2: Ingressi, uscite e parametri della chart di Stateflow

indica la presenza o meno della banda magnetica. Viene confrontata con il valore 10000 per renderlo un booleano (se maggiore di 10000, ossia circa 3V, allora `e un’uscita alta e quindi il booleano assume il valore true, altrimenti false).

• LOCAL BOOL Start : rappresenta il booleano del tasto di Start. Durante lo sviluppo della tesi veniva settato direttamente dal software Automation Studio in quanto non `

e stato fisicamente collegato.

• LOCAL BOOL Mushroom: rappresenta il booleano del tasto del Mushroom. Duran-te lo sviluppo della Duran-tesi veniva settato direttamenDuran-te dal software Automation Studio in quanto non `e stato fisicamente collegato alla centralina, ma `e stato collegato direttamente al rel´e dei motori.

• LOCAL INT Left Marker : rappresenta l’uscita digitale del sensore magnetico che in-dividua la presenza di un Left Marker. Come per il Track detected `e stato comparato al valore 10000 in modo da renderlo un booleano.

(51)

• LOCAL INT Right Marker : Come il Left Marker ma individua la presenza del Right Marker.

• LOCAL BOOL Joystick command forward : rappresenta il valore dell’uscita digitale collegata alla direzione in avanti del Joystick.

• LOCAL BOOL Joystick command right : rappresenta il valore dell’uscita digitale collegato alla direzione destra.

• LOCAL BOOL Joystick command left : rappresenta il valore dell’uscita digitale collegato alla direzione sinistra.

• LOCAL INT SupplyVoltageCPU : rappresenta il valore in INT della tensione di alimentazione della CPU. Da questo blocco vengono calcolati anche due valori: i riferimenti in tensione delle velocit`a in avanti per il rettilineo e per la curva, rispet-tivamente ”Init speed high” e ”Init speed low”. Questi due riferimenti di velocti`a sono stati calcolati sperimentalmente e sono dati entrambi dalla somma di una parametro costante (calcolati rispettivamente in modo tale che, con batteria com-pletamente carica, l’AGV percorra nel primo caso il tratto rettilineo in 4.5s, e nel secondo caso tale che percorra la curva in 4s) e un valore dipendente dalla tensione della centralina. Questo perch`e lo stato di carica della batteria pu`o essere ricavato dalla tensione di alimentazione della logica.

• LOCAL INT max sonar H3 : rappresenta il valore in INT in uscita dalla ADC del valore di uscita analogica in corrente del sensore posizionato sul pin H3 della centra-lina. Sperimentalmente compararlo a 13000 significa avere una corrente maggiore di

(52)

circa 8mA, valore per cui il sensore ad ultrasuoni ha rilevato un ostacolo. Il valore in ingresso alla chart `e in questo modo un booleano.

• LOCAL INT max sonar J3 : stesso discorso del sensore H3, rappresenta in questo caso il sensore in J3.

Come uscite sono presenti invece:

• LOCAL INT MotorCMD RIGHT : rappresenta il numero intero che convertito in volt dalla DAC viene mandanto in ingresso al driver di controllo del motore destro.

• LOCAL INT MotorCMD LEFT : come per sopra, ma per il driver di controllo del motore sinistro.

• LOCAL BOOL Rel´e: questa uscita booleana, se alta va ad azionare il rel´e per staccare i motori dall’alimentazione.

• LOCAL BOOL green light : rappresenta il valore, da convertire con la DAC in tensione, da dare alla luce verde.

• LOCAL BOOL red light : rappresenta il valore, da convertire con la DAC in tensione, da dare alla luce rossa.

• LOCAL BOOL yellow light : rappresenta il valore, da convertire con la DAC in tensione, da dare alla luce gialla.

• LOCAL INT Number of turn: questo numero intero rappresenta il numero di curve effettuate dall’AGV da quando il sensore magnetico ha rilevato la banda magnetica.

• LOCAL BOOL Enable Move: Booleano che abilita o meno le uscite analogiche della centralina a cui sono collegati i driver dei motori.

(53)

• LOCAL INT Command fork right : rappresenta il valore intero da convertire in tensione con la DAC da dare in ingresso al pin del sensore magnetico ”Fork Righ”, come descritto in 2.2.2.

• LOCAL INT Command fork left : rappresenta il valore intero da convertire in ten-sione con la DAC da dare in ingresso al pin del sensore magnetico ”Fork Left”, come descritto in 2.2.2.

• LOCAL LREAL TimeBetweenMarker1 : questa variabile, i cui valore viene calcolato durante il percorso, contiene il tempo impiegato dall’AGV durante il primo tratto rettilineo. L’utilit`a di tale uscita, e di tutte quelle successive, verr`a spiegata in dettaglio nel Capitolo 5.

• LOCAL BOOL Write on file: questo booleano viene utilizzato in un programma scritto in Structured Text, di cui si parler`a nel Capitolo 5.

• LOCAL LREAL TimeBetweenMarker2 : questa variabile contiene il tempo impie-gato a percorrere il secondo tratto rettilineo.

• LOCAL LREAL TimeofLap: questa variabile contiene il tempo giro.

• LOCAL LREAL Time on turn: questa variabile contiene il tempo impiegato nel-l’ultimo tratto di curva percorso.

Per quanto riguarda i parametri invece sono presenti solo 3 variabili:

• LOCAL INT Selected Track : Poich`e l’AGV deve essere abilitato a percorrere diversi percorsi secondo le specifiche descritte nel Capitolo 1, questa variabile indica al sistema di controllo quale tra i percorsi `e stato scelto. Durante lo svolgimento di

(54)

questo lavoro la variabile `e settata manualmente da Automation Studio, ma in futuro verr`a fatto in modo che sia l’utente, tramite un display a settarla.

• LOCAL REAL PID diff vel kd : Questa variabile contiene il valore che deve as-sumere la costante proporzionale del controllore PD per controllare la velocit`a differenziale.

• LOCAL REAL PID dif vel kp: Questa variabile contiene il valore che deve assumere la costante derivativa del controllore PD per controllare la velocit`a differenziale.

A questo punto, note le variabili in ingresso, uscita e i parametri del sistema, si descrive la logica implementata all’inerno della chart di Stateflow. In Figura 4.3 vengono mostrati, in maniera semplificata, gli stati che descrivono il comportamento di base del veicolo e la logica con cui si passa da uno stato all’altro. Pi`u avanti vengono di volta in volta descritti i contenuti dei blocchi pi`u importanti.

Accesa la centralina ci si trova di default nello stato ”OFF”, primo blocco in cui si entra quando il programma gira per la prima volta. Nel momento in cui l’utente preme il tasto di Start, facendo diventare la variabile ”Start button” alta, si entra all’interno di ”Active State”, in cui sono presenti due macro-stati che funzionano in parallelo.

Il primo, ”Motion Management”, gestisce tutto il movimento dell’AGV, mentre il secondo, ”Lighting Management” gestisce le luci. In quest’ultimo di default viene accesa la luce verde, indicando lo stato di AGV pronto, se presente la banda viene accesa la luce gialla, indicando lo stato di movimento dell’AGV, e nel caso in cui venga premuto il fungo oppure la tensione di alimentazione della CPU sia sotto un certo valore di soglia, viene accesa la luce rossa, indicando uno stato di malfunzionamento.

(55)

Figura 4.3: Diagramma degli stati

Nel reale diagramma degli stati implementato sulla centralina, oltre agli stati gi`a men-zionati ci sono gli stati ”Counting Time Straight”, ”Counting Total Time”, e ”Counting Time Turning” che funzionano in parallelo a ”Active State” e ”Lighting Management” , la cui funzionalit`a verr`a spiegata nel Capitolo 5. Inoltre, si pu`o notare che un ulteriore stato in parallelo pu`o essere aggiunto al programma in modo da gestire le fotocamere che in futuro saranno impiantate nell’AGV per la cattura delle immagini.

All’ingresso del macro stato ”Motion Management” si entra di default nello stato ON. A questo punto se l’utente utilizza il Joystick si passa in un ulteriore macro-stato ”Joystick mode”, all’interno del quale i comandi inviati ai motori sono ricavati in base a quale tasto del Joystick viene premuto tramite una look-up table. I riferimenti in tensione da dare sono stati valutati con prove empiriche, pi`u precisamente il valore della variabile ”Command Joystick ” `e 6000. Se il tasto premuto `e quello in avanti allora vengono dati

(56)

ad entrambi i motori UR = UL = Command joystick, se il tasto premuto `e quello in

direzione destra allora UR= 0 e UL = Command J oystick, viceversa se il tasto premuto

`

e in direzione sinistra.

Lo stato ”Path Following Mode” `e un macro-stato all’interno del quale viene descritta la logica del veicolo in presenza della banda magnetica. Come si vede dalla figura, sono due le condizioni che devono essere verificate affinch`e si abbia la transizione in questo stato: il livello di tensione della batteria deve essere maggiore di un valore minimo valutato sperimentalmente, necessario a completare il giro della pista senza fermarsi e l’uscita digitale del sensore magnetico ”Track Present”, di cui si `e parlato nel Capitolo 2, deve diventare alta, indicando la rilevazione della banda magnetica.

4.1.1

Progettazione della pista

La pista, mostrata in Figura 4.4, `e composta da due diversi percorsi: un ”Long path” e uno ”Short path”.

(57)

Sono stati utilizzati i marker per localizzare punti particolari della pista: i Left Marker sono stati utilizzati per rilevare l’ingresso e l’uscita da una curva, mentre i Right Marker per individuare una biforcazione o un raccordo. Inoltre, sono stati utilizzati sia il marker destro che sinistro al fine di individuare la porzione di pista in cui installare la docking station. La pista `e stata progettata ad-hoc per soddisfare i requisiti funzionali descritti nel Capitolo 1.

4.1.2

Controllo di alto livello

Nel momento in cui il sensore rileva la pista, ossia quando il valore di T rack P resent vale 1, si entra nello stato ”Path Following Mode” la cui logica `e visibile nel diagramma degli stati di Figura 4.5.

Figura 4.5: Diagramma degli stati: Path Following Mode

Di default si entra all’interno di uno stato, ”Chosing the Path”, in cui vengono dati al veicolo riferimenti in tensione nulli in attesa di valutare la condizione di transizione,

(58)

rappresentata dalla variabile ”Selected P ath”. Il diagramma degli stati si divide in tre possibili vie in base al valore di tale variabile, impostato manualmente dall’utente in base al tipo di pista desiderato. Se vale 1 allora l’utente ha scelto di far percorrere al veicolo il percorso lungo, se vale 2 il percorso corto e se vale 0 l’immissione non `e avvenuta correttamente e l’AGV rimarr`a fermo.

In entrambi i percorsi la struttura del diagramma degli stati `e la stessa. All’interno degli stati ”LONG PATH” e ”SHORT PATH” viene richiamata la Simulink function in cui `e implementato il controllore per l’inseguimento della banda descritto nel Capitolo 3 ed il comportamento dell’AGV in base ai marker che trova durante il percorso. La logica implementata all’interno di questi stati verr`a spiegata nel dettaglio pi`u avanti.

Nel caso in cui un ostacolo si trovi davanti l’AGV, sia nello stato per la pista lunga che nello stato per la pista corta, si passa nello stato ”OBSTACLE” in cui l’AGV si arresta fino a che il segnale dagli ultrasuoni (booleani, come `e stato descritto in precedenza) diventa FALSE, informando che l’ostacolo non `e pi`u presente. Si nota che all’interno degli stati ”LONG PATH” e ”SHORT PATH” `e stata inserita una History Junction in modo tale che se si dovesse uscire dallo stato per via di un ostacolo, al rientro si riprenda dallo stesso punto, altrimenti il controllore non avrebbe modo di sapere a che punto della pista si trova il veicolo.

Infine, quando vengono trovati contemporaneamente entrambi i marker si passa nello stato ”DOCKING STATION” in cui il veicolo si arresta. A questo punto l’utente pu`o far ripartire l’AGV per un ulteriore giro semplicemente premendo un tasto del Joystick.

Viene adesso descritta la logica implementata per la pista lunga, mostrata in Figura 4.6, in seguito verranno elencate le piccole differenze che caratterizzano invece la struttura

(59)

della pista corta.

Figura 4.6: Diagramma degli stati: Long Path

Quando si entra all’interno dello stato ”LONG PATH” si entra di default all’interno dello stato ”START”. A questo punto, ipotizzando che l’AGV inizi sempre il percorso a partire dalla docking station, si d`a in ingresso al controllore Path-Following il valore della variabile high vel (che corrisponde alla tensione di modo comune applicata ai motori, descritta nel Capitolo 3) che viene imposta inizialmente pari al valore di Init speed high, variabile in ingresso a Stateflow descritta in precedenza. In questo stato viene inoltre dichiarata la variabile Counter e settata a 0.

Il veicolo quindi segue la banda con velocit`a alta, fino a che il Left marker diventa alto, indicando la fine del tratto rettilineo. Si entra quindi nello stato ”NEAR THE TURN” in cui viene diminuita la velocit`a, dando infatti in ingresso al controllore la variabile low vel (che corrisponde alla tensione di modo comune applicata ai motori, descritta nel Capitolo 3) che viene imposta inizialmente pari al valore di Init speed low.

(60)

Mentre il veicolo segue la banda con una velocit`a minore viene dapprima ”perso” il Left marker (si entra quindi nello stato ”TURNING”) e finita la curva viene rilevato un nuovo left marker, indicante che la prima curva `e terminata e il programma entra quindi nello stato ”END OF CURVE”. All’uscita di questo stato viene incrementata la variabile Counter e al momento in cui viene nuovamente perso il left marker viene valutata la condizione counter < 4: se vale 4 allora significa che `e finito il percorso e si esce dal macro-stato entrando in ”DOCKING STATION”, altrimenti viene nuovamente data di riferimento una velocit`a alta.

A questo punto possono succedere due cose: se ad esempio ci troviamo dopo la prima curva allora viene rilevato un right marker, che indica la biforcazione tra pista lunga e corta oppure, se ci troviamo dopo la seconda curva, il primo marker che verr`a individuato `

e quello sinistro che indica l’inizio della terza curva. Nel caso in cui si trova il right marker vengono dati alle variabili in uscita Fork righ e Fork left i valori tali che il veicolo segua la pista che si trova sulla sinistra. A questo punto si ritorna in ”NEAR THE TURN” e si continua il giro fino a che o la variabile Counter vale 4 oppure vengono individuati contemporaneamente il marker a destra e a sinistra.

La struttura del macro-stato implementato per la pista corta viene mostrato in Figura 4.7. La logica di controllo `e la stessa tranne per il fatto che alle biforcazioni vengono dati valori opposti alle variabili Fork Left e Fork Right.

In Figura 4.8 viene quindi mostrata una foto del prototipo che si trova sulla docking station della pista. Sono stati effettuati test su pista per verificare il corretto funziona-mento della logica di controllo. Questi hanno mostrato un AGV in grado di compiere entrambi i percorsi e avente un corretto funzionamento del sistema di sicurezza. L’AGV

(61)

Figura 4.7: Diagramma degli stati: Short Path

infatti riesce ad arrestarsi correttamente, sia quando una persona si trova davanti che im-mediatamente dopo la curva, e una volta che l’ostacolo non `e pi`u presente, a riprendere il percorso riuscendo a fermarsi correttamente al punto di partenza.

(62)

5

Test su pista e controllore di velocit`

a

5.1

Test sequenziali con controllo del tempo giro

Per verificare il corretto funzionamento dell’AGV nel tempo sono stati effettuati una serie di test su pista che hanno rilevato un importante calo di prestazioni del veicolo nel tempo. I primi test su pista sono stati effettuati andando a rilevare il tempo giro in funzione del numero dei giri. Per acquisire i dati necessari a questo studio `e stato scritto un programma, descritto in Appendice A, in Structured Text (definito dalla norma IEC 61131-3) su Automation Studio. Tramite il programma, in seguito al completamento di un giro del tracciato, viene scritto in un file .txt all’interno di una USB inserita nella centralina il tempo giro [23].

Il grafico in Figura 5.1 mostra il tempo impiegato dall’AGV per percorrere un giro della pista (si riferisce al percorso pi`u lungo) in funzione del numero di giri.

Dal grafico si nota come il tempo impiegato parta da un valore di circa 37s e arrivi, dopo 30 giri di pista, ad un valore di pi`u di 60s. Le cause di questo importante aumento di tempo giro (e di conseguenza di diminuzione della velocit`a) potevano essere due: il

(63)

Figura 5.1: Andamento del tempo giro con il veicolo alimentato dalla batteria

primo `e la tensione della batteria che scaricandosi fa s`ı che il comando in tensione dato dalla centralina ai driver sia leggermente pi`u basso, rivelando una scorretta compensazione della tensione di riferimento di avanzamento fornita dal controllore di alto livello (di cui si `e parlato nel Capitolo 4), il secondo `e il surriscaldamento dei motori. Il riscaldamento del motore fa s`ı che la resistenza d’armatura assuma un valore maggiore portando ad una diminuzione della corrente assorbita e quindi della velocit`a in uscita.

Inoltre, si fa presente che il tipo di motori impiegati, utilizzati come si `e detto per scooter elettrici, riescono a raggiungere i 45Km/h. Questo significa che sull’AGV devono lavorare in un intorno della coppia di spunto, al fine di avere delle velocit`a adeguate all’applicazione. Questo fa s`ı che dei minimi cambiamenti nei comandi in tensione ai driver producano velocit`a molto diverse.

(64)

stati svolti dei test a tensione costante, sostituendo alla batteria due alimentatori: uno per la logica a 24V, l’altro per i Driver a 36V. In Figura 5.2 si mostra il veicolo collegato ai due alimentatori.

Figura 5.2: Foto del veicolo con gli alimentatori

Il grafico in Figura 5.3 mostra i risultati ottenuti al termine dei test. Da questi si evince che nonostante la tensione di alimentazione sia costante il tempo giro aumenti molto velocemente, dimostrando quindi che la causa della perdita di performance `e il surriscaldamento dei motori.

Per avere un ulteriore riscontro `e stato effettuato un ulteriore test andando a misura-re la cormisura-rente assorbita dai motori (mantenendo il veicolo con le ruote libemisura-re di muo-versi), applicando ai motori riferimenti in tensione costanti (M otorCM D RIGHT = M otorCM D LEF T = 6000). In Figura 5.4 viene mostrato l’andamento di tale corrente che in 200s di funzionamento diminuisce di 0.10mA.

Questi risultati confermano che il fenomeno del surriscaldamento dei motori `e la causa principale del rallentamento dell’AGV.

(65)

Figura 5.3: Andamento del tempo giro con alimentazione costante

5.2

Performance Stabilizer Controller

Al fine di mantenere una velocit`a di avanzamento costate del veicolo, malgrado i feno-meni sopra descritti, si `e inserito un ulteriore loop di controllo, agente sulla tensione di modo comune applicata ai motori. In particolare `e stato aggiunto un ulteriore stato parallelo all’interno di ”Active State” di Figura 4.3 in cui viene contato il tempo tra-scorso. Pi`u precisamente sono state definite due variabili booleane: Start Straight Time e Start Turn Time. Queste due variabili vengono utilizzate all’interno dei macro-stati ”LONG PATH” e ”SHORT PATH” , quando diventano vere inizia il conto del tempo all’interno dello stato parallelo in ”Active State”, mentre quando diventano false viene arrestato il conteggio fornendo rispettivamente le variabili Straight Time e Turning Time. Ovviamente, se i sensori ad ultrasuoni rilevano un ostacolo, il conteggio del tempo viene

(66)

Figura 5.4: Andamento della corrente

messo in pausa. Queste due variabili forniscono quindi il tempo impiegato dall’AGV a percorrere rispettivamente il tratto rettilineo ed il tratto in curva.

La strategia di controllo scelta `e tale per cui per ogni singolo tratto, rettilineo o curva, dato il tempo impiegato (Straight Time e Turning Time) e un tempo di riferimento deciso sperimentalmente (4.5s per il rettilineo e 5s per la curva), si calcola il nuovo riferimento della tensione a modo comune con un controllore integrale:

V modo comune = V modo comune + (T ime − Ref erence T ime) ∗ Gain

Il valore di Gain vale 100 nel tratto rettilineo e 50 in curva.

5.2.1

Risultati

I risultati ottenuti con l’inserimento del Performance Stabilizer Controller sono mostrati in Figura 5.5.

(67)

Figura 5.5: Andamento tempo giro rispetto al numero di giri con e senza controllore

per la stabilizzazione delle performance

I risultati mostrano che un controllore di questo tipo, nonostante sia molto lento (a causa di un periodo di campionamento elevato), `e pi`u che sufficiente a stabilizzare le performance del veicolo autonomo, malgrado l’assenza di un encoder, in riferimento alla particolare applicazione a cui `e destinato l’AGV.

Riferimenti

Documenti correlati

prendere decisioni o svolgere attività inerenti alle sue mansioni in situazioni, anche solo apparenti, di conflitto di interessi. Egli non svolge alcuna attività che contrasti con

Se  la  Pa  si  è  scostata  dai  valori  normali  (valore  di  riferimento  VR)  i  meccanismi  di  compenso 

[r]

informatica: ossia nell'ipotesi che esista una rete con un livello di sicurezza L1 e una rete con un altro livello di sicurezza L2, inferiore, quindi più facilmente attaccabile,

sua divisione in due cellule, tempo caratteristico della specie e delle condizioni colturali..

Si aggiunga alla classe ArrayStack (implementa l’interfaccia Stack usando un array) il metodo Stack clone() che restituisce un nuovo stack avente lo stesso contenuto dello stack...

Funzioni membro operator* e inversa sintatticamente corrette ma non seguono le richieste del testo Dopo il ciclo di lettura dal file devi salvare il valore di i ad esempio in

Qualora il conducente sia persona diversa dal proprietario del veicolo (o altro obbligato in solido) e la dichiarazione non è stata firmata in originale ovvero non ha allegata la