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