04.01.2018 Views

Progettazione e sviluppo di un robot giocatore di soccer con Raspberry PI

Progettazione e sviluppo di un robot giocatore di soccer con Raspberry PI svolta nell'ambito della Materia di Robotica per l'a.a. 2015-16

Progettazione e sviluppo di un robot giocatore di soccer con Raspberry PI svolta nell'ambito della Materia di Robotica per l'a.a. 2015-16

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Facoltà <strong>di</strong> Ingegneria<br />

Corso <strong>di</strong> Laurea Magistrale in<br />

Ingegneria Informatica<br />

Corso <strong>di</strong> Robotica<br />

“<strong>Progettazione</strong> e <strong>sviluppo</strong> <strong>di</strong> <strong>un</strong> Robot”<br />

Prof.: ing. Antonio Chella<br />

Ing. Marcello Giar<strong>di</strong>na<br />

Team : “The Older’s”<br />

Massimo Tutone<br />

Sergio Orlando<br />

Giuseppe Di Giorgio<br />

Giustina Treppie<strong>di</strong><br />

A.A. 2015-16<br />

0


Premessa<br />

Il corso <strong>di</strong> Robotica per l’a.s. 2015-16 si è <strong>con</strong>cluso <strong>con</strong> la realizzazione e la<br />

presentazione da parte degli allievi sud<strong>di</strong>visi in Team, <strong>di</strong> <strong>un</strong> proprio Robot che parteciperà<br />

a <strong>un</strong>a competizione presso il <strong>di</strong>partimento DICGIM dell’Università degli Stu<strong>di</strong> <strong>di</strong> Palermo.<br />

Scopo <strong>di</strong> questa relazione è quella <strong>di</strong> esporre il lavoro svolto dal nostro Team, sia<br />

nella costruzione del modello, delle strategie adottate, dei comportamenti implementati e<br />

delle <strong>di</strong>fficolta cui siamo andati in<strong>con</strong>tro in quanto quasi tutti studenti lavoratori.<br />

1


Sommario<br />

Obiettivo del Progetto .................................................................................................................................... 4<br />

Scelte progettuali ............................................................................................................................................ 5<br />

Definizione del modello del Robot e costruzione ...................................................................................... 7<br />

Modello del <strong>robot</strong> .......................................................................................................................................... 7<br />

PROGETTO DEL ROBOT .................................................................................................................................... 10<br />

Costruzione del Robot ................................................................................................................................. 11<br />

Il telaio ..................................................................................................................................................... 12<br />

Assemblaggio e Fissaggio dei motori ....................................................................................................... 13<br />

Supporti sonar HC-sr04............................................................................................................................ 14<br />

Installazione dei sensori .......................................................................................................................... 15<br />

Bumper anteriore .................................................................................................................................... 16<br />

Cablaggio Infrared Proximity Sensor ....................................................................................................... 17<br />

Servomotore e webcam .......................................................................................................................... 17<br />

Braccetto e servo anteriore ..................................................................................................................... 18<br />

Personalizzazione e loghi ......................................................................................................................... 18<br />

Varianti <strong>di</strong> progetto ..................................................................................................................................... 19<br />

Costi dei componenti impiegati ................................................................................................................... 20<br />

<strong>Progettazione</strong> elettronica del <strong>robot</strong> ............................................................................................................ 21<br />

I sensori ....................................................................................................................................................... 23<br />

Il sensore ad ultrasuoni HC-SR04 ............................................................................................................. 23<br />

Il sensore IR ............................................................................................................................................. 24<br />

Gli attuatori ............................................................................................................................................... 25<br />

L’ L298N Dual H-Bridge Motor Controller ............................................................................................... 25<br />

Il mini servomotore SG90 ........................................................................................................................ 26<br />

Libreria Servo Blaster ............................................................................................................................... 27<br />

La visione ....................................................................................................................................................... 28<br />

La libreria OpenCV .................................................................................................................................. 28<br />

Lo spazio dei colori HSV ......................................................................................................................... 28<br />

Algoritmo <strong>di</strong> ri<strong>con</strong>oscimento degli oggetti del campo: pallina e porta ............................................ 29<br />

2


Taglio dell’area da analizzare .................................................................................................................. 31<br />

................................................................................................................................................................. 31<br />

RGB Max Filter ......................................................................................................................................... 32<br />

Architettura dei comportamenti del Robot ............................................................................................... 33<br />

Strategia implementata per la modalità gioco ............................................................................................ 35<br />

Strategia implementata per la rigori ........................................................................................................... 35<br />

Diagramma Stimolo-Risposta (SR)............................................................................................................... 36<br />

Diagramma FSA........................................................................................................................................ 38<br />

Comportamenti <strong>di</strong> BASE ......................................................................................................................... 39<br />

Cerca pallina ............................................................................................................................................ 39<br />

Vai e pren<strong>di</strong> pallina .................................................................................................................................. 40<br />

Cerca porta .............................................................................................................................................. 41<br />

Vai in porta .............................................................................................................................................. 42<br />

Comportamento com<strong>un</strong>e ......................................................................................................................... 43<br />

Evita ostacoli ............................................................................................................................................ 43<br />

Sottocomportamenti – vai dritto............................................................................................................. 44<br />

Costruzione del campo domestico ............................................................................................................. 45<br />

Problematiche dei test in laboratorio ......................................................................................................... 46<br />

Due Robot ...................................................................................................................................................... 48<br />

Sito Web ......................................................................................................................................................... 49<br />

Conclusioni .................................................................................................................................................... 50<br />

Sitografia ........................................................................................................................................................ 51<br />

3


Obiettivo del Progetto<br />

L’obiettivo del progetto è quello <strong>di</strong> realizzare <strong>un</strong> Robot che programmato<br />

opport<strong>un</strong>amente effettui dei tiri in porta all’interno <strong>di</strong> <strong>un</strong> campo <strong>con</strong> le caratteristiche<br />

descritte dalla figura <strong>di</strong> seguito mostrata.<br />

Fig. 1 Dimensioni campo da regolamento<br />

La palla deve attraversare la linea <strong>di</strong> porta (Goal) il maggior numero <strong>di</strong> volte<br />

Le regole com<strong>un</strong>i a tutti i team partecipanti alla manifestazione sono <strong>di</strong> seguito descritte:<br />

Regole <strong>di</strong> gioco 1 :<br />

o Il <strong>robot</strong> deve essere autonomo.<br />

o Il campo ha le <strong>di</strong>mensioni descritte in Figura 1.<br />

o La palla è <strong>di</strong> colore verde.<br />

o La porta è <strong>di</strong> colore rosso.<br />

o Il match ha inizio <strong>con</strong> <strong>robot</strong> e palla <strong>di</strong>sposti nelle posizioni X <strong>di</strong> partenza descritte in<br />

Fig. 1.<br />

1 Regolamento completo presente sul sito all’in<strong>di</strong>rizzo web: https://sites.google.com/site/<strong>robot</strong>ica<strong>un</strong>ipa/<br />

4


o Dopo <strong>un</strong> goal, solo la palla è riposizionata nella posizione iniziale.<br />

o La palla deve essere spinta (ci deve essere il rotolamento della palla).<br />

o In modalità rigore cambia la <strong>di</strong>sposizione Robot/Palla<br />

Budget <strong>di</strong> spesa massimo per la realizzazione del <strong>robot</strong>: € 90,00<br />

Scelte progettuali<br />

Fase principale del progetto è stata la scelta della piattaforma <strong>di</strong> <strong>sviluppo</strong> da utilizzare per<br />

la realizzazione del Robot.<br />

Robot NAO Arduino <strong>Raspberry</strong> <strong>PI</strong><br />

Fig. 2 Piattaforme <strong>di</strong> <strong>sviluppo</strong><br />

Sono state valutate le tre <strong>di</strong>fferenti piattaforme hardware <strong>di</strong> <strong>sviluppo</strong>:<br />

• Robot NAO:<br />

o Pro: <strong>robot</strong> già assemblato, GUI ben curata, programmazione in Python e<br />

alc<strong>un</strong>e primitive già esistenti<br />

o Contro: Disponibilità <strong>di</strong> <strong>un</strong> solo <strong>robot</strong>, utilizzo in Dipartimento<br />

5


• Piattaforma Arduino:<br />

o Pro: Imme<strong>di</strong>ata interfaccia <strong>con</strong> i sensori, numerosi sketch presenti sul web,<br />

ottima documentazione, e<strong>con</strong>omico.<br />

o Contro: Robot da costruire, il modello più performante non riesce a gestire<br />

analisi <strong>di</strong> flussi video, ottima <strong>con</strong>oscenza pregressa.<br />

• Piattaforma <strong>Raspberry</strong> <strong>PI</strong>:<br />

o Pro: E’ <strong>un</strong> mini computer abbastanza potente per svolgere quanto richiesto,<br />

ottima documentazione<br />

• Contro: Robot da costruire, scarsa <strong>con</strong>oscenza pregressa, più costoso <strong>di</strong><br />

Arduino.<br />

Per quanto sopraesposto in f<strong>un</strong>zione del fatto che il <strong>Raspberry</strong> <strong>PI</strong> permette <strong>di</strong><br />

effettuare tutte le operazioni in locale sul <strong>di</strong>spositivo senza dover ricorrere al supporto <strong>di</strong><br />

ulteriori calcolatori per l’elaborazione delle immagini, il nostro Team ha scelto <strong>di</strong> utilizzare<br />

tale <strong>di</strong>spositivo acquistando la versione 2.0.<br />

6


Definizione del modello del Robot e costruzione<br />

Modello del <strong>robot</strong><br />

Una volta definito il <strong>con</strong>trollore utilizzato per la progettazione del Robot, la fase<br />

successiva è stata quella <strong>di</strong> stabilire, in f<strong>un</strong>zione dell’obiettivo del progetto, la forma del<br />

<strong>robot</strong> e la sua struttura fisica.<br />

Sono state analizzate le caratteristiche principali che il nostro Robot doveva avere<br />

per portare a compimento l’obiettivo.<br />

In particolare i nostri accorgimenti sono ricaduti su alc<strong>un</strong>e problematiche<br />

fondamentali da risolvere:<br />

• numero <strong>di</strong> ruote da utilizzare per il corretto movimento del <strong>robot</strong><br />

• tecnica <strong>di</strong> tiro della pallina in porta<br />

• modalità <strong>di</strong> intercettazione della palla e della porta<br />

• rotazione del <strong>robot</strong><br />

• in<strong>di</strong>viduazione degli ostacoli<br />

Le problematiche sopraesposte hanno portato alla progettazione <strong>di</strong> <strong>un</strong> <strong>robot</strong> che<br />

fosse in grado <strong>di</strong>:<br />

• locomozione del <strong>robot</strong><br />

• trattenere la palla permettendone, come previsto da regolamento, il rotolamento;<br />

• ruotare sul posto per permettere l’in<strong>di</strong>viduazione della palla e della porta<br />

• comandare la <strong>di</strong>rezione <strong>di</strong> <strong>un</strong>a webcam, attraverso l’utilizzo <strong>di</strong> <strong>un</strong> servocomando ,<br />

utilizzata per il ri<strong>con</strong>oscimento degli oggetti del campo (palla e porta)<br />

• in<strong>di</strong>viduare gli ostacoli<br />

Il sistema <strong>di</strong> locomozione del <strong>robot</strong> adottato è stato quello del triciclo <strong>con</strong> guida<br />

<strong>di</strong>fferenziale eseguita da due motori a spazzola e ruotino posteriore libero. Tale<br />

impostazione permette infatti la rotazione sul posto del <strong>robot</strong> <strong>di</strong> 360 gra<strong>di</strong> utile alla ricerca<br />

degli oggetti da ri<strong>con</strong>oscere.<br />

7


Il sistema adottato per il trasporto della palla in porta è quello <strong>di</strong> utilizzare <strong>un</strong><br />

braccetto che trattiene la palla permettendone la rotazione.<br />

Una webcam movibile tramite servocomando è stata utilizzata come sensore <strong>di</strong><br />

ri<strong>con</strong>oscimento degli oggetti attraverso l’utilizzo <strong>di</strong> opport<strong>un</strong>i algoritmi <strong>di</strong> visione<br />

artificiale.<br />

Inoltre sono stati previsti dei sensori sonar per l’in<strong>di</strong>viduazione della <strong>di</strong>stanza degli<br />

ostacoli e <strong>un</strong> sensore ir per in<strong>di</strong>viduare quando la pallina si trova all’interno dell’area del<br />

<strong>robot</strong>.<br />

Di seguito viene mostrato il progetto del Robot <strong>con</strong> segnalate le posizioni degli<br />

attuatori e dei sensori:<br />

8


Sensore sonar anteriore<br />

Webcam<br />

Braccetto mobile<br />

Elettronica <strong>Raspberry</strong> <strong>PI</strong><br />

Ruote<br />

chela<br />

Sonar posteriore<br />

Sensore IR<br />

Interruttore accensione<br />

motori-servi<br />

Servo braccetto mobile<br />

Sensore sonar anteriore<br />

Webcam<br />

Servo webcam<br />

Vano alloggio batterie<br />

Ruote anteriori<br />

Sensore IR<br />

Fig.3 Disposizione degli attuatori e dei sensori sul Robot<br />

9


PROGETTO DEL ROBOT<br />

La scelta dei motori DC piuttosto che dei servomotori a rotazione <strong>con</strong>tinua è stata<br />

dettata dai costi e dalla velocità <strong>di</strong> rotazione <strong>di</strong> questi ultimi. I motori DC e del driver dei<br />

motori L298N, che permette <strong>di</strong> comandare i motori in entrambi i sensi <strong>di</strong> rotazione, hanno<br />

<strong>un</strong> costo paragonabile a quello <strong>di</strong> <strong>un</strong> solo servo <strong>con</strong> rotazione a 180°. Per la locomozione<br />

sarebbero stati necessari dei servomotori <strong>con</strong> rotazione a 360 gra<strong>di</strong> che avrebbero<br />

comportato <strong>un</strong>a spesa maggiore. Inoltre i motori DC per la loro struttura e per lo scopo del<br />

progetto, essendo più veloci dei servomotori, rappresentavano <strong>un</strong>a soluzione più<br />

efficiente in quanto <strong>un</strong>a delle richieste del progetto era quella <strong>di</strong> effettuare il maggior<br />

numero <strong>di</strong> goal in <strong>un</strong> intervallo <strong>di</strong> tempo ben definito.<br />

Per quanto riguarda la visione è stata utilizzata <strong>un</strong>a webcam USB che ha permesso<br />

il rilevamento delle immagini in modo opport<strong>un</strong>o per il ri<strong>con</strong>oscimento degli oggetti del<br />

campo. Sono state effettuate alc<strong>un</strong>e prove <strong>con</strong> la versione <strong>di</strong> <strong>PI</strong> CAM, versione de<strong>di</strong>cata<br />

esclusivamente all’utilizzo <strong>con</strong> <strong>Raspberry</strong> <strong>PI</strong>, per valutare l’efficienza <strong>di</strong> quest’ultima<br />

rispetto ad <strong>un</strong>a webcam commerciale. Purtroppo non è stato possibile raffrontare le due<br />

soluzioni in quanto il componente <strong>PI</strong>CAM proveniente dalla Cina è risultato non<br />

f<strong>un</strong>ziante.<br />

Per il ri<strong>con</strong>oscimento degli ostacoli sono stati utilizzati dei sonar HC-SR04,<br />

e<strong>con</strong>omici ma f<strong>un</strong>zionali per lo scopo del progetto.<br />

Un sensore IR è stato utilizzato per l’in<strong>di</strong>viduazione della palla all’interno della<br />

chela <strong>di</strong> trasporto della stessa.<br />

Sono stati utilizzati 2 servocoman<strong>di</strong> per permettere la chiusura <strong>di</strong> <strong>un</strong>a chela che<br />

permettesse <strong>di</strong> trasportare la palla in porta senza perderla ma permettendone la rotazione.<br />

La webcam è stata fissata sulla basetta <strong>di</strong> <strong>un</strong> servocomando <strong>con</strong> possibilità <strong>di</strong> ruotare <strong>di</strong><br />

180° per permettere <strong>un</strong>a più veloce rilevazione degli oggetti del campo senza dover<br />

ruotare il <strong>robot</strong>.<br />

10


L’alimentazione al Robot è costituita da <strong>un</strong> Powerbank per garantire i 5v al<br />

<strong>Raspberry</strong> e da <strong>un</strong> pacco <strong>di</strong> pile stilo AA per l’alimentazione separata dei motori DC e dei<br />

mini servomotori.<br />

Costruzione del Robot<br />

Non avendo scelto l’utilizzo del <strong>robot</strong> Nao al fine della realizzazione del progetto<br />

al costo più basso possibile, per mantenerci al <strong>di</strong> sotto dei limiti <strong>di</strong> budget imposti dal<br />

regolamento <strong>di</strong> gioco, abbiamo deciso <strong>di</strong> costruire il <strong>robot</strong> in ogni sua parte utilizzando<br />

scarti <strong>di</strong> lavori come ad esempio ritagli <strong>di</strong> laminato <strong>di</strong> parquet e strumenti a nostra<br />

<strong>di</strong>sposizione.<br />

Il laboratorio utilizzato è stato il box del Dott. Massimo Tutone.<br />

11


Il telaio<br />

Il <strong>di</strong>segno del <strong>robot</strong> è stato ispirato da <strong>un</strong> modello prelevato dal web, ma adattato<br />

alle nostre esigenze.<br />

La struttura del telaio è costituita da due ripiani: <strong>un</strong>o per la base su cui fissare i<br />

motori, il ruotino posteriore e la batteria, <strong>un</strong> altro superiore a cui collegare i sensori, il<br />

<strong>Raspberry</strong> <strong>PI</strong> e il servo <strong>con</strong> la Webcam.<br />

Il telaio nella parte inferiore è integrato anche <strong>di</strong> <strong>un</strong>a «chela» movibile tramite<br />

servocomando e abbastanza ampia a <strong>con</strong>tenere la pallina e permetterne il rotolamento.<br />

La procedura <strong>di</strong> ritaglio del telaio è stata preceduta da <strong>un</strong>a fase <strong>di</strong> <strong>di</strong>segno sui<br />

ritagli <strong>di</strong> laminato attraverso l’utilizzo della carta carbone. Il laminato è poi stato tagliato<br />

<strong>con</strong> <strong>un</strong>’archetto da traforo e forato <strong>con</strong> <strong>un</strong> trapano a colonna.<br />

Di seguito le immagini che illustrano le fasi della realizzazione del telaio:<br />

Fig.4 Fasi <strong>di</strong> Costruzione del telaio<br />

12


Fig.5 Viste del Telaio<br />

Assemblaggio e Fissaggio dei motori<br />

Poiché il telaio non è stato acquistato, ma realizzato su misura, il montaggio dei<br />

motori ha richiesto particolare cura sia per garantire il parallelismo dei due gruppi che per<br />

la creazione <strong>di</strong> opport<strong>un</strong>i sistemi <strong>di</strong> ancoraggio.<br />

Il telaio è stato forato per garantire il passaggio delle ruote e per il fissaggio dei<br />

motori, del L298N Dual H-Bridge Motor Controller e del ruotino posteriore.<br />

Delle squadrette <strong>di</strong> alluminio recuperate da scarti <strong>di</strong> precedenti lavori e <strong>un</strong> piccolo<br />

ton<strong>di</strong>no <strong>di</strong> alluminio, hanno permesso il fissaggio dei blocchi motore<br />

Fig.6 Assemblaggio motori<br />

13


Supporti sonar HC-sr04<br />

Per il fissaggio dei Sonar HC-SR04 al telaio è stata utilizzata <strong>un</strong>a soluzione<br />

e<strong>con</strong>omica che garantisce il fissaggio l’ isolamento elettrico. L'idea è nata dall’osservazione<br />

delle canalette per cablaggi elettrici/rete presenti in ufficio. Sono in plastica PVC (pertanto<br />

isolanti) e hanno due angoli da 90°. Così, procurato <strong>un</strong>o scarto <strong>di</strong> 30cm, si è proceduto a<br />

tagliarlo <strong>con</strong> <strong>un</strong> seghetto e a forarlo <strong>con</strong> il trapano a colonna nelle <strong>di</strong>mensioni adeguate a<br />

collocare il sensore. Procedendo per simmetria (per ogni lato della canalina) si è ottenuto<br />

<strong>un</strong> <strong>con</strong>gruo numero <strong>di</strong> supporti.<br />

Di seguito le immagini della costruzione:<br />

Fig.7 Fase <strong>di</strong> costruzione del supporto Sonar HC-SR04<br />

14


Per finalità estetiche e per coprire il colore del laminato parquet, il telaio è stato<br />

colorato <strong>di</strong> nero.<br />

Fig.8 Verniciatura del telaio e dei supporti sonar<br />

Installazione dei sensori<br />

Definita la verniciatura del telaio, si è potuto procedere <strong>con</strong> il fissaggio definitivo<br />

dei sensori sonar, <strong>un</strong>o sul posteriore e <strong>un</strong>o sull’anteriore sulla webcam, e <strong>con</strong><br />

l’installazione dei partitore <strong>di</strong> tensione necessari a ridurre la tensione sul pin ECHO del<br />

sensore 3,3v per non bruciare il <strong>Raspberry</strong> i cui G<strong>PI</strong>O operano a 3,3v. I partitori sono stati<br />

saldati a stagno <strong>di</strong>rettamente sul sensore.<br />

Fig.9 Fissaggio e cablaggio dei sensori sonar<br />

15


Bumper anteriore<br />

Per facilitare il <strong>con</strong>tenimento della pallina all’interno della “chela” del Robot, si è<br />

pensato <strong>di</strong> inserirvi <strong>un</strong> rivestimento. All’inizio si era pensato a del cartone ma si sarebbe<br />

piegato <strong>con</strong> il tempo e probabilmente anche <strong>con</strong> il trasporto del Robot, per cui si è valutato<br />

<strong>un</strong> altro materiale, leggero, facilmente piegabile e facile da tagliare. La soluzione è stata il<br />

Depron, <strong>un</strong> materiale costituito da polistirolo compatto e <strong>di</strong> vario spessore. La presenta<br />

all’interno del Team <strong>di</strong> <strong>un</strong> modellista, fa reso facile il reperimento <strong>di</strong> questo materiale che<br />

è stato ritagliato e fissatto all’interno della chela <strong>con</strong> della colla a caldo.<br />

Fig.10 Fissaggio del bumper anteriore nella “chela” del Robot<br />

16


Cablaggio Infrared Proximity Sensor<br />

Il <strong>robot</strong> necessità <strong>di</strong> <strong>un</strong> sensore IR per la rilevazione della pallina nella chela. Tale<br />

sensore è stato collocato nella parte superiore del ripiano inferiore del telaio ed è ben<br />

visibile dal bumper su cui sono stati effettuati due fori per il passaggio del Led emittente e<br />

del modulo ricevente.<br />

Servomotore e webcam<br />

Fig.11 Fissaggio del sensore IR<br />

Per la rilevazione, al Robot è stata montata <strong>un</strong>a webcam usb low cost che collegata<br />

al <strong>Raspberry</strong> tramite il modulo visione software, permette il ri<strong>con</strong>oscimento della pallina e<br />

della porta. La Webcam non è fissata <strong>di</strong>rettamente al telaio ma alla squadretta <strong>di</strong> <strong>un</strong><br />

servomotore che ne permette così <strong>un</strong>a rotazione <strong>di</strong> circa 180°.<br />

Fig.12 Fissaggio della webcam e del servomotore<br />

17


Dalle immagini si nota che al servomotore è stata saldata sul filo del segnale dati,<br />

<strong>un</strong>a resistenza <strong>di</strong> 1Kohm necessaria a tutelare l’elettronica del <strong>Raspberry</strong>.<br />

Braccetto e servo anteriore<br />

Per garantire il <strong>con</strong>tenimento della pallina all’interno della “chela” pur<br />

assicurandone <strong>un</strong> rotolamento così come specifiche <strong>di</strong> regolamento, in fase <strong>di</strong><br />

progettazione abbiamo valutato che sarebbe stato auspicabile creare <strong>un</strong> braccetto, attivato<br />

da <strong>un</strong> servomotore che alla rilevazione della pallina nella prossimità della chela, si sarebbe<br />

abbassato mantenendo così la pallina all’interno della “chela”. Sempre per motivi low cost,<br />

il braccetto è stato ricavato da <strong>un</strong>a gruccia <strong>di</strong> alluminio, è stato sagomato e fissato alla<br />

squadretta del servomotore <strong>con</strong> del fil <strong>di</strong> ferro e della colla bicomponente. Il servomotore è<br />

stato fissato nella parte anteriore del Robot<br />

Fig.13 Costruzione del braccetto anteriore e fissaggio del servomotore<br />

Personalizzazione e loghi<br />

Per la copertura laterale del <strong>robot</strong>, per mascherare i cavi, l’alloggio delle batterie e<br />

per applicare <strong>un</strong> logo, si è pensato <strong>di</strong> applicare delle coperture. Il Depron, materiale già<br />

usato per la costruzione del bumper, ha fatto al caso nostro anche in questa occasione. E’<br />

stato ritagliato nelle misure che servivano, e gli è stata applicata della carta adesiva <strong>con</strong> il<br />

18


logo del Team. Per il fissaggio al telaio si è impiegato del velcro così da poterle facilmente<br />

rimuovere.<br />

Fig.14 Personalizzazione del Robot<br />

Varianti <strong>di</strong> progetto<br />

Come tutti i progetti, anche il nostro ha subito numerose varianti.<br />

Il progetto iniziale aveva previsto <strong>un</strong> maggior impiego <strong>di</strong> sonar, <strong>di</strong>sposti<br />

lateralmente perché si pensava <strong>di</strong> applicare <strong>un</strong>a pianificazione <strong>di</strong> gioco al Robot. Poi a<br />

causa del poco tempo per recarsi in <strong>di</strong>partimento e al campo <strong>di</strong> gara le cui parete sono<br />

molto <strong>di</strong>s<strong>con</strong>tinue perché costituite da scatole affiancate, <strong>un</strong>a simile strategia avrebbe<br />

potuto compromettere l’esito delle prestazioni del Robot. Pertanto si è optato per <strong>un</strong><br />

comportamento reattivo <strong>con</strong> l’impiego <strong>di</strong> <strong>un</strong> solo sonar posteriore e <strong>un</strong>o anteriore posto<br />

sulla webcam che ruota <strong>con</strong> essa <strong>di</strong> 180°.<br />

L’alimentazione dei motori costituita inizialmente da sole quattro batterie stilo si è<br />

rivelata insufficiente e pertanto è stato ampliato a 6 il numero <strong>di</strong> pile AA necessarie a<br />

garantire <strong>un</strong>a adeguata alimentazione ai motori DC e ai servi.<br />

Dalle prove effettuate <strong>con</strong> la palla, si è evinto che il Bumper iniziale era troppo<br />

piccolo e alto, per cui è stato sostituito <strong>con</strong> <strong>un</strong>a versione più ampia e collocata più bassa.<br />

Il magnetometro inizialmente previsto per l’orientamento del Robot in campo, non<br />

è stato più utilizzato, il Robot usa <strong>un</strong>icamente la visione per la ricerca della porta.<br />

19


Un interruttore <strong>di</strong> accensione dell’alimentazione motori-servi si è rivelato<br />

particolarmente utile durante i vari test per garantire <strong>un</strong>a maggiore durata delle batterie.<br />

Costi dei componenti impiegati<br />

Grazie a soluzioni low cost, siamo riusciti a mantenere i costi del Robot al <strong>di</strong> sotto<br />

della soglia massima prevista da regolamento e pari a € 90.<br />

Fig.15 Riepilogo costi dei componenti del Robot<br />

20


<strong>Progettazione</strong> elettronica del <strong>robot</strong><br />

Per effettuare la rilevazione dei dati dei sensori e il comando degli attuatori sono<br />

stati utilizzati i <strong>con</strong>nettori G<strong>PI</strong>O messi a <strong>di</strong>sposizione dal <strong>Raspberry</strong>.<br />

Le G<strong>PI</strong>O (General Purpose Input Output) sono linee <strong>di</strong> I/O <strong>di</strong>rettamente collegate<br />

al processore, che possono essere impiegate a piacimento per estendere le f<strong>un</strong>zionalità del<br />

<strong>Raspberry</strong> e farlo com<strong>un</strong>icare <strong>con</strong> hardware speciale. Alc<strong>un</strong>e <strong>di</strong> queste linee sono a<strong>di</strong>bite a<br />

f<strong>un</strong>zioni speciali, ci sono linee che possono essere usate per generare PWM, oppure altre<br />

che sono a<strong>di</strong>bite a porte <strong>di</strong> com<strong>un</strong>icazione come ad esempio S<strong>PI</strong> o UART. In totale sono 40<br />

pin, e a prescindere dalla loro f<strong>un</strong>zione speciale, possono essere usate tutte come uscita o<br />

ingresso <strong>di</strong>gitale. Le G<strong>PI</strong>O sono collegate <strong>di</strong>rettamente ai pin del processore, non sono<br />

protette.<br />

Di seguito viene illustrato lo schema elettrico <strong>di</strong> collegamento dei componenti<br />

elettronici del Robot. Il <strong>di</strong>segno è stato realizzato <strong>con</strong> l’applicazione Open Source Fritzing 2 .<br />

Fig.16 Schema circuitale del Robot<br />

2 Scaricabile a questo in<strong>di</strong>rizzo: http://fritzing.org<br />

21


Nell’immagine <strong>di</strong> seguito viene mostrato il dettaglio dei collegamenti ai G<strong>PI</strong>O del<br />

<strong>Raspberry</strong> <strong>PI</strong> <strong>con</strong> i sensori e gli attuatori.<br />

Fig.17 Schema <strong>di</strong> <strong>con</strong>nessione ai G<strong>PI</strong>O<br />

22


I sensori<br />

Il sensore ad ultrasuoni HC-SR04<br />

Il principio <strong>di</strong> f<strong>un</strong>zionamento del sensore ad ultrasuoni è ispirato al sistema <strong>di</strong><br />

rilevazioni degli ostacoli dei pipistrelli: viene inoltrato <strong>un</strong> impulso positivo sul pin Trigger<br />

per almeno 10 microsec, il sensore invia il ping sonoro e aspetta il ritorno delle onde<br />

riflesse, il sensore risponde sul pin Echo <strong>con</strong> <strong>un</strong> impulso alto della durata corrispondente a<br />

quella <strong>di</strong> viaggio delle onde sonore, dopo 38 millisec (50 in realtà) si <strong>con</strong>sidera che non sia<br />

stato in<strong>con</strong>trato alc<strong>un</strong> ostacolo.<br />

Tensione <strong>di</strong> alimentazione 5v.<br />

Partitore <strong>di</strong> tensione sul <strong>PI</strong>N dell’ECHO.<br />

I G<strong>PI</strong>O del <strong>Raspberry</strong> f<strong>un</strong>zionano a 3.3v<br />

R1=1 Kohm<br />

R2=2,2 Kohm<br />

Noto R1 si ricava R2 da:<br />

3.3v/5v=R2/(R1+R2)<br />

Il sensore <strong>di</strong>spone <strong>di</strong> 4 pin:<br />

Vcc (+5V), Trigger, Echo, GND.<br />

Fig.18 Sensore Sonar HC-SR04<br />

La velocità del suono nell’aria alla temperatura <strong>di</strong> 20° è <strong>di</strong> circa 340 m/s e il sensore<br />

restituisce il tempo impiegato per andare e tornare dalle onde sonore in microse<strong>con</strong><strong>di</strong>,<br />

inoltre è comodo avere la misura in cm, quin<strong>di</strong> bisogna <strong>con</strong>vertire la velocità del suono da<br />

m/s in cm/microse<strong>con</strong>do:<br />

1 m/s = 10^2/10^6 cm/microsec =<br />

10^-4 cm/microsec => 340 m/s = 3,4*10^-2 cm/microsec<br />

Il tutto va ancora <strong>di</strong>viso per 2 in quanto il tempo che abbiamo <strong>con</strong>vertito è quello<br />

impiegato per andare e tornare in<strong>di</strong>etro dalle onde, mentre per calcolare la <strong>di</strong>stanza<br />

23


dall’oggetto ci basta metà <strong>di</strong> questo tempo, la formula finale, dove t è il tempo restituito<br />

dal sensore in cm/microsec è:<br />

S = 1.7 * 10^-2 * t in cm<br />

dove t viene misurato dal tempo <strong>di</strong> sistema : tempo <strong>di</strong> ritorno – tempo <strong>di</strong> invio.<br />

Il sensore IR<br />

Il sensore IR impiegato, tramite il comparatore LM393 valuta quanto varia<br />

l’intensità del raggio infrarosso trasmesso e quello<br />

riflesso. E’ molto sensibile ai colori delle superfici<br />

(il nero in particolar modo) e alla luce ambientale.<br />

F<strong>un</strong>ziona <strong>con</strong> <strong>un</strong>a tensione <strong>di</strong> alimentazione 5v.<br />

E’ collegabile <strong>di</strong>rettamente ai G<strong>PI</strong>O del <strong>Raspberry</strong><br />

<strong>PI</strong> ed è fornito <strong>di</strong> due LED per monitorare lo<br />

stato:<br />

• Il led rosso in<strong>di</strong>ca lo stato <strong>di</strong><br />

alimentazione;<br />

• Il led verde se acceso, in<strong>di</strong>ca la<br />

presenza <strong>di</strong> <strong>un</strong> ostacolo.<br />

Fig.19 Infrared proximity sensor<br />

<strong>di</strong> 35 °.<br />

La sensibilità del sensore è regolabile da <strong>un</strong> potenziometro.<br />

La <strong>di</strong>stanza <strong>di</strong> rilevamento è generalmente da 2 ~ 30cm e l’angolo <strong>di</strong> rilevamento è<br />

24


Gli attuatori<br />

L’ L298N Dual H-Bridge Motor Controller<br />

Per il <strong>con</strong>trollo dei motori DC è necessario <strong>un</strong> Driver, quello impiegato per il Robot<br />

è il modello L298N Dual H-Bridge Motor Controller che integra <strong>un</strong> doppio ponte H per la<br />

rotazione dei motori in entrambi i versi e due <strong>PI</strong>N Enable per il <strong>con</strong>trollo dei motori in<br />

modalità variabile piuttosto che On/Off.<br />

Fig.20 L298N Dual H-Bridge Motor Controller e tabella degli stati dei pin<br />

I motori sono pilotati in <strong>un</strong> verso <strong>di</strong> rotazione o in <strong>un</strong> altro tramite <strong>un</strong> ponte H<br />

costituito da coppie <strong>di</strong> due transistor PNP e NPN:<br />

Il segnale <strong>di</strong> ingresso viene applicato al<br />

pinA e al pinB del ponte H.<br />

Quando pinA è alto e pinB è basso<br />

vanno in <strong>con</strong>duzione i transistor T4 e T2<br />

provocando la rotazione a sinistra del<br />

motore:<br />

Fig.21 L298N Rotazione a SX del motore<br />

Quando sul pinA il segnale è basso e sul<br />

pinB il segnale è alto i transistor che<br />

vanno in <strong>con</strong>duzione sono il T1 e il T3,<br />

provocando la rotazione a destra del<br />

motore:<br />

Fig.22 L298N Rotazione a DX del motore<br />

25


Il mini servomotore SG90<br />

Il f<strong>un</strong>zionamento del mini servomotore SG90 è legato al PWM ovvero al Pulse With<br />

Modulation. La l<strong>un</strong>ghezza <strong>di</strong> tale impulso, infatti determina la posizione del servo.<br />

Fig.23 Mini Servomotore SG90<br />

Servo e<strong>con</strong>omico<br />

Alimentazione : 5v<br />

(Alimentazione non prelevabile<br />

dai G<strong>PI</strong>O del <strong>Raspberry</strong> <strong>PI</strong>)<br />

Peso : 9gr<br />

Angolo rotazione: 180° circa<br />

Pulse Width range: 500-2400 µs<br />

Pin del segnale collegato al<br />

<strong>Raspberry</strong> <strong>con</strong> <strong>un</strong>a resistenza da<br />

1Kohm<br />

Un impulso ON <strong>di</strong> 1.5ms in 20ms significa che dovrà posizionarsi al centro. Impulsi<br />

corti lo ruotano in senso orario, impulsi l<strong>un</strong>ghi lo muovono in senso anti-orario.<br />

Fig.24 Servo PWM Timing Diagram<br />

26


Purtroppo gli impulsi per il f<strong>un</strong>zionamento sono alterati dagli interrupt del sistema<br />

operativo. Questo causa al servo <strong>un</strong> jittering che può essere risolto <strong>con</strong> l'impiego del DMA<br />

che non è affetto da tali interrupt.<br />

Librerie come la servoblaster, pigpio, piblaster, pipwm risolvono questo problema.<br />

Libreria Servo Blaster<br />

L’impiego <strong>di</strong> tale libreria ha permesso <strong>di</strong> risolvere i problemi <strong>di</strong> jittering del servo<br />

avuti <strong>con</strong> i test in cui si erano impiegati i PWM che venivano alterati dal sistema operativo.<br />

Tale libreria ServoBlaster permette infatti <strong>di</strong> comandare più servocoman<strong>di</strong><br />

simultaneamente grazie all’utilizzo <strong>di</strong> blocchi <strong>di</strong> <strong>con</strong>trollo DMA ( Direct Memory Access)<br />

in cui l’<strong>un</strong>ità <strong>di</strong> <strong>con</strong>trollo viene utilizzata solo quando <strong>un</strong>a variazione <strong>di</strong> impulso deve<br />

essere generata.<br />

Esempio <strong>di</strong> comando:<br />

echo 3=120 > /dev/servoblaster (1,2 ms)<br />

Il file servoblaster è <strong>un</strong>a lista FIFO che viene letta per mo<strong>di</strong>ficare il duty cycle <strong>di</strong> <strong>un</strong><br />

segnale Pwm<br />

27


La visione<br />

Gli oggetti principali del campo <strong>di</strong> gioco sono la porta e la pallina. Identificati<br />

entrambi da <strong>un</strong> colore rosso per la porta e verde per la pallina.<br />

Al fine della realizzazione del progetto il modulo <strong>di</strong> visione rappresenta <strong>un</strong>o dei<br />

componenti principali per il f<strong>un</strong>zionamento dell’intero sistema <strong>robot</strong>ico.<br />

E’ stata utilizzata la libreria OpenCV che mette a <strong>di</strong>sposizione <strong>di</strong>versi meto<strong>di</strong> già<br />

collaudati per lo <strong>sviluppo</strong> dell’algoritmo <strong>di</strong> visione.<br />

La libreria OpenCV<br />

La libreria OpenCV implementa <strong>di</strong>versi algoritmi “allo stato dell’arte”, <strong>con</strong>sente lo<br />

<strong>sviluppo</strong> rapido <strong>di</strong> nuove soluzioni che si basano su tecniche ormai standard. Ha <strong>un</strong>a<br />

struttura modulare (include <strong>di</strong>verse librerie statiche e <strong>di</strong>namiche). Per l’impiego <strong>di</strong> tali<br />

librerie, l’ambiente in <strong>Raspberry</strong> è stato opport<strong>un</strong>amente <strong>con</strong>figurato 3 .<br />

Lo spazio dei colori HSV<br />

Lo scopo del modulo <strong>di</strong> visione è quello <strong>di</strong> ri<strong>con</strong>oscere i colori degli oggetti nel<br />

campo. La tecnica utilizzata è quella <strong>di</strong> selezionare alc<strong>un</strong>i intervalli dello spazio HSV,<br />

rappresentanti <strong>un</strong> determinato colore, per la realizzazione <strong>di</strong> maschere <strong>di</strong> ri<strong>con</strong>oscimento<br />

<strong>di</strong> oggetti. Lo spazio del colore HSV è stato preferito rispetto al classico RGB in quanto<br />

HSV separa l’informazione dell’intensità luminosa dalle informazioni del colore. In<br />

visione artificiale identificare <strong>un</strong> colore <strong>un</strong>ico utilizzando <strong>un</strong>a terna <strong>di</strong> valori RGB<br />

complica molto le operazioni <strong>di</strong> <strong>con</strong>fronto. Per esempio, il giallo, utilizzando la terna RGB,<br />

si ottiene sommando verde e rosso, quin<strong>di</strong> per cercare oggetti gialli si dovrebbero<br />

analizzare tutte le possibili combinazioni <strong>di</strong> verde e rosso che generano tutti i tipi <strong>di</strong> giallo.<br />

3 Installazione <strong>di</strong> OpenCV su <strong>Raspberry</strong> Python: http://robertcastle.com/2014/02/installing-opencv-on-a-raspberry-pi/<br />

28


Certamente fattibile, ma poco pratico e soprattutto poco performante. Per questo motivo<br />

esistono <strong>di</strong>fferenti spazi <strong>di</strong> colore, ogn<strong>un</strong>o più adatto alla particolare operazione che si<br />

deve effettuare. Nel nostro caso particolare, per <strong>con</strong>frontare il colore <strong>di</strong> <strong>un</strong> oggetto e<br />

trovare quello più simile a <strong>un</strong> modello prefissato, è molto comodo lo spazio <strong>di</strong> colore HSV:<br />

H è lo Hue, la tinta; S è la Saturation, la quantità <strong>di</strong> tinta che compone il nostro colore; V è<br />

il Value, il valore che identifica la forza del colore, spesso identificata <strong>con</strong> la sua<br />

luminosità. In OpenCV esistono apposite f<strong>un</strong>zioni per la <strong>con</strong>versione tra spazi <strong>di</strong> colore.<br />

Algoritmo <strong>di</strong> ri<strong>con</strong>oscimento degli oggetti del campo: pallina e porta<br />

Come già detto, il ri<strong>con</strong>oscimento della pallina è stato fatto impiegando Python e la<br />

libreria OpenCV vers. 3. Per la parte hardware è stato impiegato <strong>Raspberry</strong> <strong>PI</strong> e <strong>un</strong>a<br />

Webcam USB.<br />

L'algoritmo procede ripetutamente se<strong>con</strong>do i seguenti passi:<br />

• Definizione del range (i più chiari e i più scuri) del colore da in<strong>di</strong>viduare<br />

nell'immagine (quello della pallina);<br />

• Rilevazione <strong>di</strong> <strong>un</strong> fotogramma dall'immagine RGB prelevata dalla Webcam;<br />

• Conversione dell'immagine rilevata in HSV (Hue, Saturation e Value);<br />

• Applicazione ripetuta <strong>di</strong> erosioni e <strong>di</strong>latazioni sull'immagine per migliorare il filtro<br />

eliminando tutti quei p<strong>un</strong>ti della maschera inerenti a rumore dell’immagine;<br />

• Creazione <strong>di</strong> <strong>un</strong> <strong>con</strong>torno della forma rilevata (nel ns caso <strong>un</strong> cerchio e <strong>un</strong><br />

rettangolo) ed estrazione delle caratteristiche;<br />

• Disegno della traccia della pallina e della porta se le caratteristiche rilevate<br />

superano <strong>un</strong> certo valore <strong>di</strong> soglia.<br />

La tecnica per l'estrazione della immagine in particolare preleva <strong>un</strong> fotogramma<br />

tramite la webcam, quin<strong>di</strong> l'immagine viene <strong>con</strong>vertita in HSV attraverso OpenCV.<br />

Per migliorare ulteriormente il filtraggio si è fatto uso dell'erosione e della<br />

<strong>di</strong>latazione. L'erosione è <strong>un</strong>a operazione <strong>di</strong> filtraggio morfologico che viene utilizzata<br />

per eliminare o assottigliare gli oggetti in <strong>un</strong>’immagine binaria.<br />

29


I dettagli dell’immagine che vengono eliminati sono quelli più piccoli dell’elemento<br />

strutturante. La <strong>di</strong>latazione è invece <strong>un</strong>'operazione <strong>di</strong> filtraggio morfologico che viene<br />

utilizzata per accrescere e ispessire gli oggetti in <strong>un</strong>'immagine binaria. Le <strong>di</strong>mensioni<br />

dell'ispessimento <strong>di</strong>pendono dalla forma dell'elemento strutturante. Una delle<br />

applicazioni più semplici <strong>di</strong> questa operazione è il riempimento dei vuoti.<br />

Le due tecniche <strong>di</strong> filtraggio ripetute più volte, migliorano la maschera <strong>di</strong> filtraggio<br />

finale dell'immagine che ci è servita per estrarre la forma dell'immagine ricercata.<br />

Al termine dell'elaborazione l'immagine risultante è stata:<br />

Fig.25 Effetti della <strong>con</strong>versione in HSV (a sinistra) dell’immagine originaria (a destra)<br />

Per l'estrazione del <strong>con</strong>torno si è usata la f<strong>un</strong>zione cv2.findContours <strong>di</strong> OpenCV 3.<br />

L'applicazione ripetuta dell'algoritmo sui fotogrammi ha permesso <strong>di</strong> ottenere <strong>un</strong>a traccia<br />

a schermo della pallina. Si è notato che la luce ambientale inficia <strong>di</strong> molto la bontà della<br />

rilevazione e <strong>un</strong>a taratura iniziale per stabilire il range valori HSV da in<strong>di</strong>viduare è<br />

necessaria. Anello debole del sistema è proprio la definizione del range del colore da<br />

in<strong>di</strong>viduare nell'immagine, molto sensibile alle <strong>con</strong><strong>di</strong>zioni ambientali e alla tipologia <strong>di</strong><br />

pallina scelta (<strong>un</strong> pò riflettente).<br />

30


Taglio dell’area da analizzare<br />

Il campo da gioco prevede dei muri alti 19 cm. Tale specifica ha comportato alc<strong>un</strong>e<br />

problematiche iniziali dovute al fatto che il <strong>robot</strong> rilevava le immagini oltre il campo. Per<br />

tale motivo la posizione della webcam è stata tarata affinché essa possa vedere l’intero<br />

campo. Successivamente il modulo <strong>di</strong> visione è stato implementato in modo che tagli<br />

quella parte dell’immagine che non è oggetto <strong>di</strong> rilevazione cioè tutta quella parte<br />

dell’immagine che va fuori campo.<br />

Tale implementazione è stata effettuata per incrementare la velocità <strong>di</strong> elaborazione<br />

<strong>di</strong> immagini e per ridurre la probabilità <strong>di</strong> rilevare dei falsi positivi.<br />

Fig.26 Applicazione del taglio (a destra) all’immagine originale (a sinistra)<br />

31


RGB Max Filter<br />

Si è provato ad implementare questa variante del filtro RGB. Le componenti<br />

cromatiche R, G, B vengono in<strong>di</strong>viduate e portate al valore massimo. La selezione delle<br />

singole componenti è effettuata annullando quelle che non interessano. E’ stato scartato<br />

perché creava molto rumore e falsi positivi.<br />

Fig.27 Applicazione dell’ RGB Max Filter<br />

32


Architettura dei comportamenti del Robot<br />

Le principali f<strong>un</strong>zioni primitive <strong>di</strong> <strong>un</strong> <strong>robot</strong> sono:<br />

• Percezione<br />

• Pianificazione<br />

• Attuazione<br />

Esistono tre para<strong>di</strong>gmi che <strong>di</strong>fferis<strong>con</strong>o per il modo <strong>con</strong> cui le principali f<strong>un</strong>zioni<br />

primitive <strong>di</strong> <strong>un</strong> <strong>robot</strong> sono organizzate.<br />

I tre para<strong>di</strong>gmi sono:<br />

• Para<strong>di</strong>gma gerarchico<br />

• Para<strong>di</strong>gma reattivo<br />

• Para<strong>di</strong>gma ibrido.<br />

La percezione ha come ingresso i valori dei sensori e produce come uscita<br />

l’informazione <strong>di</strong> percezione.<br />

La pianificazione prende in ingresso le informazioni prodotte dalla percezione per<br />

generare le <strong>di</strong>rettive.<br />

L’attuazione <strong>con</strong>siderate le <strong>di</strong>rettive manda i segnali agli attuatori.<br />

In <strong>un</strong> sistema gerarchico viene rispettata la gerarchia in cui i dati dei sensori<br />

vengono <strong>con</strong>vertiti in informazioni che il sistema pianificatore utilizza per produrre le<br />

<strong>di</strong>rettive che il sistema <strong>di</strong> attuazione <strong>con</strong>verte in coman<strong>di</strong> da inviare agli attuatori.<br />

In <strong>un</strong> sistema reattivo manca il modulo <strong>di</strong> pianificazione così i dati sensoriali<br />

<strong>con</strong>vertiti in informazione produ<strong>con</strong>o <strong>di</strong>rettamente i coman<strong>di</strong> da inoltrare agli attuatori.<br />

In <strong>un</strong> sistema ibrido vi è <strong>un</strong> modulo pianificatore che invia le <strong>di</strong>rettive al modulo<br />

(percettivo – reattivo). Il modulo pianificatore ha delle informazioni del mondo e produce<br />

delle <strong>di</strong>rettive così il modulo percettivo reattivo produce come uscita<br />

inoltrare agli attuatori a partire dalle <strong>di</strong>rettive.<br />

i coman<strong>di</strong> da<br />

33


Nelle architetture Gerarchiche si cerca <strong>di</strong> mantenere <strong>un</strong>a corrispondenza fra il<br />

modello interno del mondo e il mondo esterno. Il modello del mondo viene aggiornata<br />

ogni qual volta il <strong>robot</strong> aggiorna le informazioni sensoriali. Il piano delle azioni viene<br />

stabilito in f<strong>un</strong>zione dell’ambiente percepito. I vantaggi dei sistemi <strong>con</strong> pianificazione sono<br />

la stabilità e la pianificazione a priori dei comportamenti. Gli svantaggi sono che vi è poca<br />

adattabilità alle mo<strong>di</strong>fiche in tempo reale dell’ambiente.<br />

Le architetture reattive o basate sul comportamento hanno come caratteristica che i<br />

comportamenti del <strong>robot</strong> son f<strong>un</strong>zione <strong>di</strong>retta delle informazioni percepite dall’ambiente.<br />

Vi è <strong>un</strong>a relazione <strong>di</strong>retta fra sensori e attuatori. Non esiste <strong>un</strong>a rappresentazione del<br />

mondo e quin<strong>di</strong> non esiste <strong>un</strong>a pianificazione a priori del comportamento del <strong>robot</strong>.<br />

La scelta architetturale nella progettazione del <strong>robot</strong> è stata quella <strong>di</strong> realizzare <strong>un</strong><br />

<strong>robot</strong> Behaviour based in quanto effettuare <strong>un</strong>a rappresentazione del mondo interna<br />

risultava particolarmente complesso. Una catena <strong>di</strong> sensori sonar ad esempio potevano<br />

essere utilizzati per la localizzazione del <strong>robot</strong> all’interno del campo misurando le <strong>di</strong>stanze<br />

da tutte le pareti del campo. Inoltre rilevata la posizione della pallina e della porta sarebbe<br />

stato possibile calcolare a priori i coman<strong>di</strong> da inviare ai motori per definire le traiettorie da<br />

seguire per completare l’obiettivo.<br />

Come già in<strong>di</strong>cato nella fase iniziale <strong>di</strong> questa relazione, l’implementazione del<br />

comportamento <strong>con</strong> pianificazione avrebbe richiesto <strong>un</strong> impegno non in<strong>di</strong>fferente <strong>di</strong><br />

misurazioni e prove degli attuatori sul terreno <strong>di</strong> gara in Dipartimento per la rilevazione<br />

<strong>di</strong> opport<strong>un</strong>e misure del campo <strong>di</strong> gara. La nostra <strong>con</strong><strong>di</strong>zione <strong>di</strong> studenti lavoratori in<br />

questo <strong>con</strong>testo non ci ha facilitato per cui abbiamo deciso <strong>di</strong> perseguire la progettazione<br />

<strong>di</strong> <strong>un</strong> <strong>robot</strong> reattivo basato sui comportamenti. Inoltre per lo scopo del progetto, effettuare<br />

il maggior numero <strong>di</strong> goal nell’intervallo <strong>di</strong> tempo, abbiamo ritenuto che <strong>un</strong> approccio<br />

reattivo sarebbe stato sicuramente <strong>un</strong> sistema veloce per la realizzazione del goal.<br />

Adesso verranno descritti gli algoritmi implementati per la modalità gioco e per la<br />

modalità rigori.<br />

34


Strategia implementata per la modalità gioco<br />

La strategia implementata per la soluzione del problema assegnato è la seguente. Il<br />

<strong>robot</strong> inizia i suoi comportamenti cercando la pallina. La ricerca della pallina <strong>con</strong>siste in<br />

<strong>un</strong>a rotazione sul posto del <strong>robot</strong> seguito da 3 scansioni: <strong>un</strong>a a sinistra, <strong>un</strong>a a destra e <strong>un</strong>a<br />

al centro <strong>di</strong> immagini dalla webcam <strong>con</strong> relativa elaborazione per la rilevazione<br />

dell’oggetto sfruttando il modulo <strong>di</strong> visione. Finchè la palla non rileva la palla il <strong>robot</strong><br />

permane in tale stato.<br />

Una volta in<strong>di</strong>viduata la palla il <strong>robot</strong> viene eseguito il comportamento <strong>di</strong> “vai<br />

verso la palla” il <strong>robot</strong> effettua <strong>un</strong> raddrizzamento del <strong>robot</strong> rispetto alla palla fin quando<br />

il modulo <strong>di</strong> visione non restituisce che la palla si trova al centro rispetto alla webcam. A<br />

questo p<strong>un</strong>to il <strong>robot</strong> si <strong>di</strong>rige dritto verso la palla. Il <strong>robot</strong> si ferma quando il sensore <strong>di</strong> IR<br />

rileva la palla. Alla rilevazione della palla da parte del sensore IR viene chiusa la chela<br />

attraverso l’attivazione del servocomando.<br />

Successivamente il <strong>robot</strong> esegue il comportamento cerca porta, simile al<br />

comportamento cerca pallina ma questa volta l’oggetto ricercato dal modulo <strong>di</strong> visione è il<br />

rettangolo <strong>di</strong> colore rosso. Il <strong>robot</strong> effettua delle rotazioni e delle scansioni a sinistra, al<br />

centro e a destra alla ricerca della porta. Finché non la trova <strong>con</strong>tinua a ruotare.<br />

Una volta in<strong>di</strong>viduata la porta, viene attivato il comportamento vai verso porta. Il<br />

vai verso porta va dritto verso la porta effettuando dei raddrizzamenti del <strong>robot</strong> in<br />

f<strong>un</strong>zione del posizionamento della porta rispetto al centro della webcam.<br />

Quando il <strong>robot</strong> si trova vicino alla porta, tale comportamento si verifica quando<br />

l’area della porta supera <strong>un</strong> certo limite e il sensore sonar rileva la vicinanza <strong>con</strong> il muro, il<br />

<strong>robot</strong> apre la chela e torna in<strong>di</strong>etro rilasciando la palla in porta.<br />

Strategia implementata per la rigori<br />

La strategia implementata per la soluzione del problema dei rigori è la seguente. Il<br />

<strong>robot</strong> inizia i suoi comportamenti cercando la pallina. La ricerca della pallina <strong>con</strong>siste in<br />

35


<strong>un</strong>a rotazione sul posto del <strong>robot</strong> seguito da 3 scansioni: <strong>un</strong>a a sinistra, <strong>un</strong>a a destra e <strong>un</strong>a<br />

al centro <strong>di</strong> immagini dalla webcam <strong>con</strong> relativa elaborazione per la rilevazione<br />

dell’oggetto sfruttando il modulo <strong>di</strong> visione. Finchè la palla non rileva la palla il <strong>robot</strong><br />

permane in tale stato.<br />

Una volta in<strong>di</strong>viduata la palla il <strong>robot</strong> viene eseguito il comportamento <strong>di</strong> “vai<br />

verso la palla” il <strong>robot</strong> effettua <strong>un</strong> raddrizzamento del <strong>robot</strong> rispetto alla palla fin quando<br />

il modulo <strong>di</strong> visione non restituisce che la palla si trova al centro rispetto alla webcam. A<br />

questo p<strong>un</strong>to il <strong>robot</strong> si <strong>di</strong>rige dritto verso la palla effettuando dei raddrizzamenti qualora<br />

il modulo <strong>di</strong> visione restituisce <strong>un</strong>a posizione scostata rispetto al centro. Il <strong>robot</strong> si ferma<br />

quando il sensore <strong>di</strong> IR rileva la palla. Alla rilevazione della palla da parte del sensore il<br />

<strong>robot</strong> esegue il comportamento cerca porta, simile al comportamento cerca pallina ma<br />

questa volta l’oggetto ricercato dal modulo <strong>di</strong> visione è il rettangolo <strong>di</strong> colore rosso. Il<br />

<strong>robot</strong> effettua delle rotazioni e delle scansioni a sinistra, al centro e a destra alla ricerca<br />

della porta. Finchè non la trova <strong>con</strong>tinua a ruotare.<br />

Una volta in<strong>di</strong>viduata la porta, viene attivato il comportamento vai verso porta. Il<br />

vai verso porta va dritto verso la porta e dopo 30 cm si ferma repentinamente lasciando<br />

rotolare la palla che entra in porta.<br />

Diagramma Stimolo-Risposta (SR)<br />

Nelle architetture <strong>di</strong> <strong>con</strong>trollo reattive l’esecuzione <strong>di</strong> <strong>un</strong> compito è sud<strong>di</strong>visa fra<br />

moduli ogn<strong>un</strong>o dei quali ha assegnata <strong>un</strong>a specifica competenza e attua <strong>un</strong> determinato<br />

comportamento del <strong>robot</strong>. Il comportamento del <strong>robot</strong> è determinato dall’insieme dei<br />

comportamenti presenti.<br />

Esistono due principi nelle architetture basate sui comportamenti:<br />

• Principio <strong>di</strong> in<strong>di</strong>pendenza: ogni modulo è in<strong>di</strong>pendente rispetto agli altri<br />

• Principio <strong>di</strong> località: ciasc<strong>un</strong> sotto compito per completarsi richiede <strong>un</strong>a parte<br />

limitata dell’informazione sensoriale <strong>di</strong>sponibile.<br />

36


Di seguito nell’immagine sottostante viene mostrato il Diagramma Stimolo Risposta dei<br />

comportamenti implementati ai fini del lavoro <strong>di</strong> questa tesina.<br />

Fig.28 Diagramma SR<br />

37


Diagramma FSA<br />

Di seguito viene riepilogato il <strong>di</strong>agramma FSA del comportamento <strong>robot</strong>ico implementato.<br />

Fig.29 Diagramma FSA<br />

38


Comportamenti <strong>di</strong> BASE<br />

Di seguito gli schemi a blocchi dei comportamenti <strong>di</strong> base.<br />

Cerca pallina<br />

Fig.30 Diagramma cerca pallina<br />

39


Vai e pren<strong>di</strong> pallina<br />

Fig.31 Diagramma Vai e pren<strong>di</strong> pallina<br />

Fig.32 Azioni Vai e pren<strong>di</strong> pallina<br />

40


Cerca porta<br />

Fig.33 Diagramma Cerca porta<br />

Fig.34 Azioni Cerca porta<br />

41


Vai in porta<br />

Fig.35 Diagramma Vai in porta<br />

Fig.36 Azioni Vai in porta<br />

42


Comportamento com<strong>un</strong>e<br />

Evita ostacoli<br />

Tutti i comportamenti che prevedono <strong>un</strong>’attivazione degli attuatori hanno<br />

implementato <strong>un</strong> comportamento evita ostacoli.<br />

In particolare nel comportamento base “Cerca pallina” durante le rotazioni alla<br />

ricerca della pallina se <strong>un</strong> ostacolo è rilevato a sinistra viene cambiato il senso <strong>di</strong> rotazione.<br />

Il sensore Sonar presente sopra la web cam permette la duplice rilevazione palla-ostacolo.<br />

Quando il <strong>robot</strong> si <strong>di</strong>rige verso la porta torna in<strong>di</strong>etro se rileva l’ostacolo.<br />

Fig.37 Azioni Evita ostacoli<br />

43


Sottocomportamenti – vai dritto<br />

Ogni comportamento <strong>di</strong> base può essere scomposto in singoli<br />

sottocomportamenti che attivano i singoli attuatori.<br />

Particolare attenzione merita il comportamento vai dritto, infatti per motivazioni<br />

puramente tecniche costruttive del <strong>robot</strong>, il comportamento vai dritto è stato <strong>un</strong>o dei più<br />

complessi. Il nostro <strong>robot</strong> infatti aveva <strong>un</strong>a tendenza a ruotare a sinistra. Tale problematica<br />

è stata risolta agendo sugli ingressi Enable del <strong>con</strong>trollore dei motori inviando segnali<br />

PWM <strong>con</strong> dutycycle <strong>di</strong>fferenti.<br />

Inoltre è stato rilevato che il campo <strong>di</strong> gioco, essendo costituito da segato <strong>di</strong> marmo<br />

causava <strong>un</strong>o slittamento delle ruote quando <strong>un</strong>’accelerazione brusca viene applicata alle<br />

ruote.<br />

Per tale motivazione è stato introdotto <strong>un</strong> comportamento <strong>di</strong> incremento del<br />

dutycycle graduale agli ingressi del <strong>con</strong>trollore dei motori in modo da garantire<br />

<strong>un</strong>’accelerazione graduale dei motori e <strong>un</strong> minor slittamento delle ruote che poteva<br />

causare <strong>un</strong>a rotazione involontaria del <strong>robot</strong>.<br />

44


Costruzione del campo domestico<br />

I nostri orari <strong>di</strong> lavoro, spesso <strong>con</strong> uscita alle ore 19,00 non ci hanno permesso <strong>di</strong><br />

recarci in Dipartimento per testare il Robot sul campo ufficiale così spesso come<br />

speravamo, per cui avevamo bisogno <strong>di</strong> <strong>un</strong>a alternativa. L’<strong>un</strong>ica che abbiamo trovato, è<br />

stata quella <strong>di</strong> costruirci <strong>un</strong> campo domestico che ricalcasse le caratteristiche topologiche<br />

<strong>di</strong> quello ufficiale così da poter testare il <strong>robot</strong> nelle ore serali e notturne.<br />

Il campo è stato costruito da <strong>un</strong> pannello <strong>di</strong> depron da 4mm affettato in strisce da 19mm<br />

(altezza del campo ufficiale) e rivestito <strong>di</strong> cartoncino rosso, nella parte del campo che<br />

avrebbe costituito la porta.<br />

Anche per la palla si è trovata <strong>un</strong>a alternativa, da Decathlon. Quella domestica è stata <strong>di</strong><br />

9cm rispetto i 10cm <strong>di</strong> quella ufficiale e il colore non è proprio il verde <strong>di</strong> quella ufficiale,<br />

ma tarando l’HSV, siamo riusciti a fare dei test.<br />

Fig.38 Campo <strong>di</strong> gioco domestico<br />

Le <strong>con</strong><strong>di</strong>zioni domestiche (campo, attrito pavimento, luminosità, <strong>di</strong>mensione e<br />

colore della palla,…) molto <strong>di</strong>verse da quelle <strong>di</strong> gioco ufficiali, ci hanno visto costretti a<br />

recarci <strong>con</strong> molte <strong>di</strong>fficoltà in Dipartimento per ricalibrare completamente il Robot e<br />

mo<strong>di</strong>ficare i comportamenti.<br />

45


Problematiche dei test in laboratorio<br />

Il campo pre<strong>di</strong>sposto all’Università, presso il Dipartimento, ha evidenziato i<br />

seguenti p<strong>un</strong>ti <strong>di</strong> debolezza:<br />

Il campo: pareti non perfettamente allineate e problemi <strong>con</strong> il sensore sonar;<br />

Sensore IR: è necessario mantenere le finestre dell’aula completamente chiuse per<br />

evitare falsi positivi;<br />

Pattinamento e traiettoria: il pavimento del laboratorio, rispetto quello domestico è<br />

particolarmente scivoloso e lo slittamento delle ruote del <strong>robot</strong> è molto evidente. Ciò ne<br />

altera il comportamento nell’andare dritto. Si è provato a risolvere il problema inserendo<br />

delle ritagli <strong>di</strong> camera d’aria nelle ruote e anche a cambiare entrambi i motori. Nell’andare<br />

dritto il <strong>robot</strong> tendeva a ruotare vistosamente verso destra malgrado avessimo tentato a<br />

mo<strong>di</strong>ficare via software i parametri del pwm. Sono state fatte ulteriori rettifiche software<br />

al PWM dei motori che ne hanno migliorato l’andamento;<br />

La pallina: quella scelta presenta dei problemi dovuti all’<strong>un</strong>ione delle due metà che<br />

la costituis<strong>con</strong>o che non permette <strong>un</strong> facile rotolamento all’interno della chela. Si è risolto<br />

incollando del velcro all’interno della chela;<br />

Problemi <strong>di</strong> <strong>di</strong>sponibilità del campo: i nostri orari <strong>di</strong> lavoro ci hanno permesso <strong>di</strong><br />

arrivare in Dipartimento solo poche volte e com<strong>un</strong>que dalle 18.30. La <strong>di</strong>sponibilità del<br />

campo è stata sempre <strong>un</strong> problema legata ai numerosi gruppi che erano sempre presenti e<br />

spesso impegnati nelle simulazioni <strong>di</strong> gara. Il custode ci accompagnava fuori alle 20.00<br />

per cui il tempo per i test è stato esiguo.<br />

46


Malgrado tutto, durante le poche prove effettuate, il Robot è riuscito a segnare sia in<br />

modalità match che in modalità rigore.<br />

Fig.39 Test in Dipartimento<br />

47


Due Robot<br />

Anche se è stato ripetuto più volte, non finiremo mai <strong>di</strong> ripeterlo, la nostra attività<br />

lavorativa ci ha tolto molto tempo per lo <strong>sviluppo</strong> <strong>di</strong> questo Robot e se andare<br />

all’<strong>un</strong>iversità per fare i test è stato <strong>un</strong> problema, cercare <strong>di</strong> ri<strong>un</strong>irci tutti lo è stato ancora <strong>di</strong><br />

più perché tra gli impegni <strong>di</strong> lavoro c’erano anche quelli <strong>di</strong> famiglia.<br />

Quin<strong>di</strong> nello <strong>sviluppo</strong> dei comportamenti, come accelerare i tempi? Abbiamo<br />

dovuto creare due <strong>robot</strong>, per testare in parallelo le routine o per mo<strong>di</strong>ficarne <strong>un</strong>o sulla<br />

base dei comportamenti da correggere e per <strong>con</strong>tinuare a lavorare sull'altro.<br />

I due <strong>robot</strong> sono similari, <strong>un</strong>o dei due ha solo la forma <strong>un</strong> pò più squadrata ed è <strong>di</strong><br />

poco più l<strong>un</strong>go.<br />

Fig.40 I due Robot costruiti a <strong>con</strong>fronto<br />

48


Sito Web<br />

E’ stata realizzata <strong>un</strong>a area nel sito web <strong>di</strong> <strong>un</strong>o dei componenti del Team che<br />

raccoglie <strong>un</strong>a ventina <strong>di</strong> articoli che descrivono dettagliatamente <strong>con</strong> foto e descrizione<br />

quanto rappresentato in questa relazione. L’area è pubblica ed è raggi<strong>un</strong>gibile all’in<strong>di</strong>rizzo<br />

web:<br />

http://maxtut.altervista.org/index.php/<strong>robot</strong>ica<br />

49


Conclusioni<br />

Malgrado le <strong>di</strong>fficoltà esposte e com<strong>un</strong>que andrà l’esame, è stata <strong>un</strong>a bellissima<br />

esperienza, che ci ha messo a dura prova facendoci realizzare <strong>un</strong> Robot (anzi due) che<br />

forse non avremmo mai pensato <strong>di</strong> fare.<br />

50


Sitografia<br />

RoboticsLab Unipa - https://sites.google.com/site/<strong>robot</strong>ica<strong>un</strong>ipa/<br />

<strong>Raspberry</strong> <strong>PI</strong> - https://www.raspberrypi.org/documentation<br />

<strong>Raspberry</strong> <strong>PI</strong> – RS Components - http://it.rs-online.com<br />

<strong>Raspberry</strong> pi tutorial in italiano passo passo - http://www.logicaprogrammabile.it/tutorialraspberry-pi-primi-passi/<br />

<strong>Raspberry</strong> Pi2 & 3 Pin Mappings - https://ms-iot.github.io/<strong>con</strong>tent/en-<br />

US/win10/samples/PinMappingsRPi2.htm<br />

Motor Control L298N H-Bridge programming - http://www.cardboard-car.com/en/top-storyen/raspberry-pi-motor-<strong>con</strong>trol-l298n-h-bridge-programming/7342<br />

<strong>Raspberry</strong> <strong>PI</strong> L298N Dual H Bridge DC Motor - http://www.instructables.com/id/<strong>Raspberry</strong>-<strong>PI</strong>-<br />

L298N-Dual-H-Bridge-DC-Motor/<br />

Ultrasonic Distance Sensor HC-SR04 - http://www.cardboard-car.com/en/top-storyen/ultrasonic-<strong>di</strong>stance-sensor-hc-sr04-instructions/7529<br />

Project HC-SR04 - http://pi.nhsa.co.uk/index.php?page=projects-hcsr04<br />

<strong>Raspberry</strong> Pi OpenCV Pan & Tilt Face Tracker - http://mitchtech.net/raspberry-pi-servo-facetracker/<br />

Implementing the Max RGB filter in OpenCV – PyImageSearch -<br />

http://www.pyimagesearch.com/2015/09/28/implementing-the-max-rgb-filter-in-opencv/<br />

Image - Python/Pillow: Filter pixels - http://stackoverflow.com/questions/31768012/pythonpillow-filter-pixels-with-max-min-rgb-values<br />

GitHub - jabelone/pythonSB: A python implementation of the Servo Blaster program, for<br />

<strong>con</strong>trolling servos on a raspberry pi - https://github.com/jabelone/pythonSB<br />

La libreria OpenCV - http://www.allafinedelpalo.it/la-libreria-opencv-<strong>con</strong>figurazione-suwindows/<br />

51


Installing OpenCV on a <strong>Raspberry</strong> Pi - Robert Castle Consulting -<br />

http://robertcastle.com/2014/02/installing-opencv-on-a-raspberry-pi/<br />

Fast Object Tracking – Robot OpenCV – Python - http://www.lirtex.com/<strong>robot</strong>ics/fast-objecttracking-<strong>robot</strong>-computer-vision<br />

OpenCV and Python Color Detection – PyImageSearch -<br />

http://www.pyimagesearch.com/2014/08/04/opencv-python-color-detection/<br />

Fast Object Tracking –Python e servo - http://www.lirtex.com/<strong>robot</strong>ics/fast-object-tracking<strong>robot</strong>-computer-vision<br />

Multiple object tracking color - http://akaifi.github.io/MultiObjectTrackingBasedOnColor/<br />

Object detection based on color (colour) with Python 3, OpenCV 3, Pi Camera, and <strong>Raspberry</strong> Pi 2<br />

| Linux Circle - http://www.linuxcircle.com/2015/05/24/object-detection-based-on-color-withpython-3-opencv-3-and-raspberry-pi-2/<br />

Fritzing - http://fritzing.org<br />

52

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!