RI.tesina.pilloni.ortu

download RI.tesina.pilloni.ortu

of 54

Transcript of RI.tesina.pilloni.ortu

` U NIVERSIT A

DEGLI

S TUDI DI C AGLIARI

Dipartimento di I NGEGNERIA E LETTRICA ED E LETTRONICA

Tesina di ROBOTICA I NDUSTRIALE

Robotica nei sistemi FMS Un caso pratico di collaborazione tra robot

Relatore: Prof. Alessandro Pisano

Redatta da: Alessandro Pilloni 38459 Valentino Ortu 39245

Anno Accademico 2009/2010

.

1. Un robot non pu` recar danno a un essere umano o n pu` permettere che, a causa del proprio mancato e o intervento, un essere umano riceva danno. 2. Un robot deve obbedire agli ordini impartiti dagli esseri umani, purch tali ordini non contravvengano e alla Prima Legge. 3. Un robot deve proteggere la propria esistenza, purch e questa autodifesa non contrasti con la Prima e con la Seconda Legge. (Manuale di Robotica, 56a Edizione - 2058 d.C.)

Indice1 Introduzione 1 2 3 2 Robotica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AGV Veicolo a guida automaticamente . . . . . . . . . . . . . . . . . . . . . Applicazioni AGVs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 6 7 9 9 12 12 13 15 15 16 16 16 17 18 18 19 19 22 24 25 27 27 28 28 33 35 37

Classicazione e analisi del robot 1 2 Robot mobili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modello cinematico 2.1 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analisi dei vincoli cinematici . . . . . . . . . . . . . . . . . . . . . . Calcolo del modello cinematico . . . . . . . . . . . . . . . . . . . . .

3

Logistica di supporto 1 2 PICAXE Experimenter Board (AXE090) . . . . . . . . . . . . . . . . . . . . PICAXE Micro-Robot (AXE120) . . . . . . . . . . . . . . . . . . . . . . . . 2.1 2.2 Sensoristica supportata dal Micro-Robot . . . . . . . . . . . . . . . . . Sensore di Luminosit` (AXE121) . . . . . . . . . . . . . . . . . . . . a Sensori di distanza . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ultrasonic Range Finder (SRF004/SRF005) . . . . . . . . . . . . . . . Sensore di contatto (AXE122) . . . . . . . . . . . . . . . . . . . . . . 3 4 5 PICAXE Connect Board (AXE210) . . . . . . . . . . . . . . . . . . . . . . . ZigBee Protocol (802.15.4) . . . . . . . . . . . . . . . . . . . . . . . . Microcontrollori PICAXE-18/18X . . . . . . . . . . . . . . . . . . . . . . . . Richiami di programmazione BASIC . . . . . . . . . . . . . . . . . . PICAXE Programming Editor . . . . . . . . . . . . . . . . . . . . . . . . . .

4

Un caso pratico 1 2 Descrizione Problematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulazione MatLab del task . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 2.2 3 Descrizione dellalgoritmo di Line Following . . . . . . . . . . . . . . Codice MatLab dellalgoritmo di Line Following . . . . . . . . . . . . Codice della simulazione MatLab del task completo . . . . . . . . . . Montaggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Indice 4 Implementazione su microcontrollori PICAXE . . . . . . . . . . . . . . . . . 4.1 Implementazione BASIC veicolo Pant-E . . . . . . . . . . . . . . . . . Pseudocodice veicolo Pant-E . . . . . . . . . . . . . . . . . . . . . . . Codice BASIC Pant-E AXE120 . . . . . . . . . . . . . . . . . . . . . Codice BASIC Pant-E AXE210 . . . . . . . . . . . . . . . . . . . . . 4.2 Implementazione BASIC veicolo Wall-E . . . . . . . . . . . . . . . . Pseudocodice veicolo Wall-E . . . . . . . . . . . . . . . . . . . . . . . Codice Wall-E AXE210 . . . . . . . . . . . . . . . . . . . . . . . . . Codice Wall-E AXE120 . . . . . . . . . . . . . . . . . . . . . . . . . Conclusioni A Replicatore di movimenti attraverso comunicazione ZigBee 1 2 Montaggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementazione BASIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Implementazione BASIC veicolo Master . . . . . . . . . . . . . . . . Codice Master AXE120 . . . . . . . . . . . . . . . . . . . . . . . . . Codice Master AXE210 . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Implementazione BASIC veicolo SLAVE . . . . . . . . . . . . . . . . Codice Slave AXE120 . . . . . . . . . . . . . . . . . . . . . . . . . . Codice Slave AXE210 . . . . . . . . . . . . . . . . . . . . . . . . . . Elenco delle Figure Bibliograa

3 39 39 39 40 41 42 42 42 42 44 45 46 47 47 48 48 49 49 49 51 53

Capitolo 1 Introduzione1 RoboticaLa parola robotica proviene dal ceco robota, dove ha il si` gnicato di lavoro pesante o lavoro forzato.La robotica e una scienza che studia i comportamenti degli esseri intelligenti, cerca di sviluppare delle metodologie che permettano ad una macchina (robot), dotata di opportuni dispositivi atti a percepire lambiente circostante ed interagire con esso quali sensori ` e attuatori, di eseguire dei compiti specici. E una disciplina relativamente nuova, che affonda le sue radici nellantico desiderio delluomo di costruire strumenti che possano liberarlo da compiti troppo faticosi, noiosi o pericolosi. Anche se la ro` botica e una branca dellingegneria in essa conuiscono gli studi di molte discipline sia di natura umanistica come biologia, siologia, linguistica e psicologia che scientica quali automazione, elettronica, sica, informatica, matematica e meccanica. La robotica proprio in virt` della sua natura interdisciplinare trova applicazioni in moltepliu ci contesti, questo ha fatto s` che nascessero varie sotto-discipline fra le quali per` raramente o esiste una netta linea di demarcazione. Arte robotica: Robotica utilizzata sia per creare nuove forme di espressione artistica sia per imitare e riprodurre le forme artistiche gi` esistenti come i robot progettati per a dipingere o per suonare uno strumento musicale analizzando in tempo reale uno spartito. Biorobotica: Robot usati in campo medico. Domotica: Automazione applicata allambiente domestico, tra gli sviluppi a breve termine pi` interessanti ci sono le tecnologie di aiuto in casa ai portatori di handicap mentali o u sici. Microrobotica: Si occupa dello studio e della diffusione di piccoli robot a basso costo utilizzati per scopi educativi o ludici. Robotica biomedicale: Ramo della robotica molto vasto comprende diversi tipi di robot; si va infatti dai robot capaci di assistere il medico durante le operazioni chirurgiche a quelli che tramite tecnologie di telepresenza permettono al medico di operare a distanza. Rientrano nella categoria anche le sosticate apparecchiature per analisi biologiche utilizzate nei laboratori.

1.1 Robotica

5

Robotica di intrattenimento: Si occupa delle tecnologie utilizzate nei parchi tematici, nei musei o negli effetti speciali cinematograci per intrattenere ed educare grandi quantit` di pubblico; un esempio di utilizzo sono gli audioanimatroni spesso utilizzati a per riprodurre le fattezze di personaggi fantastici o di specie animali oggi estinte come i dinosauri. Robotica evoluzionistica: Metodologia che attraverso lo studio di algoritmi evolutivi tenta di realizzare robot sempre pi` versatili in modo da rendere meno essenziale il supporto u umano. Robotica marina: Si tratta di una branca in via di espansione per le numerose applicazioni di tipo industriale (principalmente legate al settore petrolifero), scientico, archeologico e militare. ` Robotica militare: Anche se la fantascienza e ricca di riferimenti a robot utilizzati in ambito militare nel pratico questi sono utilizzati pi` che altro con scopi di ricogniziou ne e vigilanza fra i quali troviamo ad esempio gli aerei privi di equipaggio detti droni. ` Questo tipo di veicoli e s` controllato a distanza da personale apposito ma in caso di emergenza pu` anche compiere diversi compiti in totale autonomia permettendo la ricoo gnizione di teatri di guerra pesantemente difesi senza mettere a repentaglio vite umane. Altro esempio di robotica militare sono i robot articieri che sono in grado, grazie al numeroso set di strumenti di cui sono muniti, di compiere analisi su un ordigno esplosivo ed eventualmente neutralizzarlo a distanza riducendo drasticamente i rischi per gli articieri. Robotica sociale: Cerca di sviluppare tecnologie che rendano i robot sempre pi` capici u di interagire e comunicare con gli esseri umani in modo autonomo. Robotica spaziale: Anche se sviluppa tecnologie e metodiche destinate allimpiego di robot fuori dallatmosfera terrestre questo settore della robotica ha raggiunto dei risultati utili anche in campi che esulano dalla ricerca spaziale. Esempi di questi robot sono le sonde esplorative impiegate in diverse missioni sui pianeti del sistema solare ma anche robot pi` tradizionali come il famoso braccio manipolatore dello Space Shuttle o quello u di sembianze umane destinato alla ISS che verr` utilizzato in sostituzione degli astronauti a nelle attivit` extraveicolari. a ` Meccatronica: E la scienza che studia il modo di far interagire tre discipline, quali la meccanica, lelettronica, e linformatica al ne di automatizzare i sistemi di produzione semplicando il lavoro umano. La meccatronica nasce dalla necessit` di creare un knowa how nellambito della modellistica, simulazione e prototipazione dei sistemi di controllo, orientandosi prevalentemente ai sistemi di controllo del movimento, deniti come Motion Control. I principali campi di applicazione sono la robotica, lautomazione industriale, lautomotive e gli azionamenti elettrici. Lingegnere meccatronico o lesperto di settore si occupa principalmente di progettare e realizzare sistemi di controllo automatico utilizzando come strumenti di lavoro sia software di sviluppo quali Matlab/Simulink sia centraline elettroniche per limplementazione del sistema reale e la verica del funzionamento realtime. Il classico sistema di controllo meccatronico pu` essere rafgurato da un anello o ` chiuso, retroazione feedback, ed e costituito da diversi blocchi principali: limpianto da controllare (es. un motore elettrico), lattuatore dellimpianto (es. elettronica di potenza), il controllore dellimpianto, progettato in ambiente di simulazione e implementato su centralina (DSP - Digital Signal Processor), inne il sensore, che misura uno stato del sistema (es. la velocit` di rotazione del motore). a ` Robotica industriale: Il campo industriale e sicuramente quello in cui i robot hanno trovato maggiore diffusione: il loro impiego nelle catene di montaggio ha permesso alle aziende di abbattere notevolmente i costi accelerando e migliorando la produzione.

1.2 AGV Veicolo a guida automaticamente

6

` Fra i robot pi` utilizzati dallindustria vi e il braccio robotico o robot manipolatore, cou struito a imitazione del braccio umano ma spesso dotato di pi` gradi di libert` : e una u a ` macchina molto versatile che si presta a svariate mansioni tra cui verniciatura, saldatura o montaggio. Interessante notare come questa tipologia di macchine sia spesso utilizzata per produrre altri robot simili rendendo le speculazioni fatte dalla fantascienza sulle macchine autoreplicanti un discorso molto pi` vicino alla nostra quotidianit` . u a

2 AGV Veicolo a guida automaticamenteGli AGVs (Automated guided vehicles), chiamati anche Laser Guided Vehicle (LGV) o SelfGuided Vehicle (SGV), sono stati introdotti sul mercato nel 1950, dalla Barrett Electronics di Northbrook, Illinois, inizialmente, si trattavano, semplicemente, di un carro attrezzi che seguiva autonomamente, tramite azionamenti, un lo nel pianale, sostituendo i vecchi mezzi su rotaie, e venivano utilizzati principalmente per il trasporto di carichi o per trainare degli oggetti tramite dei rimorchi per spostare le materie prime o il prodotto nito. Nel corso degli anni, nonostante lutilizzo sia rimasto inalterato, grazie allo sviluppo tecnologico, sono diventate macchine pi` u sosticate e, in alcuni modelli, oltre alla possibilit` di caricamento autonomo dei pezzi sulla a macchina, sono dotati di sistemi di comunicazione (tramite lutilizzo di server Off-Board) che comunicano con altri robot per garantire che prodotto viene spostato senza problemi attraverso il magazzino, o attraverso limpianto, per essere conservato per un utilizzo futuro o inviato direttamente alle zone di spedizione, in modo da avere una sinergia e un livello di integrazione di sistema totale. Dispongono inoltre di una serie di sensori che vengono utilizzati per permettere alla macchina un tracking preciso, quali sensori di luminosit` a LED, sensori di prossimit` a a per il rilevamento di persone o oggetti lungo il binario, o sensori di carico per rilevare il peso effettivo e valutare il carico massimo della macchina, insomma una serie di surplus che hanno portato gli AGVs ad essere uno strumento fondamentale. Per capire il motivo del largo impiego ` degli AGVs, e necessario comprendere alcuni fondamenti dei Sistemi di Produzione Flessibile ` (FMS). FMS e un sistema di produzione dotato della capacit` di realizzare per via automatica a prodotti differenti e basato sulla losoa Pi` Veloce e meglio. Piuttosto che usare luomo per u ` eseguire compiti ripetitivi, vengono utilizzate macchine che eseguono questo compito 24 ore al giorno. I sistemi FMS utilizzano macchine a controllo numerico (CNC) per formare celle di lavoro, ognuna delle quali svolge un compito specico che contribuisce alla produzione del pro` ` dotto nale. Anche se FMS e veloce ed efciente, non e a buon mercato in quanto richiede una grossa quantit` di macchine costose, al ne di lavorare. In genere, il costo di start-up di unaa ` zienda che vuole introdurre un sistema FMS e intorno al milione di dollari. Invece di utilizzare un sistema FMS completo, la maggior parte delle aziende utilizzano un sistema FMS chiamato ` cella di produzione essibile. Questo e utilizzato per produrre parte di un prodotto dalla macchina e magari parte da altri metodi. Spesso uno o pi` AGV sono utilizzate nei dispositivi per u la connessione delle cellule FMS per una lavorazione in sinergia. Gli AGVs, trovano un largo impiego nellindustria manifatturiera e di gestione di magazzini, incrementandone lefcienza e riducendone i costi. Esistono versioni di minor costo degli AGV , spesso, vengono chiamati Automated Guided Carts (AGCs), e di solito sono guidati da nastro magnetico. AGCs sono disponibili in una variet` di modelli e pu` essere utilizzato per spostare i prodotti su una linea di a o assemblaggio, il trasporto merci in tutto un impianto o in un magazzino, e distribuire i carichi da e per avvolgitori e rulliere.

1.3 Applicazioni AGVs

7

3 Applicazioni AGVs` Il line follower e intorno a noi! In che senso? Nella vita reale di tutti i giorni tutti quanti abbiamo visto almeno una volta un line follower, nessuno ci fa caso ovviamente, nessuno si domanda per esempio quale il meccanismo che muove certi macchinari che trasportano scatoloni allinterno di supermercati o magazzini. Un esempio di questa tipologia di robot sono gli AGVs, (Automatic Guided Vehicles) prodotti da un azienda chiamata Transbotics situata a Charlotte in North Carolina, ed utilizzati per la prima volta nel 1972 dalla Volvo. Questi veicoli son programmati per trasportare materiale seguendo sempre la stessa routine con particolare facilita. Durante il processo di trasporto l AGVs trasmette informazioni circa lo stato del sistema, tracciamento dellinventario, e sistema di controllo per il sistema di invio e smistamento oggetti. Un sistema AGV comprende uno o pi` tipi di veicoli (con diverse congurazioni di guida) per u muovere materiale automaticamente, seguendo un percorso predenito. ` Unaltra azienda che produce gli AGVs e la Egemin Automation, i loro prodotti sono usati da molte industrie dei pi` svariati settori: u ` Cibo e bevande: tipicamente e riferito a quel settore/industria specializzato nella fabbricazione e distribuzione di cibo e bevande consumabili. I veicoli automatiz zati della Egemin sono equipaggiati per trasportare carichi di birra, cereali, snack, tabacco, ecc.; per agganciare i carichi, per lo stoccaggio, e il rimorchio.

Mail delivery: nel 1976 la Egemin introdusse MailMobile, il primo veicolo guidato ottico che copre il gap tra la velocit` della spedizione e la stazione di lavoro compua terizzata, con molto dispendio di energia. La gestione di ` ` MailMobile e essibile ed a basso costo, ed e la miglior alternativa al metodo manuale. Funziona grazie ad un percorso fosforescente applicato nel pavimento, il percorso ` e stimolato da luci ultraviolette e da sensori fotoelettrici. ` Ovviamente non pu` operare se il percorso e spento, se o non sotto gestione manuale.

1.3 Applicazioni AGVs

8

` Farmaceutico: la serie Egemin farmaceutica e fabbricata in accordo con lo standard ISO 9000. Materiali che pos` a sono essere trasportati con semplicit` , il design e come sempre amico dellutente, in modo da permettergli di fare operazioni complicate in modo semplice. Carta e Stampe: anche nel campo della carta vengono uti` lizzati questi veicoli, il risultato e stato una diminuzione del 39% degli infortuni sul lavoro (a persone od ogget ti) ed una diminuzione del 25% del costo dovuto a tali infortuni. Sono necessari meno impiegati per soddisfare le richieste dei clienti e i danni ai prodotti sono stati eliminati. Tessile: i veicoli Egemin rispondono perfettamente anche alle speciche delle industrie tessili, in quanto abbassano in maniera efciente il costo del trasporto. Tali veicolo sono usati nelle industrie produttrici di tessuti di tipo na turale o sintetico. Inoltri questi macchinari svolgono anche operazioni di tessitura quali, girare lo spago, intrecciarlo, irradiarlo, ecc. facendo risparmiare allazienda che li utilizza un buon numero di manodopera. Come gi` accennato, i luoghi di impiego degli AGV, oltre a quelli gi` descritti, sono appaa a rentemente inniti, in quanto le capacit` di trasporto merci possono variare da qualche chilo a sino a qualche centinaia di tonnellate, infatti, verso ne del 20secolo, lAGV ha trovato largo impiego anche nei porti, per lo spostamento di Container, basti pensare che solo nel porto di Rotterdam, vengono utilizzati gi` pi` di 100 AGV. Visto il largo utilizzo, e limportanza che a u ` assume nei processi automatizzati, con la seguente, si e deciso di eseguire uno studio dal lato della Robotica Industriale di questi sistemi.

Capitolo 2 Classicazione e analisi del robotIn questa sezione presenteremo le diverse tipologie di robot mobili cercando di individua` re la categoria che meglio descrive i veicoli PICAXE 120 su cui il progetto in questione e implementato.

1 Robot mobili` La caratteristica dei robot mobili e la presenza di una base semovente che consente al robot di spostarsi liberamente nellambiente in cui deve operare. Questi robot sono infatti utilizzati ` prevalentemente in applicazioni di servizio, nelle quali un mobilit` ampia ed autonoma e un a ` requisito fondamentale. Dal punto di vista meccanico, un robot mobile e costituito da uno o pi` u corpi rigidi dotati di un sistema di locomozione. In questa descrizione rientrano le due seguenti principali categorie. I robot mobili su ruote. I robot mobili su gambe. Nel seguito ci si limiter` a considerare i veicoli su ruote che costituiscono la grande maggioranza a dei robot mobili nelle applicazioni. Questi sono generalmente costituiti da un corpo rigido (base o chassis) e da un sistema di ruote che lo movimentano rispetto al suolo. Alla base base possono inoltre essere collegati mediante giunti rotoidali altri corpi rigidi (rimorchi) anchessi dotati di ` ruote. Lelemento meccanico fondamentale di questi robot e appunto la ruota. Esistono tre tipi di ruote convenzionali, mostrate in Figura 2.1 dove vengono anche indicate le icone che verranno utilizzate nel seguito per rappresentarle. La ruota ssa pu` ruotare intorno ad un asse passante per il centro della ruota e normale al o piano che la contiene, mantenendo costante il proprio orientamento rispetto allo chassis, ` al quale e completamente solidale. ` La ruota orientabile ha due assi di rotazione. Il primo e quello di una ruota ssa, mentre il ` secondo e verticale e passa per il centro della ruota. Ci` consente alla ruota di modicare o il proprio orientamento rispetto a quello dello chassis. La ruota eccentrica (spesso indicata con il termine inglese caster) ha due assi di rotazione ma quello verticale non passa per il centro della ruota, da cui dista di una quantit` ssa a offset. Questa disposizione fa si che la ruota si allinei automaticamente e rapidamente con la direzione nella quale viene spinto lo chassis. Questo tipo di ruota ha dunque la funzione di fornire un punto di appoggio per il bilanciamento statico senza inuenzare in alcun modo la mobilit` della base. a

2.1 Robot mobili

10

Figura 2.1: I tre tipi di ruote convenzionali con le relative icone. La variet` di strutture cinematiche che si possono ottenere utilizzando le tre ruote fondamentali a ` e notevole. Nel seguito esamineremo le pi` rilevanti. u ` Iniziamo col presentare il veicolo a trazione differenziale, questo e caratterizzato da due ruote sse il cui asse di rotazione coincide e una o pi` ruote eccentriche, tipicamente di dimensioni u ridotte, che hanno lo scopo di di mantenere il robot in equilibrio statico (Figura 2.2(a)). Le due ruote sse sono controllate separatamente, nel senso che le relative velocit` di rotazione a ` possono essere imposte arbitrariamente, mentre il caster e passivo. Questo robot pu` ruotare sul o posto (cio` senza muovere il centro dellasse delle ruote) se le velocit` angolari delle due ruote e a sono uguali e contrarie. ` Un veicolo che ha mobilit` analoga al precedente e quello a trazione sincronizzata (Figua ` ra 2.2(b)). Esso e dotato di tre ruote orientabili allineate comandate in modo solidale da due soli motori attraverso un accoppiamento meccanico. Il primo motore controlla la rotazione delle ruote attorno allasse orizzontale, e fornisce dunque la trazione al veicolo, mentre il secondo motore controlla la rotazione delle ruote intorno allasse verticale, e ne determina dunque lorientamento. Si noti che lorientamento dello chassis non cambia durante il moto. ` Un altra tipologia di veicolo e quella di tipo triciclo (Figura 2.2(c)) in cui vi sono due ruote sse sullasse posteriore e una ruota orientabile in posizione anteriore che funge da sterzo. ` Altra variante di robot mobile e ovviamente quello tipo automobile (Figura 2.2(d)) che ha due ruote sse sullasse posteriore e due orientabili su quello anteriore. Anche in questo caso, un motore fornisce la trazione, che pu` essere sia anteriore che posteriore, e un altro varia lorieno tamento delle ruote anteriori rispetto al veicolo. Va detto inoltre che per evitare lo slittamento, le ruote anteriori devono avere uno orientamento diverso tra di loro quando il veicolo curva: in par` u ` ticolare la ruota e pi` sterzata di quella rispetto a quella esterna. Questo e garantito dallutilizzo di un particolare dispositivo detto sterzo di Ackermann. Inne, si consideri il robot in Figura 2.2(e)), che ha tre ruote eccentriche disposte normalmente in posizione simmetrica. Le velocit` di trazione delle tre ruote sono comandate indipena ` dentemente. Questo veicolo e a differenza dei precedenti, omnidirezionale: esso pu` muoversi o istantaneamente in qualsiasi direzione cartesiana, nonch riorientarsi sul posto. e Dopo questa classicazione possiamo dire che i nostri veicoli PICAXE 120 possono essere identicati come dei robot a trazione differenziale, dove per` risulta assente la terza ruota eccentrica o che invece viene sostituita da due tacchi sulla parte anteriore che permettono comunque il bilanciamento della struttura; infatti il suo baricentro risulta comunque interno al rettangolo di supporto denito dai punti di contatto delle ruote e dei tacchi con il suolo.

2.1 Robot mobili

11

(a)

(b)

(c)

(d)

(e)

Figura 2.2: Diverse tipologie di robot mobili.

2.2 Modello cinematico

12

2 Modello cinematicoAnalizziamo ora nel dettaglio la la struttura cinematica del nostro robot a trazione differenziale, pi` precisamente ci riferiremo a lui come un uniciclo a trazione differenziale (Figura 2.3) in u quanto caratterizzato da due motori indipendenti e due ruote sse.

2.1 Analisi dei vincoli cinematiciIl nostro sistema, come la maggior parte dei veicoli su ruote, sono soggetti a dei vincoli cinematici che ne limitano la mobilit` locale, senza per` precludere la possibilit` di raggiungere a o a congurazioni arbitrarie. Ad esempi, ogni guidatore sa per esperienza che, pur essendo im` possibile muovere istantaneamente unautomobile in direzione ortogonale a quella cui essa e orientata, si pu` comunque parcheggiarla arbitrariamente, almeno in assenza di ostacoli. o ` Riportiamo ora il vincolo di puro rotolamento relativo alla nostra struttura, il quale e riportato in forma Pfafana, cio` lineare nelle velocit` generalizzate. Quindi partendo dalla denizione e a delle sue velocit` generalizzate a x v cos() (2.1) y = v sin() e combinando opportunamente le prime due si ottiene il seguente vincolo x sin y cos = sin cos 0 q =0 (2.2)

Figura 2.3: Coordinate generalizzate per un uniciclo a trazione differenziale su un piano. ` dove appunto q C e lopportuno vettore appartenente allo spazio delle congurazioni C 1 che rappresenta sistemi meccanici le coordinate generalizzate del nostro veicolo nel piano sagittale dove poggia, ovveroT

q=

x y

(2.3)

dove in particolare la coppia (x, y) rappresenta la coppia di coordinate cartesiane del punto ` medio dellasse delle ruote, mentre e lorientamento delle ruote.` Dove si e fatta lipotesi semplicativa che lo spazio delle congurazioni C coincida con n . In realt` la a ` corrispondenza tra spazio delle congurazioni e spazio euclideo e valida solo localmente, ad ogni gli sviluppi che presenteremo saranno comunque validi.1

2.2.2 Calcolo del modello cinematico

13

` A questo punto e bene precisare che non sempre un sistema di vincoli cinematici del tipo T A (q) q = 0 come ad esempio il vincolo (2.2), possa essere integrato e fornire un insieme di vincoli olonomi, ovvero vincoli legati ad accoppiamenti meccanici tra i vari corpi del siste` ma. Mentre e vero il viceversa, ovvero lesistenza di k vincoli olonomi, cio` vincoli che possono e essere ricondotti alla forma hi (q) = 0 con i = 1, . . . , k < n (2.4)

implicano altrettanti vincoli cinematici: dhi (q) hi q=0 = dt q (2.5)

Se quindi tali vincoli non sono integrabili si parla di vincoli anolonomi. Per comprendere appieno questa differenza si consideri un singolo vincolo Pfafano aT (q) q = 0 ` se esso e olonomo, pu` essere integrato e scritto nella forma o h (q) = c (2.7) (2.6)

dove h/q = (q)aT (q), con il fattore di integrazione (q) = 0 e c semplice costante di integrazione. Di conseguenza, si ha una perdita di accessibilit` nello spazio delle congurazioni, a ` poich il moto del sistema meccanico in C e connato a una particolare supercie di livello e della funzione scalare h. Tale supercie che dipende dalla congurazione iniziale q0 attraverso il valore di c = h(q0 ) ha dimensione n 1. Se invece il vincolo (2.4) fosse anolonomo, si avrebbe che le velocit` generalizzate sarebbero effettivamente vincolate ad appartenere a un a sottospazio di dimensione n 1, e cio` lo spazio nullo della matrice aT (q). Daltra parte per` , e o il fatto che il vincolo non sia integrabile implica che non esiste alcuna perdita di accessibilit` a in C per il sistema. In altri termini anche se il vincolo ha ridotto il numero di gradi di libert` a a n 1, il numero di coordinate generalizzate non pu` essere in alcun modo diminuito, nemmeno o localmente. Ora non rimane che valutare in quale categoria di vincoli rientra il nostro vincolo (2.2), do` ve per` osservando la Figura 2.3 e facile intuire che questo vincolo sia anolonomo in quanto o non comporta alcuna perdita di accessibilit` nello spazio delle congurazioni2 . Tale vincolo di a rotolamento infatti indica esclusivamente che la velocit` lineare del punto (x, y) non pu` avea o re componenti lungo la direzione normale al piano sagittale su cui poggia, mentre la velocit` a rotazionale attorno allasse verticale risulta libera.

2.2 Calcolo del modello cinematicoVediamo ora di ricavare il modello cinematico del nostro veicolo, il quale metter` in relazione il a m vettore degli ingressi in velocit` al sistema u con il vettore delle derivate delle coordinate a generalizzate q n . Quindi tale modello sar` espresso nella seguente forma am

q=j=12

gj (q)uj = G(q)u

con m = n k

(2.8)

Esiste ovviamente anche un metodo formale per la valutazione dei vincoli cinematici, ma per non appesantire ` troppo la trattazione questo e stato omesso.

2.2.2 Calcolo del modello cinematico

14

` dove k e il numero di vincoli Pfafani mentre G(q) rappresenta una base del N (AT (q))3 . Os` servando inoltre la (2.6) possiamo inoltre aggiungere che tale modello e rappresentativo di un ` sistema privo di deriva in quanto si ha q = 0 quando lingresso e nullo. ` La scelta dei campi vettoriali di ingresso g1 (q), . . . , gm (q) e quindi di G(q) non e ovviamente unica. Di conseguenza le componenti del vettore u possono assumere signicati diversi. In generale per` e possibile scegliere la base in modo che le componenti uj siano legate direttamente o` agli ingressi di controllo effettivamente disponibili. A questo punto sulla base delle considerazioni fatte e preso il vincolo di rotolamento (2.2) vediamo che le colonne della matrice cos 0 G(q) = g1 (q) g2 (q) = sin 0 (2.9) 0 1

nella gli ingressi v e hanno una chiara interpretazione sica. Si noti per` che in realt` i nostri o a ingressi di controllo sono le velocit` di rotazione della ruota destra e sinistra, che indicheremo a ` rispettivamente con R e L , per cui mediante semplici considerazioni e possibile ricavare le relazioni biunivoche tra R e L e la velocit` lineare del punto medio dellasse delle ruote e a quella angolare del robot v= r (R + L ) 2 = r (R + L ) d (2.11)

costituiscono per ogni q, una base dello spazio nullo della matrice associata al vincolo Pfafano. ` Per cui il modello cinematico delluniclo riferito al punto medio dellasse delle due ruote e perci` o x cos 0 (2.10) y = sin v + 0 0 1

` ` dove r e il raggio delle ruote e d e la distanza tra i centri delle stesse. Quindi il modello cinematico del biciclo a trazione differenziale una volta applicate le (2.11) diventa x y =

r cos 2 r sin 2 r d

r cos 2 r sin 2 r d

R L

(2.12)

In algebra lineare il nucleo di una matrice AT (q) si indica con N (AT (q)) e costituisce linsieme di vettori q tali che AT (q) = 0.

3

Capitolo 3 Logistica di supportoPer lo sviluppo di questo lavoro, ci siamo avvalsi di larga variet` di prodotti marchiati PICAXE1 . a In particolare abbiamo incentrato il nostro lavoro sui seguenti prodotti Experimenter Board AXE090 Connect Board AXE210 Micro-Robot AXE120 Microcontrollori PICAXE-18/18X PICAXE Programming Editor

e sulla sensoristica supportata dai Micro-Robot. Nel corso di questo capitolo descriveremo tali prodotti cosi da fornire una idea di massima di tali prodotti.

1 PICAXE Experimenter Board (AXE090)` LAXE090, e una basetta di sperimentazione che consente di testare e simulare qualunque tipo di chip PICAXE (PIC8/18/28). Lavora a 4.5 V, e dispone di una serie di porte ingresso/uscita sia di tipo analogico che digitale, la predisposizione per il collegamento di un cavo seriale (AXE027) per effettuare il download dei programmi sviluppati, di una basetta di prototipazione, di pulsanti di reset e di switch e, inne, di led, utili per vericare il corretto funzionamento della board. Durante lo sviluppo ` della tesina, si e rilevato uno strumento utile che ha consentito di capire e di risolvere i numerosi problemi1 riscontrati.

Figura 3.1: AXE090.

` PICAXE e un marchio registrato della Microchip Technology Inc. I prodotti PICAXE sono distribuiti dalla ` Revolution Education Ltd. Revolution Education non e in alcun modo legata a Microchip Technology Inc.

1

3.2 PICAXE Micro-Robot (AXE120)

16

2 PICAXE Micro-Robot (AXE120)` Il Micro-Robot AXE120 e un semplice uniciclo a trazione differenziale capace di svolgere semplici compiti e tale da supportare diverse espansioni come ad esempio i sensori che descriveremo nel seguito. La ` base del micro-robot e costituita da un involucro di plastica (120x80mm) che ospita le 4 batterie AA da 1.5V, dispone inoltre di due motori centrali 0.46W, cui sono collegate due ruote, e dei riduttori rapporto di ` 42:1. Questa unit` di base e dotato, inola ` tre di schede di controllo, su cui e possibile alloggiare il microcontrollore PICAXE-18, programmabile tramite il Download Cable AXE027 collegato al PC. Inoltre dispone di PWM Motor speed Controller, che fornisce i segnali di controllo ai motori, consentendo di variare la velocit` delle singole ruote, a e quindi denire dei percorsi o altre routine di controllo per il movimento.

Figura 3.2: AXE120.

2.1 Sensoristica supportata dal Micro-RobotI sensori sono dispositivi atti a trasformare una grandezza sica che si vuole misurare in un segnale di natura diversa (tipicamente elettrico) pi` facilmente misurabile o memorizzabile. In u questa sottosezione descriveremo in particolare la sensoristica che abbiamo utilizzato sui MicroRobot AXE120. Nel nostro lavoro ci siamo confrontati con tre tipologie diverse di sensori esterocettivi, ovvero sensori in grado di fornire al robot informazioni sullambiente in cui opera e tali da permettergli di intraprendere azioni intelligenti in modo autonomo. Le tipologie di sensori che descriveremo sono le seguenti sensori di luminosit` a sensori di distanza sensori di contatto Sensore di Luminosit` (AXE121) a Chiamati anche sensori di luce o ottici, sono spesso realizzati utilizzando dispositivi a semiconduttore fotosensibili come ad esempio fotocellule o fotodiodi. Sono dispositivi spesso utilizzati in coppia con dispositivi emettitori di radiazioni luminose, con lo scopo rilevare tale

Figura 3.3: AXE121.

3.2.2 Sensori di distanza

17

radiazione, come ad esempio nei dispositivi per eseguire operazioni di Line-Following. Un Line Follower consiste, generalmente, di un sensore di luce ed un LED a infrarossi. Lavora illuminando una supercie con luce infrarossa, il sensore poi raccoglie le radiazioni dei raggi riessi ed in base alla loro intensit` determina la riessivit` della supercie in questione. La luce coa a lorata nel pavimento, sar` maggiormente riessa rispetto ad eventuali luci scure, apparendo pi` a u luminosa al sensore. Si pu` utilizzare un line follower per aiutare un robot a navigare allinterno o di un determinato percorso o in qualsiasi altra applicazione in cui occorre distinguere tra 2 alti contrasti su una supercie. ` Vediamo ora di entrare pi` nel dettaglio sul funzionamento del nostro dispositivo AXE121 che e u ` appunto un dispositivo di line-following a tre sensori. Sulla base di quanto detto e facile capire che dai sensori rileviamo una misura di tipo analogico, cio` le sue uscite coprono un detere minato range di valori continuo, ad esempio tra 0 a 5 Volt. Questa misura viene quindi letta direttamente dal PIC16F676 che sta sul dispositivo ed interpretata come una misura tipo digitale tra 0 a 255 livelli. Sulla base di questa conversione, il microcontrollore confronter` il livello a di luce misurato con delle soglie pressate e sulla base di queste restituir` una uscita in binaria a con livelli di tipo TTL, una per ogni sensore. Tali uscite verranno poi associate a tre ingressi diversi del microcontrollore che sta sulla scheda del micro-robot ed in base a tali letture ed allalgoritmo in esso inserito, il robot sar` in grado a in eseguire dei movimenti in maniera autonoma2 . In Figura 3.4 presentiamo la scala di conversione della misura rilevata dal fotodiodo e come il microcontrollore la interpreta. Possiamo inoltre aggiungere che lo spessore minimo in grado di ` essere rilevato da questa tipologia di fotodiodi e di 0.25 inch.

Figura 3.4: Scala di conversione digitale della misura rilevata dal fotodiodo.

2.2 Sensori di distanzaSono dei sensori in grado sono in grado di fornire una informazione di tipo strutturato in quanto capaci di rivelare la presenza di oggetti nelle immediate vicinanze del lato sensibile del sensore stesso, senza che vi sia un effettivo contatto sico. Tali sensori vengono spesso usati per costruire mappe dellambiente cui si trova il robot o per riconoscere o evitare ostacoli. Particolarmente diffusi nelle applicazioni robotiche sono i sensori che sfruttano la propagazione della luce, in particolare laser (Light Amplication by Stimulated Emission of Radiation) e quelli basati sulla propagazione del suono attraverso un mezzo elastico, anche detti sonar (SOund NAvigation and Ranging). Di seguito illustreremo le principali caratteristiche di questultima tipologia di sensore.Nella sezione relativa alla prova pratica realizzata presenteremo un semplice algoritmo di line-following da inserire nel microcontrollore dellAXE120.2

3.2.2 Sensori di distanza Ultrasonic Range Finder (SRF004/SRF005) I sonar utilizzano impulsi acustici chiamati trigger e i loro echi per misurare la distanza dagli oggetti. Nota la velocit` di propagazione del a suono in un dato mezzo (per esempio, aria o ac` qua), la distanza da un oggetto e proporzionale allintervallo di tempo che londa acustica impiega a percorrere in tragitto sensore-oggettosensore, comunemente chiamato tempo di volo. Per cui tale distanza viene valutata mediante la seguente relazione d0 = cs tv 2 (3.1) Figura 3.5: Fronte SRF004.

18

` dove cs e la velocit` del suono e tv il tempo di a volo. I sensori SRF004/SRF005 sono realizzato mediante trasduttori piezoelettrici ed utilizza sensori distinti in trasmissione e ricezione. LSRF004 presenta dei range di portata nominale che consentono di rilevare oggetti posti sino a 2 metri di distanza, mentre lSRF005 che arriva ad sino a 3 metri, mentre entrambi consentono di discriminare distanze minime non inferiori a 3 centimetri. Lavorano alimentati da una tensione di 5V e presentano una serie di ingressi e uscite, schematizzati in Figura 3.6. Nel nostro lavoro abbiamo utilizzato il sensore SRF004 e lo abbiamo collegato al Micro-Robot AXE120 in modo tale che, grazie al microcontrollore presente in questultima scheda fosse possibile generare impulsi di Trigger di opportuna durata (non inferiore ai 10 sec) da inviare al sensore e ricevere da questo lecho dal quale il nostro microcontrollore valutando la sua durata sar` in grado di valutare tali distanze. a ` In Figura 3.7 e riportato un semplice diagramma temporale che permette facilmente di capire il suo principio di funzionamento.

Figura 3.6: Retro SRF004.

Figura 3.7: Funzionamento SRF004.

Sensore di contatto (AXE122) Si tratta di un sensore di tipo passivo, utilizzato come sensore di prossimit` o di ne corsa, a basato sul principio che, non appena un oggetto va a sbattere contro i contatti del sensore, questultimo apre o chiude un circuito, come un semplice interruttore, a seconda della congu` razione che si e adottato, se di tipo normalmente aperto o normalmente chiuso. La chiusura (o ` lapertura) del circuito fornir` al circuito cui e collegato un segnale di tipo ON/OFF, che cona ` sentir` di stabilire se il sensore e, o meno, in prossimit` di un eventuale oggetto. a a

3.3 PICAXE Connect Board (AXE210)

19

` E possibile collegare due sensori di contatto al singolo ingresso, ma e difcile rilevarli in modo preciso (sono necessari accorgimenti software).

Figura 3.8: AXE120 equipaggiato con AXE122.

3 PICAXE Connect Board (AXE210)` LAXE210 e una board di comunicazione sperimentale che consente allutente di interfacciare i chip PICAXE della serie 18 con moduli Maxstream XBee o con moduli LocSense GPS. Nel ` nostro lavoro ci siamo confrontati con la prima congurazione ed in particolare si e instaurata una comunicazione point-to-point tra due micro-robot AXE120 equipaggiando questi con due schede AXE210. Prima di descrivere le caratteristiche tecniche di tali schede per` e bene dare o` una descrizione del dei punti di forza del protocollo di comunicazione ZigBee. ZigBee Protocol (802.15.4) ` ZigBee e il nome di una specica per un insieme di protocolli di comunicazione ad alto livello ` che utilizzano piccole antenne digitali a bassa potenza ed e basato sullo standard IEEE 802.15.4 per wireless personal area network (WPAN). Lo ZigBee opera nelle frequenze radio assegnate per scopi industriali, scientici e medici (ISM); 868 MHz in Europa, 915 MHz negli Stati Uniti e 2,4 GHz nella maggior parte del resto del mondo. Questa tecnologia ha lo scopo di essere pi` semplice e pi` economica di altre WPAN come, u u ad esempio il Bluetooth. Ad esempio il quantitativo di codice necessario per congurare la tipologia pi` complicata di nodo ZigBee risulta essere circa il 50% in meno di quello necessario u per un nodo tipico Bluetooth ed anche in termini di costi e consumi i vantaggi sono abbastanza esaltanti; per questo motivo i protocolli ZigBee hanno trovato largo spazio in applicazioni embedded che richiedano un basso transfert rate e bassi consumi, quali il controllo industriale, le reti di sensori e la domotica. Possiamo dire infatti che la maggior parte dei dispositivi ZigBee richiedono anche un microcontrollore. La sua architettura consente comunicazioni unicast, broadcast e groupcast e prevede tre tipologie di dispositivi: ` ZigBee Coordinator (ZC): e il dispositivo pi` intelligente tra quelli disponibili, costituisce u la radice di una rete ZigBee e pu` operare da ponte tra pi` reti. Ci pu` essere un solo o u o ` Coordinator in ogni rete. Esso e inoltre in grado di memorizzare informazioni riguardo alla sua rete e pu` agire come deposito per le chiavi di sicurezza. o

3.3 PICAXE Connect Board (AXE210)

20

ZigBee Router (ZR): questi dispositivi agiscono come router intermedi passando i dati da e verso altri dispositivi. ZigBee End Device (ZED): includono solo le funzionalit` minime per dialogare con il a suo nodo parente (Coordinator o Router), non possono trasmettere dati provenienti da altri dispositivi; sono i nodi che richiedono il minor quantitativo di memoria e quindi risultano spesso pi` economici rispetto ai ZR o ai ZC. u

(a)

(b)

(c)

Figura 3.9: Architetture ZigBee: a) mesh; b) ad albero; c) many to one e source routing. Riferendoci ai layer della pila ISO/OSI che schematizza i protocolli attraverso i quali viene ridotta la complessit` implementativa di un sistema di comunicazione per il networking, possiaa mo dire che a livello di data link le reti ZigBee possono essere beacon enabled e non-beacon ` enabled. Dove il beacon e un pacchetto inviato in polling (a turno) su tutta la rete dal nodo master a tutti gli slave a turno, ad indicare la propria disponibilit` a ricevere. a Nelle reti non-beacon-enabled (cosi come nelle beacon-enable),viene utilizzato un meccanismo di accesso al canale di tipo CSMA/CA. In questo tipo di reti i ZR solitamente tengono i loro ricevitori sempre attivi, e ci` provoca un consistente consumo di energia. In o pratica queste reti sono miste: alcuni dispositivi sono costantemente pronti a ricevere, mentre altri si limitano a trasmettere in presenza di uno stimolo esterno. Nelle reti beacon enabled gli ZR trasmettono periodicamente dei beacon per confermare la loro presenza agli altri nodi. Tra un beacon e laltro i nodi possono cambiare modalit` per risparmiare energia, abbassando il duty cycle. Operazioni a basso duty cya cle, con lunghi intervalli di beacon, richiedono meccanismi di timing preciso, pi` difcili u e costosi da realizzare.

3.3 PICAXE Connect Board (AXE210)

21

Mentre a livello sico possiamo dire che nella banda a 2.4 GHz, dove abbiamo lavorato, sono previsti 16 canali ZigBee da 5 MHz ciascuno e che in tale banda viene utilizzata una modulazio` ne O-QPSK (QPSK con offset). Il data rate over-the-air3 e di 250 kbps per canale nella banda 2.4 GHz, mentre i livelli di potenza trasmessa si aggirano intorno ai 0 dBm (1 mW). Inoltre le distanza raggiungibili con questi dispositivi possono variare tra 10 e 75 metri a seconda dellambiente. Rifacendoci ora alla board AXE210 equipaggiata con un modulo XBee (Figura 3.10) possiamo dire che questa scheda necessita di una alimentazione di 4.5V (3xAA) e consente una trasmissione bidirezionale con una analoga AXE210. LAXE210 oltre al modulo XBee per funzionare deve ospitare a seconda della congurazione desiderata o un microcontrollore PICAXE della serie 18 o un chip MAX3232 che consente il collegamento tra la board ed un PC. Osservando Figura 3.11 e Figura 3.12 possiamo meglio comprendere come il modulo XBee comunica rispettivamente o con il PIC serie 18 o con linterfaccia MAX3232. La scheda inoltre presenta tre ` LED a cui e associato un preciso signicato ` RSSI che indica se il modulo XBee e in fase di ricezione ` STATUS che indica se il modulo XBee e attivo o in sleeping ` IND che indica se il modulo XBee e associato ad un altro modulo o se sta trasmettendo ` ` ` E importante inoltre e precisare che per poter instaurare una comunicazione tra due board e necessario eseguire la procedure di inizializzazione sui moduli XBee presente in [9], nella quale attraverso lXBee Setup Menu del Programming Editor PICAXE, collegando le schede AXE210 al PC si va ad impostare sui moduli XBee il rate ed il canale di lavoro cosi che i moduli possano riconoscersi4 . Nel nostro lavoro abbiamo instaurato una comunicazione point-to-point del tipo PICAXE-toPICAXE, ovvero equipaggiando entrambe le board di un PICAXE-18X. Nonostante ci` e stato o` molto utile in fase di testing sui codici da noi inseriti sui microcontrollori delle board eseguire anche connessioni del tipo PICAXE-to-Computer, per testare cosa effettivamente il lato trasmittente inviava Computer-to-PICAXE, per testare cosa effettivamente il lato ricevente riceveva ` Per fare questi test e stato ancora utilizzato il Programming Editor messo a disposizione dalle PICAXE ed in particolare linterfaccia seriale presente in P ICAXE > T erminal.

Figura 3.10: AXE210 equipaggiato con un modulo RF XBee.

3 4

In linea daria in caso di spazio libero. LXBee Setup Menu consente anche di congurare in maniera avanzata i moduli.

3.4 Microcontrollori PICAXE-18/18X

22

Figura 3.11: AXE210 - PICAXE Circuit.

Figura 3.12: AXE210 - MAX3232 Circuit.

4 Microcontrollori PICAXE-18/18XPer microcontrollore PICAXE si intende un microcontrollore economico (basato sul chip PIC) di tipo ash in grado di essere riprogrammato per un numero illimitato di volte senza lausilio ` di software costosi o programmatori elettronici esterni. Punto di forza di questi chip e che il linguaggio attraverso il quale sono programmati, ovvero il BASIC, il cui tempo di apprendimento ` e di gran lunga inferiore rispetto a linguaggi come C o Assembly e per questo sono consigliati ad utenti alle prime armi. Nel nostro lavoro sono stati utilizzati microcontrollori PICAXE-18 (PIC16F627A) per i veicoli AXE120 e microcontrollori PICAXE-18X (PIC16F688) sulle board AXE210. Rispettivamente in Figura 3.14 e Figura 3.15 possiamo osservare rispettivamente le proprie caratteristiche. Unico ` punto dolente di questi chip e che ha creato non pochi problemi e stata la ridottissima capacit` a

3.4 Microcontrollori PICAXE-18/18X

23

della memoria EEPROM 5 che determinava quindi limpossibilit` di programmarli con codici di a dimensioni maggiori di 128 byte per il 18 e di 256 per il 18X. Per quanto riguarda invece la loro programmazione sia la board AXE120 che la AXE210 presentavano un socket stereo da 3.5mm che permetteva di collegare ogni board al proprio PC attraverso lopportuno cavo AXE0276 .

Figura 3.13: Pinout PICAXE-18/18X.

Figura 3.14: Caratteristiche PICAXE-18 (PIC16F627A).

Figura 3.15: Caratteristiche PICAXE-18X (PIC16F688).5

EEPROM: Electrically Erasable Programmable Read-Only Memory. Il cavo AXE027 permette di collegare qualsiasi board PICAXE al proprio PC attraverso una semplice porta ` USB, in alternativa per PC provvisti di porta seriale e possibile utilizzare il cavo AXE026.6

3.4 Microcontrollori PICAXE-18/18X

24

Figura 3.16: Schema elettrico per interfacciare qualsiasi board PICAXE ad PC. In Figura 3.16 riportiamo lo schema elettrico che permette tale collegamento, risulta interessante sottolineare il fatto che i microcontrollori vengano programmati attraverso un semplice jack audio da 3.5mm ed un opportuna interconnessione di resistenze per regolare i livelli di tensione. A questo punto per completare la conoscenza su questa tipologia di chip di fare un breve ` riassunto di quella che e la programmazione BASIC su microcontrollori PICAXE. Richiami di programmazione BASIC ` Il BASIC (Beginners All purpose Symbolic Instruction Code) e un linguaggio ad alto livello sviluppato a partire dal 1963 nellUniversit` di Dartmouth per il calcolatore GE-225, si diffea renzi` subito dalla maggior parte dei linguaggi suoi coetanei enfatizzando la semplicit` duso o a piuttosto che la potenza espressiva. Con gli anni il BASIC ha subito notevoli evoluzioni e cambiamenti, diventando un linguaggio strutturato con potenzialit` molto simili a quelle di altri linguaggi evoluti ed al giorno doggi ina ` sieme al C ed al Pascal e uno dei linguaggi pi` utilizzati per la programmazione dei PICmicro. u ` La programmazione in BASIC e molto simile per costrutti e gestione del usso di esecuzione ` allAssembly, infatti lesecuzione del programma e di tipo sequenziale, con la possibilit` di etia ` chettare porzioni di codice con delle etichette (label) alle quali e possibile arrivare con semplici comandi di salto (goto). Di seguito presentiamo due semplici script BASIC che permette il controllo della terza uscita di un microcontrollore PICAXE18 alla quale se fosse collegato un LED sarebbe possibile accenderlo e spegnerlo con una frequenza di 1 Hz. symbol LED = 3 Permette di assegnare un nome ad unmain: high LED pause 1000 low LED pause 1000 goto main ingresso, uscita, o registro del PIC. Label assegnato al task. porta a livello logico alto una uscita. comando di attesa in msec. porta a livello logico BASSO una uscita.

Permette il salto ad una etichetta.

main: let pins=%00000100 Permette di assegnare un valore allingresso, uscita o registro che prende come argomento. pause 1000 let pins=%00000000 identifica tutte le 8 uscite del PIC. indica che gli stiamo assegnando un valore in binario, si usa invece per lesadecimale. pause 1000 goto main

3.5 PICAXE Programming Editor

25

` La differenza tra i due e che il primo pilota solo la terza uscita (3) del PIC, mentre il secondo tutte ed otto (pins) contemporaneamente. Per quanto riguarda le strutture di controllo disponibili, oltre al gi` citato goto sono disponibili tutti i principali costrutti della programmazione come ad a esempio cicli for, strutture if-else e select-case. Nella parte dedicata ai codici sviluppati per far realizzare ai nostri veicoli il task previsto si potr` osservare limplementazione di tali a strutture.

5 PICAXE Programming EditorPresentiamo brevemente il software freeware distribuito dalla PICAXE (per ambiente Microsoft) chiamato Programming Editor. Questa applicazione rappresenta un vero e proprio IDE di programmazione per chip PICAXE che permette di scrivere e fare il debugging del codice prodotto. Oltre a questo per` vengono forniti anche diversi wizard che consentono allutente di o interfacciarsi al 100% con qualsiasi prodotto distribuito dalla PICAXE. Tra i vari tool forniti risulta degna di nota linterfaccia di simulazione mostrata in Figura 3.17, che permette il testing del codice prodotto; in particolare consente la verica dello stato del microcontrollore (lo stato dei registri ed i valori delle uscite) durante la simulazione e la generazione di segnali dingresso tali da sollecitare il PIC (tali segnali possono essere binari asincroni e seriali sincroni). Si noti inoltre che bench i microcontrollori vengano programmati in BASIC, il Programming e Editor consente anche la stesura di codice attraverso owcharts, cos` da consentire ai neoti ` di potersi avvicinare al mondo della programmazione embedded. In Figura 3.18 e invece riportato uno screenshot del programma durante una simulazione, dove si pu` notare oltre che o linterfaccia di simulazione, anche le nestre che sempre in simulazione permettono di generare e visualizzare comunicazione seriali in ingresso ed in uscita al PIC; sulla sinistra si pu` notao re invece la nestra che permette di tenere sotto controllo la dimensione del codice prodotta, dato che come precedentemente sottolineato questa tipologia di PIC presentano una capacit` a veramente ridotta.

Figura 3.17: Screenshot dellinterfaccia di simulazione del PICAXE Programming Editor.

3.5 PICAXE Programming Editor

26

Figura 3.18: Screenshot del PICAXE Programming Editor.

Capitolo 4 Un caso pratico1 Descrizione Problematica` Il caso duso che si vuole studiare, altro non e che un caso reale tipico nei Sistemi FMS per la gestione del magazzino, dove si ha una completa collaborazione tra diverse macchine. Nello specico si vuole caratterizzare il comportamento relativo al carico e allo scarico di merci da una parte allaltra dellimpianto, utilizzando due robot mobili. Per cui avremo un AGV posizionato in una zona dellimpianto e che chiameremo Zona di Scarico, e dalla quale seguendo un percorso tramite sensori atti al Line-Following, si dirige verso un altra parte di impianto, che chiameremo Zona di Carico. Una volta arrivato, questo si fermer` grazie a dei sensori di ne corsa in attesa del pezzo che a ` verr` caricato da un secondo robot che e in comunicazione con lAGV. a Questo secondo robot trasportatore, si occuper` del caricamento del pezzo sullAGV che, a sua a volta, rimarr` in attesa sino a quando non rilever` , tramite celle di carico poste sulla piattafora a ma, ad esempio, il vettore. Una volta caricato il pezzo, lAGV seguir` il percorso in senso opposto sino a ritornare alla a zona di scarico, dove rimarr` sino a quando non gli viene dato un nuovo comando di avvio. Il a comportamento sopra descritto, pu` essere espanso nel caso di magazzini di vaste dimensioni, o con pi` robot trasportatori, e con diversi AGV che si troveranno ad fare delle scelte di percorso u a seconda della locazione del vettore che devono caricare. Lesperimento in scala ridotta, viste le tipologie di sensori e di materiale di cui si dispone, sar` sviluppato seguendo la logica di funa zionamento descritta, con alcune modiche. Per i due automi, si utilizzeranno dei Micro-Robot AXE120, dei quali, uno, rinominato per semplicit` Pant-E, verr` caratterizzato come AGV, mena a tre laltro, chiamato Wall-E, funzioner` come robot mobile trasportatore per il caricamento dei a pezzi su Pant-E. Per denire il comportamento da Line-Follower, verr` montato un sensore a di luminosit` AXE121, mentre, come sensore di ne corsa di utilizzer` un sensore di contatto a a AXE122. Per permettere ai Micro-Robot la comunicazione, si utilizzeranno dei moduli di comunicazione basati sul protocollo ZigBee. Infatti, non appena Pant-E arriva in zona di carico, invier` un segnale di start a Wall-E che si occuper` del trasporto delleventuale prodotto da caa a ricare. Il Micro-Robot Wall-E, invece, utilizzer` un sensore a ultrasuoni SRF004, che utilizzer` a a per rilevare, la presenza di Pant-E allinterno della sua portata nominale e, non appena rileva che Pant-E si trova ad una certa distanza, denita in fase di programmazione del microcontrollore PIC18 di cui dispone. Dopo un certo tempo dattesa Wall-E torner` alla posizione di partenza. a Poich non si dispone di una cella di carico, si utilizzer` , su Pant-E, il sensore AXE122, per e a dare il segnale di ritorno. Non appena Pant-E ricever` il segnale, torner` alla zona di Scarico, in a a

4.2 Simulazione MatLab del task attesa di un nuovo segnale davvio.

28

2 Simulazione MatLab del taskIn questa sezione proporremo una simulazione sviluppata in ambiente MatLab del task appena descritto ed in particolare presenteremo lalgoritmo di line-following da noi implementato.

2.1 Descrizione dellalgoritmo di Line Following` Lalgoritmo che di seguito presenteremo e totalmente fondato sullalgebra matriciale e sui concetti di posizione e orientazione di un corpo rigido nello spazio. Poich desideriamo simulare al calcolatore gli spostamenti di un robot nel suo spazio operativo, e ` la prima problematica e stata scegliere come modellare al calcolatore questo spazio. Per far ci` si e deciso di rappresentarlo come una matrice bidimensionale nella quale nel quale o ` ` il veicola possa muoversi e nella quale e presente il path che il che questo dovr` seguire. Per a ` ottenere questo si e quindi importato in MatLab con il comando[X,map]= imread(mappa.bmp);

un immagine bitmap monocromatica contenente il percorso su cui eseguire il following e suc` cessivamente si e convertita limmagine indicizzata prodotta [X, map], in formato RGB1 con listruzionepista = ind2rgb(X,map);

` dove pista e una matrice n x m x 3, dove n ed m sono altezza e larghezza in pixel dellimmagine, mentre i tre livelli di profondit` corrispondo rispettivamente ai tre livelli di colore RGB. a Una volta creato il nostro spazio operativo che possiamo vedere come una griglia, notiamo che ` a su di essa e gi` presente un sistema di riferimento intrinseco, in quanto ogni coppia di indici (i, j) sulla matrice identicano un pixel diverso. Per cui ssata la terna di rifermento O0 x0 y0 z0 sulla griglia (vedi Figura 4.2), avremo che ad ogni posizione assunta dal veicolo corrisponder` una coppia di indici che univocamente ne a 2 identicano il pixel su cui si trova . In Figura 4.1 sono riportati due possibile percorsi su cui eseguire linseguimento di linea, men` tre in Figura 4.2 e riportata una schematizzazione della posizione del veicolo nella matrice di pixel rappresentante il nostro spazio operativo. Vediamo ora come rappresentare il veicolo nel nostro script. Come gi` accennato, questo verr` a a rappresentato come un corpo rigido la cui posizione sar` identicata dal suo baricentro; sapa ` piamo anche che solidale ad esso e montato un line-follower a tre sensori e che la posizione ` ` di questi rispetto alla mappa e fondamentale per eseguire il following, per cui si e deciso di rappresentare questa struttura rigida come in Figura 4.3. Di seguito possiamo vedere il codice MatLab relativo alla realizzazione del veicolo; il veicolo ` e realizzato da quattro elementi RGB di dimensione 4x4 tre rossi rappresentativi dei sensori, ` mentre un quarto relativo al baricentro del veicolo. Inoltre dato che il veicolo e in grado di` Si e deciso di utilizzare il formato RGB anzich lavorare in scala di grigi perch come vedremo pi` avanti sar` e e u a necessario colorare dei pixel sulla pista. 2 ` Si noti che il veicolo viene rappresentato come un corpo rigido la cui posizione e identicata dalle coordinate del suo baricentro.1

4.2.1 Descrizione dellalgoritmo di Line Following

29

(a)

(b)

Figura 4.1: Due possibili percorsi su cui eseguire il line-following.

Figura 4.2: Rappresentazione della posa iniziale del veicolo sulla terna di riferimento.

Figura 4.3: Rappresentazione del veicolo. muoversi ed assumere diverse orientazioni sulla griglia sar` necessario ssare un sistema di a riferimento O1 x1 y0 z1 sul suo baricentro (vedi Figura 4.2); le coordinate dei sensori nel codice che segue sono appunto espresse su tale riferimento3 .%%% Matrice 4x4 inizializzata a zero sensore=zeros(4,4,3); macchina=zeros(4,4,3); for i=1:4 for j=1:4 %%% Sensore: colore ROSSO sensore(i,j,1)=1; %%% Macchina: colore BLU macchina(i,j,3)=1; end

` Poich la struttura e completamente connata sul piano (x, y), in tutta la trattazione le coordinate relative e ` allasse z sono state omesse, in quanto tale coordinata e utilizzata solo come asse di rotazione.

3

4.2.1 Descrizione dellalgoritmo di Line Followingend SensCen = [ 0 10]; SensSin = [ 8 10]; SensDes = [-8 10];

30

Fatte queste premesse vediamo ora di focalizzare la nostra attenzione sullalgoritmo proposto. Con riferimento alla Figura 4.2 si ha che le coordinate del veicolo rispetto alla terna di riferimento O0 x0 y0 z0 possono essere espresse dal vettore P osCar, il cui estremo rappresenta lorigine del riferimento solidale al veicolo O1 x1 y1 z1 , inoltre con semplici considerazioni geometriche si possono ricavare le posizioni dei sensori rispetto alla terna di riferimento con la semplice relazione0 p0 = o0 + R1 p1 1

(4.1)

dove p0 e p1 rappresentano il medesimo punto rispettivamente nel sistema di riferimento O0 x0 y0 z0 ed O1 x1 y1 z1 , o0 e il vettore che rappresenta lorigine della terna 1 rispetto alla 0 ed 1 ` 0 R1 rappresenta la matrice di rotazione della terna 1 rispetto alla 0, da notare che nel nostro caso sar` una Rz , dove lasse z risulta uscente dal piano del foglio ed ovviamente posizionato sula a terna 1. Quindi la (4.1) rappresenta la trasformazione di coordinate (traslazione + rotazione) di un vettore applicato da una terna ad un altra. Per cui sulla base della (4.1) e di come sono stati scelti i riferimenti possiamo esprimere le coordinate del veicolo e dei sensori sulla terna di riferimento come posCar 0 posSensDes0 posSensCen0 posSensSin0 = = = = posCar + Rz ()step posCar + Rz ()SensDes1 posCar + Rz ()SensCen1 posCar + Rz ()SensSin1

(4.2)

Osservando la (4.2) notiamo la presenza di due nuove variabili che precedentemente non erano ancora state menzionate, ovvero e step. Questa coppia di valori avr` un ruolo fondamentale a nellalgoritmo in quanto rappresentano rispettivamente lorientazione del veicolo nella griglia rispetto alla posizione di partenza ed il passo del veicolo quando questo esegue movimenti traslatori4 . Passiamo ora al cuore dellalgoritmo, lidea di base consiste nel controllare se nel punto in cui ` sono i sensori, espressi ovviamente nella terna di riferimento e presente il percorso o meno. ` In particolare se nella posizione del sensore centrale e presente il percorso, ovvero il pixel ` con le coordinate con le coordinate attuali del sensore sulla mappa e impostato a zero (cio` e ` e nero), allora il veicolo si muove in avanti di una quantit` pari a step con lorientazione a che gi` possedeva, altrimenti se tale pixel risulta ad uno (cio` e bianco), allora si effettua una a e` rotazione sul proprio asse di un certo angolo ssato5 nella direzione opposta a quella del sensore ` laterale che si trova attualmente sulla pista. Se dopo questa rotazione il sensore centrale non e 6 ancora tornato sulla pista viene rieseguita tale procedura . Nel caso in cui invece tutti e tre i ` sensori dovessero stare fuori dalla dalla pista, si e fatto in modo che il veicolo si fermi in quantoIn pratica la coppia [, step] permetter` alla struttura rappresentante il veicolo di compiere movimenti rotoa traslatori. 5 Langolo di scansione pu` essere scelto a piccolo a piacere, da notare per` che minore sar` tale rotazione, o o a maggiore sar` il numero di rotazioni e quindi di passi da compiere per riportare il sensore centrale sulla pista. a 6 Facciamo presente che gli algoritmi di line-following a tre sensori sono spesso implementati dando priorit` al a sensore centrale ed in particolare il veicolo procede in avanti solo se il sensore centrale risulta sul path, mentre i due laterali sono utilizzati per eseguire le correzioni sulla traiettoria.4

4.2.1 Descrizione dellalgoritmo di Line Following

31

` ` signicherebbe o che e arrivato in una ipotetica zona di scarico o che ha perso il percorso; e bene quindi evitare angoli di scansione troppo grandi perch altrimenti si correrebbe il rischio e ` di portare il veicolo fuori dal path. Nel nostro algoritmo e stato scelto per langolo di scansione un valore pari a 30. Mostriamo ora mediante rappresentazione omogenea come vengono aggiornate le coordinate del vettore posizione rappresentativo del veicolo e dei suoi sensori per tre passi consecutivi riportati in Figura 4.4.

(a)

(b)

(c)

Figura 4.4: Diverse tipologie di robot mobili.

4.2.1 Descrizione dellalgoritmo di Line Following

32

Partiamo dalla situazione in Figura 4.4(a) dove il baricentro del veicolo si trova nel punto posCar 0 = [35, 467]T 7 , mentre i sensori in base alle (4.2) si trovano in posSensDes0 = [27, 477]T posSensCen0 = [35, 477]T posSensSin0 = [43, 477]T

(4.3)

A questo punto poich il sensore centrale risulta sul percorso (vedi Figura 4.4(a)), allora per e quanto detto in precedenza il veicolo potr` avanzare di una quantit` pari a step in base alla a a seguente relazione0 posCar1 1

= A0 1

step 1

=

0 Rz () posCar1 0T 1

step 1

=

[35, 467]T 1

(4.4)

dove A0 rappresenta la nostra matrice di trasformazione omogenea e rappresenta lattuale 1 orientazione del veicolo, inizialmente nulla. Con lo stesso procedimento vengono aggiornate anche le coordinate dei sensori, che ora varranno rispettivamente posSensDes0 1 posSensCen0 1 posSensSin0 1 = A0 () 1 SensDes 1 SensCen 1 SensSin 1 = [27, 477]T 1 [35, 477]T 1 [35, 477]T 1

=

A0 () 1

=

(4.5)

=

A0 () 1

=

e che ovviamente coincidono con i valori riportati in Figura 4.4(b). Ora ci troviamo nella situazione riportata in Figura 4.4(b), dove ora per` posSensCen risulta fuori dal percorso; sulla o base di quanto detto per` essendo posSensSin sulla mappa, avremo che il veicolo ruoter` o a sul posto di 30 verso sinistra. Ora gli elementi costitutivi del nostro veicolo avranno le seguenti coordinate posSensDes0 1 posSensCen0 1 posSensSin0 1 = A0 ( ) 1 SensDes 1 SensCen 1 SensSin 1 = [33, 480]T 1 [40, 476]T 1 [47, 472]T 1

= A0 ( ) 1

=

(4.6)

= A0 ( ) 1

=

dove rappresenta lattuale orientazione del veicolo sulla griglia e vale a questo passo = 30. Si noti nelle precedenti relazioni, ovvero (4.4), (4.5) e (4.6) tutte le coordinate sono stateSi noti che i sensori cos` come il baricentro sono rappresentati come elementi quadrati composti da 4x4 pixel, ma effettivamente abbiamo fatto in modo di lavorare come se fossero costituiti da un solo pixel (ovviamente uno di quelli pi` interni), per questo motivo abbiamo fornito una sola coppia di coordinate per elemento anche se in u realt` dovrebbero essere 16. a7

4.2.1 Descrizione dellalgoritmo di Line Following

33

arrotondate allintero pi` vicino, dato che tali valori devono rappresentare delle coordinate il su u una griglia discretizzata in pixel. Mostriamo ora una espressione pi` compatta per esprimere ad esempio la posizione di tali u elementi costituenti il veicolo. Prendiamo ad esempio il sensore centrale, possiamo vedere che sue le coordinate dopo le due iterazione appena descritte possono essere espresse come segue posSensCen0 1 = A0 A1 A2 1 2 3 SensCen1 1 = (4.7) =0 Rz () posCar1 0T 1

Rz (0) step 0T 1

Rz () 30 0T 1

SensCen1 1

Ovvero attraverso il prodotto di pi` matrici di trasformazione omogenee una per ogni operau ` zione. Si noti che questo risultato non dovr` stupirci in quanto e noto che le matrici di trasfora mazione omogenee, cos` come le matrici di rotazione permettendo di descrivere trasformazioni consecutive di coordinate eseguendo semplici prodotti tra matrici, in cui ogni una di queste lega la descrizione di un punto nella terna i alla descrizione dello stesso punto nella terna i 1. Osservando la (4.7) notiamo che per descrivere la posizione del sensore sono necessarie tre matrici, in quanto la prima descrive il punto di partenza del sensore in terna di riferimento, la seconda implementa la traslazione, mentre la terza la rotazione di 30. Se ad esempio avessimo compiuto n passi, sarebbero state necessarie n + 1 matrici e cosi via. ` Di seguito e riportato lalgoritmo completo per eseguire il line-following sul percorso assegnato, importante sottolineare che per funzionare correttamente il baricentro del veicolo deve trovarsi gi` sulla pista, proprio come spesso avviene nella realt` . Tale script inoltre permette la creazione a a di un piccolo video, in quanto ad ogni passo del ciclo f or principale vengono creati dei frame con la posizione del veicolo sulla pista relativamente a quella iterazione. Successivamente con il comando moovie vengono fatti scorrere tali fotogrammi dando origine ad un vero e proprio video. In Figura 4.5 sono invece riportate tutte le correzioni eseguite dallalgoritmo per compiere il following del path, per eseguire tale graco bisogna semplicemente eliminare il commento al comando subito prima del ciclo f or principale e commentare listruzione subito la stampa di sensori sui frame. Codice MatLab dellalgoritmo di Line Followingclear all, close all, clc; %%% Anonimus function Rz=@(in)[cos(in) -sin(in); sin(in) cos(in)]; UpDateCoord=@(POScar, THETA, SENSOR)... round(POScar+Rz(THETA)*SENSOR); %%% Carichiamo la pista desiderata %%% Pista 1 % posCar = [35 191]; % [X,map]= imread(mappa1.bmp); %%% Pista 2 posCar = [198 206]; [X,map]= imread(mappa4.bmp); pista = ind2rgb(X,map); %%% Istanziamo le immagini del sensore e del baricentro della macchina. %%% Sono rappresentati da due immagini espresse come matrici 3x3 RGB. sensore=zeros(4,4,3);

4.2.1 Descrizione dellalgoritmo di Line Following

34

Line Following Racetrack

XAxis

YAxis

Figura 4.5: Correzioni sulla traiettoria eseguita dal veicolo per seguire il percorso.macchina=zeros(4,4,3); for i=1:4 for j=1:4 %%% Diamo al Sensore il colore ROSSO sensore(i,j,1)=1; %%% Diamo al Baricentro della macchina il colore BLU macchina(i,j,3)=1; end end %%% Posizioni dei sensori rispetto al Baricentro della macchina SensCen = [ 0 10]; SensSin = [ 8 10]; SensDes = [-8 10]; %%% Orientazione macchina e passo di simulazione theta = 0 ; step=[0 7];

%%% Algoritmo di Line Following %% %%% Togliere il commento per visualizzare le traiettorie. % pista_frame=pista; %% for n=1:200 %%% Aggiornamento Cordinate della macchina e dei sensori sullimmagine. %%% Dato che lavoriamo sui pixel dellimmagine, questi vanno %%% arrotondati ad un valore intero. posSensCen = UpDateCoord(posCar,theta,SensCen); posSensDes = UpDateCoord(posCar,theta,SensDes); posSensSin = UpDateCoord(posCar,theta,SensSin); %%% Commentare se si desidera visualizzare le traiettorie. pista_frame=pista; %%% Disegna i sensori ed il baricentro della macchina for i=1:4 for j=1:4 for k=1:3 pista_frame( posCar(1)-2+i, posCar(2)-2+j, k) = macchina(i,j,k); pista_frame( posSensCen(1)-2+i, posSensCen(2)-2+j, k ) = sensore(i,j,k);

4.2.2 Codice della simulazione MatLab del task completopista_frame( posSensDes(1)-2+i, posSensDes(2)-2+j, k ) = sensore(i,j,k); pista_frame( posSensSin(1)-2+i, posSensSin(2)-2+j, k ) = sensore(i,j,k); end end end if ( pista(posSensCen(1), posSensCen(2),1) == 0 ) posCar=UpDateCoord(posCar,theta,step); else % [sensore destro, sensore sinistro]=[21 20] tmp=[ pista(posSensDes(1), posSensDes(2),1), pista(posSensSin(1), posSensSin(2),1)]; checkTMP=21*tmp(2)+20*tmp(1); switch (checkTMP) %%% Il sensCen ` gi` sul bianco!!!! e a case 1 % sensDes sul bianco e sensSin sul nero %%% Gira a destra theta=theta-deg2rad(30); % 30 gradi case 2 % sensDes sul nero sensSin sul bianco %%% Gira a sinistra theta = theta+deg2rad(30); % 30 gradi otherwise display(Fermati); end end imshow(pista_frame); [frameCorrente, mappa] = gray2ind(pista_frame,256); frames(n) = im2frame(frameCorrente, mappa); display(n) % Stampa numero iterazione corrente end title(Line Following Racetrack), xlabel(Y-Axis), ylabel(X-Axis); movie(gca,frames,1,5,[0,0,0,0]);

35

2.2 Codice della simulazione MatLab del task completo` Di seguito e riportato il codice MatLab che simula lintero task. In tale script avremo quindi anche il codice relativo al secondo veicolo, limplementazione di tale codice risulta comunque abbastanza intuitiva e per tale motivo non entreremo nel dettagli; facciamo esclusivamente presente al lettore che oltre al codice rappresentativo del secondo veicolo, sono anche state aggiunte delle variabili che emulano lo scambio di messaggi tra i veicoli.clear all, close all, clc; %%% Anonimus function Rz=@(in)... [cos(in) -sin(in); sin(in) cos(in)]; UpDateCoord=@(posCar, theta, Sensor)... round(posCar+Rz(theta)*Sensor); % LineFollowing=@() %%% Carichiamo la pista desiderata posCar1 = [198 206]; posCar2 = [336 372]; [X,map]= imread(mappa4.bmp); pista = ind2rgb(X,map); %%% Istanziamo le immagini del sensore e del baricentro della macchina. %%% Sono rappresentati da immagini espresse come matrici 4x4 RGB. sensore=zeros(4,4,3); macchina=zeros(4,4,3); for i=1:4 for j=1:4 %%% Diamo al Sensore il colore RED sensore(i,j,1)=1; %%% Diamo al Baricentro della macchina il colore BLUE macchina(i,j,3)=1; end end %%% Posizioni dei sensori rispetto al Baricentro delle macchine SensCen1 = [ 0 10]; SensSin1 = [ 8 10]; SensDes1 = [-8 10]; SensCen2 = [ 0 10]; %%% Orientazione macchina e passo di simulazione step=[0 7]; theta1 = deg2rad(0); theta2 = deg2rad(180);

4.2.2 Codice della simulazione MatLab del task completo

36

%%% Variabili di controllo waitWallE=0; broughtItem=0; endSimu=0; %%% Algoritmo di Line Following %%% Togliere il commento per visualizzare le traiettorie. % pista_frame=pista; for n=1:400 %%% Aggiornamento Cordinate della macchina e dei sensori sullimmagine. posSensCen1 = UpDateCoord(posCar1,theta1,SensCen1); posSensDes1 = UpDateCoord(posCar1,theta1,SensDes1); posSensSin1 = UpDateCoord(posCar1,theta1,SensSin1); posSensCen2 = UpDateCoord(posCar2,theta2,SensCen2); %%% Commentare se si desidera visualizzare le traiettorie. pista_frame=pista; %%% Disegna i sensori ed il baricentro della macchina for i=1:4 for j=1:4 for k=1:3 %%% Macchina1 pista_frame( posCar1(1)-2+i, posCar1(2)-2+j, k) = macchina(i,j,k); pista_frame( posSensCen1(1)-2+i, posSensCen1(2)-2+j, k ) = sensore(i,j,k); pista_frame( posSensDes1(1)-2+i, posSensDes1(2)-2+j, k ) = sensore(i,j,k); pista_frame( posSensSin1(1)-2+i, posSensSin1(2)-2+j, k ) = sensore(i,j,k); %%% Macchina2 pista_frame( posCar2(1)-2+i, posCar2(2)-2+j, k) = macchina(i,j,k); pista_frame( posSensCen2(1)-2+i, posSensCen2(2)-2+j, k ) = sensore(i,j,k); end end end if(endSimu==0) if(waitWallE==0) %%%%%%%%%%%%%%%%%%%%%Algoritmo di Line Follo%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if ( pista(posSensCen1(1), posSensCen1(2),1) == 0 ) posCar1=UpDateCoord(posCar1,theta1,step); else % [sensore destro, sensore sinistro]=[21 20] tmp=[ pista(posSensDes1(1), posSensDes1(2),1), pista(posSensSin1(1), posSensSin1(2),1)]; checkTMP=21*tmp(2)+20*tmp(1); switch (checkTMP) %%% Il sensCen ` gi` sul bianco!!!! e a case 1 % sensDes sul bianco e sensSin sul nero %%% Gira a destra theta1=theta1-deg2rad(30); % 30 gradi case 2 % sensDes sul nero sensSin sul bianco %%% Gira a sinistra theta1 = theta1+deg2rad(30); % 30 gradi %case 3 % sensDes sul bianco e sensSin sul bianco otherwise display(Fermati); if(broughtItem==0) display(Pant-E si ferma ed avvisa Wall-E) waitWallE=1; else endSimu=1; end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% else if( broughtItem==0) if ( pista(posSensCen2(1), posSensCen2(2),1) == 1 ) posCar2=UpDateCoord(posCar2,theta2,step); else display(Wall-E ` arrivato ed avvisa Pant-E) e broughtItem=1 end else theta1=theta1+deg2rad(180);

4.3 MontaggiowaitWallE=0; end end end imshow(pista_frame); [frameCorrente, mappa] = gray2ind(pista_frame,256); frames(n) = im2frame(frameCorrente, mappa); display(n) % Stampa numero iterazione corrente end title(Line Following Racetrack), xlabel(Y-Axis), ylabel(X-Axis); movie(gca,frames,1,5,[0,0,0,0]);

37

3 MontaggioPrima di passare alla descrizione del codice BASIC per implementare il caso duso descritto ` alla sezione precedente, e utile spendere qualche parola per la denizione del progetto a livello ` stato necessario infatti, a seguito dellassemblaggio dei due Microrobot, di eseguire un sico. E collegamento sico tra le board AXE120 e AXE210 dei singoli veicoli. Questo perch , per denire il comportamento dei due microrobot, era necessario utilizzare due e board, una dedita alla gestione delle funzionalit` di base, quali lavvio dei motori e la gestione a degli input/output forniti per i diversi sensori collegati nelle rispettive macchinine (AXE120), ed una seconda che si occupasse della gestione della comunicazione tra i Robot board (AXE210). Il problema nasceva dal fatto che non era possibile utilizzare un unica board che gestisse I/O, avvio, comando dei motori e comunicazione, in quanto sia AXE120 che AXE210 sono delle schede prestampate con un numero denito e limitato di ingressi/uscite. ` Oltre a questo, vi si aggiungeva il fatto che la piedinatura del modulo ZigBee non e a passi ` standard, di conseguenza vi e la necessit` di un modulo di adattamento nel caso si volesse a trasferire su un unica basetta millefori i diversi elementi contenuti sia nella board AXE120 che ` in quella AXE210. La soluzione quindi e stata quella di collegare tramite resistenze da 15% i diversi I/O ancora disponibili e di creare una comunicazione seriale tra le board. ` La scelta delle resistenze, al posto dei semplici li, si e resa necessaria per il fatto che, trat` tandosi di comunicazioni seriali, e necessario, afnch la comunicazione sia il pi` possibile e u pulita, con la minor degradazione di segnale, valutare alcune problematiche, quali i problemi di compatibilit` Elettromagnetica (EMC), che sono la causa dei disturbi elettrici di provenienza a esterna che degradano il segnale. ` Infatti, tra i problemi di compatibilit` legato al collegamento tra due circuiti stampati, vi e il a problema della diafonia in un cavo schermato (Cross-Talk), che si pu` generare tra due cavi o ` vicini di un circuito o di un apparato elettronico. La causa di questo tipo di disturbi e dovuta ad un campo elettromagnetico variabile che pu` indurre, in un cavo vicino, una differenza di o potenziale e quindi una corrente indotta spuria. ` Questo fenomeno e particolarmente indesiderato nel campo delle comunicazioni quando si usano cavi elettrici per trasportare dati o segnali (voce, video etc). Se i cavi non sono opportunamente schermati, si possono generare dei disturbi sui livelli di tensione che possono generare errori nellapparato ricevente, con conseguente perdita di dati, o peggioramento della qualit` a della comunicazione. Queste problematiche sono invece assenti con lutilizzo della bra ottica e delle relative comunicazioni ottiche. ` Un altro campo in cui questo effetto ha rilevanza e nella progettazione e fabbricazione dei circuiti integrati in tecnologie submicrometriche (es. 65 nm). A causa della grande densit` di a componenti elettronici che si raggiunge in questi dispositivi, e alle distanze ridottissime, gli effetti di Cross-Talk sono da tenere in attenta considerazione durante la progettazione. Tra le

4.3 Montaggio

38

` diverse soluzioni, vi e quella di amplicare il segnale e di effettuare una separazione in banda ` tra il segnale effettivo e il segnale di rumore. Di conseguenza, si e reso necessario lutilizzo di resistenze in modo da non avere un abbattimento del segnale, sicuramente indotto dallutilizzo di cavi di rame semplici che presentano resistenze interne sicuramente minori. ` Un ulteriore problema in fase di montaggio e stato quello della scelta dei diversi ingressi e delle diverse uscite da utilizzare. Infatti, come abbiamo discusso precedentemente, il numero di I/O sulle board risulta essere limitato e visto il numero di sensori utilizzati per la prova pratica, gli ingressi e le uscite disponibili per la comunicazione risultavano essere decisamente limitate. Di seguito, vengono mostrati in Figura 4.6 e Figura 4.7 gli schemi di collegamento utilizzati tra le schede dei veicoli AXE120 e le schede di comunicazione AXE210 rispettivamente per il veicolo denominato Pant-E e per il veicolo Wall-E.

Figura 4.6: Schema circuitale del collegamento tra AXE120 e AXE210 sul veicolo Pant-E.

4.4 Implementazione su microcontrollori PICAXE

39

Figura 4.7: Schema circuitale del collegamento tra AXE120 e AXE210 sul veicolo Wall-E.

4 Implementazione su microcontrollori PICAXEDi seguito sono riportati i pseudocodici ed i codici BASIC rispettivamente del veicolo Pant-E e del veicolo Wall-E, attraverso i quali verranno programmati i microcontrollori delle due board, rispettivamente PICAXE-18 per lAXE120 e PICAXE-18X per lAXE210.

4.1 Implementazione BASIC veicolo Pant-EPseudocodice veicolo Pant-EInizializzazione moduli AXE 120, AXE 210; Task Init: inizializzazione variabili e segnale di semaforo; attiva i motori e fai avanzare la macchina; Task Main: if (semaforo = 1)

then

4.4.1 Implementazione BASIC veicolo Pant-Eattiva il task di line following per il ritorno alla zona di scarico (Task LF_2); else attiva il task di line following per dirigersi alla zona di carico (Task LF_1); Task LF_1: if (Bumper input != 1) AXE121 Verifica le soglie e prendi una decisione if (si supera una certa soglia) esegui rotazione; aspetta tempo di scansione; else segui la linea; else attiva il task di trasmissione (Task TX); libera il task; Task TX: ferma i motori; alza il segnale di semaforo; invia il segnale di GO; if (Bumper input != 1) stai fermo; else rotazione a ventaglio; attiva il task principale (Task Main); libera il task; Task LF_2: if (Bumper input != 1) AXE121 Verifica le soglie e prendi una decisione; if (si supera una certa soglia) esegui rotazione; aspetta tempo di scansione; else segui la linea; else attiva il task di fermata (Task stop); libera il task; Task Stop: rotazione a ventaglio; ferma i motori; libera il task;

40

Codice BASIC Pant-E AXE120init: symbol sem = b0 pause 2000 let sem = 0 let pins = %10100000 main: Se il segnale di semaforo ` alto, ovvero se il la macchinetta B ha e caricato il pezzo, riattiva il Line Follower Altrimenti, segui il Path sino a dove ` situata la macchinetta B e if sem = 1 then ritorna goto lf_1 Definizione sottoroutine di line lf_1: Segnale di Fine Corsa if input7 is on then stopA Line Following if input1 is on then go_f if input2 is on then go_l if input6 is on then go_r goto lf_1 following Assegnamento del segnale di semaforo Pausa necessaria per lo start-up dei motori Inizializzazione segnale di semaforo Movimento rettilineo della macchina

Avanti Sinistra Destra

4.4.1 Implementazione BASIC veicolo Pant-E Fase di fermata macchina in zona di carico stopA: let sem = 1 Metti alto il segnale di semaforo let pins=%00000000 for b5=1 to 5 serout 1,N2400, ("G") pause 1000 next b5 In attesa che la macchinetta B ritorni col pezzo waitB: if input7 is on then startA goto waitB Riavvia i motori della macchina A per tornare in zona di scarico startA: Non appena la macchina B ritorna alla macchinetta A, esegui rotazione e riavvia la procedura di Line Following let pins = %10000000 Ruota verso destra pause 500 if input1 is on then go_f Avanti if input2 is on then go_l Sinistra if input6 is on then go_r Destra goto startA Cicla sino a quando non trova la linea Ritorno in Zona di Scarico ritorna: pause 1000 Se ` arrivato a fine corsa ferma la macchinetta A e if input7 is on then stop_def Line Following if input1 is on then go_f if input2 is on then go_l if input6 is on then go_r

41

Avanti Sinistra Destra

Reinizializza la macchinetta riportandola nella posizione originaria e spegni i motori stop_def: let pins = %10000000 Gira su se stessa in senso antiorario pause 1500 per 1.5 secondi let pins = %00000000 Fermati stop Sottoroutine per i comandi di movimento del Line Follower go_f: let pins = %10100000 Vai avanti goto main go_l: let pins = %00100000 goto main go_r: let pins = %10000000 goto main Vai a destra Vai a sinistra

Codice BASIC Pant-E AXE210init: pause 1000 high 7 main: ` Il programma rimane in attesa sino a quando non e stata ricevuta una G dal modulo AXE120 serin 1, N2400, ("G") pause 1000 Ciclo for che trasmette tramite ZigBee 5 segnali di "GO" Si ` inserito il ciclo for per far si che anche in caso di asincronia e tra i due moduli, almeno un segnale arriva a destinazione for b5 = 1 to 5 serout 7, T2400, ("G")

4.4.2 Implementazione BASIC veicolo Wall-Epause 1000 next b5 stop

42

4.2 Implementazione BASIC veicolo Wall-EPseudocodice veicolo Wall-Einizializzazione moduli AXE 120, AXE 210; inizializzazione variabili e macro; Task Main: while (signal_rx != "G") then Macchina ferma; else attiva il task di carico del pezzo (Task CP); Task CP: avvia motori; attiva sensore di prossimit` (SRF004); a Finch loggetto da caricare ` ad una distanza maggiore di 10 cm e e while (range > 10 cm) avanzamento macchina; invio segnale "trigger pulse"; rileva segnale "echo"; calcola distanza ("range"); else attiva il task di scarico pezzo (Task SP); libera il task; Task SP: torna indietro; ferma i motori; wait tempo di scaricamento del pezzo; libera il task;

Codice Wall-E AXE210main: pause 1000 serin 7, T2400, ("G") pause 1000 serout 4, N2400, ("G") stop Il programma rimane in attesa sino a quando non ` stata ricevuta una G dal modulo ZigBee e Invia tramite trasmissione seriale il segnale di Start al modulo AXE120 per attivare le routine software.

Codice Wall-E AXE120init: symbol trig = 3 symbol echo = 7 symbol range = w1 main: Sino a quando non gli arriva il segnale dalla macchinetta A stai ferma serin 1, N2400, b1 pause 100 Pausa di start-up del motore let pins = %10100000 Avvia motori lp1: pulsout trig,2 pulsin echo,1,range pause 10 let range = range*10/58 if range < 10 then stopit Produce 20uS trigger pulse measures the range in 10uS steps SRF004 mandatory recharge period now convert range to cm (divide by 5.8) and stop if there is an object closer than 10 cm multiply by 10 then divide by 58 Inizializzazione Variabili Trigger pulse associato al pin 3 Echo pulse al pin 7 Range

4.4.2 Implementazione BASIC veicolo Wall-E

43

goto lp1

loop around if > 30

` Non appena e stato rilevato loggetto, torna in zona di Carico stopit: let pins = %01010000 Torna indietro pause 1000 let pins = %00000000 stop stop

Conclusioni` In questa attivit` di sperimentazione si e cercato di realizzare un tipico esempio di collaboraa zione tra macchine diverse, per far ci` si sono equipaggiati due microrobot AXE120 con dio ` versi sensori e con moduli di comunicazione XBee e si e fatto in modo che questi compissero un semplice task tipico dei sistema stoccaggio, in particolare la gestione di una situazione di carico/scarico merci. ` ` Come e facile intuire il lavoro e stato piuttosto articolato, come si pu` facilmente capire da o queste pagine, nelle quali abbiamo cercato di riportare fedelmente gli stessi percorsi logici che abbiamo dovuto fare per portare a termine gli obbiettivi pressati. ` Si e partiti dalla identicazione e classicazione del robot fornitoci, sino alla messa in opera di quanto progettato, passato per diversi step, che vanno dalla modellazione in MatLab di un problema reale quale il line-following, allo studio del protocollo di comunicazione ZigBee, sino a problematiche prettamente pratiche quali la compatibilit` elettromagnetica, la programmazioa ne di circuiti integrati programmabili quali i PICAXE protocolli di comunicazione seriale ed ovviamente la sensorizzazione dei nostri robot, fulcro di questo lavoro. Per questi motivi lesperienza, a tratti traumatica per via delle diverse problematiche sorte in ` corso dopera e da considerarsi pi` che positiva, in quanto ci ha permesso di confrontarci con u concetti, componenti ed apparecchiature che sino ad ora conoscevamo solo perch lette sui libri, e ma che per il back-ground di un ingegnere riteniamo pi` che fondamentali e sopratutto ci ha u permesso di sviluppare una maggiore propensione al problem-solving tipica dellingegneria e che purtroppo in ambiente accademico si tende a trascurare.

Appendice A Replicatore di movimenti attraverso comunicazione ZigBeeIn questa appendice presentiamo i codici e diamo una descrizione sommaria del secondo task che si era deciso di implementare sulle board AXE120 equipaggiate con le board di comunicazione wireless AXE210. Lobbiettivo di questo task si preggeva come da titolo di far comunicare attraverso le board AXE210 i due veicoli AXE120 cos` che, assegnato una certa sequenza di movimenti al primo veicolo, che chiameremo Master, comunicare al secondo detto (Slave), tali comandi e fare in modo che questo li replichi. Questo task a differenza del primo risulta principalmente incentrato sulla comunicazione ed infatti non prevede lausilio di alcun sensore, ma necessit` codici software nei microcontrola lori delle board AXE210 molto pi` elaborato. In particolare nel microcontrollore della board u ` AXE210 del veicolo Master e stato necessario implementare una macchina a stati, in quanto ad esempio se il primo veicolo nel suo task prevede di andare avanti per 3 secondi, la board di comunicazione di tale veicolo dovr` inviare tale