• Non ci sono risultati.

Sviluppo software per la generazione di riferimenti di traiettoria per veicoli a guida autonoma tramite image processing

N/A
N/A
Protected

Academic year: 2021

Condividi "Sviluppo software per la generazione di riferimenti di traiettoria per veicoli a guida autonoma tramite image processing"

Copied!
60
0
0

Testo completo

(1)

UNIVERSITÀ DI PISA

Scuola di Ingegneria

Laurea Magistrale in Ingegneria Robotica e dell’Automazione

Tesi di laurea

Candidato:

Stefania Cosseddu

Relatori:

Prof. Lucia Pallottino

Ing. Emanuele Mazzi

Sviluppo software per la generazione di riferimenti di traiettoria

per veicoli a guida autonoma tramite image processing

Sessione di Laurea del 21/06/2018 Anno accademico 2017/2018

(2)
(3)

2

Sommario

INTRODUZIONE ... 4

OBIETTIVI DELLA TESI ... 6

DESCRIZIONE DEGLI STRUMENTI HW E SW A DISPOSIZIONE... 7

DESCRIZIONE DEL SISTEMA ... 11

IDENTIFICAZIONE DELLE STRISCE ... 13

ACQUISIZIONE DELLE IMMAGINI ... 13

ELABORAZIONE DELLE IMMAGINI... 15

FILTRAGGIO DELLE FOTO ... 15

INDIVIDUAZIONE DELLA STRISCIA ... 18

COEFFICIENTE DI CORRELAZIONE ... 19

CALCOLO DEL RIFERIMENTO ... 21

PRESTAZIONI DELL’ALGORITMO ... 23 SVILUPPI FUTURI ... 26 ATLANTE ... 27 DEFINIZIONE DELL’ATLANTE... 27 STRUMENTI A DISPOSIZIONE... 27 SISTEMA DI GEOLOCALIZZAZIONE RTK ... 29 GEOMETRIA PROIETTIVA... 30 SIMULAZIONI ... 39 RISULTATI E CONSIDERAZIONI ... 45 COSTRUZIONE DELL’ATLANTE ... 45

CALCOLO DELLE DIMENSIONI E DELL’ORIENTAZIONE DEI PIANI ... 45

CALCOLO DEL RIFERIMENTO ... 47

SVILUPPI FUTURI ... 48

CONCLUSIONI ... 49

APPENDICE ... 50

STEREOVISIONE... 50

SISTEMA STEREOSCOPICO ... 50

CALIBRAZIONE DEL SISTEMA STEREOSCOPICO... 51

RETTIFICAZIONE DELLE IMMAGINI ... 53

CORRISPONDENZA STEREO ... 54

(4)

3

Abstract.

La tesi è stata svolta nell’ambito di un progetto il cui obiettivo è la realizzazione di un sistema di tracciamento semi-automatico della segnaletica stradale orizzontale. L’obiettivo della tesi è quello di realizzare un software per il calcolo dei riferimenti di traiettoria da fornire al veicolo nel caso di ripasso e di tracciamento ex -novo della segnaletica stradale orizzontale. In entrambi i casi, il software deve essere in grado di elaborare i dati in tempo reale, al fine di non influenzare la scelta della velocità di avanzamento del veicolo. Il numero di strumenti utilizzati è stato ridotto al minimo: in questo modo si ottiene un sistema semplice e con un basso costo di realizzazione. Per il caso di ripasso delle strisce stradali, è stato realizzato un software che, tramite l’elaborazione di un’immagine, calcola la posizione relativa della striscia rispetto al veicolo. Per il caso di tracciamento ex-novo della segnaletica, l’algoritmo implementato si divide in una prima fase di mappatura dell’ambiente e in una seconda fase di generazione dei riferimenti. La mappatura della strada è realizzata offline tramite l’utilizzo di un sistema di visione monoculare. Il software implementato è in grado di operare in tempo reale e, a differenza della maggior parte degli algoritmi che sfruttano dei sistemi di visione, non richiede la conoscenza dei parametri interni della fotocamera. Gli algoritmi sono stati implementati ad hoc per il particolare caso in esame, ma possono essere utilizzati in tutti i casi che rispettano le ipotesi fatte durante l’elaborazione della tesi. Il software è stato implementato in ambiente MATLAB.

(5)

4

INTRODUZIONE

La tesi è stata sviluppata presso l’azienda Pure Power Control s.r.l., nell’ambito di un progetto il cui obiettivo è realizzare un veicolo a guida autonoma (AGV) in grado di tracciare la segnaletica stradale orizzontale, al fine di limitare al minimo l’intervento degli operatori. Gli obiettivi della tesi sono: implementare un software in grado di fornire all’AGV un riferimento di traiettoria per il ripasso delle strisce stradali e, nel caso di tracciamento ex novo della segnaletica, realizzare una mappa dell’ambiente in cui si muoverà il veicolo. L’AGV darà supporto agli operatori nel tracciamento della segnaletica orizzontale su strade extra-urbane.

Al giorno d’oggi il tracciamento della segnaletica stradale orizzontale è realizzato manualmente, con l’ausilio di camion e di traccialinee. Gli operatori segnano sulla strada la traiettoria lungo la quale verrà tracciata la segnaletica e guidano i macchinari. La segnaletica deve essere tracciata secondo le normative che regolamentano lo spessore, la posizione della striscia nella carreggiata e la visibilità della striscia. Affinché la striscia venga tracciata nel rispetto delle norme, l’operatore è costretto ad avanzare a una velocità molto bassa e prestare molta attenzione alla traiettoria seguita dal mezzo. Le operazioni di scelta del riferimento di traiettoria e di tracciamento della segnaletica sono svolte direttamente dagli operatori che, nonostante il rispetto delle norme di sicurezza, lavorano in un ambiente ad alto rischio. Il progetto si inserisce in un contesto e in un’era in cui l’interesse verso l’integrazione e la cooperazione tra macchine e uomini è in costante crescita, sia per motivi di sicurezza che per agevolare lo svolgimento di alcuni lavori. A fronte di queste osservazioni, il progetto è stato pensato per ridurre al minimo la presenza e l’intervento degli operai nel cantiere, al fine di garantire una maggiore sicurezza per gli operai e rendere più agevole l’operazione di tracciamento della segnaletica.

Durante lo sviluppo della tesi, sono state prese in esame le metodologie attualmente disponibili per la mappatura degli ambienti e per l’identificazione delle strisce nelle immagini (lane detection). In letteratura esistono svariati metodi che consentono il raggiungimento degli obiettivi prefissati, grazie al fatto che entrambi trovano applicazioni in diversi settori. La lane detection è un argomento ampiamente trattato in robotica e nel settore automotive, basti pensare all’assistenza alla guida fornita dai

(6)

5

recenti sistemi installati nelle automobili o allo sviluppo di macchine a guida autonoma. Nel campo dell’automotive, la lane detection è usata per identificare i limiti della carreggiata tramite l’individuazione delle strisce stradali di mezzeria e di margine. In questo modo, il sistema dedicato fa sì che il veicolo si muova all’interno della corsia e fornisce assistenza al guidatore per evitare collisioni e invasioni di corsia . La lane detection trova applicazioni anche nell’ambito della robotica: grazie all’integrazione del sistema di lane detection con sistemi di line tracking, è possibile far sì che il veicolo segua un riferimento di traiettoria fornito dalla linea. Uno degli ostacoli affrontanti durante la tesi era dato dalla variabilità delle strisce da identificare: l’AGV infatti non si muoverà in un ambiente controllato poiché non è nota a priori la condizione della striscia da seguire (può presentare dei bordi non perfettamente delineati oppure potrebbe avere delle zone in cui la vernice è abrasa). Inoltre, l’identificazione e il calcolo della posizione relativa del veicolo rispetto alla striscia devono avvenire in tempi brevi, in modo da consentire un utilizzo in tempo reale del software. Per risolvere questi problemi, è stato sviluppato un software in grado di operare in diverse condizioni e ne sono stati analizzati pregi e difetti, prestando particolare attenzione alla velocità di esecuzione, agli strumenti utilizzati per l’acquisizione delle immagini e ai limiti di utilizzo.

Grazie al crescente interesse verso i veicoli a guida autonoma, sono disponibili molteplici tecnologie che consentono di ricavare informazioni sulla struttura di ambienti sconosciuti. Uno dei problemi fondamentali in questo campo è infatti quello di far sì che il veicolo riesca a muoversi in un ambiente non noto a priori. Molte delle tecnologie a disposizione integrano le informazioni provenienti dai sistemi di visione o da sistemi LIDAR (Laser Imaging Detection And Ranging) con le informazioni ricavate da altri sensori, quali sistemi di localizzazione GPS e unità inerziali. Nel campo della visione artificiale, un settore di particolare interesse è la stereoscopia, ampiamente utilizzata per la realizzazione di sistemi di mappatura e localizzazione del veicolo. È particolarmente utile nel caso in cui lungo il tragitto del veicolo siano presenti degli ostacoli: tramite opportuni calcoli è possibile risalire alla distanza del veicolo dall’ostacolo e pianificare un nuovo percorso. Questo consente al veicolo di muoversi anche in ambienti non noti a priori. Nel nostro caso l’obiettivo era ottenere una mappa della strada che l’AGV deve percorrere, in modo da poter tracciare direttamente sulla mappa ottenuta il riferimento di traiettoria da fornire al veicolo. La mappatura

(7)

6

dell’ambiente è realizzata tramite l’elaborazione di immagini scattate da una fotocamera posizionata nella parte anteriore di un camion. L’acquisizione delle immagini e la verniciatura delle strisce avvengono in momenti diversi: prima un camion percorre la strada che l’AGV deve seguire e acquisisce delle immagini del percorso. Successivamente le immagini vengono elaborate per ricavare la mappa sulla quale si tracciano i riferimenti di traiettoria da fornire all’AGV. In una prima fase del progetto non si era quindi interessati alla mappatura e localizzazione contemporanea del veicolo. Come per il caso della lane detection, si era interessati a sviluppare un algoritmo con basso costo computazionale, utilizzando il numero minimo di strumenti. Una prima fase dello sviluppo di tale sistema, ha riguardato lo studio della particolare applicazione richiesta e delle possibili tecnologie e metodiche attualmente a disposizione. La scelta iniziale era ricaduta sulla stereoscopia ma, a causa dell’elevato costo computazionale degli algoritmi e del particolare ambiente da mappare (la strada), è stato deciso di utilizzare un sistema di visione costituito da una sola fotocamera.

Di seguito:

• sono descritti nel dettaglio gli obiettivi della tesi;

• è fornita una panoramica sullo stato dell’arte delle tecnologie e delle metodiche attualmente a disposizione per la lane detection e per la mappatura degli ambienti; • sono descritti nel dettaglio il sistema e gli algoritmi implementati.

OBIETTIVI DELLA TESI Gli obiettivi della tesi sono:

• sviluppo di un software per la generazione di un riferimento di traiettoria da fornire all’AGV per il ripasso delle strisce orizzontali;

• calcolo dell’Atlante.

In entrambi i casi si vuole ridurre al minimo indispensabile l’attrezzatura utilizzata e ottenere un software con un costo computazionale non elevato, al fine di limitare i costi e consentire un utilizzo in tempo reale del sistema.

Per quanto riguarda la parte dedicata al ripasso delle strisce, tramite la fotocamera montata nella parte anteriore dell’AGV è possibile acquisire delle immagini della strada

(8)

7

percorsa dal veicolo. L’obiettivo è implementare un software che consente di individuare la striscia stradale nelle immagini scattate e calcolare la posizione della striscia nella foto.

Per la parte riguardante il calcolo dell’Atlante, l’obiettivo è ottenere una mappa dell’ambiente in cui si muoverà l’AGV utilizzando le informazioni ricavabili dalle immagini scattate dalla fotocamera posizionata nella parte anteriore del camion. Dopo aver calcolato l’Atlante, sarà possibile tracciare i riferimenti di traiettoria da fornire all’AGV direttamente sulla mappa ricavata. In questa fase del progetto è stato elaborato un algoritmo per il calcolo di traiettorie rettilinee. In una fase successiva, verrà sviluppato un software per la generazione di traiettorie curve.

DESCRIZIONE DEGLI STRUMENTI HW E SW A DISPOSIZIONE

Nell’ambito della tesi, è stato necessario studiare le tecnologie e i metodi che attualmente consentono il raggiungimento degli obiettivi prefissati, prestando particolare attenzione:

• al costo computazionale degli algoritmi; • al costo degli strumenti utilizzati;

• all’utilizzabilità del software e degli strumenti da parte degli operai.

In questa sezione verranno descritti alcuni degli algoritmi e delle tecnologie attualmente utilizzate per la lane detection e per la mappatura degli ambienti

Per quanto riguarda gli algoritmi di lane detection, sono costituiti dalle seguenti fasi [1] • acquisizione delle immagini/video della strada;

• definizione di un modello matematico per descrivere la linea: retta, parabola, iperbole, spline o clotoide;

• estrazione delle caratteristiche della linea, come colore, bordi ecc… • calcolo della posizione della linea nella foto.

I bordi della linea da identificare sono definiti grazie a un contrasto tra la superficie della strada e della linea. La fase dell’algoritmo che consente l’individuazione dei bordi della linea è chiamata edge detection e si compone dei seguenti passaggi:

(9)

8

• filtraggio dell’immagine per ridurre l’eventuale rumore;

• ricerca dei punti appartenenti ai bordi della linea: è un’operazione che coinvolge tutti i pixel, alla fine verranno estratti i potenziali punti appartenenti alla striscia; • localizzazione dei bordi: dei punti trovati nel passaggio precedente vengono

considerati solo quelli che effettivamente appartengono al bordo.

Gli algoritmi tipicamente usati per la edge detection sono: Sobel, Roberts, Prewitt, Canny, steering filter e altri. Gli algoritmi Sobel, Roberts, Prewitt e Canny operano su immagini in scala di grigi e sono basati sul concetto di gradiente dell’intensità. L’intensità del colore in corrispondenza di un bordo ha un andamento a rampa. Se t è la direzione lungo la quale è stata valutata l’intensità, il gradiente è definito come la derivata prima dell’intensità lungo la direzione t. Il bordo si troverà in corrispondenza del massimo del gradiente.

Figura 1 Andamento dell'intensità dei pixel in corrispondenza di un bordo

Figura 2 Andamento del gradiente dell'intensità lungo la direzione t in corrispondenza di un bordo

Gli operatori di Sobel e di Prewitt calcolano il gradiente dell’immagine lungo le due direzioni del piano immagine e mettono in evidenza le regioni in cui il gradiente presenta dei massimi. L’operatore di Sobel [2] calcola la convoluzione lungo le due direzioni tra la

(10)

9

matrice associata all’immagine e una matrice 3x3, ottenendo un gradiente per ogni direzione 𝐺𝑥 e 𝐺𝑦. Il gradiente assoluto dell’immagine è dato da

|𝐺| = √𝐺𝑥2+ 𝐺𝑦2

e viene utilizzato per il calcolo dei bordi. Prewitt e Sobel differiscono per i pesi utilizzati nelle matrici 3x3.

L’operatore di Roberts misura i gradienti lungo assi ruotati di 45° ed effettua le stesse

operazioni appena viste, utilizzando come maschere delle matrici 2x2.

L’algoritmo Canny prevede le seguenti fasi [3]:

• smoothing gaussiano dell’immagine: in questa fase viene eliminato dall’immagine parte del rumore presente;

• calcolo del gradiente: vengono utilizzati gli operatori di Prewitt o di Roberts per il calcolo del gradiente dell’immagine;

• soppressione dei pixel con bassa intensità, in direzione ortogonale al bordo • selezione mediante isteresi dei bordi significativi.

L’edge detection consente di ricavare un’immagine binaria, in cui i bordi degli oggetti presenti sulla scena sono bianchi e lo sfondo è nero. Su questa immagine sarà possibile effettuare ulteriori operazioni per identificare la linea. La trasformata di Hough è uno degli strumenti più utilizzati per la lane detection, in quanto è robusto al rumore e alle occlusioni [1]. È utilizzata per calcolare i parametri di una retta che meglio approssima un set di punti appartenenti ai bordi identificati precedentemente. Per eliminare eventuali falsi positivi, vengono tipicamente imposti dei vincoli sui punti trovati (es. distanza minima tra i punti, posizione nell’immagine dei punti ecc.).

Gli algoritmi visti finora necessitano esclusivamente dell’acquisizione delle immagini da parte di una fotocamera e rappresentano la metodologia più utilizzata attualmente per la lane detection. Questo è dovuto al basso costo di realizzazione del sistema di visione e ai buoni risultati che è possibile ottenere. Uno dei difetti principali è la forte dipendenza dei risultati dalle condizioni ambientali, come luminosità, condizioni metereologiche ecc… Per questo motivo, in alcuni casi vengono utilizzati i sistemi LIDAR

(11)

10

[4]. Grazie ai LIDAR è possibile ottenere informazioni sulla struttura 3D dell’ambiente circostante e, nella maggior parte dei casi, delle misure sull’intensità della luce riflessa dalle superfici illuminate dal raggio del LIDAR. Le misure ricavate, a differenza di quelle ottenute con i sistemi di visione, sono indipendenti dalle condizioni ambientali. L’inconveniente maggiore nell’uso di tale tecnologia è l’elevato costo del sensore. Una via di mezzo tra LIDAR e visione monoculare è la stereoscopia che, tramite l’acquisizione e l’elaborazione di due immagini scattate contemporaneamente, consente di ricavare le stesse misure ottenute con il LIDAR. Come la visione monoculare, anche la stereoscopia è fortemente dipendente dalle condizioni ambientali.

Passiamo ora all’esame delle tecnologie attualmente a disposizione per la mappatura degli ambienti, ossia per ottenere informazioni sulla struttura 3D dell’ambiente circostante. Una delle metodologie tipicamente usate è la stereoscopia: grazie all’elaborazione di due immagini, scattate contemporaneamente da due fotocamere in posizione nota, è possibile ottenere misure di posizione di punti dell’ambiente visibili in entrambe le foto. I passaggi necessari per ricavare queste misure tramite la stereoscopia sono riportati nell’Appendice. Come già accennato precedentemente, i LIDAR sono degli strumenti che, grazie alla misura del tempo di volo del segnale, forniscono informazioni sulla struttura 3D dell’ambiente circostante. Se utilizzati in combinazione con altri sensori, quali sistemi di visione e unità inerziali, possono essere utilizzati per implementare la SLAM (Simultaneous Localization And Mapping). Questa tecnica consente di realizzare contemporaneamente la mappatura dell’ambiente circostante e la localizzazione del veicolo [9]. LIDAR e stereoscopia sono particolarmente utili quando l’ambiente è sconosciuto e si ha la necessità di avere informazioni sul l’eventuale presenza e posizione di ostacoli nel tragitto del veicolo. Negli ultimi anni è crescente l’uso in applicazioni robotiche delle RGB-D camere. Queste forniscono delle immagini RGB e per ogni pixel danno una misura della profondità del punto consi derato, combinando le informazioni stereoscopiche con quelle del laser. Grazie al crescente utilizzo delle camere RGB-D per applicazioni domestiche (es. gaming), il costo è notevolmente diminuito rispetto agli esordi. Uno degli inconvenienti è il basso ran ge di misura rispetto ai sistemi di visione tipicamente utilizzati e ai LIDAR.

(12)

11

Per il caso in esame, la scelta è ricaduta su un sistema di visione costituito da una sola fotocamera. È stato possibile sfruttare le proprietà della geometria proiettiva grazie al fatto che l’ambiente da mappare è un piano con inclinazione pressoché costante e privo di ostacoli.

DESCRIZIONE DEL SISTEMA

Il sistema per il tracciamento della segnaletica stradale potrà operare in tre modalità: • tracciamento di STOP, scritte e frecce direzionali;

• tracciamento delle nuove linee orizzontali di mezzeria e di margine della carreggiata; • ripasso delle linee orizzontali di mezzeria e di margine della carreggiata.

Per il tracciamento ex novo delle linee orizzontali, è prevista la realizzazion e di una mappa (Atlante) dell’ambiente in cui si muoverà l’AGV. Sarà poi possibile tracciare i riferimenti da fornire all’AGV direttamente sulla mappa ricavata. L’Atlante è ottenuto tramite l’integrazione di un sistema di acquisizione ed elaborazione delle immagini e un sistema di geolocalizzazione GPS RTK.

Per quanto riguarda il ripasso delle strisce orizzontali non è necessario ricavare l’Atlante, in quanto il riferimento di traiettoria da fornire all’AGV è dato dalle strisce già tracciate sulla strada. Sarà quindi presente un sistema che consente l’identificazione delle strisce sulla strada.

In entrambi i casi (ripasso e tracciamento ex novo delle strisce) sarà presente un modulo per la generazione del riferimento di traiettoria, un blocco di controllo d i traiettoria e velocità dell’AGV e un blocco di diagnostica e soluzione degli inconvenienti che potrebbero presentarsi.

Il primo obiettivo del progetto è lo sviluppo di un prototipo di sistema per il tracciamento semiautomatico di segnaletica stradale orizzontale. Si parla di tracciamento semiautomatico in quanto, in una prima fase di sviluppo del progetto, l’AGV è collegato a un camion che trasporta le utilities per la verniciatura e effettua la mappatura dell’ambiente che necessita il tracciamento della segnaletica.

(13)

12

Figura 3 Sistema AGV-camion per il tracciamento della segnaletica Il camion è dotato di:

• un sistema di geolocalizzazione GPS RTK (Real Time Kinetic GPS); • una fotocamera per la mappatura della strada;

• le utilities per la verniciatura.

L’AGV è collegato al camion tramite le tubazioni e un collegamento di sicurezza. Quest’ultimo consente all’AGV di staccarsi dal camion nel caso in cui la distanza tra AGV e camion è troppo elevata (es. il camion va troppo veloce, l’AGV non segue correttamente il riferimento di traiettoria e si allontana dal camion). L’AGV è dotato di: • un sistema di geolocalizzazione GPS RTK;

• due ruote motorizzate; • due ugelli;

• una guida scorrevole su cui sono montati i due ugelli; • una fotocamera nella parte anteriore dell’AGV.

(14)

13

IDENTIFICAZIONE DELLE STRISCE

La prima fase di lavoro ha riguardato l’implementazione di un algoritmo per il riconoscimento delle strisce orizzontali. L’obiettivo è quello di realizzare un software in grado di fornire all’AGV un riferimento di traiettoria per il ripasso delle strisce. Durante la tesi è stato sviluppato un algoritmo diverso rispetto a quelli che tipicamente vengono utilizzati per la lane detection. Questo perché gli algoritmi generalmente usati impongono delle grosse restrizioni sul posizionamento del veicolo: i bordi stradali, quindi le linee da identificare, vengono ricercati in una sola regione della foto, chiamata Region Of Intrest. Nel caso in esame, almeno nelle prime fasi di movimento del veicolo, non è possibile fare questa ipotesi in quanto non è nota a priori la posizione del veicolo rispetto alla linea. Un altro svantaggio delle tecniche viste in precedenza sta nel fatto che sono molto sensibili al rumore: nel nostro caso l’implementazione di questi algoritmi causava un filtraggio non efficace delle foto, in quanto mettevano in evidenza anche i bordi di regioni non appartenenti alla striscia. Questo non è un problema nel caso in cui la striscia è ben delineata, ma rappresenta un grosso ostacolo nel caso in cui la striscia non è nitida.

Una possibile soluzione a questo inconveniente è effettuare un ulteriore filtraggio dell’immagine originale, con il conseguente incremento del costo computazionale dell’algoritmo. Per ovviare questi inconvenienti è stato sviluppato un algoritmo che, tramite opportuno filtraggio delle immagini, consente l’identificazione in tempo reale delle strisce da seguire.

Il capitolo si divide in tre parti principali:

• Acquisizione delle immagini: descrizione della corretta metodologia per l’acquisizione delle foto

• Elaborazione delle immagini: descrizione delle fasi operative per l’identificazione della striscia nella foto

• Elaborazione della traiettoria di riferimento per il moto dell’AGV.

ACQUISIZIONE DELLE IMMAGINI

La fotocamera utilizzata è una camera CMOS GigE a 3.2MP e fornisce immagini in bianco e nero.

(15)

14

Le foto della striscia sono state scattate a 50 cm da terra, con la lente della fotocamera parallela al piano stradale. Tale configurazione è stata scelta per rendere minima la distorsione dell’immagine dovuta alla prospettiva e facilitare il calcolo del riferimento da fornire all’AGV. In questa posizione è possibile visualizzare un tratto di striscia lungo circa 60 cm. Affinché l’algoritmo funzioni correttamente, è necessario che la striscia non intersechi i bordi verticali della foto.

Figura 5 Posizionamento corretto della striscia nella foto.

Se l’AGV segue correttamente il riferimento, la striscia è in posizione verticale nella foto. Si suppone quindi che durante l’utilizzo dell’AGV non si verifichi il caso in cui la striscia è vista in direzione orizzontale.

(16)

15

I tempi di calcolo dell’algoritmo sviluppato e di seguito descritto nei particolari consentono un utilizzo del software in tempo reale, quindi la frequenza di acquisizione delle immagini dipende dal tempo necessario per l’acquisizione delle immagini e il ripasso della striscia.

ELABORAZIONE DELLE IMMAGINI FILTRAGGIO DELLE FOTO

Affinché il software possa essere utilizzato in strada, è necessario che i tempi di calcolo dell’algoritmo siano bassi. Per questo motivo è stato deciso di ridurre da 1536x2048 a 200x200 la risoluzione delle foto acquisite, diminuendo notevolmente il numero di elementi coinvolti nei calcoli.

Prima di procedere con l’individuazione della striscia nella foto, è necessario effettuare un filtraggio, in modo da ridurre l’eventuale rumore presente nell’immagine e mettere in evidenza la striscia. Nel nostro caso il rumore è rappresentato ad esempio da pietre bianche o zone in cui l’asfalto è più chiaro. La foto è una matrice di dimensioni 200x200, in cui ogni elemento è un pixel e assume un valore compreso tra 0 e 255. Il valore 0 corrisponde a un pixel nero, il valore 255 a un pixel bianco.

Un primo filtraggio della foto è stato effettuato colorando di nero (o bianco) tutti i pixel con valore inferiore (o superiore) a un valore di soglia. Nel caso in cui la striscia è nitida e l’asfalto ha un colore nero uniforme, il valore di soglia può assumere un valore alto. Questo non si verifica quasi mai nei casi in esame, in quanto le strisce “viste” dall’AGV necessitano di un ripasso di vernice, quindi non saranno sicuramente nitide.

Per ricavare il valore di soglia sono state effettuate diverse prove su un campione di 15 foto. Nelle foto scattate variano le condizioni della striscia e dell’asfalto: in alcune la striscia è nitida e l’asfalto è scuro, in altre la striscia è rovinata e l’asfalto è più chiaro. Risulta più difficoltoso filtrare correttamente il secondo caso, in quanto c’è il rischio di eliminare regioni della foto in cui è presente la striscia, oppure di considerare delle zone chiare dell’asfalto come appartenenti alla striscia. È stato trovato un valore soglia che permette un corretto filtraggio di tutte le foto. La scelta è ricaduta sul valore 160, un grigio chiaro. In seguito a questa prima fase, a ogni pixel è stato assegnato il valore 1 (se il valore del pixel è maggiore di 160) o 0 (se il valore del pixel è minore di 160):

(17)

16

Figura 6 In alto: foto originali. In basso: immagini dopo il primo filtraggio.

Se nella foto è presente molto rumore, il filtraggio finora effettuato non consente una corretta individuazione della striscia. Le foto vengono filtrate ulteriormente, colorando di nero le zone in cui la densità di pixel bianchi è più bassa. La foto è stata divisa in 5 regioni orizzontali, di dimensioni 40x200.

(18)

17

Per ogni regione è stata calcolata la media di pixel bianchi presenti al suo interno.

Successivamente è stata effettuata una ricerca per colonne per ogni regione: se il numero di pixel bianchi in una colonna è inferiore alla media, allora all’intera colonna della regione viene assegnato il valore 1, 0 altrimenti. La stessa operazione è stata svolta dividendo la foto in 5 regioni verticali di dimensioni 200x40 ed effettuando una ricerca per righe.

Il risultato finale del filtraggio è riportato nella Figura 9. Figura 8 Divisione della foto in regioni verticali

(19)

18

INDIVIDUAZIONE DELLA STRISCIA

Come per il filtraggio della foto, l’individuazione della striscia nell’immagine si basa sulla densità di pixel bianchi: maggiore è la densità in una certa zona, maggiore è la probabilità che in quella regione ci sia la striscia.

È stata ripresa la divisione della foto nelle 5 regioni orizzontali e per ciascuna è stata calcolata la densità dei pixel bianchi tramite media mobile, in una finestra di 5 pixel. Per ogni regione è stata calcolata la densità media di pixel bianchi. L’andamento della densità calcolata è del tipo

Figura 10 Densità dei pixel bianchi lungo l'asse x

La striscia si troverà nella regione in cui la densità presenta il picco, ovvero nella zona in cui la densità è maggiore rispetto alla media. Una prima ricerca dei bordi della striscia è stata effettuata verificando il numero di pixel presenti in ogni colonna delle regioni: se il numero di pixel è maggiore rispetto alla media, allora è probabile che il punto appartenga al bordo della striscia e l’algoritmo memorizza l’indice lungo l’asse x della foto in cui la condizione è verificata. L’algoritmo effettua una doppia ricerca per colonne, dal bordo sinistro della foto verso destra e viceversa. Alla fine di questa fase fornirà un set di punti per ogni bordo della striscia.

(20)

19

Se la foto è particolarmente rumorosa, l’algoritmo potrebbe dare dei falsi positivi: potrebbe identificare un bordo della striscia in punti in cui questa non è presente. Si effettua un ulteriore controllo: in una finestra successiva (o precedente se si considera il bordo finale della striscia) ai punti identificati, se almeno il 30% dei pixel al suo interno è bianco, allora i punti sono considerati appartenenti al bordo altrimenti vengono scartati.

COEFFICIENTE DI CORRELAZIONE

Per calcolare l’orientazione della striscia, è necessario trovare una relazione tra i punti trovati. L’area inquadrata dalla fotocamera è piccola e, considerando il fatto che i raggi Figura 11 Possibili punti appartenenti ai bordi della striscia

(21)

20

di curvatura delle strade extra urbane sono superiori a 178 m, è possibile approssimare la striscia vista con una retta. Per ottenere un riferimento di traiettoria, sarà poi sufficiente calcolare la regressione lineare dei set di punti trovati e traslarla verso il centro della striscia. Se entrambi i bordi della striscia sono nitidi e ben visibili nella foto, il riferimento può esser calcolato indifferentemente a partire da uno dei due. Nel caso in cui la striscia non è nitida, è necessario scegliere quale dei due set di punti trovati è più affidabile. Per fare questa verifica è stato calcolato il coefficiente di correlazione per entrambi i set di punti.

Il coefficiente di correlazione è definito come

𝑃 = 𝜎𝑥𝑦 𝜎𝑥𝜎𝑦

• 𝑥 e 𝑦 sono rispettivamente le coordinate lungo l’asse x e l’asse y dei punti trovati • 𝜎𝑥𝑦 è la covarianza tra 𝑥 e 𝑦

• 𝜎𝑥 è la deviazione standard

𝑃 può assumere valori compresi tra -1 e 1: • |𝑃| < 0.3: correlazione debole

• 0.3 < |𝑃| < 0.7: correlazione moderata • |𝑃| > 0.7: correlazione forte.

Dati il bordo iniziale (bordo sinistro della striscia) 𝑏𝑖 e il bordo finale (bordo destro)

𝑏𝑓, 𝑏𝑖 è scelto come bordo di riferimento se • 𝑃𝑖 > 𝑃𝑓

• 𝑃𝑖 > 0.7

Se 𝑏𝑓 soddisfa le due condizioni, allora è scelto come bordo di riferimento. Se nessuno

dei due bordi verifica la condizione 𝑃 > 0.7, allora l’algoritmo non è riuscito a individuare un set di punti valido per nessuno dei due.

(22)

21

CALCOLO DEL RIFERIMENTO

Il passo successivo è stato approssimare il set di punti, scelto come bordo di riferimento, con una retta. Il metodo dei minimi quadrati consente di determinare l’equazione della retta, detta retta di regressione o dei minimi quadrati.

Siano

• 𝑥 e 𝑦 la variabile indipendente e la variabile dipendente rispettivamente

• 𝐴 = {𝑥1,… , 𝑥𝑛} e 𝐵 = {𝑦1, … , 𝑦𝑛} i dati sperimentali osservati in una popolazione:

nel caso in esame ascissa e ordinata dei punti trovati dall’algoritmo

la retta di regressione è la retta di equazione

𝑦 = 𝛽1𝑥 + 𝛽0

per la quale è minima la quantità

𝐸 = ∑(𝛽1𝑥𝑖+ 𝛽0− 𝑦𝑖)

𝑛

𝑖=1

che corrisponde alla somma dei quadrati delle distanze di ciascuna coppia (𝑥𝑖, 𝑦𝑖) dal corrispondente punto sulla retta (𝑥𝑖, 𝛽1𝑥𝑖+ 𝛽0).

Per calcolare i coefficienti della retta di regressione è stata utilizzata la funzione

regression di Matlab.

(23)

22

La retta calcolata è

𝑦𝑏 = 𝛽1𝑥 + 𝛽0.

A partire dalla conoscenza dei coefficienti della retta, è possibile calcolarne l’inclinazione

𝜃 = 𝑎𝑡𝑎𝑛( 𝛽1).

La fotocamera non cambia la posizione relativa rispetto al terreno quindi, data la conoscenza della larghezza della striscia in cm, è possibile ricavare una relazione tra la distanza in pixel e la distanza in cm. Sia 𝑙𝑠 la larghezza della striscia in pixel, la linea

passante per l’asse centrale della striscia è calcolata come

𝑦 = 𝑦𝑏± 𝑙𝑠 2 ∙ cos 𝜃 Il segno ± dipende da:

• segno di 𝜃

• 𝑦𝑏: il segno cambia in base a quale bordo è stato scelto come riferimento

In Figura 14 sono riportati i risultati finali del calcolo del riferimento.

Figura 14 Riferimenti Nel caso di inseguimento perfetto del riferimento, 𝜃 =𝜋

2 e la retta 𝑦 passa per l’asse

(24)

23

PRESTAZIONI DELL’ALGORITMO

L’ultima fase del lavoro ha riguardato lo studio delle prestazioni dell’algoritmo. Con l’ausilio di Excel, sono state create delle immagini simulate in bianco e nero in cui ogni pixel può assumere valore 1 (pixel bianco) o 0 (pixel nero). Nelle immagini è presente una regione bianca (rappresentante la striscia) su uno sfondo nero (rappresentante l’asfalto). Chiameremo:

• segnale, il numero di pixel bianchi presenti nella zona in cui c’è la striscia • rumore

o pixel bianchi presenti nella zona in cui non c’è la striscia o pixel neri presenti nella zona in cui c’è la striscia

Nella Figura 15 sono riportati degli esempi di foto simulate in cui sono stati impostanti diversi valori alla potenza del segnale e del rumore.

Figura 15 Esempi di foto simulate

È possibile impostare la potenza del segnale e del rumore con valori che variano tra 0 e 0.99: esprimono la percentuale di pixel bianchi presenti nella zona in cui c’è la striscia o l’asfalto.

L’obiettivo dell’analisi è capire in che modo la variazione del rumore e del segnale influenzino le prestazioni dell’algoritmo. Sono state effettuate due prove:

• prova 1: test dell’algoritmo su un set di immagini in cui il segnale è costante e il rumore viene aumentato gradatamente

(25)

24

• prova 2: test dell’algoritmo su un set di immagini in cui è costante il rumore e diminuisce di volta in volta il segnale

Nella prova 1 sono stati effettuati 10 test. Per ogni test sono state create 15 immagini in cui la potenza del segnale è costante e il rumore viene incrementato del 15% tra lo 0.2% e il 50%. Nelle 15 immagini il segnale varia tra il 50% e il 99%. È stato osservato che affinché l’algoritmo identifichi la striscia, quindi dia esito positivo, è necessario che il rumore sia inferiore al 50%, anche quando è massima la potenza del segnale. È possibile notare come il numero di esiti negativi diminuisca all’aumentare della potenza del segnale. Nella Figura 16 sono riportati il numero di esiti negativi e di falsi positivi al variare della potenza del segnale.

Figura 16 Esiti negativi e falsi positivi ottenuti nella prova 1

Nella prova 2 sono stati effettuati 15 test. Per ogni test sono state create 10 immagini in cui la potenza del rumore è costante e il segnale viene incrementato del 15% tra il 50% e il 99%. Per verificare il limite minimo della potenza del segnale, è stata decrementata

(26)

25

la potenza del segnale mantenendo costante il rumore allo 0.2%. È stato osservato che l’algoritmo inizia a dare esito positivo quando la potenza del segnale è maggiore uguale al 30%. Il limite massimo che può assumere la potenza del rumore è il 50%: quando il rumore è pari al 50% l’algoritmo dà esito negativo, qualunque sia la potenza del segnale. I risultati sono riportati nella Figura 17.

In ultima analisi è stato calcolato il tempo di calcolo dell’algoritmo. Nel caso in cui l’esito è positivo, l’algoritmo viene eseguito in 0.006 secondi circa. Nel caso in cui l’esito è negativo il tempo di calcolo è di 0.009 secondi. Nel caso peggiore, ossia se il tempo di calcolo è pari a 0.009 secondi, l’algoritmo elabora 111 foto in un secondo che equivale a percorrere 66 metri in un secondo. I brevi tempi di calcolo dell’algoritmo consentono quindi un utilizzo in tempo reale del software. La velocità di avanzamento dell’AGV dipenderà dal tempo necessario per l’acquisizione delle immagini e dal tempo impiegato per ripassare la striscia.

(27)

26

SVILUPPI FUTURI

Il software sviluppato è in grado di fornire un riferimento di traiettoria nel caso di singola striscia bianca. Nel caso di doppia striscia, sarà necessario modificare opportunamente l’algoritmo per il riconoscimento di entrambe le strisce. Sono state effettuate delle prove in simulazione con immagini in cui è presente la doppia striscia ed è stato osservato che, se i bordi sono nitidi, l’algoritmo funziona anche in questo caso.

Il software è stato pensato per il riconoscimento di strisce in strade extra urbane, generalmente bianche. Un possibile sviluppo futuro è quello di realizzare un algoritmo in grado di riconoscere strisce di colori diversi, ad esempio le strisce blu o gialle. Per farlo sarà necessario cambiare gli strumenti a disposizione, dotarsi quindi di una fotocamera a colori o di un LIDAR, e modificare opportunamente l’algoritmo.

Un altro passo importante è la generazione di riferimenti anche nel caso di ripasso di strisce tratteggiate: l’AGV dovrà essere in grado di seguire la traiettoria corretta anche nei tratti in cui la striscia si interrompe.

(28)

27

ATLANTE

DEFINIZIONE DELL’ATLANTE

L’Atlante è uno strumento utilizzato per fornire all’AGV una mappa dell’ambiente in cui si muoverà. È ricavato offline, tramite la sovrapposizione delle foto del tragitto che il veicolo dovrà percorrere. Le foto sono scattate da una fotocamera posizionata nella parte anteriore di un camion, che percorrerà la strada che necessita del rifacimento della segnaletica stradale orizzontale. Nella Figura 18 è riportato un esempio di Atlante con i riferimenti delle strisce.

Figura 18 Atlante

A ogni punto del piano stradale visto nelle foto saranno associate delle coordinate GPS. Se il segnale GPS non è disponibile, ai punti di interesse saranno associate delle coordinate espresse in un sistema di riferimento solidale alla fotocamera.

STRUMENTI A DISPOSIZIONE

Per ricavare l’Atlante gli strumenti a disposizione sono: • sistema di geolocalizzazione RTK

(29)

28

Il sistema di geolocalizzazione fornisce la posizione del camion e della fotocamera: sincronizzando i due strumenti è possibile ricavare le coordinate della fotocamera nell’istante in cui sono state scattate le foto.

In una prima fase dell’elaborazione delle immagini, si determinano le coordinate dei punti appartenenti alla strada rispetto a un sistema di riferimento solidale alla fotocamera. La fase finale prevede la costruzione effettiva dell’Atlante, ottenuto tramite la sovrapposizione di piani associati a ogni foto scattata.

Uno strumento che consente di determinare la posizione di punti visibili in due foto è la stereoscopia. La stereoscopia prevede l’uso di due fotocamere per simulare la visione binoculare e dare profondità alle immagini, cosa non possibile quando si ha a disposizione una sola visione. Le due fotocamere sono in una posizione nota e scattano le foto contemporaneamente. Se un punto è visibile in entrambe le foto, è possibile determinarne la posizione relativa rispetto a una delle due fotocamere. La stereoscopia presenta tuttavia alcune problematiche:

• occlusioni: alcune zone della scena sono visibili solo in una delle due foto scattate • distorsioni fotometriche: dovute principalmente alla luminosità dell’ambiente,

infatti punti coniugati potrebbero avere luminosità differenti in base al punto di vista • distorsioni prospettiche: a causa della differente prospettiva per le due fotocamere,

la stessa regione può apparire di dimensioni diverse nelle due immagini

• presenza di pattern periodici: durante il calcolo della corrispondenza stereo, c’è la possibilità che l’algoritmo trovi una corrispondenza errata tra le due immagini. Questo provocherebbe un errore nel calcolo della profondità

• presenza di superfici con poca texture: rende difficoltoso il calcolo della mappa di disparità. Gli algoritmi usati per calcolo della mappa di disparità sfruttano la similarità tra i pixel coniugati: se nell’ambiente fotografato la maggior parte dei pixel ha la stessa intensità, è difficile risolvere il problema della corrispondenza stereo.

Nel caso in esame, l’obiettivo è quello di determinare la posizione di punti appartenenti al piano rispetto alla fotocamera. Dato che l’ambiente fotografato è piano e privo di ostacoli, è possibile sfruttare le proprietà della geometria proiettiva e ricavare le misure di interesse da una singola foto. In questo modo si riducono i tempi di calcolo

(30)

29

dell’algoritmo e si elimina la dipendenza delle misure dalla qualità della fotocamera e dalle condizioni ambientali in cui si muove il veicolo.

SISTEMA DI GEOLOCALIZZAZIONE RTK

L’AGV è dotato di un sistema di localizzazione Real Time Kinematic GPS (RTK). Il sistema RTK è costituito da due ricevitori GPS: una base fissa e un ricevitore installato nel veicolo. La base è in una posizione nota e comunica con il veicolo tramite radio. Sia base che veicolo ricevono il segnale GPS dai satelliti e la base invia le correzioni di misura al secondo ricevitore. Il sistema RTK usato è il Piksi Multi ricevitore GNSS della Swift Navigation. Il funzionamento del sistema può essere

• fixed: base e veicolo ricevono i segnali dalla stessa costellazione di almeno 5 satelliti e l’accuratezza delle misure è dell’ordine del cm;

• float: il numero di satelliti condivisi è inferiore a 5 e l’accuratezza della misura è di circa 5cm.

La modalità fixed richiede un’ampia visibilità del cielo, in particolare non ci devono essere degli edifici che ostacolano il segnale.

Figura 19 Posizionamento corretto del ricevitore

Sia camion che AGV saranno dotati del sistema di geolocalizzazione RTK. Durante la fase di acquisizione delle immagini è attivo solo il sistema di geolocalizzazione del camion. Durante la fase di tracciamento della segnaletica stradale sarà attivo anche quello montato sull’AGV. In questa fase è necessario conoscere la posizione di entrambi i veicoli per far sì che vengano rispettati i limiti di distanza tra AGV e camion, dati dalla lunghezza

(31)

30

dei cavi che collegano i due veicoli. Le informazioni di posizione dell’AGV verranno utilizzate per la localizzazione del veicolo e migliorare l’inseguimento del riferimento.

GEOMETRIA PROIETTIVA

L’ambiente in cui l’AGV si muoverà è un piano privo di ostacoli, per cui abbiamo sfruttato le proprietà della geometria proiettiva per ricavare delle misure di posizione dei punti appartenenti alla strada. L’obiettivo è quello di ricavare un metodo per ottenere le misure di interesse, ossia le coordinate di punti appartenenti al piano stradale in un sistema di riferimento solidale alla fotocamera, diminuendo il costo computazionale rispetto agli algoritmi che sfruttano la stereoscopia. Il software verrà utilizzato per calcolare la dimensione della carreggiata. È stato possibile implementare un algoritmo più semplice grazie alle caratteristiche dell’ambiente da mappare, ossia un piano con inclinazione pressoché costante e privo di ostacoli. Grazie alla geometria proiettiva è stata ridotta la complessità del sistema utilizzato, diminuendo a 1 il numero di fotocamere utilizzate.

Tra le coordinate (𝑢, 𝑣), espresse rispetto a un sistema di riferimento solidale all’immagine, e le coordinate (𝑋, 𝑌, 𝑍), espresse in un sistema di riferimento solidale alla fotocamera, esiste una corrispondenza univoca indipendente dalla scena ripresa dalla camera. Successivamente, se si hanno a disposizione le misure del sistema RTK, sarà possibile associare a ogni punto sul piano una coordinata GPS.

Di seguito verranno definiti i sistemi di riferimento di interesse: un sistema di riferimento solidale alla foto e un sistema di riferimento solidale alla fotocamera. Dopodiché sarà esposta la procedura di calibrazione del sistema e i passaggi effettuati per il calcolo effettivo delle coordinate. Infine, sono esposti i fattori che influenzano le misure ricavate.

SISTEMA DI RIFERIMENTO

Prima di passare allo studio della geometria proiettiva, definiamo i sistemi di riferimento utilizzati. Il sistema di riferimento rispetto al quale verranno espresse le coordinate ha origine nel centro ottico della fotocamera.

(32)

31

Figura 20 Sistema di riferimento

Per svolgere i calcoli invece è stata presa l’origine in un punto del piano con coordinate immagine (𝑥, 𝑦) = (𝑢𝑧𝑒𝑟𝑜, 𝑣𝑧𝑒𝑟𝑜), con 𝑣𝑧𝑒𝑟𝑜 = 1536. Il punto 𝑧𝑒𝑟𝑜 è posizionato lungo

l’asse 𝑍, a profondità 𝑑0 rispetto alla fotocamera. Con 𝑑0 si indica la profondità dei punti

appartenenti al piano più vicini alla fotocamera visibili nella foto.

DISTORSIONE PROSPETTICA

La prospettiva introduce una distorsione nelle foto: linee che nella realtà sono parallele, nelle foto sono incidenti. Questo complica il calcolo delle coordinate dei punti visibili nelle foto rispetto alla fotocamera, introducendo una non linearità nella misura delle distanze. Infatti, se la relazione tra coordinate immagine e coordinate nel sistema di riferimento world fosse lineare, sarebbe possibile ricavare la distanza in metri applicando la formula

𝑑𝑚𝑒𝑡𝑟𝑖: 𝑑𝑝𝑖𝑥𝑒𝑙 = 𝑑𝑝𝑚𝑒𝑡𝑟𝑖:𝑑𝑝𝑝𝑖𝑥𝑒𝑙 Dove

• 𝑑𝑚𝑒𝑡𝑟𝑖 è l‘incognita e rappresenta la distanza in metri di un punto 𝑝𝑥

appartenente al piano rispetto alla fotocamera • 𝑑𝑝𝑖𝑥𝑒𝑙 è la posizione di 𝑝𝑥 (lungo l’asse 𝑥 o 𝑦) in pixel

• 𝑝 è un punto del piano di cui è nota la posizione, sia in metri che in pixel.

Per risolvere il problema della triangolazione utilizzando una sola immagine, è necessario ricavare una relazione tra le due coordinate che tenga conto della

(33)

32

non linearità introdotta dalla prospettiva. Per ricavare le coordinate lungo l’asse x e lungo l’asse y sono stati seguiti due approcci differenti: per la coordinata x è stato sfruttato il punto di fuoco dell’immagine, per la coordinata y sono stati presi in considerazione dei punti a distanza nota dalla fotocamera.

La procedura per ricavare le coordinate si divide in due fasi principali: • Calibrazione

• Calcolo delle coordinate

Durante la fase di calibrazione vengono calcolati tutti i parametri necessari per il calcolo effettivo delle coordinate.

CALIBRAZIONE

Nel metodo utilizzato la calibrazione viene effettuata una tantum per ricavare i parametri caratteristici del sistema:

• Punto di fuoco: punto in cui si intersecano linee tra loro parallele e appartenenti allo stesso piano;

• Relazione tra distanza in pixel e distanza in metri a una profondità fissa dalla fotocamera;

• Funzione 𝑓 non lineare, utilizzata per il calcolo della coordinata z.

I parametri ricavati durante la calibrazione dipendono dall’inclinazione e dall’altezza della fotocamera, quindi la procedura di calibrazione verrà effettuata ad altezza e inclinazione fissate. Indichiamo con 𝑑0 la profondità rispetto alla fotocamera dei primi punti visibili nella foto e appartenenti al piano. Altezza e inclinazione della fotocamera hanno effetto sulle dimensioni del piano visto nelle foto:

• un incremento dell’altezza provoca un aumento di 𝑑0 e sono visibili punti più lontani

dalla camera

• un aumento dell’inclinazione della fotocamera (ossia se la fotocamera è inclinata verso il terreno) provoca una diminuzione di 𝑑0 e sono visibili i punti più vicini alla

(34)

33

Altezza e inclinazione dipendono esclusivamente dalle esigenze dell’utente: se si è interessati a ottenere misure su punti più vicini alla fotocamera, è necessario inclinare la camera verso il piano o diminuire l’altezza. Per la fotocamera in uso la configurazione scelta è

ℎ = 1𝑚

𝛽 = 0°

Dopo aver posizionato la fotocamera nella configurazione scelta, si definisce il punto

zero nell’immagine: scelto in un punto frontale rispetto alla fotocamera e a distanza 𝑑0.

Il punto zero ha coordinate [0, ℎ, 𝑑0], espresse rispetto al sistema di riferimento solidale

alla fotocamera (vedi Figura 21 e Figura 22).

(35)

34

Figura 22 Posizione del punto zero nel piano XZ

(36)

35

Per il calcolo della coordinata x è necessario ricavare il punto di fuoco dell’immagine e un coefficiente 𝑐, che esprime una relazione tra distanza in pixel e distanza in metri. Il punto di fuoco dell’immagine è il punto nell’immagine in cui si intersecano rette tra loro parallele e appartenenti allo stesso piano. Il punto di fuoco viene ricavato manualmente tramite la selezione nell’immagine di punti con le caratteristiche date. Successivamente vengono calcolate le rette passanti per tali punti e si ricava il punto in cui queste si intersecano, ossia il punto di fuoco, con coordinate immagine [𝑝𝑓𝑥, 𝑝𝑓𝑦]. Nella Figura 24

sono messi in evidenza i punti appartenenti allo stesso piano e usati per ricavare il punto di fuoco dell’immagine e il punto di fuoco.

Figura 24 Punto di fuoco dell'immagine

Il coefficiente 𝑐 esprime una relazione tra la distanza in pixel e la distanza in metri lungo l’asse x a una distanza fissa dalla fotocamera. Per ricavarlo si considerano due punti sul piano a profondità 𝑑0 rispetto alla fotocamera e si misura la distanza in metri 𝑑𝑚𝑒𝑡𝑟𝑖

(37)

36

Nella foto si considerano gli stessi punti e si misura la distanza in pixel 𝑑𝑝𝑖𝑥𝑒𝑙 lungo l’asse

x. Il coefficiente 𝑐 è dato dalla formula

𝑐 =𝑑𝑚𝑒𝑡𝑟𝑖 𝑑𝑝𝑖𝑥𝑒𝑙

Nella Figura 25 sono messi in evidenza i punti selezionati per ricavare il coefficiente 𝑐.

Figura 25 Punti di riferimento per il calcolo di c

Per quanto riguarda la misura della coordinata z, è necessario ricavare la funzione non lineare 𝑓 e i coefficienti 𝑎 e 𝑏 della retta passante per 𝑧𝑒𝑟𝑜 e 𝑝𝑓. Se l’immagine è centrata, il punto 𝑝𝑓 sarà in una zona centrale dell’immagine e 𝑧𝑒𝑟𝑜𝑦 ≅ 𝑝𝑓𝑦. Nella foto,

la retta ricavata sarà circa parallela all’asse y e verrà utilizzata per avere informazioni sulla profondità dei punti rispetto alla fotocamera, calcolata con la relazione

(38)

37

Dove 𝑝𝑦 rappresenta la coordinata y nell’immagine di un qualsiasi punto appartenente

al piano. La profondità dei punti può essere ricavata sfruttando il fatto che punti che distano una profondità 𝑑 dalla camera hanno la stessa coordinata immagine 𝑦.

Per il calcolo di 𝑓(𝑦) è quindi possibile considerare dei punti in una posizione nota rispetto alla camera e ricavare 𝑓(𝑦) =(𝑎∙𝑝𝑑𝑧

𝑦+𝑏) per ogni punto considerato. La funzione

può essere approssimata con una esponenziale, come riportato nella Figura 27.

Nei punti più vicini alla fotocamera l’esponenziale non approssima bene i dati. Per risolvere il problema, è stato effettuato un campionamento più ravvicinato e i punti sono stati approssimati con una spline.

(39)

38

Figura 27 Andamento approssimato con esponenziale e con spline della funzione f

CALCOLO DELLE COORDINATE

Dopo aver effettuato la calibrazione del sistema, è possibile passare al calcolo effettivo delle coordinate. Sia 𝑝 un punto nello spazio di cui si vuole conoscere le coordinate rispetto a un sistema di riferimento solidale alla fotocamera. Come prima cosa, si acquisiscono le coordinate immagine del punto 𝑝 sul piano. La coordinata x di 𝑝 è data dalla relazione

𝑝𝑥 = (𝑦𝑓(𝑧𝑒𝑟𝑜𝑦) − 𝑧𝑒𝑟𝑜𝑥) ∙ 𝑐

dove

• 𝑦𝑓(𝑧𝑒𝑟𝑜𝑦) è la retta passante per 𝑝 e 𝑝𝑓, calcolata nel punto 𝑧𝑒𝑟𝑜𝑦

• 𝑧𝑒𝑟𝑜𝑥 è la coordinata del punto 𝑧𝑒𝑟𝑜 lungo l’asse x

• 𝑐 coefficiente che esprime la relazione tra distanza in metri e distanza in pixel, ricavato in fase di calibrazione.

(40)

39

La profondità è calcolata utilizzando la formula vista prima

𝑝𝑧 = (𝑎 ∙ 𝑝𝑦𝑝𝑖𝑥𝑒𝑙+ 𝑏) 𝑓(𝑝𝑦𝑝𝑖𝑥𝑒𝑙).

• 𝑝𝑦𝑝𝑖𝑥𝑒𝑙 è la coordinata del punto 𝑝 lungo l’asse y (nel sistema di riferimento solidale all’immagine)

• 𝑓(𝑦𝑝𝑖𝑥𝑒𝑙) la funzione 𝑓 valutata in 𝑝𝑦𝑝𝑖𝑥𝑒𝑙.

SIMULAZIONI

Per verificare il funzionamento del software, sono state effettuate delle misure su diverse foto utilizzando i parametri ricavati in fase di calibrazione. Per valutare l’efficacia del software realizzato, sono stati effettuati dei test su foto scattate con una visuale diversa rispetto a quella di calibrazione. NellaFigura 28è riportata una delle immagini usate per effettuare i test, nella quale sono evidenziati i punti di cui si vuole conoscere le coordinate.

Figura 28 Immagine usata per effettuare il test del software Nella Tabella 1sono riportati i risultati del test.

(41)

40

Tabella 1 Confronto tra posizione misurata e posizione calcolata dal software Coordinate misurate [m] Coordinate calcolate dal software [m] [-0.50; 3] [-0.482; 2.99] [-0.50; 3.50] [-0.466; 3.497] [0.80; 3.60] [0.865; 3.646] [-0.50; 4.53] [-0.442; 4.48] [0.80; 4.53] [0.836; 4.495] [0.30; 5.03] [0.352; 5.00]

L’errore medio di misura lungo l’asse x è di 4 cm, è possibile osservare che l’errore lungo questo asse aumenta con la distanza del punto considerato dalla fotocamera. Per quanto riguarda le misure effettuate lungo l’asse z, è possibile osservare che l’errore si mantiene pressoché costante al variare della profondità del punto dalla camera. Occorre effettuare un’ultima considerazione: le coordinate misurate sono state ricavate tramite misure effettuate con il metro, sono quindi anch’esse affette da errore. Per ricavare la posizione reale dei punti considerati occorre utilizzare degli strumenti di misura più precisi (es. laser).

EFFETTI DELL’ALTEZZA E DELL’INCLINAZIONE DELLA FOTOCAMERA SUI PARAMETRI

Tutti i parametri ricavati in fase di calibrazione dipendono dall’altezza in cui è posizionata la fotocamera e dall’inclinazione rispetto al terreno.

Facendo riferimento alla Figura 21 e Figura 22, si indichi con: • 𝛽 inclinazione della fotocamera rispetto al terreno • 𝛼 semi-angolo di visuale verticale

• 𝛾 semi-angolo di visuale orizzontale della fotocamera • 𝑑0 profondità del primo punto visibile nella foto • ℎ altezza della fotocamera da terra

• 𝑥0 ascissa del primo punto del piano visibile nella foto

(42)

41

𝑑0 = ℎ ∙ 𝑐𝑜𝑡𝑔(𝛼 + 𝛽)

𝑥0 = 𝑑0∙ 𝑡𝑔(𝛾)

Per verificare gli effetti diretti sui parametri di calibrazione sono state effettuate delle prove variando l’angolo di inclinazione 𝛽, i risultati sono visibili nella Figura 29 Andamento della distanza iniziale e delle coordinate del punto di fuoco in funzione dell'inclinazione della fotocamera. È possibile osservare che il punto di fuoco è notevolmente influenzato dalle variazioni di 𝛽. La forte pendenza di 𝑝𝑓(𝛽) non consente di ricavare con precisione 𝑝𝑓 a partire dalla conoscenza di 𝛽, in quanto piccoli errori nella

(43)

42

Figura 29 Andamento della distanza iniziale e delle coordinate del punto di fuoco in funzione dell'inclinazione della fotocamera

COMPENSAZIONE CON GIMBAL

Per limitare l’inconveniente legato all’inclinazione della camera è stato utilizzato uno stabilizzatore a 3 assi, che consente di mantenere costante l’assetto della fotocamera. L’inclinazione della fotocamera durante la fase di calibrazione è stata ricavata con l’ausilio di una IMU.

Il gimbal utilizzato è uno stabilizzatore per GoPro a 3 assi della Feiyutech. Per verificare l’efficacia dello strumento sono state effettuati tre test:

• variazione dell’angolo di rollio; • variazione dell’angolo di beccheggio; • variazione dell’angolo di imbardata.

L’obiettivo è tenere costanti gli angoli di rollio e di beccheggio in tutti i test effettuati. Le prove sono state effettuate con l’ausilio di un’unità inerziale, alloggiata nello scompartimento in cui solitamente si installa la fotocamera. È stato osservato che in media l’angolo di beccheggio si discosta di 0.1° dal valore iniziale. L’angolo di rollio si

(44)

43

discosta in media di 0.15° rispetto al valore iniziale. Nella Figura 30 Errore di misura al variare della profondità del punto selezionato dalla fotocamera e del discostamento dell'inclinazione della camera rispetto all'inclinazione della fotocamera durante la calibrazioneFigura 30 è possibile osservare l’andamento degli errori di misura lungo i due assi, al variare della profondità del punto selezionato rispetto alla fotocamera e al variare del discostamento dell’inclinazione della fotocamera rispetto a quella usata in fase di calibrazione. Il fattore che principalmente influenza gli errori di misura è la variazione dell’inclinazione della fotocamera rispetto al valore impostato durante la calibrazione (Tabella 3). Gli errori di misura sono maggiori lungo l’asse y, piuttosto che lungo l’asse x.

Per avere delle misure affidabili, è necessario dotare il gimbal di una unità inerziale. In questo modo è possibile effettuare delle correzioni in catena chiusa dei parametri di calibrazione al variare di 𝛽. Dalla Figura 29è possibile ricavare le coordinate del punto di fuoco e la distanza minima misurata in funzione di 𝛽. Dai grafici si può osservare che piccole variazioni di 𝛽 rispetto al valore assunto durante la calibrazione provocano una piccola variazione delle coordinate del punto di fuoco. Grazie a questo comportamento, sarà possibile aggiornare i parametri di calibrazione al variare dell’angolo 𝛽.

Per aumentare il range di misura, è sufficiente inclinare verso il terreno la fotocamera: in questo modo diminuisce la distanza del primo punto visibile nelle foto.

(45)

44

Figura 30 Errore di misura al variare della profondità del punto selezionato dalla fotocamera e del discostamento dell'inclinazione della camera rispetto all'inclinazione della fotocamera durante la calibrazione

(46)

45

Tabella 2 Errori di misura al variare della distanza del punto selezionato dalla fotocamera Profondità [m] Errore di misura lungo

l’asse x [m]

Errore di misura lungo l’asse z [m] 2.8 0.008 0.032 3.3 0.044 0.034 4.55 0.04 0.062 5.05 0.034 0.106 5.55 0.044 0.088 6.05 0.038 0.064

Tabella 3 Errori di misura al variare della variazione dell'inclinazione della fotocamera rispetto all'inclinazione in fase di calibrazione

∆𝜷 [deg] Errore di misura lungo

l’asse x [m]

Errore di misura lungo l’asse z [m] 0 0.018 0.037 0.1 0.03 0.042 0.2 0.02 0.043 0.3 0.04 0.088 0.9 0.05 0.112 RISULTATI E CONSIDERAZIONI

Il metodo realizzato consente di determinare una griglia sul piano “visto” dalla fotocamera, in cui ogni punto è in una posizione nota rispetto alla fotocamera che dipende esclusivamente dall’orientazione e dall’altezza rispetto al terreno della camera. A differenza degli altri metodi presenti in letteratura, non sono stati utilizzati i parametri interni della fotocamera, come ad esempio la lunghezza focale. Un altro vantaggio sta nel fatto che la calibrazione viene effettuata una tantum: una volta che i parametri sono stati ricavati, non è necessario effettuare una nuova calibrazione prima dell’utilizzo della fotocamera in quanto la griglia costruita resta invariata. Il metodo implementato, a differenza della stereoscopia, è indipendente da fattori ambientali quali la luminosità. Consente inoltre di ottenere delle misure affidabili anche se la qualità della fotocamera usata non è ottima. Il principale svantaggio è invece la forte dipendenza dei risultati dall’inclinazione 𝛽 e dall’altezza ℎ, problema risolto con l’utilizzo dello stabilizzatore a tre assi.

COSTRUZIONE DELL’ATLANTE

A ogni immagine scattata è stato associato un piano con un sistema di riferimento caratterizzato da

(47)

46

• origine nel punto in cui è stata scattata la foto • asse y lungo la direzione ripresa dalla fotocamera • asse x perpendicolare rispetto a y e diretto verso destra

L’Atlante viene ricavato tramite la sovrapposizione di tutti i piani associati alle foto scattate.

CALCOLO DELLE DIMENSIONI E DELL’ORIENTAZIONE DEI PIANI

La dimensione dei piani dipende dall’ampiezza dell’angolo di visuale della fotocamera e dalla distanza massima misurabile lungo l’asse y. Quest’ultimo parametro dipende dalla modalità con cui è stata effettuata la calibrazione: è dato dalla profondità dell’ultimo punto preso come riferimento per il calcolo della funzione 𝑓(𝑦𝑝𝑖𝑥𝑒𝑙). Nel nostro caso le dimensioni dei piani sono

• 4.5 metri lungo l’asse x • 3.8 metri lungo l’asse z.

L’Atlante è stato ricavato in simulazione:

• sono stati generati due vettori di posizione 𝑥 𝑒 𝑧, che indicano la posizione della fotocamera nell’istante in cui sono state acquisite le immagini;

• per ogni foto scattata è stato ricavato l’angolo di rotazione 𝜃 attorno all’asse z, rispetto alla foto scattata in precedenza;

• ad ogni foto è stato associato un piano di dimensioni 4.5x3.8 m2 con inclinazione 𝜃

• sono stati sovrapposti i vari piani.

La rotazione 𝜃 della fotocamera è stata ricavata con la formula

𝜃𝑖 = 𝑎𝑡𝑎𝑛2 ((𝑂𝑧𝑖−1− 𝑂𝑧𝑖), (𝑂𝑥𝑖−1− 𝑂𝑥𝑖))

con 𝑂𝑥𝑖 e 𝑂𝑧𝑖coordinate dell’origine dell’i-esimo piano, espresse in un sistema di

riferimento globale. Nel caso in cui si abbia a disposizione una IMU, è possibile eliminare dall’algoritmo il calcolo della rotazione e misurare direttamente l’assetto della fotocamera.

(48)

47

Errore. L'origine riferimento non è stata trovata.

Figura 31 Atlante CALCOLO DEL RIFERIMENTO

L’obiettivo finale è quello di ricavare una traiettoria di riferimento da fornire all’AGV, che rappresenta i punti in cui deve essere tracciata la segnaletica. Una volta che è stato ricavato l’Atlante, sarà possibile tracciare i riferimenti direttamente su lla mappa. Attualmente il riferimento è ricavato con la seguente procedura:

• selezione nella prima foto scattata di un punto sul piano: il punto rappresenta l’inizio della striscia. In alternativa si può fornire una posizione desiderata rispetto alla fotocamera e ricavare le corrispondenti coordinate sull’immagine;

• calcolo delle coordinate del punto rispetto a un sistema di riferimento solidale alla fotocamera;

• la traiettoria del punto viene ricavata traslando la traiettoria seguita dalla fotocamera durante la fase di acquisizione delle immagini.

Se il camion riesce a seguire una traiettoria priva di oscillazioni, allora la traiettoria calcolata può essere utilizzata come riferimento

(49)

48

(50)

49

Se il camion segue una traiettoria in cui sono presenti oscillazioni marcate, allora sarà necessario filtrare opportunamente la traiettoria ricavata.

SVILUPPI FUTURI

Durante la realizzazione dell’algoritmo è stata effettuata l’ipotesi che l’AGV dovrà tracciare le strisce ex-novo in strade extra-urbane. Secondo le Norme funzionali e

geometriche per la costruzione delle strade il raggio di curvatura minimo per le strade in

questione è di 178m. Sfruttando questa ipotesi sarà possibile effettuare un filtraggio del riferimento tramite il calcolo di un’approssimazione ai minimi quadrati dei punti ricavati, rispettando il limite imposto dal raggio di curvatura minimo.

L’obiettivo finale del progetto è la realizzazione di un veicolo completamente autonomo: l’AGV non sarà più collegato al camion, ma svolgerà tutte le operazioni in maniera autonoma. Per fare questo è necessario implementare un sistema di mappatura e localizzazione dell’AGV. Attualmente sono disponibili diverse attrezzature e algoritmi SLAM (Simultaneous Localization And Mapping) che consentono di raggiungere tale obiettivo.

CONCLUSIONI

Gli algoritmi implementati sono stati pensati per il particolare caso di inter esse, consentendo di raggiungere gli obiettivi prefissati. L’algoritmo utilizzato per il calcolo del riferimento di traiettoria nel caso di ripasso delle strisce consente di identificare e localizzare la striscia in tempi tali da rendere utilizzabile il software in tempo reale. Se il rumore presente nelle foto non supera i limiti stabiliti durante i test di simulazione, è possibile stabilire la posizione della striscia con una precisione elevata.

Per quanto riguarda il lavoro sviluppato per la mappatura degli ambienti, è stato sviluppato un software che, a differenza degli algoritmi presenti in letteratura, è completamente indipendente dai parametri interni della fotocamera e dalle condizioni ambientali in cui vengono scattate le foto. Questo lo rende utilizzabile anche in ambienti in cui la luminosità non è elevata. L’algoritmo è utilizzabile in qualsiasi ambiente controllato che rispetta le condizioni imposte per l’utilizzabilità, ossia piano con pendenza costante e privo di ostacoli. In una fase futura del progetto, si può pensare

(51)

50

alla realizzazione di un veicolo completamente autonomo. Questo richiederebbe l’implementazione di un algoritmo per la mappatura dell’ambiente e la localizzazione simultanea del veicolo.

(52)

51

APPENDICE

STEREOVISIONE

Uno dei problemi più importanti in computer vision è determinare la posizione e l’orientazione di due fotocamere, a partire dalla conoscenza delle coordinate 2-D di punti visibili nelle foto scattate. Per risolvere questo problema si ricorre alla stereoscopia. Un sistema stereoscopico è costituito da due fotocamere, di cui sono noti i parametri intrinseci ed estrinseci. Tramite la combinazione delle informazioni ricavate dalle immagini scattate dalle due fotocamere, è possibile ricavare la posizione di tutti i punti visibili in entrambe le foto rispetto a una delle due fotocamere.

Nelle zone in cui il segnale GPS è disponibile, si integrano le misure provenienti dal sistema RTK con i dati forniti dalla fotocamera, associando a ogni punto visibile nelle immagini scattate una coordinata GPS.

SISTEMA STEREOSCOPICO

Un sistema stereoscopico è costituito da due fotocamere, che acquisiscono immagini in contemporanea. La geometria del sistema è rappresentata nella Figura 33

Riferimenti

Documenti correlati

Calcolare l’energia cinetica che possiede un oggetto di massa m=50 kg che cade da una altezza h=10m quando esso raggiunge il suolo.

Il contenuto frequenziale delle immagini portrait, landscape, architectural, etc e' diverso, mentre un classico algoritmo di sharpening esalterebbe tutte le frequenze che

© The Author(s). European University Institute. Available Open Access on Cadmus, European University Institute Research.. does on the contrary increase tension

L’idea nasce dalla necessità di avere a disposizione, in viticoltura, un veicolo autonomo di piccole dimensioni, per ridurre l’impatto ambientale, i costi di esercizio e

L’implementazione di queste logiche avviene a partire dalla funzione parametrize- Cell (algoritmo 4.6), la quale, come anticipato, oltre a parametrizzare la traiettoria (contenuta

Questa vulnerabilità (LDAP Injection) riguarda la gestione delle query di tipo LDAP che vengono effettuate dalle applicazioni e che potrebbero essere utilizzate in modo improprio da

Si può notare, sulla base di quanto detto, che gli errori sistematici sono legati al grado di accuratezza con cui viene effettuata la misura, mentre quelli accidentali sono

pp.. parametri per concretizzare la sussistenza della responsabilità del produttore 252 , nel contesto europeo la descritta teoria ha ottenuto convinto supporto da parte di