• Non ci sono risultati.

La piattaforma software: LabVIEW

4.3 Descrizione dei programmi realizzati

4.3.1 Angle Measure

Questo programma è stato applicato nell’operazione di piegatura della lamiera e consente di individuare due feature rettilinee nell’immagine e di calcolare l’angolo che queste formano tra di esse in real-time. Consente inoltre di calcolare il fattore di ritorno elastico K come rapporto tra l’angolo di piega finale, cioè l’angolo che si ottiene una volta rimosso il carico, e l’angolo a cui la lamiera era stata piegata, detto angolo di piega iniziale.

Il programma richiede che vengano selezionate due regioni di interesse (ROI) rettangolari in cui si prevede si trovino i bordi della lamiera interessati dall’operazione di piegatura. All’interno di queste ROI, definite in modo interattivo su una finestra esterna, viene eseguita la ricerca dei punti che caratterizzano i bordi della lamiera e da questi viene poi eseguito il fitting per ricavare le feature lineari rappresentative appunto dei due lembi di lamiera interessati dalla piegatura.

Per la realizzazione del programma si è dovuto tenere in considerazione del fatto che si vuole avere la possibilità di aumentare la velocità di acquisizione della telecamera mantenendo però fisso il campo di immagine. In questo modo non vengono variate le porzioni di feature di interesse accessibili nell’immagine.

Per ottenere questo obiettivo si è scelto di dare la possibilità all’utente di ridurre la risoluzione verticale dell’immagine attraverso il comando “Vertical Binning”. Questo comando, attraverso un menu a tendina, permette di scegliere uno tra i valori di riduzione (che vanno da 1 ad 8) consentiti dalla telecamera. Il valore scelto viene aggiornato in automatico dal programma per correggere i valori risultanti dall’individuazione delle feature lineari perché si tenga conto della riduzione di scala verticale eseguita nell’immagine. Le variabili in ingresso alla funzione di calcolo dell’angolo consentiranno dunque di ottenere una misura corretta.

Il Front Panel del programma è mostrato nella Figura 4.23, qui si possono vedere i controlli e gli indicatori principali. Una parte dei controlli sono contenuti nel menu a schede (tab menu), si citano i controlli principali: “Session In” che permette di selezionare il dispositivo di visione da usare per l’acquisizione delle immagini; “Acquisition Frequency” attraverso cui si imposta la frequenza di acquisizione (quando viene scelto il valore nullo l’acquisizione viene eseguita alla massima velocità consentita dalla telecamera); “Vertical Binning” che permette di impostare il valore di riduzione della risoluzione verticale ed il comando “Stop” che fa terminare il programma. Per quanto riguarda gli

58

indicatori, invece, si nota il “Display” nel quale vengono visualizzate in real-time le immagini acquisite e le feature lineari individuate; si notano anche gli indicatori numerici che riportano, sempre in real-time, i valori calcolati dell’angolo e del fattore di ritorno elastico K.

Figura 4.23 Front Panel del programma Angle Measure.

Il codice realizzato è strutturato nel modo illustrato dal diagramma di flusso di Figura 4.24.

Figura 4.24 Diagramma di flusso del programma Measure Angle

INPUT: Immagine Acquisita Definizione ROI Localizzazione Feature Lineari Misura Angolo Salvataggio Dati OUTPUT: Angolo, fattore K

59

Tutto il codice è contenuto in un unico While Loop, escluse le inizializzazioni necessarie per l’acquisizione delle immagini e per il salvataggio dei dati e per la chiusura di queste sessioni. Lo svolgimento sequenziale delle funzioni implementate dai sottosistemi sopraelencati avviene per ogni immagine acquisita, dunque l’esecuzione viene ripetuta con un loop infinito fino all’azionamento del comando “Stop”.

Le funzioni di inizializzazione effettuate prima del ciclo while (vedi Figura 4.25) e le funzioni di chiusura svolte dopo di questo (vedi Figura 4.26), nel momento in cui lo si fa terminare attraverso il comando “Stop”, sono le seguenti:

IMAQdx Open Camera: apre una connessione con la telecamera selezionata nel Front Panel e carica le impostazioni di acquisizione salvate nella memoria della telecamera stessa.

IMAQdx Configure Grab: permette di salvare nella memoria della telecamera eventuali modifiche apportate ai parametri di acquisizione ed invia un segnale alla telecamera per dare inizio all’acquisizione in continuo.

IMAQ Create: crea uno spazio temporaneo in memoria da poter utilizzare per il salvataggio dell’immagine ad ogni ciclo.

Open/Create/Replace File: accede ad una allocazione di memoria per aprire un file esistente, creare un nuovo file o rimpiazzare un file esistente. Il percorso di allocazione seguito in questo programma viene definito in modo interattivo attraverso una finestra di dialogo che appare nel Front Panel quando si dà il via all’esecuzione del programma.

60

IMAQdx Close Camera: ferma e chiude la sessione di acquisizione di immagini rendendo disponibile la telecamera ad altri programmi.

Close File: chiude il file aperto in precedenza consentendone la modifica da parte di programmi esterni, oltre che la sola lettura.

Figura 4.26 Porzione di codice raffigurante le funzioni che vengono implementate una volta terminato il While Loop.

Come si nota in Figura 4.26, dopo la chiusura delle sessioni si ha, nell’eventualità si sia verificato un errore durante l’esecuzione, la generazione di un messaggio che riporta il codice dell’errore che si è riscontrato.

La parte di codice contenuta nel ciclo while segue, come detto, il diagramma di flusso di Figura 4.24, e viene presentata blocco per blocco qui di seguito.

- Definizione ROI

La parte di codice inerente la selezione delle regioni di interesse rettangolari viene scritta utilizzando la struttura Case, cioè una struttura contenente due o più sottodiagrammi di codice, detti casi. In essa è visibile solo uno dei sottodiagrammi alla volta e viene eseguito solo un caso alla volta. Un valore di ingresso determina quale caso deve essere eseguito. La struttura Case è la corrispondente della struttura If…Then…Else dei linguaggi di programmazione testuali.

La determinazione del sottodiagramma da eseguire viene fatta, in questo VI, attraverso un controllo booleano. Quando il controllo viene azionato nel Front Panel viene eseguita la porzione di codice che consente la selezione della ROI in una finestra esterna contenente l’ultima immagine acquisita. Se, invece, non si aziona il controllo viene mantenuta la definizione della regione di interesse che si aveva nel ciclo precedente.

In Figura 4.27 è illustrata la scheda del Front Panel contenente i comandi per la selezione delle ROI e con gli indicatori che ne visualizzano le caratteristiche.

61

Figura 4.27 Scheda del Front Panel in cui si trovano i controlli booleani per la selezione delle ROI e gli indicatori che visualizzano

i parametri della selezione effettuata.

La scelta di utilizzare questa struttura è stata fatta allo scopo di non dovere definire per ogni immagine analizzata le ROI, perdendo di fatto le caratteristiche di real-time del programma. Una volta definite le due regioni di interesse, infatti, queste rimangono costanti per tutte le immagini acquisite fino a che non si riattiva il controllo per la selezione delle ROI per una nuova definizione. Per mantenere una certa flessibilità del programma a variazioni durante l’esecuzione, le due regioni di interesse vengono determinate in strutture Case distinte, utilizzando comandi distinti, per lasciare la libertà di poterne modificare anche solo una delle due, vedi Figura 4.28.

Figura 4.28 Porzione di codice per la definizione delle due ROI. Sopra si vede il sottodiagramma che viene eseguito quando viene

azionato il controllo “Select 1st ROI”. Sotto si vede il sottodiagramma che viene eseguito quando il controllo “Select 2nd ROI” non viene azionato. Si noti in questo caso l’utilizzo di una variabile locale per richiamare la definizione del ciclo precedente. Per

62

- Localizzazione Feature Lineari

All’interno delle regioni di interesse definite nello step precedente viene eseguita la ricerca dei punti del bordo del lembo di lamiera in esame. La ricerca viene fatta sfruttando gli algoritmi di Edge Detection presentati. I punti di bordo individuati vengono poi interpolati con una funzione di fitting lineare per ottenere una feature rappresentativa del bordo della lamiera.

Le attività di ricerca e di fitting dei punti trovati vengono implementate in contemporanea dalla funzione IMAQ Find Edge che restituisce in output l’equazione della retta interpolatrice calcolata, questa funzione viene applicata in sequenza ad entrambe le ROI determinate, vedi Figura 4.29. Inoltre questa funzione consente di visualizzare tale retta sovrapposta all’immagine analizzata nel “Display” del Front Panel. Si possono visualizzare anche le linee di ricerca ed i punti di bordo localizzati. In questo modo si può avere un riscontro visivo che consente di valutare qualitativamente se il programma sta effettivamente individuando il bordo di interesse.

Figura 4.29 Porzione di codice per la localizzazione di feature lineari. Si notino in input ad ognuna delle due funzioni IMAQ Find

Edge le icone dei controlli per il settaggio delle opzioni di ricerca del bordo e di fitting dei punti trovati. In output della seconda si

vede l’indicatore “Image” relativo al Display del Front Panel.

Nel Front Panel sono state riservate due schede del tab menu per il posizionamento dei controlli per il settaggio dei parametri di ricerca e di fitting dei punti del primo e del secondo bordo rispettivamente, come mostrato in Figura 4.30. Questi controlli sono stati presentati nel paragrafo inerente all’Edge Detection.

Si noti sulla colonna di destra del riquadro “Options 1st Edge” la possibilità di selezionare gli elementi da visualizzare nel “Display” ed il colore per la loro rappresentazione.

63

Questa funzionalità di visualizzazione si è rivelata molto utile durante l’esecuzione del programma per l’impostazione delle opzioni di ricerca e fitting dei punti, oltre che per la valutazione della correttezza della feature individuata.

Figura 4.30 Scheda del Front Panel in cui si trovano i controlli per impostare i parametri di ricerca e di fitting dei punti del bordo

della lamiera.

- Misura Angolo

Questa parte di codice è stata realizzata sfruttando la funzione IMAQ Lines Intersection che calcola il punto di intersezione e l’angolo tra due feature lineari. Questa funzione richiede in input l’equazione rappresentativa di due rette definite ognuna attraverso le coordinate dei loro punti iniziale e finale. Per fornire i dati corretti in input a questa funzione è necessario dunque, come detto sopra, eseguire una correzione delle coordinate verticali dei punti ricavati nello step precedente in modo da tenere in considerazione di una eventuale variazione di scala in direzione verticale.

La correzione viene fatta sfruttando le “Locale Variable” di lettura, cioè delle funzioni che richiamano un valore determinato o tramite un controllo, come nel presente caso, o ricevuto in output da una funzione. L’utilizzo di questa soluzione permette al programma di adattarsi a qualsiasi valore di binning verticale stabilito e di eseguire in automatico la correzione necessaria a non eseguire calcoli errati a causa del cambio di risoluzione in direzione verticale.

64

Figura 4.31 Porzione di codice raffigurante la correzione di coordinate eseguita e la misura dell’angolo tra le feature lineari.

- Salvataggio Dati

Anche in questo caso è stata utilizzata la struttura Case comandata da un controllo booleano chiamato “Save Data”. In questo caso una volta azionato il controllo questo rimane attivato finché non viene cliccato una seconda volta. Attraverso questo controllo si ha la possibilità, durante l’esecuzione del programma, di avviare ed arrestare il salvataggio, su un file di testo, di tutti i valori dell’angolo misurati istante per istante e per ognuno di essi salvare il riferimento temporale della misura.

La precisione raggiunta da questo programma nella misura dell’angolo e in quella del fattore di ritorno elastico K durante l’operazione di piegatura dipende principalmente dalla rappresentatività delle feature lineari individuate dalle funzioni. Queste a loro volta dipendono in primis dalle zone accessibili di lamiera scelte per la loro localizzazione e dai parametri di ricerca e di fitting impostati. Questi devono essere stabiliti in modo accurato tenendo conto delle condizioni di illuminazione, variabili durante l’esecuzione, e del contrasto dell’immagine.