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
Documento Tesi
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
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
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
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)
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
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
● (cx, cy ) è il punto principale che di solito si trova al centro dell’immagine
● (fx, fy ) 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:
● hmin: rappresenta la distanza minima per cui la camera inquadra completamente una
certa lunghezza.
● hmax: 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 (hmin). Siccome la risoluzione della camera non ha proporzione 1,
oltre all’hmin per la lunghezza orizzontale è necessario trovare l’hmin 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’hmax definita precedentemente.
12
14. I due criteri suddetti possono essere riscritti come segue: il marker viene riconosciuto se
l’hmax_center e l’hmax_edge sono entrambi maggiori della distanza per cui la camera inquadra
l’intera area.
Definendo quindi hmax come il minimo tra hmax_center e hmax_edge, e hmin come il massimo tra
hmin_orizzontale e hmin_verticale, posso concludere che una camera è adatta allo scopo se hmax > hmin
mentre non lo è se hmax < hmin.
Descrizione procedura sperimentale valutazione criteri
Per misurare hmin_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 hmin_orizzontale
Per misurare hmin_verticale è stata fatta una proporzione tra la hmin_orizzontale di una lunghezza
inquadrata e l’aspect ratio della camera utilizzata.
Per misurare hmax_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 hmax_center
13
15. Per misurare hmax_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 hmax 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 hmax_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 m2
Dati h min
Lorizzontale (m) hmin_orizzontale (m)
1,00 0,84
2,00 1,67
3,00 2,49
Tab. 5.1 Raccolta dati hmin_orizzontale
Graf. 5.1 Rappresentazione dati hmin_orizzontale
15
17. Da i risultati raccolti è stato considerato: hmin_orizzontale = 1,67 m.
Le proporzioni della camera sono 1600x1200 pixel, pertanto la hmin_verticale è pari a 4/3 della
hmin_orizzontale.
Lverticale (m) hmin_verticale (m)
1 1,12
2 2,23
3 3,32
Tab. 5.2 Raccolta dati hmin_verticale
Da i risultati raccolti è stato considerato: hmin_verticale = 2,23 m.
Dati h max
Nei grafici sono stati considerati: S=2, F=1, N=0.
Center
hmax_center (m) Rilevamento (S/F/N) hmax_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 hmax_center
16
18. Graf. 5.2 Rappresentazione dati hmax_center
Da i risultati raccolti è stato considerato: hmax_center= 3,00 m.
Edge
hmax_edge (m) Rilevamento (S/F/N) hmax_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 hmax_edge
17
19. Graf. 5.3 Rappresentazione dati hmax_edge
Da i risultati raccolti è stato considerato: hmax_edge= 1,80 m.
Conclusioni
Siccome si ha che hmax_edge < hmin_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 m2
Dati h min
Lorizzontale (m) hmin_orizzontale (m)
1,00 1,06
2,00 2,23
3,00 3,39
Tab. 5.5 Raccolta dati hmin_orizzontale
Graf. 5.4 Rappresentazione dati hmin_orizzontale
Da i risultati raccolti è stato considerato: hmin_orizzontale = 2,23 m.
19
21. Le proporzioni della camera sono 1280x720 pixel, pertanto la hmin_verticale è pari a 16/9 della
hmin_orizzontale.
Lverticale (m) hmin_verticale (m)
1,00 1,88
2,00 3,96
3,00 6,03
Tab. 5.6 Raccolta dati hmin_verticale
Da i risultati raccolti è stato considerato: hmin_verticale = 3,96 m.
Dati h max
Nel grafico sono stati considerati: S=2, F=1, N=0.
Center
hmax_center (m) Rilevamento (S/F/N) hmax_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 hmax_center
20
22. Graf. 5.5 Rappresentazione dati hmax_center
Da i risultati raccolti è stato considerato: hmax_center= 3,00 m.
Edge
hmax_edge (m) Rilevamento (S/F/N) hmax_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 hmax_edge
21
23. Graf. 5.6 Rappresentazione dati hmax_edge
Da i risultati raccolti è stato considerato: hmax_edge= 2,10 m.
Conclusioni
Siccome si ha che hmax_edge < hmin_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 m2
Distanza focale: 18 mm
Messa a fuoco: Automatica
ISO: Automatica
Dati h min
Lorizzontale (m) hmin_orizzontale (m)
1,00 0,83
2,00 1,64
3,00 2,42
Tab. 5.9 Raccolta dati hmin_orizzontale
Graf. 5.7 Rappresentazione dati hmin_orizzontale
24
26. Da i risultati raccolti è stato considerato: hmin_orizzontale = 1,64 m.
Le proporzioni della camera sono 1056 x 704 pixel, pertanto la hmin_verticale è pari a 3/2 della
hmin_orizzontale.
Lverticale (m) hmin_verticale (m)
1 1,25
2 2,46
3 3,63
Tab. 5.10 Raccolta dati hmin_verticale
Da i risultati raccolti è stato considerato: hmin_verticale = 2,46 m.
Dati h max
Center
hmax_center (m) Rilevamento (S/F/N) hmax_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 hmax_center
25
27. Graf. 5.8 Rappresentazione dati hmax_center
Da i risultati raccolti è stato considerato: hmax_center= 3,60 m.
Edge
hmax_edge (m) Rilevamento (S/F/N) hmax_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 hmax_edge
26
28. Graf. 5.9 Rappresentazione dati hmax_edge
Da i risultati raccolti è stato considerato: hmax_edge= 3,00 m.
Conclusioni
Siccome si ha che hmin_verticale < hmax_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
● xi 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 & 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