Progetto realizzato per il laboratorio di Meccatronica presso l'Università politecnica delle Marche
corso di laurea Ing. Informatica e dell'Automazione.
Il prototipo del misuratore è stato costruito con una StereoCamera collegata tramite USB alla Raspberry Pi 3.
I due elementi sono poi stati fissati ad un supporto metallico per consentire una maggiore stabilità in fase di misurazione.
Per quanto riguarda il processo che ha portato allo sviluppo del software ci si è basati sui seguenti passaggi:
- -Calibrazione
- Le matrici ottenute non sono state confrontate con gli effettivi parametri della StereoCamera a causa di mancaza di Datasheets. Per maggiore affidabilità dei risultati è stata quindi condatta una calibrazione anche con il toolboox di MatLab.
- -Rettificazione
-
Le immagini sono state in seguito rettificate affinchè punti omologhi potessero trovarsi sulla stessa line epipolare (linea in giallo in figura).
- -Detect del laser
-
La ricerca del PUNTATORE laser avviene utilizzando lo spazio di colori RGB; In particolra il range di ricerca è tra il rosso puro e il bianco, quest'ultimo dovuto alla lucentezza del puntatore.
Per limitare disturbi derivanti dalla scena la ricerca è stata coinata in una ROI(Region of interest).
- -Distanza
-
Dalla teoria sappiamo che la distanza di un punto P della scena, viene calocolata per tringolazione attraverso la seguente formula:
distance(P) = B*f / disp (form 1)
- B = è la baseline cioè la distanza tra i centri ottici delle due fotocamere
- f = distanza focale
- disp = valore di disparity cioè la differenza tra le coordinate x dei punti omologhi nell immagine di destra e sinistra.
- Trovato il puntatore laser sia nell immagine di destra che in quella di sinistra sono state considerate le cordinate xR e XL.
- Successivamente è stata calcolata la differenza tra le due coordinate, il valore ottenuto raffigura la disparity tra punti omologhi: disp = |xL - xR|
- ripetendo questi passaggi per distanze su un range da 20cm a 80cm , è stato poi overfittato generando il polinomio specifico.
Cosi facendo è stato generato il valore 5253. Questo ha permesso di riscrivere la form 1 (vista sopra) in questo modo:
distance(P) = 5253 / disp.
Di seguito posto il calcolo di un punto P nella scena:
Il software è stato scritto interamente in linguaggio python
Per poter utilizzare l'applicativo è necessario scaricare la cartella Ranspberry e avviare il file Ranspberry/Misuratore/Main.py.
Attenzione!
L'applicativo richiama le matrici di calibrazione e rettificazione della StereoCamera connessa alla raspberry.
Nella cartella qui pushata ci sono i file .npy relativi alla StereoCamera da me utilizzata.
(Possiamo trovarli rispettivamente nella cartella Ranspberry/ResultCalib e Ranspberry/ResultRect)
Per cui per poter utilizzare il software con una StereoCamera differente è bene generare le matrici di calibrazione e rettificazione ad hoc.
Per poterlo fare è possibile utilizzare i tools Ottieni_matrici_calibrazione.py e Ottieni_matrici_rettificazione.py, e seguire le varie istruzioni presentate nella parte GESTIONE.