SlideShare a Scribd company logo
1 of 36
Download to read offline
UNIVERSITÀ DEGLI STUDI DI TRIESTE
Dipartimento di Ingegneria e Architettura
Corso di Studi in Ingegneria Elettronica e Informatica
PROGETTAZIONE E SVILUPPO
DI UN SISTEMA DI VISIONE ARTIFICIALE
PER IL MONITORAGGIO AUTOMATICO
DELLE POSIZIONI DI UNO SCIAME DI ROBOT
IN UNO SCENARIO DI LABORATORIO
Tesi di Laurea Triennale
Laureando: ​Relatore:
Riccardo SCILLA prof. Eric MEDVET
ANNO ACCADEMICO 2018-2019
1
Indice
1. Introduzione 3
2. Descrizione setup sperimentale 5
Libreria OpenCV 5
Robot Thymio II 7
Camera Reflex 7
Ambiente 8
3. Calibrazione della camera 9
4. Descrizione dell’applicazione 11
5. Fase 1: Stima soddisfacimento criteri 12
Descrizione criteri 12
Descrizione procedura sperimentale valutazione criteri 13
Risultati delle 2 Webcam 15
Webcam 1 15
Dati h min 15
Dati h max 16
Conclusioni 18
Webcam 2 19
Dati h min 19
Dati h max 20
Conclusioni 22
Scelta della Camera ideale 22
Risultati Camera Reflex 24
Dati h min 24
Dati h max 25
Conclusioni 27
6. Fase 2: Test di valutazione del sistema 28
Descrizione dei Test 28
Risultati dei Test 29
Robot singolo 29
Robot Doppio 30
Valutazione del progetto 32
7. Conclusione 34
Bibliografia 35
2
1. Introduzione
La presente tesi tratta la metodologia di progettazione di un sistema per il monitoraggio
automatico delle posizioni e dell’orientamento di uno sciame di robot attraverso un algoritmo
di computer vision. Tale sistema è stato realizzato nel laboratorio di Evolutionary Robotics e
Artificial Life (ERAL) dell’Università di Trieste.
L’utilizzo di robot mobili è spesso necessario quando ci si occupa dello sviluppo e
dell’implementazione di algoritmi di Evolutionary Robotics e di Artificial Intelligence;
attraverso questi viene infatti richiesto al robot di svolgere dei task.
Uno dei problemi principali per la raccolta di informazioni dei robot durante lo svolgimento di
questi task, è la conoscenza della posizione dei robot stessi nell’ambiente in cui si muovono.
La tecnologia più comune utilizzata per il tracciamento della posizione è il GPS (fig 1.1):
questo sistema sfrutta metodi di trilaterazione avanzati grazie ai quali dei ricevitori posti a
terra possono calcolare la loro posizione misurando il travel time di segnali RF mandati dai
satelliti. In questo modo, conoscendo la distanza esatta dal ricevitore di terra a tre satelliti, è
possibile calcolare la latitudine e la longitudine [​1​]. L’utilizzo del GPS ha diversi svantaggi tra
i quali l’impossibilità di un efficace utilizzo in ambienti chiusi a causa del rimbalzo del segnale
tra le pareti degli edifici. Oltre a ciò è da considerare anche un rilevante consumo di energia
del ricevitore causato dall’impiego di risorse e di connessione con i satelliti.
Riferendosi alle tecnologie più consone al tracciamento in ambienti indoor si potrebbe
considerare come soluzione alternativa l’utilizzo di un sistema di posizionamento basato su
raggi infrarossi (IR): anche questa tecnologia presenta però alcuni svantaggi, come ad
esempio il fatto che gli IR possono essere soggetti all’interferenza causata dalla luce solare o
dagli esseri viventi. Inoltre i sistemi che utilizzano gli IR sono costosi dal punto di vista dei
componenti per la connessione tra sensori e i sistemi di rilevazione.
Gli infrarossi possono essere utilizzati insieme alla tecnologia a ultrasuoni per realizzare un
sistema di posizionamento, rappresentato in figura 1.2 [2]: questo sistema si basa sul calcolo
della distanza dagli oggetti da rilevare e dei trasmettitori fissi, sfruttando il tempo di arrivo dei
segnali ultrasuoni. In questo sistema, il segnale IR è usato per sincronizzare i ricevitori a
ultrasuoni posti sugli oggetti e l’unità di trasmissione [3].
3
Un'ulteriore tecnologia utile per il tracciamento in ambienti interni è data dall’utilizzo della
computer vision, la quale permette di elaborare frame catturati durante una live-view, un
video o una sequenza di foto, rilevando gli oggetti di interesse con molta accuratezza.
Questa soluzione ha il vantaggio di essere più economica rispetto alle precedenti, tuttavia
presenta delle limitazioni per quanto riguarda la dimensione dell’ambiente analizzato, che
risulta limitato al campo di visione della camera; inoltre è obbligatorio mantenere la line of
sight con l’oggetto da rilevare, cosa che invece non è necessaria utilizzando un sistema
basato su IR.
La tecnologia scelta per lo sviluppo del sistema di monitoraggio, nell’ambito del presente
progetto di ricerca, è la computer vision in quanto il campo di azione del movimento dei robot
da tracciare è limitato ad una porzione di una stanza, facilmente gestibile con una comune
camera reflex.
Il sistema è stato sviluppato durante un periodo di tirocinio, strutturato in due fasi: una prima
di avvicinamento alla computer vision e all’implementazione in C++ dell’algoritmo di visione;
una seconda di ricerca e sperimentazione, che costituisce il contenuto di questa tesi.
Attraverso alcuni test svolti in laboratorio, sono stati innanzitutto investigati i criteri necessari
per un corretto funzionamento del sistema e la stima del soddisfacimento dei criteri stessi da
parte di due camere già disponibili.
In seguito è stata stilata una lista di specifiche della camera ideale in grado di soddisfare i
criteri di cui sopra: tali criteri sono stati poi verificati attraverso dei test in laboratorio.
Successivamente è stata costruita la parte strutturale del sistema di monitoraggio,
comprendente un’arena e un supporto per la camera.
Infine è stato testato il sistema completo attraverso dei test utilizzando i robot Thymio II.
Fig. 1.1 ​Sistema GPS Fig. 1.2​ Sistema Ultrasuoni e Infrarossi
4
2. Descrizione setup sperimentale
Libreria OpenCV
Fig. 2.1 ​Logo OpenCV
OpenCV (Open Source Computer Vision Library) è una libreria open source con licenza
BSD, multipiattaforma, che consente di sviluppare applicazioni di visione artificiale in tempo
reale. Raccoglie le funzionalità degli algoritmi di computer vision più utilizzati, concentrandosi
principalmente sull’elaborazione delle immagini, l’acquisizione e l’analisi dei video, incluse
applicazioni come rilevamento dei volti e rilevamento degli oggetti.
OpenCV è scritta nel linguaggio C++ e la sua interfaccia principale è in C++, tuttavia
presenta collegamenti in Python, Java e MATLAB. Utilizza CMake per la gestione dei
processi ed è compatibile nei seguenti sistemi operativi desktop: Windows, Linux, MacOS,
OpenBSD, FreeBSD, NetBSD [​4​].
Il monitoraggio della posizione dei robot è realizzato attraverso dei marker predefiniti, prodotti
ed elaborati dal modulo ArUco disponibile in OpenCV. Il vantaggio principale di questi
identificatori è che un singolo marker fornisce abbastanza corrispondenze (i suoi quattro
angoli) per ricavare la sua posizione nell’immagine catturata dalla camera. Inoltre, la codifica
binaria interna di cui sono dotati, li rende piuttosto robusti, permettendo di applicare tecniche
di rilevamento e correzione degli errori.
Un marker ArUco è un marker quadrato composto da un bordo nero e una matrice binaria
interna che determina il suo identificatore (ID): il bordo nero facilita il rilevamento del marker
presente in un frame mentre la codifica binaria ne consente l’identificazione univoca.
5
La dimensione di un marker determina la dimensione della matrice interna. Ad esempio, per
l’oggetto di studio sono stati utilizzati marker di dimensione 4x4, composti da 16 bit ciascuno.
Alcuni esempi di marker ArUco:
Fig. 2.2 ​Esempi di marker ArUco
Siccome un marker può trovarsi ruotato nell’ambiente, grazie alla codifica binaria il processo
di rilevamento è in grado di determinare la sua rotazione, in modo che ogni angolo assunto
dal marker sia identificato esplicitamente.
Per la realizzazione di un’applicazione vengono utilizzati dizionari di marker, ovvero insiemi
di marker che presentano la stessa dimensione e sono identificati univocamente nel
dizionario. La dimensione del dizionario è identificata dal numero di marker che compongono
il dizionario. Il modulo ArUco include alcuni dizionari predefiniti che coprono una vasta
gamma di diverse dimensioni del dizionario e dimensioni dei marker.
Un ulteriore parametro da considerare è la distanza tra i marker nel dizionario, che determina
le capacità di rilevamento e correzione degli errori. In generale, dimensioni dei dizionari
inferiori e dimensioni dei marker maggiori, aumentano la distanza tra i marker e viceversa.
Tuttavia, il rilevamento di marker con dimensioni più elevate è più complesso, a causa della
maggiore quantità di bit che devono essere estratti dall’immagine [​5​].
6
Robot Thymio II
Per il test dell’applicazione sono stati utilizzati robot Thymio II [​6​].
Il robot Thymio II include nove sensori di prossimità a infrarossi (IR) in grado di rilevare
ostacoli; cinque sono posizionati nella parte anteriore,
due nella parte posteriore mentre altri due nella parte
inferiore.
I sensori restituiscono un valore compreso tra 0 e
circa 4500, dove un valore più alto corrisponde a un
ostacolo più vicino [​7​].
Il robot può muoversi attraverso due ruote
differenziali, permettendo di impostare due diverse
velocità nell’intervallo tra -500 e 500 per ogni ruota.
La velocità operativa è stata definita al 30%, cioè tra
-150 e 150, per evitare un eccessivo consumo della
batteria e per adattarsi alla velocità di elaborazione dell’immagine della camera.
Il robot Thymio II è pre-programmato con sei comportamenti di base che possono essere
selezionati utilizzando dei pulsanti posti sopra al robot stesso. Sono state utilizzate le due
seguenti modalità:
❏ Esploratore (emissione luce gialla): evita gli ostacoli e si ferma se il pavimento è nero.
Utilizzato per il movimento casuale di ogni robot all’interno dell’arena.
❏ Investigatore (emissione luce azzurra): segue una linea nera posta a terra. Utilizzato
durante le fasi di Test del sistema di monitoraggio.
Ai fini dell’applicazione, sopra ad ogni robot è stato aggiunta una piattaforma in cartone al
quale è stato applicato un marker ArUco che lo identifica univocamente dagli altri robot; la
piattaforma ha inoltre lo scopo di schermare la luce colorata emessa dal robot in modo tale
da avere una rilevazione più precisa.
Camera Reflex
Il sistema di monitoraggio delle posizioni dei robot prevede innanzitutto l’acquisizione di
frame dello spazio di lavoro. Questo processo è realizzato grazie a una camera Reflex
Canon EOS 4000D. La scelta di questa camera è stata fatta sulla base della
caratterizzazione di 2 camere webcam e la stima del soddisfacimento dei criteri necessari
per una corretta acquisizione delle immagini in laboratorio (paragrafo 5).
7
Ambiente
L’ambiente per il monitoraggio dei robot comprende
un'arena di dimensioni 2m x 2m costruita utilizzando
quattro battiscopa in plastica. Essi sono stati rivestiti
con nastro adesivo bianco in modo da permettere ai
robot di migliorare il rilevamento delle pareti
dell’arena grazie ai sensori infrarossi [​7​]. Sempre con
lo scopo di permettere una corretta circolazione dei
robot, è stata posizionata la workstation tra la finestra
e l’arena, in modo da non far interferire la luce solare
con l’infrarosso dei robot. A 2,15 metri di altezza
sopra all’arena è stato montato un supporto a muro al
quale è stata collegata la camera reflex grazie a un
morsetto mobile. Sull’angolo in basso a sinistra
dell’arena, rispetto alla camera, è stato posto il
marker con ID 0, il quale serve come punto di riferimento per il calcolo della posizione di tutti
gli altri marker presenti nell’arena. In questo modo, il sistema di monitoraggio sarà
indipendente dalla posizione assoluta e dalla dimensione dell’arena.
8
3. Calibrazione della camera
Le camere economiche in commercio presentano molte distorsioni nelle immagini che
catturano. L’acquisizione delle immagini dei robot nell’arena dovrà quindi essere preceduta
dalla calibrazione della lente utilizzata [​8​]. Di seguito verranno descritte le informazioni
principali che devono essere note al termine della calibrazione, utilizzando il modello della
camera pinhole [​9​][​10​][11].
In questo modello, una vista è formata proiettando punti 3D nel piano dell’immagine
utilizzando una trasformazione prospettica.
dove:
● (X, Y, Z)​ sono le coordinate del punto 3D nel mondo reale
● (u, v)​ sono le coordinate del punto proiettato in pixel
● (c​x​, c​y ​)​ è il punto principale che di solito si trova al centro dell’immagine
● (f​x​, f​y ​)​ sono le distanze focali espresse in pixel
Fig. 3.1​ Modello pinhole
9
Le informazioni intrinseche della camera sono rappresentate attraverso una matrice, detta
Matrice della Camera​:
Questa matrice non dipende dalla scena visualizzata e quindi, una volta stimata, può essere
riutilizzata a condizione che la lunghezza focale sia fissa.
La matrice di rotazione e traslazione ​[​R|t​] ​è chiamata matrice dei parametri estrinseci.
Questa matrice è utilizzata per descrivere il movimento della camera attorno a una scena
statica o, viceversa, il movimento rigido di un oggetto attorno a una camera fissa. Infatti ​[​R|t​]
traduce le coordinate di un punto ​(X, Y, Z) ​in un sistema di coordinate fissato rispetto alla
camera. Tale trasformazione si può scrivere come segue:
Due distorsioni principali, presenti nelle camere reali, sono la distorsione radiale e la
distorsione tangenziale.
A causa della distorsione radiale, le linee dritte appariranno curve. Questa distorsione è
rappresentata come segue:
 
 
 
La distorsione tangenziale si verifica perché l’immagine assunta dalla lente non è allineata
parallelamente al piano di immagine e alcune aree sembreranno più vicine di quanto non
siano. Questa distorsione è rappresentata come segue:
Possiamo quindi dire che, durante il processo di calibrazione della camera, oltre alla sua
matrice è necessario conoscere cinque parametri, detti ​Coefficienti di distorsione​, definiti nel
vettore:
10
4. Descrizione dell’applicazione
L’applicazione per il monitoraggio dei robot è stata sviluppata in C++ con l’utilizzo della
libreria OpenCV in ambiente Linux. All’avvio da shell, compare su schermo un menu dal
quale si può accedere a due diverse modalità di utilizzo:
1. La prima modalità riguarda la calibrazione della lente della camera attualmente
utilizzata. Verrà lanciato uno script dal programma stesso, che metterà in
comunicazione Ubuntu e la camera. La frequenza di cattura dei frame nella modalità
di calibrazione è di 5 fps con una risoluzione di 1053 x 704 (modificabile nello script).
Successivamente si aprirà una finestra dalla quale verranno visualizzati i frame
catturati. Premendo ‘g’ si avvierà la calibrazione che consiste nella cattura automatica
di 20 frame che ritraggono una scacchiera di 11 x 8 quadrati (presente in laboratorio).
Al termine della cattura verranno salvati i coefficienti di distorsione e di matrice della
camera in un file log con nome “Calibration values”, mentre sul terminale verrà
indicato l’errore medio dei valori rilevati.
Per eseguire una buona calibrazione è necessario inquadrare la scacchiera in più
angolazioni diverse possibili, senza trascurare i bordi del frame.
Al termine della calibrazione basterà premere ‘ESC’ per far terminare il programma e
lo script.
2. La seconda modalità riguarda il rilevamento dei marker presenti nei frame catturati.
Per prima cosa verranno caricati i Coefficienti di Distorsioni e di Matrice della Camera
presenti nel file log di nome “Calibration values”, trovati con la modalità 1.
Verrà poi lanciato uno script dal programma stesso che metterà in comunicazione
Ubuntu e la camera. La frequenza di cattura dei frame nella modalità di rilevamento è
di 10 fps con una risoluzione di 1053 x 704 (modificabile nello script).
Successivamente si aprirà una finestra dalla quale verranno visualizzati i frame
catturati: ad ogni frame verrà applicato un algoritmo di rilevamento dei marker che
farà disegnare, per ogni marker, il contorno, gli assi coordinati e l’identificatore del
marker. Oltre a ciò, sul lato alto della finestra saranno elencate le informazioni relative
a ogni marker rilevato, tra cui l’identificatore e la distanza in metri dall’origine
dell’arena (opzionale). Queste stesse informazioni saranno inoltre salvate in un file
log con nome relativo alla data e all’ora di inizio dell’intero rilevamento.
Per terminare il programma e lo script sarà sufficiente premere ‘ESC’ dalla tastiera.
11
5. Fase 1: Stima soddisfacimento criteri
Descrizione criteri
Si vuole stimare la qualità della camera da utilizzare per il riconoscimento dei marker.
Per fare ciò occorre definire dei criteri che permettano di valutare la distanza minima e
massima tra la camera e il marker, per cui questo venga acquisito ed elaborato.
I criteri sono:
1. La camera deve poter inquadrare l’intera area dove si muovono i robot.
2. La camera deve consentire di riconoscere i marker.
Definisco due distanze utili all’analisi:
● h​min​: rappresenta la distanza minima per cui la camera inquadra completamente una
certa lunghezza.
● h​max​: rappresenta la distanza massima per cui l’algoritmo riesce a riconoscere il
marker nel frame acquisito.
Il fatto di riuscire a inquadrare l’intera area dipende dall’angolo di visione della camera e dalla
distanza tra la camera e il centro dell’area stessa. Non conoscendo l’angolo di visione,
l’unico fattore da considerare è la distanza che sarà la minima per cui l’area venga
interamente inquadrata (h​min​). Siccome la risoluzione della camera non ha proporzione 1,
oltre all’h​min per la lunghezza orizzontale è necessario trovare l’h​min per la stessa lunghezza in
verticale.
Il riconoscimento del marker dipende da molti fattori tra cui: la dimensione del marker,
l’algoritmo di computer vision, la nitidezza e la grandezza dell’immagine del marker acquisito.
Assumendo che l’algoritmo di computer vision non venga cambiato e che la dimensione del
maker sia la migliore possibile (cioè che sia sufficientemente grande ma non maggiore della
dimensione del robot), l’unico fattore su cui si può agire è la qualità dell’immagine del marker
acquisito.
È ragionevole pensare che la nitidezza del marker dipenda dalla distanza tra questo e la
camera, in due punti center e edge. La massima distanza nei due punti per cui il marker
venga riconosciuto è l’h​max​ definita precedentemente.
12
I due criteri suddetti possono essere riscritti come segue: il marker viene riconosciuto se
l’h​max_center e l’h​max_edge sono entrambi maggiori della distanza per cui la camera inquadra
l’intera area.
Definendo quindi h​max come il minimo tra h​max_center e h​max_edge​, e h​min ​come il massimo tra
h​min_orizzontale e h​min_verticale​, posso concludere che una camera è adatta allo scopo se h​max > h​min
mentre non lo è se h​max​ < h​min​.
Descrizione procedura sperimentale valutazione criteri
Per misurare h​min_orizzontale è stata posizionata la camera in modo che l’inquadratura orizzontale
fosse di 1 metro ed è stata misurata la distanza tra la camera e il centro di questa lunghezza.
Queste operazioni sono state ripetute inquadrando prima 2 metri e infine 3 metri.
Fig. 5.1​: Misurazione h​min_orizzontale
Per misurare h​min_verticale è stata fatta una proporzione tra la h​min_orizzontale di una lunghezza
inquadrata e l’aspect ratio della camera utilizzata.
Per misurare h​max_center è stato posizionato il marker allineato con la camera ed è stato
spostato di 30 cm alla volta verificando, attraverso il software, quando non veniva più
rilevato. La distanza massima per testare il rilevamento è stata fissata di 6 metri.
Fig. 5.2 ​Misurazione h​max_center
13
Per misurare h​max_edge è stato posizionato il marker a 30cm dalla camera ed è stato alzato in
modo che venisse inquadrato nell’angolo sinistro del frame. Successivamente è stato
allontanato il marker di altri 30cm e alzato ancora in modo che venisse inquadrato
nuovamente all’angolo del frame. Queste operazioni sono state ripetute spostando il marker
di 30cm alla volta verificando quando non veniva più rilevato, fino a una distanza massima di
6 metri.
Nella raccolta dei dati di h​max​ sono stati individuati tre diversi tipi di rilevazione:
1. SI, se il marker veniva rilevato in modo stabile e chiaro
2. NO, se il marker non veniva rilevato
3. FLICKER, se il marker veniva rilevato ma non in modo stabile.
Fig. 5.3 ​Misurazione h​max_edge
14
Risultati delle 2 Webcam
Webcam 1
Dimensione marker: 7,5 x 7,5 cm
Risoluzione Webcam: 1600 x 1200 pixel (2MP)
Dimensione area: 2,00 x 2,00 m​2
Dati h min
L​orizzontale​ (m) h​min_orizzontale​ (m)
1,00 0,84
2,00 1,67
3,00 2,49
Tab. 5.1 ​Raccolta dati h​min_orizzontale
Graf. 5.1 ​Rappresentazione dati h​min_orizzontale
15
Da i risultati raccolti è stato considerato: h​min_orizzontale ​= 1,67 m.
Le proporzioni della camera sono 1600x1200 pixel, pertanto la h​min_verticale è pari a 4/3 della
h​min_orizzontale​.
L​verticale ​(m) h​min_verticale​ (m)
1 1,12
2 2,23
3 3,32
Tab. 5.2 ​Raccolta dati h​min_verticale
Da i risultati raccolti è stato considerato: h​min_verticale ​= 2,23 m.
Dati h max
Nei grafici sono stati considerati: S=2, F=1, N=0.
Center
h​max_center​ (m) Rilevamento (S/F/N) h​max_center​ (m) Rilevamento (S/F/N)
0,30 S 3,30 F
0,60 S 3,60 F
0,90 S 3,90 F
1,20 S 4,20 F
1,50 S 4,50 N
1,80 S 4,80 N
2,10 S 5,10 N
2,40 S 5,40 N
2,70 S 5,70 N
3,00 S 6,00 N
Tab. 5.3 ​Raccolta dati h​max_center
16
Graf. 5.2 ​Rappresentazione dati h​max_center
Da i risultati raccolti è stato considerato: h​max_center​= 3,00 m.
Edge
h​max_edge​ (m) Rilevamento (S/F/N) h​max_edge​ (m) Rilevamento (S/F/N)
0,30 S 3,30 N
0,60 S 3,60 N
0,90 S 3,90 N
1,20 S 4,20 N
1,50 S 4,50 N
1,80 S 4,80 N
2,10 F 5,10 N
2,40 F 5,40 N
2,70 F 5,70 N
3,00 N 6,00 N
Tab. 5.4 ​Raccolta dati h​max_edge
17
Graf. 5.3 ​Rappresentazione dati h​max_edge
Da i risultati raccolti è stato considerato: h​max_edge​= 1,80 m.
Conclusioni
Siccome si ha che h​max_edge < h​min_verticale posso concludere che la camera utilizzata non è
adatta per lo scopo. La differenza tra le due distanze è di 43 cm.
18
Webcam 2
Dimensione marker: 7,5 x 7,5 cm
Risoluzione Webcam: 1280 x 720 pixel
Dimensione area: 2,00 x 2,00 m​2
Dati h min
L​orizzontale​ (m) h​min_orizzontale​ (m)
1,00 1,06
2,00 2,23
3,00 3,39
Tab. 5.5 ​Raccolta dati h​min_orizzontale
Graf. 5.4 ​Rappresentazione dati h​min_orizzontale
Da i risultati raccolti è stato considerato: h​min_orizzontale ​= 2,23 m.
19
Le proporzioni della camera sono 1280x720 pixel, pertanto la h​min_verticale è pari a 16/9 della
h​min_orizzontale​.
L​verticale​ (m) h​min_verticale​ (m)
1,00 1,88
2,00 3,96
3,00 6,03
Tab. 5.6 ​Raccolta dati h​min_verticale
Da i risultati raccolti è stato considerato: h​min_verticale ​= 3,96 m.
Dati h max
Nel grafico sono stati considerati: S=2, F=1, N=0.
Center
h​max_center​ (m) Rilevamento (S/F/N) h​max_center​ (m) Rilevamento (S/F/N)
0,30 S 3,30 F
0,60 S 3,60 F
0,90 S 3,90 F
1,20 S 4,20 N
1,50 S 4,50 N
1,80 S 4,80 N
2,10 S 5,10 N
2,40 S 5,40 N
2,70 S 5,70 N
3,00 S 6,00 N
Tab. 5.7 ​Raccolta dati h​max_center
20
Graf. 5.5 ​Rappresentazione dati h​max_center
Da i risultati raccolti è stato considerato: h​max_center​= 3,00 m.
Edge
h​max_edge​ (m) Rilevamento (S/F/N) h​max_edge​ (m) Rilevamento (S/F/N)
0,30 S 3,30 F
0,60 S 3,60 N
0,90 S 3,90 N
1,20 S 4,20 N
1,50 S 4,50 N
1,80 S 4,80 N
2,10 S 5,10 N
2,40 F 5,40 N
2,70 F 5,70 N
3,00 F 6,00 N
Tab. 5.8 ​Raccolta dati h​max_edge
21
Graf. 5.6 ​Rappresentazione dati h​max_edge
Da i risultati raccolti è stato considerato: h​max_edge​= 2,10 m.
Conclusioni
Siccome si ha che h​max_edge < h​min_verticale posso concludere che la camera utilizzata non è
adatta per lo scopo. La differenza tra le due distanze è di 186 cm.
Scelta della Camera ideale
Per lo sviluppo del sistema di monitoraggio è stata utilizzata una camera Reflex in quanto
presenta caratteristiche precise date dal costruttore ed è possibile utilizzare obiettivi diversi
per varie applicazioni. Le caratteristiche di interesse per la scelta della camera sono:
● Risoluzione​: indica la quantità di pixel, disposti in orizzontale e in verticale, che viene
elaborata dal sensore digitale della camera.
Una maggiore risoluzione permette di facilitare la rilevazione dei marker posti sopra ai robot.
Tuttavia risoluzioni più alte implicano uno sforzo computazionale maggiore da parte
dell’algoritmo nella fase di rilevamento.
22
● Distanza focale​: permette di avere informazioni riguardo all’angolo di visione di una
particolare lente e alla dimensione dell’immagine catturata dalla lente stessa.
L’utilizzo di una camera con obiettivo grandangolare (cioè con distanza focale minore di 35
mm) permette di inquadrare scene ampie, con maggiore profondità di campo garantendo una
nitidezza di sfondo. Tuttavia a causa di una forzatura nella prospettiva, l’utilizzo di questo tipo
di obiettivi implica dei fenomeni di distorsione ottica dell’immagine, che devono essere trattati
utilizzando algoritmi di calibrazione della lente.
● Sensore​: parte della camera digitale dalla quale vengono catturate le immagini. Un
tipo di sensore è caratterizzato da un dimensione in mm e presenta un fattore di
moltiplicazione (crop factor) che deve essere utilizzato per trovare la distanza focale effettiva
dell’obiettivo che si sta utilizzando. Un sensore APS-C di Canon presenta un crop factor di
1,6 rispetto al valore di riferimento del sensore Full Frame: la distanza focale dell’obiettivo
utilizzato dovrà quindi essere moltiplicata per 1,6.
Questo comporta una maggiore distanza focale con la conseguente diminuzione dell’angolo
di visione.
● ISO​: indica la sensibilità del sensore alla luce. Più alto è il valore dell’ISO, più elevate
è la sensibilità alla luce. ​È necessario che la camera abbia un ISO variabile per potersi
adattare alle diverse condizioni di luce in laboratorio.
Per poter elaborare le immagini catturate attraverso OpenCV in ambiente Linux è necessario
che la camera sia supportata dal software gPhoto2, il quale permettete di far dialogare la
camera con il sistema operativo Ubuntu 16.04.
La camera scelta per l’applicazione è una Canon EOS 4000D che presenta le seguenti
caratteristiche:
Risoluzione (MP) 18
Distanza focale (mm) 18-55
Sensore APS-C
ISO 100-6400
23
Risultati Camera Reflex
Dimensione marker: 7,5 x 7,5 cm
Risoluzione camera: 1056 x 704 pixel
Dimensione area: 2,00 x 2,00 m​2
Distanza focale: 18 mm
Messa a fuoco: Automatica
ISO: Automatica
Dati h min
L​orizzontale​ (m) h​min_orizzontale​ (m)
1,00 0,83
2,00 1,64
3,00 2,42
Tab. 5.9 ​Raccolta dati h​min_orizzontale
Graf. 5.7 ​Rappresentazione dati h​min_orizzontale
24
Da i risultati raccolti è stato considerato: h​min_orizzontale ​= 1,64 m.
Le proporzioni della camera sono 1056 x 704 pixel, pertanto la h​min_verticale è pari a 3/2 della
h​min_orizzontale​.
L​verticale ​(m) h​min_verticale​ (m)
1 1,25
2 2,46
3 3,63
Tab. 5.10 ​Raccolta dati h​min_verticale
Da i risultati raccolti è stato considerato: h​min_verticale ​= 2,46 m.
Dati h max
Center
h​max_center​ (m) Rilevamento (S/F/N) h​max_center​ (m) Rilevamento (S/F/N)
0,30 S 3,30 S
0,60 S 3,60 S
0,90 S 3,90 F
1,20 S 4,20 F
1,50 S 4,50 N
1,80 S 4,80 N
2,10 S 5,10 N
2,40 S 5,40 N
2,70 S 5,70 N
3,00 S 6,00 N
Tab. 5.11 ​Raccolta dati h​max_center
25
Graf. 5.8 ​Rappresentazione dati h​max_center
Da i risultati raccolti è stato considerato: h​max_center​= 3,60 m.
Edge
h​max_edge​ (m) Rilevamento (S/F/N) h​max_edge​ (m) Rilevamento (S/F/N)
0,30 S 3,30 F
0,60 S 3,60 F
0,90 S 3,90 F
1,20 S 4,20 F
1,50 S 4,50 N
1,80 S 4,80 N
2,10 S 5,10 N
2,40 S 5,40 N
2,70 S 5,70 N
3,00 S 6,00 N
Tab. 5.12 ​Raccolta dati h​max_edge
26
Graf. 5.9 ​Rappresentazione dati h​max_edge
Da i risultati raccolti è stato considerato: h​max_edge​= 3,00 m.
Conclusioni
Siccome si ha che h​min_verticale < h​max_edge posso concludere che la camera reflex utilizzata è
adatta per lo scopo. Il margine tra le due distanze è di 54 cm.
27
6. Fase 2: Test di valutazione del sistema
Descrizione dei Test
Il sistema di monitoraggio è stato testato in laboratorio attraverso la costruzione di un
tracciato predefinito che i robot Thymio II erano tenuti a percorrere.
Come Test è stato posato a terra un tracciato di nastro nero di forma quadrata 1x1 metro e
largo 4 cm. La larghezza è stata scelta in modo tale che fosse facilmente riconoscibile dai
sensori infrarossi posti sotto ai robot.
Sopra al tracciato è stato posizionato inizialmente un singolo Thymio II in comportamento
“Investigatore”, con il compito di seguire il nastro a terra. Sopra al robot è stato posizionato
un marker ArUco di risoluzione 200x200 pixel. Durante il percorso è stata rilevata la
posizione del robot ogni mezzo secondo (2 fps) e salvata in un apposito file log.
I dati ottenuti sono stati utilizzati per costruire un grafico, da cui è stato possibile confrontare
il percorso ideale (tracciato a terra) e il percorso dato dall’insieme delle coordinate rilevate.
Fig. 6.1.​ Configurazione Test con robot singolo
28
I ​dati rilevati sono stati suddivisi in quattro serie, una per ogni lato del quadrato. Per ogni
serie è stato calcolato lo scarto quadratico medio utilizzando la formula:
dove:
● N​ è il numero di punti nella singola serie
● μ​ è la media relativa al singolo tratto
● x​i​ sono i valori della serie corrispondenti al lato analizzato
Questo stesso Test è stato ripetuto successivamente utilizzando 2 robot
contemporaneamente all’interno del tracciato.
Risultati dei Test
Robot singolo
Nel grafico seguente è riportata la posizione del robot rilevata (rosso) rispetto alla posizione
ideale (blu), rappresentata dal tracciato nero posto a terra nell’arena.
È stato utilizzato il marker con ID 5.
Graf. 6.1. ​Posizione robot singolo
29
Gli errori calcolati per ogni lato di rilevazione sono:
Lato 1: 2,08 cm Lato 2: 2,06 cm Lato 3: 2,74 cm Lato 4: 2,95 cm
Da cui si ottiene l’errore totale di: 2,49 cm.
Robot Doppio
Nel grafici seguenti sono stati riportati le posizioni dei robot rilevati (verde, giallo) rispetto alla
posizione ideale (blu), rappresentata dal tracciato nero posto a terra nell’arena.
Per il primo robot è stato utilizzato il marker con ID 5, per il secondo il marker con ID 1.
Graf. 6.2. ​Posizione robot 1
Gli errori calcolati per ogni lato di rilevazione sono:
Lato 1: 4,03 cm Lato 2: 2,16 cm Lato 3: 5,50 cm Lato 4: 2,33 cm
Da cui si ottiene l’errore totale di: 3,76 cm.
30
Graf. 6.3. ​Posizione robot 2
Gli errori calcolati per ogni lato di rilevazione sono:
Lato 1: 3,81 cm Lato 2: 3,87 cm Lato 3: 3,99 cm Lato 4: 1,98 cm
Da cui si ottiene l’errore totale di: 3,51 cm.
Graf. 6.4. ​Rappresentazione errori sulla posizione dei robot durante i Test
31
Valutazione del progetto
Analizzando gli errori ottenuti si può capire come la qualità del monitoraggio dei robot
dipenda dalla quantità di robot utilizzati nell’arena: questo può essere in parte dovuto alla
maggiore quantità di risorse utilizzate dall’algoritmo di computer vision.
Supponendo che la velocità del robot sia costante durante il percorso (esclusi gli angoli del
tracciato), un’aspettativa ideale sarebbe quella di avere una distribuzione a intervalli regolari
dei punti rilevati. Tuttavia questo non è presente in nessuno dei due Test eseguiti. Questo
fatto può avere varie spiegazioni: la prima è che ci siano dei frame nei quali il marker posto
sopra al robot non venga rilevato. La seconda invece è che, siccome la stima della posizione
dei marker è calcolata relativamente alla posizione del marker con ID 0, è possibile che
quest’ultimo marker non venga rilevato in alcuni frame, compromettendo il riconoscimento di
tutti gli altri. Inoltre si può pensare che il tempo di elaborazione non sia costante per tutti i
frame e pertanto l’analisi non venga condotta nei tempi necessari per poter fornire la
posizione di tutti i marker.
Osservando la quantità di punti rilevati durante il Test con due robot, si può notare come il
marker con ID 5 abbia avuto più rilevazioni rispetto al marker con ID 1. ​È possibile quindi che
ci siano alcuni marker più facili da riconoscere rispetto ad altri, anche se ciò non è precisato
nella documentazione di ArUco.
Come già detto precedentemente, il sistema di monitoraggio progettato non garantisce il
riconoscimento di tutti i marker presenti nell’arena, in ogni frame analizzato.
I motivi di questo fatto possono essere molteplici:
❏ Calibrazione della camera non sufficientemente precisa
❏ Risoluzione non adeguata per la cattura dei frame
❏ Condizioni di luminosità scarse o eccessive
❏ Vincoli dettati dal posizionamento laterale della camera
La calibrazione può essere ripetuta finché l’errore medio di proiezione non è compreso
nell’intervallo [0,1] tenendo sempre in considerazione le accortezze necessarie descritte nel
paragrafo della calibrazione.
È possibile modificare la risoluzione dei frame catturati indicandola nello script presente nel
programma; tuttavia, se aumentata in modo eccessivo, sarà necessario diminuire la
frequenza di cattura dei frame, per non incorrere nel crash del programma stesso.
La modifica della risoluzione della camera deve essere seguita da una nuova calibrazione.
32
Le diverse condizioni di luminosità presenti in laboratorio sono in parte corrette dalla
presenza della workstation che copre l’arena. Inoltre modificando l’ISO della camera è
possibile catturare più o meno luce nell’obiettivo a seconda delle condizioni di luminosità.
Il posizionamento della camera fissata al muro, rappresenta una soluzione adeguata in
quanto soddisfa i criteri descritti per un corretto rilevamento. Tuttavia, utilizzando questo
setup, è presente una differenza elevata tra i due lati orizzontali dell’arena, il che
compromette in parte il riconoscimento dei marker in queste zone. Inoltre se il robot che si
vuole tracciare si trova nel lato distante dell’arena, il marker posto sopra risulta inclinato di un
angolo non efficiente per il riconoscimento. Per risolvere queste problematiche, è possibile
costruire un supporto a muro estensibile, che permetta alla camera di trovarsi al centro
dell’arena: in questo modo sarà catturata una scena più simmetrica e con angoli meno stretti,
migliorando la qualità del rilevamento. Inoltre sarà possibile abbassare l’altezza della camera
dato che l’inquadratura deve coprire meno spazio.
33
7. Conclusione
In questa tesi è stata presentata la metodologia di progettazione di un sistema di
monitoraggio delle posizioni di robot, utilizzando la computer vision. Sono stati presentati i
principali elementi del setup del sistema e le motivazioni sulle scelte di tali elementi. In
particolare sono stati analizzati i criteri necessari per il corretto funzionamento del sistema.
Infine sono stati descritti alcuni Test svolti per valutare la qualità del sistema finito.
I risultati ottenuti confermano la bontà della computer vision come tecnologia adatta al
monitoraggio delle posizioni di robot, con un errore totale che può facilmente essere limitato
nell’ordine del 1-2% rispetto all’area di osservazione.
Nel futuro si può pensare di continuare a sviluppare il sistema nelle seguenti aree:
● Ottimizzazione dell’algoritmo di rilevamento
● Miglioramento del setup di laboratorio
● Valutazione delle prestazioni relative all’orientamento dei robot
Personalmente posso dirmi soddisfatto del lavoro eseguito in laboratorio e ritengo che sia
stata un’occasione per migliorare le capacità di problem solving e approfondire le
conoscenze realizzando un’applicazione informatica in un ambito di sicuro sviluppo futuro.
34
Bibliografia
[1] Borenstein, J., et al. “Mobile Robot Positioning: Sensors and Techniques.” ​Journal of
Robotic Systems​, vol. 14, no. 4, 1997, p. 11.
[2] C.J. Wu, C.C. Tsai,“Localization of an Autonomous Mobile Robot Based on Ultrasonic
Sensory Information” Journal of Intelligent and Robotic Systems, 2001.30: 267–277.
[3] Yucel, H., Edizkan, R., Ozkir, T., & Yazici, A. (2012). “Development of indoor positioning
system with ultrasonic and infrared signals”, pp. 1-2.
[4] “OpenCV.” ​OpenCV​, opencv.org/about/.
[5] “Detection of ArUco Markers.” ​OpenCV​,
docs.opencv.org/3.4.0/d5/dae/tutorial_aruco_detection.html.
[6] “Help Your Students, Any Age, to Master Technology.” ​Thymio​, www.thymio.org/.
[7] Heinerman, Jacqueline, et al. “On-Line Evolution of Foraging Behaviour in a Population of
Real Robots.” ​Applications of Evolutionary Computation Lecture Notes in Computer
Science​, 2016, p. 4.
[8] Huggins, Kevin R., et al. “Computer Vision Localization Based on Pseudo-Satellites.”
Proceedings of the IEEE 2009 National Aerospace &amp; Electronics Conference
(NAECON)​, 2009, p. 1.
[9] “Camera Calibration.” ​OpenCV​, docs.opencv.org/3.1.0/dc/dbb/tutorial_py_calibration.html.
[10] “Camera Calibration and 3D Reconstruction.” ​OpenCV​,
docs.opencv.org/3.4.0/d9/d0c/group__calib3d.html#ga3207604e4b1a1758aa66ac
b6ed5aa65d.
[11] “Camera Calibration With OpenCV.” ​Camera Calibration With OpenCV - OpenCV
2.4.13.7 Documentation​,
docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html#
cameracalibrationopencv.
35

More Related Content

Similar to Progettazione e sviluppo di un sistema di visione artificiale per il monitoraggio automatico delle posizioni di uno sciame di robot in uno scenario di laboratorio

Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...
Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...
Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...Andrea Marchetti
 
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”RiccardoWeis
 
Monitoraggio frane,,satellitari e interferometrici
Monitoraggio frane,,satellitari e interferometriciMonitoraggio frane,,satellitari e interferometrici
Monitoraggio frane,,satellitari e interferometricidiegodellerba1
 
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...mfurlanetto
 
Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...
Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...
Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...Vrije Universiteit Brussel
 
Alessandro Dionisi Thesis Presentation
Alessandro Dionisi Thesis PresentationAlessandro Dionisi Thesis Presentation
Alessandro Dionisi Thesis PresentationAlessandro Dionisi
 
Confronto tra piattaforme di robotica evolutiva
Confronto tra piattaforme di robotica evolutivaConfronto tra piattaforme di robotica evolutiva
Confronto tra piattaforme di robotica evolutivaMichaelFuser
 
Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...
Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...
Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...UNI - Ente Italiano di Normazione
 
video sorveglianza at unipn
video sorveglianza at unipnvideo sorveglianza at unipn
video sorveglianza at unipnMarco Bortoli
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...RiccardoScilla
 
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...Giuseppe Lombardi
 
Relazione Progetto cRio
Relazione Progetto cRioRelazione Progetto cRio
Relazione Progetto cRioDario Mazza
 
Scanner 3D e reverse Engineering
Scanner 3D e reverse EngineeringScanner 3D e reverse Engineering
Scanner 3D e reverse EngineeringPaolo Aliverti
 
Sistemi con telecamera per macchine mobili
Sistemi con telecamera per macchine mobiliSistemi con telecamera per macchine mobili
Sistemi con telecamera per macchine mobiliifm electronic gmbh
 
Articolo Compositi Magazine Dicembre 2015
Articolo Compositi Magazine Dicembre 2015Articolo Compositi Magazine Dicembre 2015
Articolo Compositi Magazine Dicembre 2015Vetorix Engineering Srl
 
Sviluppo del software di controllo di una piattaforma per antenne satellitari
Sviluppo del software di controllo di una piattaforma per antenne satellitariSviluppo del software di controllo di una piattaforma per antenne satellitari
Sviluppo del software di controllo di una piattaforma per antenne satellitariCarlo Maisola
 

Similar to Progettazione e sviluppo di un sistema di visione artificiale per il monitoraggio automatico delle posizioni di uno sciame di robot in uno scenario di laboratorio (20)

Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...
Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...
Valutazione delle prestazioni di un protocollo di routing (Surge) per reti di...
 
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
 
Monitoraggio frane,,satellitari e interferometrici
Monitoraggio frane,,satellitari e interferometriciMonitoraggio frane,,satellitari e interferometrici
Monitoraggio frane,,satellitari e interferometrici
 
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
Realizzazione di una base di dati per la memorizzazione di dati provenienti d...
 
Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...
Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...
Uno studio empirico sulla parametrizzazione dell'algoritmo slsq per la compre...
 
Alessandro Dionisi Thesis Presentation
Alessandro Dionisi Thesis PresentationAlessandro Dionisi Thesis Presentation
Alessandro Dionisi Thesis Presentation
 
Confronto tra piattaforme di robotica evolutiva
Confronto tra piattaforme di robotica evolutivaConfronto tra piattaforme di robotica evolutiva
Confronto tra piattaforme di robotica evolutiva
 
Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...
Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...
Presentazione della UNI/PdR 26.01:2017 Sistemi per la localizzazione e mappat...
 
video sorveglianza at unipn
video sorveglianza at unipnvideo sorveglianza at unipn
video sorveglianza at unipn
 
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
Progettazione e sviluppo di un sistema di visione artificiale per il monitora...
 
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
 
Relazione Progetto cRIO
Relazione Progetto cRIORelazione Progetto cRIO
Relazione Progetto cRIO
 
Relazione Progetto cRio
Relazione Progetto cRioRelazione Progetto cRio
Relazione Progetto cRio
 
Scanner 3D e reverse Engineering
Scanner 3D e reverse EngineeringScanner 3D e reverse Engineering
Scanner 3D e reverse Engineering
 
Sistemi con telecamera per macchine mobili
Sistemi con telecamera per macchine mobiliSistemi con telecamera per macchine mobili
Sistemi con telecamera per macchine mobili
 
Iuavcamp presentazione
Iuavcamp presentazioneIuavcamp presentazione
Iuavcamp presentazione
 
Wimax
WimaxWimax
Wimax
 
BlackBoard Team - Motion Tracking Platform
BlackBoard Team - Motion Tracking PlatformBlackBoard Team - Motion Tracking Platform
BlackBoard Team - Motion Tracking Platform
 
Articolo Compositi Magazine Dicembre 2015
Articolo Compositi Magazine Dicembre 2015Articolo Compositi Magazine Dicembre 2015
Articolo Compositi Magazine Dicembre 2015
 
Sviluppo del software di controllo di una piattaforma per antenne satellitari
Sviluppo del software di controllo di una piattaforma per antenne satellitariSviluppo del software di controllo di una piattaforma per antenne satellitari
Sviluppo del software di controllo di una piattaforma per antenne satellitari
 

Recently uploaded

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 

Recently uploaded (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 

Progettazione e sviluppo di un sistema di visione artificiale per il monitoraggio automatico delle posizioni di uno sciame di robot in uno scenario di laboratorio

  • 1. UNIVERSITÀ DEGLI STUDI DI TRIESTE Dipartimento di Ingegneria e Architettura Corso di Studi in Ingegneria Elettronica e Informatica PROGETTAZIONE E SVILUPPO DI UN SISTEMA DI VISIONE ARTIFICIALE PER IL MONITORAGGIO AUTOMATICO DELLE POSIZIONI DI UNO SCIAME DI ROBOT IN UNO SCENARIO DI LABORATORIO Tesi di Laurea Triennale Laureando: ​Relatore: Riccardo SCILLA prof. Eric MEDVET ANNO ACCADEMICO 2018-2019
  • 2. 1
  • 3. Indice 1. Introduzione 3 2. Descrizione setup sperimentale 5 Libreria OpenCV 5 Robot Thymio II 7 Camera Reflex 7 Ambiente 8 3. Calibrazione della camera 9 4. Descrizione dell’applicazione 11 5. Fase 1: Stima soddisfacimento criteri 12 Descrizione criteri 12 Descrizione procedura sperimentale valutazione criteri 13 Risultati delle 2 Webcam 15 Webcam 1 15 Dati h min 15 Dati h max 16 Conclusioni 18 Webcam 2 19 Dati h min 19 Dati h max 20 Conclusioni 22 Scelta della Camera ideale 22 Risultati Camera Reflex 24 Dati h min 24 Dati h max 25 Conclusioni 27 6. Fase 2: Test di valutazione del sistema 28 Descrizione dei Test 28 Risultati dei Test 29 Robot singolo 29 Robot Doppio 30 Valutazione del progetto 32 7. Conclusione 34 Bibliografia 35 2
  • 4. 1. Introduzione La presente tesi tratta la metodologia di progettazione di un sistema per il monitoraggio automatico delle posizioni e dell’orientamento di uno sciame di robot attraverso un algoritmo di computer vision. Tale sistema è stato realizzato nel laboratorio di Evolutionary Robotics e Artificial Life (ERAL) dell’Università di Trieste. L’utilizzo di robot mobili è spesso necessario quando ci si occupa dello sviluppo e dell’implementazione di algoritmi di Evolutionary Robotics e di Artificial Intelligence; attraverso questi viene infatti richiesto al robot di svolgere dei task. Uno dei problemi principali per la raccolta di informazioni dei robot durante lo svolgimento di questi task, è la conoscenza della posizione dei robot stessi nell’ambiente in cui si muovono. La tecnologia più comune utilizzata per il tracciamento della posizione è il GPS (fig 1.1): questo sistema sfrutta metodi di trilaterazione avanzati grazie ai quali dei ricevitori posti a terra possono calcolare la loro posizione misurando il travel time di segnali RF mandati dai satelliti. In questo modo, conoscendo la distanza esatta dal ricevitore di terra a tre satelliti, è possibile calcolare la latitudine e la longitudine [​1​]. L’utilizzo del GPS ha diversi svantaggi tra i quali l’impossibilità di un efficace utilizzo in ambienti chiusi a causa del rimbalzo del segnale tra le pareti degli edifici. Oltre a ciò è da considerare anche un rilevante consumo di energia del ricevitore causato dall’impiego di risorse e di connessione con i satelliti. Riferendosi alle tecnologie più consone al tracciamento in ambienti indoor si potrebbe considerare come soluzione alternativa l’utilizzo di un sistema di posizionamento basato su raggi infrarossi (IR): anche questa tecnologia presenta però alcuni svantaggi, come ad esempio il fatto che gli IR possono essere soggetti all’interferenza causata dalla luce solare o dagli esseri viventi. Inoltre i sistemi che utilizzano gli IR sono costosi dal punto di vista dei componenti per la connessione tra sensori e i sistemi di rilevazione. Gli infrarossi possono essere utilizzati insieme alla tecnologia a ultrasuoni per realizzare un sistema di posizionamento, rappresentato in figura 1.2 [2]: questo sistema si basa sul calcolo della distanza dagli oggetti da rilevare e dei trasmettitori fissi, sfruttando il tempo di arrivo dei segnali ultrasuoni. In questo sistema, il segnale IR è usato per sincronizzare i ricevitori a ultrasuoni posti sugli oggetti e l’unità di trasmissione [3]. 3
  • 5. Un'ulteriore tecnologia utile per il tracciamento in ambienti interni è data dall’utilizzo della computer vision, la quale permette di elaborare frame catturati durante una live-view, un video o una sequenza di foto, rilevando gli oggetti di interesse con molta accuratezza. Questa soluzione ha il vantaggio di essere più economica rispetto alle precedenti, tuttavia presenta delle limitazioni per quanto riguarda la dimensione dell’ambiente analizzato, che risulta limitato al campo di visione della camera; inoltre è obbligatorio mantenere la line of sight con l’oggetto da rilevare, cosa che invece non è necessaria utilizzando un sistema basato su IR. La tecnologia scelta per lo sviluppo del sistema di monitoraggio, nell’ambito del presente progetto di ricerca, è la computer vision in quanto il campo di azione del movimento dei robot da tracciare è limitato ad una porzione di una stanza, facilmente gestibile con una comune camera reflex. Il sistema è stato sviluppato durante un periodo di tirocinio, strutturato in due fasi: una prima di avvicinamento alla computer vision e all’implementazione in C++ dell’algoritmo di visione; una seconda di ricerca e sperimentazione, che costituisce il contenuto di questa tesi. Attraverso alcuni test svolti in laboratorio, sono stati innanzitutto investigati i criteri necessari per un corretto funzionamento del sistema e la stima del soddisfacimento dei criteri stessi da parte di due camere già disponibili. In seguito è stata stilata una lista di specifiche della camera ideale in grado di soddisfare i criteri di cui sopra: tali criteri sono stati poi verificati attraverso dei test in laboratorio. Successivamente è stata costruita la parte strutturale del sistema di monitoraggio, comprendente un’arena e un supporto per la camera. Infine è stato testato il sistema completo attraverso dei test utilizzando i robot Thymio II. Fig. 1.1 ​Sistema GPS Fig. 1.2​ Sistema Ultrasuoni e Infrarossi 4
  • 6. 2. Descrizione setup sperimentale Libreria OpenCV Fig. 2.1 ​Logo OpenCV OpenCV (Open Source Computer Vision Library) è una libreria open source con licenza BSD, multipiattaforma, che consente di sviluppare applicazioni di visione artificiale in tempo reale. Raccoglie le funzionalità degli algoritmi di computer vision più utilizzati, concentrandosi principalmente sull’elaborazione delle immagini, l’acquisizione e l’analisi dei video, incluse applicazioni come rilevamento dei volti e rilevamento degli oggetti. OpenCV è scritta nel linguaggio C++ e la sua interfaccia principale è in C++, tuttavia presenta collegamenti in Python, Java e MATLAB. Utilizza CMake per la gestione dei processi ed è compatibile nei seguenti sistemi operativi desktop: Windows, Linux, MacOS, OpenBSD, FreeBSD, NetBSD [​4​]. Il monitoraggio della posizione dei robot è realizzato attraverso dei marker predefiniti, prodotti ed elaborati dal modulo ArUco disponibile in OpenCV. Il vantaggio principale di questi identificatori è che un singolo marker fornisce abbastanza corrispondenze (i suoi quattro angoli) per ricavare la sua posizione nell’immagine catturata dalla camera. Inoltre, la codifica binaria interna di cui sono dotati, li rende piuttosto robusti, permettendo di applicare tecniche di rilevamento e correzione degli errori. Un marker ArUco è un marker quadrato composto da un bordo nero e una matrice binaria interna che determina il suo identificatore (ID): il bordo nero facilita il rilevamento del marker presente in un frame mentre la codifica binaria ne consente l’identificazione univoca. 5
  • 7. La dimensione di un marker determina la dimensione della matrice interna. Ad esempio, per l’oggetto di studio sono stati utilizzati marker di dimensione 4x4, composti da 16 bit ciascuno. Alcuni esempi di marker ArUco: Fig. 2.2 ​Esempi di marker ArUco Siccome un marker può trovarsi ruotato nell’ambiente, grazie alla codifica binaria il processo di rilevamento è in grado di determinare la sua rotazione, in modo che ogni angolo assunto dal marker sia identificato esplicitamente. Per la realizzazione di un’applicazione vengono utilizzati dizionari di marker, ovvero insiemi di marker che presentano la stessa dimensione e sono identificati univocamente nel dizionario. La dimensione del dizionario è identificata dal numero di marker che compongono il dizionario. Il modulo ArUco include alcuni dizionari predefiniti che coprono una vasta gamma di diverse dimensioni del dizionario e dimensioni dei marker. Un ulteriore parametro da considerare è la distanza tra i marker nel dizionario, che determina le capacità di rilevamento e correzione degli errori. In generale, dimensioni dei dizionari inferiori e dimensioni dei marker maggiori, aumentano la distanza tra i marker e viceversa. Tuttavia, il rilevamento di marker con dimensioni più elevate è più complesso, a causa della maggiore quantità di bit che devono essere estratti dall’immagine [​5​]. 6
  • 8. Robot Thymio II Per il test dell’applicazione sono stati utilizzati robot Thymio II [​6​]. Il robot Thymio II include nove sensori di prossimità a infrarossi (IR) in grado di rilevare ostacoli; cinque sono posizionati nella parte anteriore, due nella parte posteriore mentre altri due nella parte inferiore. I sensori restituiscono un valore compreso tra 0 e circa 4500, dove un valore più alto corrisponde a un ostacolo più vicino [​7​]. Il robot può muoversi attraverso due ruote differenziali, permettendo di impostare due diverse velocità nell’intervallo tra -500 e 500 per ogni ruota. La velocità operativa è stata definita al 30%, cioè tra -150 e 150, per evitare un eccessivo consumo della batteria e per adattarsi alla velocità di elaborazione dell’immagine della camera. Il robot Thymio II è pre-programmato con sei comportamenti di base che possono essere selezionati utilizzando dei pulsanti posti sopra al robot stesso. Sono state utilizzate le due seguenti modalità: ❏ Esploratore (emissione luce gialla): evita gli ostacoli e si ferma se il pavimento è nero. Utilizzato per il movimento casuale di ogni robot all’interno dell’arena. ❏ Investigatore (emissione luce azzurra): segue una linea nera posta a terra. Utilizzato durante le fasi di Test del sistema di monitoraggio. Ai fini dell’applicazione, sopra ad ogni robot è stato aggiunta una piattaforma in cartone al quale è stato applicato un marker ArUco che lo identifica univocamente dagli altri robot; la piattaforma ha inoltre lo scopo di schermare la luce colorata emessa dal robot in modo tale da avere una rilevazione più precisa. Camera Reflex Il sistema di monitoraggio delle posizioni dei robot prevede innanzitutto l’acquisizione di frame dello spazio di lavoro. Questo processo è realizzato grazie a una camera Reflex Canon EOS 4000D. La scelta di questa camera è stata fatta sulla base della caratterizzazione di 2 camere webcam e la stima del soddisfacimento dei criteri necessari per una corretta acquisizione delle immagini in laboratorio (paragrafo 5). 7
  • 9. Ambiente L’ambiente per il monitoraggio dei robot comprende un'arena di dimensioni 2m x 2m costruita utilizzando quattro battiscopa in plastica. Essi sono stati rivestiti con nastro adesivo bianco in modo da permettere ai robot di migliorare il rilevamento delle pareti dell’arena grazie ai sensori infrarossi [​7​]. Sempre con lo scopo di permettere una corretta circolazione dei robot, è stata posizionata la workstation tra la finestra e l’arena, in modo da non far interferire la luce solare con l’infrarosso dei robot. A 2,15 metri di altezza sopra all’arena è stato montato un supporto a muro al quale è stata collegata la camera reflex grazie a un morsetto mobile. Sull’angolo in basso a sinistra dell’arena, rispetto alla camera, è stato posto il marker con ID 0, il quale serve come punto di riferimento per il calcolo della posizione di tutti gli altri marker presenti nell’arena. In questo modo, il sistema di monitoraggio sarà indipendente dalla posizione assoluta e dalla dimensione dell’arena. 8
  • 10. 3. Calibrazione della camera Le camere economiche in commercio presentano molte distorsioni nelle immagini che catturano. L’acquisizione delle immagini dei robot nell’arena dovrà quindi essere preceduta dalla calibrazione della lente utilizzata [​8​]. Di seguito verranno descritte le informazioni principali che devono essere note al termine della calibrazione, utilizzando il modello della camera pinhole [​9​][​10​][11]. In questo modello, una vista è formata proiettando punti 3D nel piano dell’immagine utilizzando una trasformazione prospettica. dove: ● (X, Y, Z)​ sono le coordinate del punto 3D nel mondo reale ● (u, v)​ sono le coordinate del punto proiettato in pixel ● (c​x​, c​y ​)​ è il punto principale che di solito si trova al centro dell’immagine ● (f​x​, f​y ​)​ sono le distanze focali espresse in pixel Fig. 3.1​ Modello pinhole 9
  • 11. Le informazioni intrinseche della camera sono rappresentate attraverso una matrice, detta Matrice della Camera​: Questa matrice non dipende dalla scena visualizzata e quindi, una volta stimata, può essere riutilizzata a condizione che la lunghezza focale sia fissa. La matrice di rotazione e traslazione ​[​R|t​] ​è chiamata matrice dei parametri estrinseci. Questa matrice è utilizzata per descrivere il movimento della camera attorno a una scena statica o, viceversa, il movimento rigido di un oggetto attorno a una camera fissa. Infatti ​[​R|t​] traduce le coordinate di un punto ​(X, Y, Z) ​in un sistema di coordinate fissato rispetto alla camera. Tale trasformazione si può scrivere come segue: Due distorsioni principali, presenti nelle camere reali, sono la distorsione radiale e la distorsione tangenziale. A causa della distorsione radiale, le linee dritte appariranno curve. Questa distorsione è rappresentata come segue:       La distorsione tangenziale si verifica perché l’immagine assunta dalla lente non è allineata parallelamente al piano di immagine e alcune aree sembreranno più vicine di quanto non siano. Questa distorsione è rappresentata come segue: Possiamo quindi dire che, durante il processo di calibrazione della camera, oltre alla sua matrice è necessario conoscere cinque parametri, detti ​Coefficienti di distorsione​, definiti nel vettore: 10
  • 12. 4. Descrizione dell’applicazione L’applicazione per il monitoraggio dei robot è stata sviluppata in C++ con l’utilizzo della libreria OpenCV in ambiente Linux. All’avvio da shell, compare su schermo un menu dal quale si può accedere a due diverse modalità di utilizzo: 1. La prima modalità riguarda la calibrazione della lente della camera attualmente utilizzata. Verrà lanciato uno script dal programma stesso, che metterà in comunicazione Ubuntu e la camera. La frequenza di cattura dei frame nella modalità di calibrazione è di 5 fps con una risoluzione di 1053 x 704 (modificabile nello script). Successivamente si aprirà una finestra dalla quale verranno visualizzati i frame catturati. Premendo ‘g’ si avvierà la calibrazione che consiste nella cattura automatica di 20 frame che ritraggono una scacchiera di 11 x 8 quadrati (presente in laboratorio). Al termine della cattura verranno salvati i coefficienti di distorsione e di matrice della camera in un file log con nome “Calibration values”, mentre sul terminale verrà indicato l’errore medio dei valori rilevati. Per eseguire una buona calibrazione è necessario inquadrare la scacchiera in più angolazioni diverse possibili, senza trascurare i bordi del frame. Al termine della calibrazione basterà premere ‘ESC’ per far terminare il programma e lo script. 2. La seconda modalità riguarda il rilevamento dei marker presenti nei frame catturati. Per prima cosa verranno caricati i Coefficienti di Distorsioni e di Matrice della Camera presenti nel file log di nome “Calibration values”, trovati con la modalità 1. Verrà poi lanciato uno script dal programma stesso che metterà in comunicazione Ubuntu e la camera. La frequenza di cattura dei frame nella modalità di rilevamento è di 10 fps con una risoluzione di 1053 x 704 (modificabile nello script). Successivamente si aprirà una finestra dalla quale verranno visualizzati i frame catturati: ad ogni frame verrà applicato un algoritmo di rilevamento dei marker che farà disegnare, per ogni marker, il contorno, gli assi coordinati e l’identificatore del marker. Oltre a ciò, sul lato alto della finestra saranno elencate le informazioni relative a ogni marker rilevato, tra cui l’identificatore e la distanza in metri dall’origine dell’arena (opzionale). Queste stesse informazioni saranno inoltre salvate in un file log con nome relativo alla data e all’ora di inizio dell’intero rilevamento. Per terminare il programma e lo script sarà sufficiente premere ‘ESC’ dalla tastiera. 11
  • 13. 5. Fase 1: Stima soddisfacimento criteri Descrizione criteri Si vuole stimare la qualità della camera da utilizzare per il riconoscimento dei marker. Per fare ciò occorre definire dei criteri che permettano di valutare la distanza minima e massima tra la camera e il marker, per cui questo venga acquisito ed elaborato. I criteri sono: 1. La camera deve poter inquadrare l’intera area dove si muovono i robot. 2. La camera deve consentire di riconoscere i marker. Definisco due distanze utili all’analisi: ● h​min​: rappresenta la distanza minima per cui la camera inquadra completamente una certa lunghezza. ● h​max​: rappresenta la distanza massima per cui l’algoritmo riesce a riconoscere il marker nel frame acquisito. Il fatto di riuscire a inquadrare l’intera area dipende dall’angolo di visione della camera e dalla distanza tra la camera e il centro dell’area stessa. Non conoscendo l’angolo di visione, l’unico fattore da considerare è la distanza che sarà la minima per cui l’area venga interamente inquadrata (h​min​). Siccome la risoluzione della camera non ha proporzione 1, oltre all’h​min per la lunghezza orizzontale è necessario trovare l’h​min per la stessa lunghezza in verticale. Il riconoscimento del marker dipende da molti fattori tra cui: la dimensione del marker, l’algoritmo di computer vision, la nitidezza e la grandezza dell’immagine del marker acquisito. Assumendo che l’algoritmo di computer vision non venga cambiato e che la dimensione del maker sia la migliore possibile (cioè che sia sufficientemente grande ma non maggiore della dimensione del robot), l’unico fattore su cui si può agire è la qualità dell’immagine del marker acquisito. È ragionevole pensare che la nitidezza del marker dipenda dalla distanza tra questo e la camera, in due punti center e edge. La massima distanza nei due punti per cui il marker venga riconosciuto è l’h​max​ definita precedentemente. 12
  • 14. I due criteri suddetti possono essere riscritti come segue: il marker viene riconosciuto se l’h​max_center e l’h​max_edge sono entrambi maggiori della distanza per cui la camera inquadra l’intera area. Definendo quindi h​max come il minimo tra h​max_center e h​max_edge​, e h​min ​come il massimo tra h​min_orizzontale e h​min_verticale​, posso concludere che una camera è adatta allo scopo se h​max > h​min mentre non lo è se h​max​ < h​min​. Descrizione procedura sperimentale valutazione criteri Per misurare h​min_orizzontale è stata posizionata la camera in modo che l’inquadratura orizzontale fosse di 1 metro ed è stata misurata la distanza tra la camera e il centro di questa lunghezza. Queste operazioni sono state ripetute inquadrando prima 2 metri e infine 3 metri. Fig. 5.1​: Misurazione h​min_orizzontale Per misurare h​min_verticale è stata fatta una proporzione tra la h​min_orizzontale di una lunghezza inquadrata e l’aspect ratio della camera utilizzata. Per misurare h​max_center è stato posizionato il marker allineato con la camera ed è stato spostato di 30 cm alla volta verificando, attraverso il software, quando non veniva più rilevato. La distanza massima per testare il rilevamento è stata fissata di 6 metri. Fig. 5.2 ​Misurazione h​max_center 13
  • 15. Per misurare h​max_edge è stato posizionato il marker a 30cm dalla camera ed è stato alzato in modo che venisse inquadrato nell’angolo sinistro del frame. Successivamente è stato allontanato il marker di altri 30cm e alzato ancora in modo che venisse inquadrato nuovamente all’angolo del frame. Queste operazioni sono state ripetute spostando il marker di 30cm alla volta verificando quando non veniva più rilevato, fino a una distanza massima di 6 metri. Nella raccolta dei dati di h​max​ sono stati individuati tre diversi tipi di rilevazione: 1. SI, se il marker veniva rilevato in modo stabile e chiaro 2. NO, se il marker non veniva rilevato 3. FLICKER, se il marker veniva rilevato ma non in modo stabile. Fig. 5.3 ​Misurazione h​max_edge 14
  • 16. Risultati delle 2 Webcam Webcam 1 Dimensione marker: 7,5 x 7,5 cm Risoluzione Webcam: 1600 x 1200 pixel (2MP) Dimensione area: 2,00 x 2,00 m​2 Dati h min L​orizzontale​ (m) h​min_orizzontale​ (m) 1,00 0,84 2,00 1,67 3,00 2,49 Tab. 5.1 ​Raccolta dati h​min_orizzontale Graf. 5.1 ​Rappresentazione dati h​min_orizzontale 15
  • 17. Da i risultati raccolti è stato considerato: h​min_orizzontale ​= 1,67 m. Le proporzioni della camera sono 1600x1200 pixel, pertanto la h​min_verticale è pari a 4/3 della h​min_orizzontale​. L​verticale ​(m) h​min_verticale​ (m) 1 1,12 2 2,23 3 3,32 Tab. 5.2 ​Raccolta dati h​min_verticale Da i risultati raccolti è stato considerato: h​min_verticale ​= 2,23 m. Dati h max Nei grafici sono stati considerati: S=2, F=1, N=0. Center h​max_center​ (m) Rilevamento (S/F/N) h​max_center​ (m) Rilevamento (S/F/N) 0,30 S 3,30 F 0,60 S 3,60 F 0,90 S 3,90 F 1,20 S 4,20 F 1,50 S 4,50 N 1,80 S 4,80 N 2,10 S 5,10 N 2,40 S 5,40 N 2,70 S 5,70 N 3,00 S 6,00 N Tab. 5.3 ​Raccolta dati h​max_center 16
  • 18. Graf. 5.2 ​Rappresentazione dati h​max_center Da i risultati raccolti è stato considerato: h​max_center​= 3,00 m. Edge h​max_edge​ (m) Rilevamento (S/F/N) h​max_edge​ (m) Rilevamento (S/F/N) 0,30 S 3,30 N 0,60 S 3,60 N 0,90 S 3,90 N 1,20 S 4,20 N 1,50 S 4,50 N 1,80 S 4,80 N 2,10 F 5,10 N 2,40 F 5,40 N 2,70 F 5,70 N 3,00 N 6,00 N Tab. 5.4 ​Raccolta dati h​max_edge 17
  • 19. Graf. 5.3 ​Rappresentazione dati h​max_edge Da i risultati raccolti è stato considerato: h​max_edge​= 1,80 m. Conclusioni Siccome si ha che h​max_edge < h​min_verticale posso concludere che la camera utilizzata non è adatta per lo scopo. La differenza tra le due distanze è di 43 cm. 18
  • 20. Webcam 2 Dimensione marker: 7,5 x 7,5 cm Risoluzione Webcam: 1280 x 720 pixel Dimensione area: 2,00 x 2,00 m​2 Dati h min L​orizzontale​ (m) h​min_orizzontale​ (m) 1,00 1,06 2,00 2,23 3,00 3,39 Tab. 5.5 ​Raccolta dati h​min_orizzontale Graf. 5.4 ​Rappresentazione dati h​min_orizzontale Da i risultati raccolti è stato considerato: h​min_orizzontale ​= 2,23 m. 19
  • 21. Le proporzioni della camera sono 1280x720 pixel, pertanto la h​min_verticale è pari a 16/9 della h​min_orizzontale​. L​verticale​ (m) h​min_verticale​ (m) 1,00 1,88 2,00 3,96 3,00 6,03 Tab. 5.6 ​Raccolta dati h​min_verticale Da i risultati raccolti è stato considerato: h​min_verticale ​= 3,96 m. Dati h max Nel grafico sono stati considerati: S=2, F=1, N=0. Center h​max_center​ (m) Rilevamento (S/F/N) h​max_center​ (m) Rilevamento (S/F/N) 0,30 S 3,30 F 0,60 S 3,60 F 0,90 S 3,90 F 1,20 S 4,20 N 1,50 S 4,50 N 1,80 S 4,80 N 2,10 S 5,10 N 2,40 S 5,40 N 2,70 S 5,70 N 3,00 S 6,00 N Tab. 5.7 ​Raccolta dati h​max_center 20
  • 22. Graf. 5.5 ​Rappresentazione dati h​max_center Da i risultati raccolti è stato considerato: h​max_center​= 3,00 m. Edge h​max_edge​ (m) Rilevamento (S/F/N) h​max_edge​ (m) Rilevamento (S/F/N) 0,30 S 3,30 F 0,60 S 3,60 N 0,90 S 3,90 N 1,20 S 4,20 N 1,50 S 4,50 N 1,80 S 4,80 N 2,10 S 5,10 N 2,40 F 5,40 N 2,70 F 5,70 N 3,00 F 6,00 N Tab. 5.8 ​Raccolta dati h​max_edge 21
  • 23. Graf. 5.6 ​Rappresentazione dati h​max_edge Da i risultati raccolti è stato considerato: h​max_edge​= 2,10 m. Conclusioni Siccome si ha che h​max_edge < h​min_verticale posso concludere che la camera utilizzata non è adatta per lo scopo. La differenza tra le due distanze è di 186 cm. Scelta della Camera ideale Per lo sviluppo del sistema di monitoraggio è stata utilizzata una camera Reflex in quanto presenta caratteristiche precise date dal costruttore ed è possibile utilizzare obiettivi diversi per varie applicazioni. Le caratteristiche di interesse per la scelta della camera sono: ● Risoluzione​: indica la quantità di pixel, disposti in orizzontale e in verticale, che viene elaborata dal sensore digitale della camera. Una maggiore risoluzione permette di facilitare la rilevazione dei marker posti sopra ai robot. Tuttavia risoluzioni più alte implicano uno sforzo computazionale maggiore da parte dell’algoritmo nella fase di rilevamento. 22
  • 24. ● Distanza focale​: permette di avere informazioni riguardo all’angolo di visione di una particolare lente e alla dimensione dell’immagine catturata dalla lente stessa. L’utilizzo di una camera con obiettivo grandangolare (cioè con distanza focale minore di 35 mm) permette di inquadrare scene ampie, con maggiore profondità di campo garantendo una nitidezza di sfondo. Tuttavia a causa di una forzatura nella prospettiva, l’utilizzo di questo tipo di obiettivi implica dei fenomeni di distorsione ottica dell’immagine, che devono essere trattati utilizzando algoritmi di calibrazione della lente. ● Sensore​: parte della camera digitale dalla quale vengono catturate le immagini. Un tipo di sensore è caratterizzato da un dimensione in mm e presenta un fattore di moltiplicazione (crop factor) che deve essere utilizzato per trovare la distanza focale effettiva dell’obiettivo che si sta utilizzando. Un sensore APS-C di Canon presenta un crop factor di 1,6 rispetto al valore di riferimento del sensore Full Frame: la distanza focale dell’obiettivo utilizzato dovrà quindi essere moltiplicata per 1,6. Questo comporta una maggiore distanza focale con la conseguente diminuzione dell’angolo di visione. ● ISO​: indica la sensibilità del sensore alla luce. Più alto è il valore dell’ISO, più elevate è la sensibilità alla luce. ​È necessario che la camera abbia un ISO variabile per potersi adattare alle diverse condizioni di luce in laboratorio. Per poter elaborare le immagini catturate attraverso OpenCV in ambiente Linux è necessario che la camera sia supportata dal software gPhoto2, il quale permettete di far dialogare la camera con il sistema operativo Ubuntu 16.04. La camera scelta per l’applicazione è una Canon EOS 4000D che presenta le seguenti caratteristiche: Risoluzione (MP) 18 Distanza focale (mm) 18-55 Sensore APS-C ISO 100-6400 23
  • 25. Risultati Camera Reflex Dimensione marker: 7,5 x 7,5 cm Risoluzione camera: 1056 x 704 pixel Dimensione area: 2,00 x 2,00 m​2 Distanza focale: 18 mm Messa a fuoco: Automatica ISO: Automatica Dati h min L​orizzontale​ (m) h​min_orizzontale​ (m) 1,00 0,83 2,00 1,64 3,00 2,42 Tab. 5.9 ​Raccolta dati h​min_orizzontale Graf. 5.7 ​Rappresentazione dati h​min_orizzontale 24
  • 26. Da i risultati raccolti è stato considerato: h​min_orizzontale ​= 1,64 m. Le proporzioni della camera sono 1056 x 704 pixel, pertanto la h​min_verticale è pari a 3/2 della h​min_orizzontale​. L​verticale ​(m) h​min_verticale​ (m) 1 1,25 2 2,46 3 3,63 Tab. 5.10 ​Raccolta dati h​min_verticale Da i risultati raccolti è stato considerato: h​min_verticale ​= 2,46 m. Dati h max Center h​max_center​ (m) Rilevamento (S/F/N) h​max_center​ (m) Rilevamento (S/F/N) 0,30 S 3,30 S 0,60 S 3,60 S 0,90 S 3,90 F 1,20 S 4,20 F 1,50 S 4,50 N 1,80 S 4,80 N 2,10 S 5,10 N 2,40 S 5,40 N 2,70 S 5,70 N 3,00 S 6,00 N Tab. 5.11 ​Raccolta dati h​max_center 25
  • 27. Graf. 5.8 ​Rappresentazione dati h​max_center Da i risultati raccolti è stato considerato: h​max_center​= 3,60 m. Edge h​max_edge​ (m) Rilevamento (S/F/N) h​max_edge​ (m) Rilevamento (S/F/N) 0,30 S 3,30 F 0,60 S 3,60 F 0,90 S 3,90 F 1,20 S 4,20 F 1,50 S 4,50 N 1,80 S 4,80 N 2,10 S 5,10 N 2,40 S 5,40 N 2,70 S 5,70 N 3,00 S 6,00 N Tab. 5.12 ​Raccolta dati h​max_edge 26
  • 28. Graf. 5.9 ​Rappresentazione dati h​max_edge Da i risultati raccolti è stato considerato: h​max_edge​= 3,00 m. Conclusioni Siccome si ha che h​min_verticale < h​max_edge posso concludere che la camera reflex utilizzata è adatta per lo scopo. Il margine tra le due distanze è di 54 cm. 27
  • 29. 6. Fase 2: Test di valutazione del sistema Descrizione dei Test Il sistema di monitoraggio è stato testato in laboratorio attraverso la costruzione di un tracciato predefinito che i robot Thymio II erano tenuti a percorrere. Come Test è stato posato a terra un tracciato di nastro nero di forma quadrata 1x1 metro e largo 4 cm. La larghezza è stata scelta in modo tale che fosse facilmente riconoscibile dai sensori infrarossi posti sotto ai robot. Sopra al tracciato è stato posizionato inizialmente un singolo Thymio II in comportamento “Investigatore”, con il compito di seguire il nastro a terra. Sopra al robot è stato posizionato un marker ArUco di risoluzione 200x200 pixel. Durante il percorso è stata rilevata la posizione del robot ogni mezzo secondo (2 fps) e salvata in un apposito file log. I dati ottenuti sono stati utilizzati per costruire un grafico, da cui è stato possibile confrontare il percorso ideale (tracciato a terra) e il percorso dato dall’insieme delle coordinate rilevate. Fig. 6.1.​ Configurazione Test con robot singolo 28
  • 30. I ​dati rilevati sono stati suddivisi in quattro serie, una per ogni lato del quadrato. Per ogni serie è stato calcolato lo scarto quadratico medio utilizzando la formula: dove: ● N​ è il numero di punti nella singola serie ● μ​ è la media relativa al singolo tratto ● x​i​ sono i valori della serie corrispondenti al lato analizzato Questo stesso Test è stato ripetuto successivamente utilizzando 2 robot contemporaneamente all’interno del tracciato. Risultati dei Test Robot singolo Nel grafico seguente è riportata la posizione del robot rilevata (rosso) rispetto alla posizione ideale (blu), rappresentata dal tracciato nero posto a terra nell’arena. È stato utilizzato il marker con ID 5. Graf. 6.1. ​Posizione robot singolo 29
  • 31. Gli errori calcolati per ogni lato di rilevazione sono: Lato 1: 2,08 cm Lato 2: 2,06 cm Lato 3: 2,74 cm Lato 4: 2,95 cm Da cui si ottiene l’errore totale di: 2,49 cm. Robot Doppio Nel grafici seguenti sono stati riportati le posizioni dei robot rilevati (verde, giallo) rispetto alla posizione ideale (blu), rappresentata dal tracciato nero posto a terra nell’arena. Per il primo robot è stato utilizzato il marker con ID 5, per il secondo il marker con ID 1. Graf. 6.2. ​Posizione robot 1 Gli errori calcolati per ogni lato di rilevazione sono: Lato 1: 4,03 cm Lato 2: 2,16 cm Lato 3: 5,50 cm Lato 4: 2,33 cm Da cui si ottiene l’errore totale di: 3,76 cm. 30
  • 32. Graf. 6.3. ​Posizione robot 2 Gli errori calcolati per ogni lato di rilevazione sono: Lato 1: 3,81 cm Lato 2: 3,87 cm Lato 3: 3,99 cm Lato 4: 1,98 cm Da cui si ottiene l’errore totale di: 3,51 cm. Graf. 6.4. ​Rappresentazione errori sulla posizione dei robot durante i Test 31
  • 33. Valutazione del progetto Analizzando gli errori ottenuti si può capire come la qualità del monitoraggio dei robot dipenda dalla quantità di robot utilizzati nell’arena: questo può essere in parte dovuto alla maggiore quantità di risorse utilizzate dall’algoritmo di computer vision. Supponendo che la velocità del robot sia costante durante il percorso (esclusi gli angoli del tracciato), un’aspettativa ideale sarebbe quella di avere una distribuzione a intervalli regolari dei punti rilevati. Tuttavia questo non è presente in nessuno dei due Test eseguiti. Questo fatto può avere varie spiegazioni: la prima è che ci siano dei frame nei quali il marker posto sopra al robot non venga rilevato. La seconda invece è che, siccome la stima della posizione dei marker è calcolata relativamente alla posizione del marker con ID 0, è possibile che quest’ultimo marker non venga rilevato in alcuni frame, compromettendo il riconoscimento di tutti gli altri. Inoltre si può pensare che il tempo di elaborazione non sia costante per tutti i frame e pertanto l’analisi non venga condotta nei tempi necessari per poter fornire la posizione di tutti i marker. Osservando la quantità di punti rilevati durante il Test con due robot, si può notare come il marker con ID 5 abbia avuto più rilevazioni rispetto al marker con ID 1. ​È possibile quindi che ci siano alcuni marker più facili da riconoscere rispetto ad altri, anche se ciò non è precisato nella documentazione di ArUco. Come già detto precedentemente, il sistema di monitoraggio progettato non garantisce il riconoscimento di tutti i marker presenti nell’arena, in ogni frame analizzato. I motivi di questo fatto possono essere molteplici: ❏ Calibrazione della camera non sufficientemente precisa ❏ Risoluzione non adeguata per la cattura dei frame ❏ Condizioni di luminosità scarse o eccessive ❏ Vincoli dettati dal posizionamento laterale della camera La calibrazione può essere ripetuta finché l’errore medio di proiezione non è compreso nell’intervallo [0,1] tenendo sempre in considerazione le accortezze necessarie descritte nel paragrafo della calibrazione. È possibile modificare la risoluzione dei frame catturati indicandola nello script presente nel programma; tuttavia, se aumentata in modo eccessivo, sarà necessario diminuire la frequenza di cattura dei frame, per non incorrere nel crash del programma stesso. La modifica della risoluzione della camera deve essere seguita da una nuova calibrazione. 32
  • 34. Le diverse condizioni di luminosità presenti in laboratorio sono in parte corrette dalla presenza della workstation che copre l’arena. Inoltre modificando l’ISO della camera è possibile catturare più o meno luce nell’obiettivo a seconda delle condizioni di luminosità. Il posizionamento della camera fissata al muro, rappresenta una soluzione adeguata in quanto soddisfa i criteri descritti per un corretto rilevamento. Tuttavia, utilizzando questo setup, è presente una differenza elevata tra i due lati orizzontali dell’arena, il che compromette in parte il riconoscimento dei marker in queste zone. Inoltre se il robot che si vuole tracciare si trova nel lato distante dell’arena, il marker posto sopra risulta inclinato di un angolo non efficiente per il riconoscimento. Per risolvere queste problematiche, è possibile costruire un supporto a muro estensibile, che permetta alla camera di trovarsi al centro dell’arena: in questo modo sarà catturata una scena più simmetrica e con angoli meno stretti, migliorando la qualità del rilevamento. Inoltre sarà possibile abbassare l’altezza della camera dato che l’inquadratura deve coprire meno spazio. 33
  • 35. 7. Conclusione In questa tesi è stata presentata la metodologia di progettazione di un sistema di monitoraggio delle posizioni di robot, utilizzando la computer vision. Sono stati presentati i principali elementi del setup del sistema e le motivazioni sulle scelte di tali elementi. In particolare sono stati analizzati i criteri necessari per il corretto funzionamento del sistema. Infine sono stati descritti alcuni Test svolti per valutare la qualità del sistema finito. I risultati ottenuti confermano la bontà della computer vision come tecnologia adatta al monitoraggio delle posizioni di robot, con un errore totale che può facilmente essere limitato nell’ordine del 1-2% rispetto all’area di osservazione. Nel futuro si può pensare di continuare a sviluppare il sistema nelle seguenti aree: ● Ottimizzazione dell’algoritmo di rilevamento ● Miglioramento del setup di laboratorio ● Valutazione delle prestazioni relative all’orientamento dei robot Personalmente posso dirmi soddisfatto del lavoro eseguito in laboratorio e ritengo che sia stata un’occasione per migliorare le capacità di problem solving e approfondire le conoscenze realizzando un’applicazione informatica in un ambito di sicuro sviluppo futuro. 34
  • 36. Bibliografia [1] Borenstein, J., et al. “Mobile Robot Positioning: Sensors and Techniques.” ​Journal of Robotic Systems​, vol. 14, no. 4, 1997, p. 11. [2] C.J. Wu, C.C. Tsai,“Localization of an Autonomous Mobile Robot Based on Ultrasonic Sensory Information” Journal of Intelligent and Robotic Systems, 2001.30: 267–277. [3] Yucel, H., Edizkan, R., Ozkir, T., & Yazici, A. (2012). “Development of indoor positioning system with ultrasonic and infrared signals”, pp. 1-2. [4] “OpenCV.” ​OpenCV​, opencv.org/about/. [5] “Detection of ArUco Markers.” ​OpenCV​, docs.opencv.org/3.4.0/d5/dae/tutorial_aruco_detection.html. [6] “Help Your Students, Any Age, to Master Technology.” ​Thymio​, www.thymio.org/. [7] Heinerman, Jacqueline, et al. “On-Line Evolution of Foraging Behaviour in a Population of Real Robots.” ​Applications of Evolutionary Computation Lecture Notes in Computer Science​, 2016, p. 4. [8] Huggins, Kevin R., et al. “Computer Vision Localization Based on Pseudo-Satellites.” Proceedings of the IEEE 2009 National Aerospace &amp; Electronics Conference (NAECON)​, 2009, p. 1. [9] “Camera Calibration.” ​OpenCV​, docs.opencv.org/3.1.0/dc/dbb/tutorial_py_calibration.html. [10] “Camera Calibration and 3D Reconstruction.” ​OpenCV​, docs.opencv.org/3.4.0/d9/d0c/group__calib3d.html#ga3207604e4b1a1758aa66ac b6ed5aa65d. [11] “Camera Calibration With OpenCV.” ​Camera Calibration With OpenCV - OpenCV 2.4.13.7 Documentation​, docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html# cameracalibrationopencv. 35