Descrizione della procedura di stazza sviluppata
Premesso che la prima operazione da effettuare consiste nella calibrazione del sistema, ampiamente descritta nel capitolo 3, per meglio descrivere l’intera procedura, possiamo suddividerla nelle seguenti fasi principali, che verranno discusse in maniera più dettagliata nei paragrafi seguenti:
• Pianificazione dell’acquisizione • Acquisizione delle singole patches • Allineamento delle nuvole di punti
• Elaborazione dei dati attraverso lo “IMS toolbox”
5.1 Pianificazione dell’acquisizione
Il sistema messo a punto durante questo lavoro di tesi è nato come alternativa all’HMI per la misura a terra di scafi da stazzare secondo il regolamento IMS; si rivolge, quindi, alla misurazione di imbarcazioni che mediamente hanno una LOA maggiore di sette metri ed un peso superiore alla tonnellata, cioè ad “oggetti” che è impossibile movimentare senza l’ausilio di una gru (o di un travel lift) e senza una notevole perdita di tempo: la scelta di movimentare il sistema di acquisizione piuttosto che lo scafo risulta, quindi, quasi obbligata. Date le notevoli dimensioni della superficie da acquisire, si capisce come sia impossibile rilevarla tutta con un unico posizionamento del sistema di
visione, perciò prima di iniziare la fase di acquisizione vera e propria è necessario fare alcune valutazioni sui possibili posizionamenti in relazione alla capacità di poter poi rilevare tutte le parti indicate dal regolamento IMS con maggiore facilità e precisione.
Lo scafo utilizzato per questa campagna di prove sperimentali è quello di Asell, una barca progettata negli studi della Vismara Yacht Design (Figura 5.1). Si tratta di un progetto innovativo soprattutto per quanto riguarda le possibilità di utilizzo di quest’imbarcazione, infatti non si tratta del solito 34' da regata, scomodo e spartano, ma di un racer semi-custom utilizzabile anche in crociera. Questa duplice possibilità di utilizzo non è comunque andata a scapito delle prestazioni, garantite da una carena e da appendici molto efficienti e da materiali e tecniche costruttive all’avanguardia.
Prima di effettuare i posizionamenti definitivi del sistema di visione, bisogna sempre controllare che la zona di lavoro attorno allo scafo sia sufficientemente ampia per potersi spostare liberamente intorno allo stesso mantenendo sempre una distanza di acquisizione che sia almeno prossima a quella a cui è stato calibrato il sistema. Si capisce quindi come la distanza di calibrazione dipenda dalle dimensioni dello scafo da acquisire; nella prova che verrà descritta nel seguito, il sistema era calibrato per lavorare ad una distanza di cinque metri, basti pensare che il piano di coperta dell’imbarcazione (che durante la fase di misura si trova su un invaso) era a quattro metri sopra il livello del suolo.
Per acquisire tutta la superficie dello scafo e delle sue appendici sono stati necessari ventotto posizionamenti del sistema di visione, quattordici per lato dello scafo; si è proceduto da poppa verso prua, cercando di limitare la sovrapposizione delle singole patches (non necessaria per il successivo allineamento delle nuvole e dannosa per il riallineamento dello scafo secondo i suoi assi principali).
5.2 Acquisizione delle singole Patches
5.2.1 Scansione
Il processo di scansione avviene in modo automatico attraverso un programma scritto in Matlab® che gestisce, contemporaneamente, le due telecamere per l’acquisizione delle immagini e lo stepper motor necessario per movimentare il piano di luce laser. Il numero di immagini salvate dalle telecamere è pari al doppio (metà per la telecamera sinistra e metà per quella destra) del numero di linee laser usate per spazzolare la scena; il numero di queste ultime viene impostato settando il passo angolare dello stepper motor e dipende dalla risoluzione (intesa come numero di punti per unità di area) con cui si vuole acquisire la superficie dello scafo. Le dimensioni della superficie interessata dal movimento del piano laser (2LxH) dipendono dalla distanza a cui si pone il sistema di visione rispetto all’oggetto (D) e dall’angolo di scansione (2a) (Figura 5.2); da notare che l’altezza H sarebbe in teoria infinità, ma in realtà è limitata dallo sfocamento della lama laser verso le estremità e dalla curvatura dell’oggetto da acquisire (Figura 5.3).
Figura 5.3 Effetto della curvatura dello scafo sulla lama laser
Per facilitare il compito dell’operatore, è stata creata una semplice interfaccia grafica (GUI) da cui si possono regolare tutti i parametri necessari (Figura 5.4).
La prima fase consiste nel settare, attraverso la GUI, il percorso, la radice del nome della serie ed il tipo di immagine che verrà salvata dalle due telecamere (per esempio, per la camera destra, C:\immagini_scafo_laser\stazione_3\img_dx51.bmp); la seconda operazione da compiere consiste nel settare l’ampiezza angolare del movimento dello stepper motor ed il suo verso di rotazione. A questo punto è possibile avviare la scansione.
5.2.2 Elaborazione digitale delle immagini
Il processo di elaborazione delle immagini riveste un ruolo di particolare importanza all’interno di tutto il processo di ricostruzione tridimensionale, infatti è proprio in questa fase che avviene la codifica delle immagini. Esso è gestito tramite la stessa routine e la stessa GUI utilizzata durante la fase di scansione e consiste nell’estrazione delle linee laser dalle immagini acquisite nella fase precedente, secondo quanto spiegato nel paragrafo 3.3.2. Per ogni coppia di immagini è inoltre possibile visualizzare un’anteprima della linea estratta (Figura 5.5), consentendo all’operatore di modificare i parametri di estrazione nel caso in cui la stessa non risulti efficace.
5.2.3 Generazione della nuvola di punti
Tenendo conto di quanto riportato nei paragrafi 3.2.3-4 e 3.3 e dopo aver fornito al programma i parametri di calibrazione e la matrice fondamentale, esso è in grado di determinare le coordinate spaziali dei punti appartenenti alla superficie scansita. Al termine di questa operazione il programma fornisce una terna di coordinate XYZ per ogni punto processato, l’insieme dei quali costituisce la cosiddetta nuvola di punti o shell (Figura 5.6).
Figura 5.6 Nuvola di punti ottenuta da una singola scansione
5.3 Allineamento delle nuvole di punti
Dopo aver effettuato la scansione di tutte le parti in cui è stata idealmente suddivisa la superficie dello scafo, è necessario riunire tutte le nuvole di punti in un unico sistema di riferimento solidale allo scafo. Come è gia stato accennato, il problema è stato risolto durante un altro lavoro di tesi, si veda a proposito [8]. Il risultato finale è rappresentato in Figura 5.7.
Figura 5.7 Nuvola di punti completa
5.4 Elaborazione della nuvola di punti attraverso lo “IMS Toolbox”
Lo IMS Toolbox, sviluppato nell’ambito di questa tesi, è costituito da una serie di M-files di Matlab® che consentono di operare sulla nuvola di punti completa dello scafo, con lo scopo di ottenere le misure indicate nel regolamento IMS e necessarie per la stazza dell’imbarcazione.
Mentre lo stazzatore rileva queste misure direttamente sullo scafo, lo IMS Toolbox permette di ottenerle dalla sua nuvola di punti.
I file principali contenuti nel Toolbox sono i seguenti:
• Pca_def, consente di riallineare la nuvola di punti dello scafo al sistema di riferimento
impostato per la stazza, facendo riferimento ai suoi assi principali
• LFT_def, calcola la LOA dello scafo a partire dalla nuvola di punti
• Baglio_def, calcola il baglio massimo dello scafo e l’ascissa del piano che lo contiene
• Sez_multiple_def, consente di effettuare una sezione qualsiasi dello scafo, con un piano
• Sez_appendici_def, consente di effettuare una sezione di qualsiasi sezioni contenente una
appendice, con un piano perpendicolare all’ asse longitudinale dello scafo
• File_off_def, programma vero e proprio che consente di ottenere il file .OFF completo a
partire dalla nuvola di punti; utilizza i file precedenti come “sottoprogrammi”
Per facilitare l’uso del programma è stata realizzata una semplice interfaccia grafica interattiva che guida l’utente dal caricamento del file che contiene la nuvola di punti, fino al salvataggio del file .OFF necessario al VPP.
5.4.1 Principal Component Analysis
Per ottenere le misure necessarie per la stazza (vedi capitolo 4) è necessario effettuare delle particolari sezioni con dei piani perpendicolari all’asse longitudinale dello scafo; per far ciò è quindi essenziale compiere due operazioni: un riallineamento della nuvola di punti in modo da portare i suoi assi principali a coincidere con quelli del sistema di riferimento di Matlab® ed una traslazione in modo da portare l’origine del sistema di riferimento nel punto previsto dal regolamento IMS (Figura 5.8).
Per riallineare lo scafo ci si avvale della Principal Component Analysis (PCA) [41]. Si consideri una popolazioni di m vettori posti nella forma
[
]
T n x x x1 2 ... = x , (5.1)il vettore media è espresso da
∑
= = m k k x m 1 1 x m (5.2) e la matrice di covarianza da∑
= − = m k T x x T k k x m 1 1 m m x x C . (5.3)Ogni vettore x della popolazione ha n elementi, quindi la matrice C sarà di ordine nxn. L’elemento cii di Cx rappresenta la varianza di xi, componente i-mo del vettore x della popolazione,
mentre l’elemento cij rappresenta la covarianza tra gli elementi xi e xj. La matrice Cx è reale e
simmetrica, quindi è sempre possibile determinare un set di n autovettori ortonormali.
Siano ei e ?i (i=1,2,…,n), gli autovettori ed i corrispondenti autovalori di Cx, organizzati in
ordine discendente, in modo che ?j= ?j+1 e sia, inoltre, A una matrice le cui righe siano formate dagli
autovettori di Cx, ordinate in modo tale che la prima riga di A sia l’autovettore corrispondente
all’autovalore maggiore e l’ultima riga quello all’autovalore minore.
Supponiamo che A sia una matrice di trasformazione che mappi il vettore x in quello y, come segue
(
x mx)
A
y = − . (5.4)
L’equazione (5.4) è nota come Trasformata di Hotelling ed ha numerose ed utili proprietà nel campo del trattamento delle immagini. Una di queste è illustrata, in un caso 2D, nella Figura 5.9, e verrà utilizzata nel seguito, previo un adattamento al caso 3D, per riallinere la nuvola di punti dello scafo.
Figura 5.9 Esempio di applicazione della equazione (5.4)
Ogni pixel dell’immagine rappresentata in Figura 5.9-a è considerato come un vettore x=(a,b)T, dove a e b sono le coordinate del pixel rispetto al sistema di riferimento X1X2. Attraverso i vettori x
è quindi possibile calcolare il vettore media e la matrice di covarianza della popolazione (in questo caso l’intera immagine), necessari per applicare la trasformazione (5.4) .
In questo modo si stabilisce un nuovo sistema di coordinate la cui origine risiede nel centroide della popolazione ed i cui assi sono orientati come gli autovettori di Cx (Figura 5.9-b); si nota
chiaramente che la trasformazione (5.4) consiste di una rotazione che allinea gli elementi della popolazione agli autovettori (Figura 5.9-c).
Estendendo questi stessi concetti al caso 3D, è stato possibile riallineare la nuvola di punti dello scafo (Figura 5.10).
Da notare che questo sistema di riallineamento non è utilizzabile quando nella nuvola sono presenti zone con elevato gradiente di densità di punti, cosa che si verifica quando le varie scansioni che compongono la nuvola hanno vaste aree di sovrapposizione; in questo caso è necessario effettuare un’operazione di sampling sulla nuvola di punti, cioè renderla omogenea ed ordinata. Per questo scopo è stato utilizzato il software Imageware della EDS, che consente di ordinare e snellire la nuvola di punti, diminuendone il numero, senza perdere le caratteristiche geometriche dell’oggetto acquisito.
Figura 5.10 Riallineamento della nuvola di punti dello scafo
5.4.2 Determinazione dei parametri di stazza
Il processo descritto nel paragrafo precedente viene svolto automaticamente dal programma dopo avervi caricato la nuvola di punti dello scafo (Figura 5.11).
Figura 5.11 Schermata di input
A questo punto l’utente viene chiamato ad introdurre una serie di dati, il più importante dei quali è sicuramente quello denominato parametro di vicinanza; esso rappresenta la semiampiezza dell’intorno del piano di sezione: tutti e soli i punti che si trovano all’interno di questo intervallo vengono proiettati sul piano di sezione per andare a costituire il profilo dello scafo (Figura 5.12 e 5.13).
Figura 5.12 Seconda schermata di input
Figura 5.13 Esempio di sezione singola
Bisogna adesso fornire al programma l’ascissa delle zone dove si trovano le appendici; in questo modo, in queste zone, oltre alle sezioni che bisogna determinare obbligatoriamente secondo il regolamento IMS, il programma effettuerà una diminuzione della distanza tra due sezioni successive (passo di campionamento), in modo da definire meglio i cambiamenti di profilo (Figura 5.14).
Figura 5.14 Selezione delle zone con appendici
Il programma esegue le sezioni e visualizza il risultato (Figura 5.15) prima di aprire la schermata che permette all’utente di effettuare la memorizzazione dei dati.
Figura 5.15 Visualizzazione grafica delle informazioni contenute nel file .OFF (in rosso è rappresentato il baglio massimo)