Capitolo 2 Il sistema di visione
Il sistema di visione costituisce l’unico sensore eterocettivo montato sul MANUS , cioè l’unico strumento che sia in grado di fornirgli informazioni sull’ambiente circostante, in particolare sulla posizione e l’orientamento degli oggetti da manipolare. Gli altri sensori , come gli encoder montati sui giunti , sono invece sensori propriocettivi , che informano il robot sul proprio stato. In applicazioni di robotica assistiva la presenza di almeno un sensore eterocettivo è necessaria per poter realizzare compiti caratterizzati da spiccata autonomia . In questo capitolo verrà analizzato il sistema di visione per il MANUS a partire dalle componenti che lo implementano : verrà prima presentato l’hardware , costituito dalla telecamera , dal trasmettitore montato su di essa , dal ricevitore che ne ricostruisce il segnale e dalla scheda di acquisizione video che lo trasforma in informazione digitale . Seguiranno poi due possibili approcci per estrarre da questa informazione le posizioni tridimensionali che corrispondono ai punti dell’immagine , in modo da poter realizzare correttamente il grasping dell’oggetto : il primo è costituito da un modello matematico basato sulle leggi della geometria della formazione dell’immagine , il secondo è una ricostruzione per punti del mapping 3D2D realizzato dalla telecamera . Infine si descriverà il programma di elaborazione dell’immagine e di riconoscimento del contorno, che utilizza il pacchetto IMAQ di LABVIEW e alcuni algoritmi in MATLAB precedentemente sviluppati presso il DIIGA [2] .
2.1 La telecamera utilizzata
Gli approcci possibili quando si deve scegliere un sistema di visione per il grasping sono a telecamera fissa , o eye to hand , e a telecamera mobile solidale ad un link del robot , o eye in hand . In questo lavoro si è optato per la soluzione eye in hand , con la telecamera montata sul link 4 del robot , l’unico per il quale non vi fosse rischio di collisione . Nella scelta della telecamera si è pensato a soddisfare i seguenti requisiti :
ingombro minimo , in modo da non avere collisioni durante la chiusura del robot nella configurazione di riposo ( fold-in ) . Si vedrà infatti nei capitoli 4 e 5 che l’ingombro dei bracci è progettato in modo tale che , durante il moto , alcuni link si sfiorino senza mai collidere , come ad esempio il link 2 ed il link 4.
assenza di cavi , che limitino la mobilità dei giunti durante il moto. Le coppie rotoidali del MANUS hanno un angolo di rotazione illimitato e possono compiere più di un giro perché non hanno fine-corsa : la presenza di cavi di alimentazione o di trasmissione del segnale , in queste condizioni , può portare a situazioni critiche che danneggiano il robot o i cavi stessi.

Figura 2.1 La microcamera wireless ALM-2451G
Per questi motivi la scelta è caduta sulla microcamera wireless ALM 2451G prodotta dalla Aliveal Enterprise , che è concepita per applicazioni di video-sorveglianza a circuito chiuso e presenta quindi anche un costo contenuto : che nel capitolo precedente si è visto che questo è un requisito importante per un sistema robotico assistivo . Le caratteristiche salienti della ALM 2451G sono indicate in tabella 2.1 .
Tabella 2.1 : Le caratteristiche della telecamera dichiarate dal costruttore
|
Telecamera wireless ALM-2451G e trasmettitore integrato |
|
|
|
Caratteristiche generali: |
|
Dimensioni: |
|
|
Peso: |
11g |
|
Tensione di alimentazione: |
4.8-7.2 V con alimentatore dedicato o 9V con batteria |
|
Corrente di alimentazione: |
140mA |
|
|
Caratteristiche della telecamera |
|
Caratteristiche del CCD: |
1/3’’ CMOS a colori |
|
Numero di Pixels: |
365.000 in modalità PAL e 250.000 in modalità NTSC |
|
Risoluzione orizzontale: |
380 TV lines |
|
Illuminazione minima: |
inferiore a 5 LUX |
|
Lunghezza focale nominale: |
3.6mm |
|
Caratteristiche obiettivo: |
focale F2.0 e angolo di vista 92° (60°) |
|
Tempo di esposizione: |
automatico da 1/60 a 1/2000 sec |
|
Caratteristiche del trasmettitore |
|
|
Range di trasmissione: |
300m in linea d’aria in assenza di ostacoli |
|
Potenza di uscita RF: |
10mW |
|
Caratteristiche antenna: |
omnidirezionale a 360° |
|
Caratteristiche trasmissione: |
canale singolo a 2.4GHz |
|
|
Caratteristiche del ricevitore |
|
Dimensioni: |
|
|
Tensione di Alimentazione: |
12V |
|
Corrente assorbita: |
180mA |
|
Frequenza di ricezione: |
2.4Ghz |
|
Caratteristiche antenna: |
direzionale a 60° (necessità di orientare il ricevitore) |
|
Segnale di uscita |
|
|
Caratteristiche opzionali |
|
|
Microfono integrato |
|

Figura 2.2 : Il ricevitore della microcamera ALM-2451G
Come spesso accade in ambito ingegneristico , per soddisfare le esigenze descritte ad inizio paragrafo si è dovuto raggiungere un compromesso con altre caratteristiche sfavorevoli che hanno complicato la realizzazione del sistema . Una di queste è la necessità di ricorrere ad una scheda di acquisizione – framegrabber per la trasformazione del segnale video analogico proveniente dalla telecamera in immagini digitali . Si è utilizzata la scheda National Instruments IMAQ 1408 , perché disponibile in laboratorio . Le caratteristiche di questo hardware , che saranno descritte nel prossimo paragrafo , hanno però determinato i seguenti svantaggi:
elaborazione di immagini a livelli di grigio , perché si tratta di una scheda monocromatica [16] . La potenza delle elaborazioni successive ne risulta drasticamente ridimensionata , soprattutto per quanto riguarda il calcolo delle corrispondenze di una eventuale visione stereo : questo è uno dei motivi per cui non si sono potuti utilizzare gli algoritmi descritti in [3] ;
perdita della corrispondenza 1:1 fra elementi fotosensibili del CCD e pixel dell’immagine : si vedrà più avanti che questo costituisce un notevole ostacolo ad una corretta stima del modello Pin-Hole per la telecamera con gli algoritmi disponibili in letteratura [14,15] ;
utilizzo obbligato del linguaggio di programmazione grafica LABVIEW , prodotto dalla casa costruttrice della scheda di acquisizione : si dovranno quindi predisporre le interfacce di comunicazione fra i tre linguaggi di programmazione . La comunicazione fra LABVIEW e MATLAB risulta svantaggiosa per i tempi di calcolo , perché poggia sulla tecnologia Active-X dei sistemi operativi Windows , che si è osservato dare luogo a notevoli ritardi nell’esecuzione.
2.2 La scheda di acquisizione video IMAQ 1408
A
differenza dei lavori [2] e [3] , che adottano una webcam con uscita
USB , perciò direttamente in formato digitale , la telecamera
ALM-2451G invia al proprio ricevitore un segnale video-composito in
formato PAL dotato di 380 TV-Lines . Il compito di digitalizzare
nuovamente il segnale e di estrarre i frame dal video è
affidato alla scheda di acquisizione National Instruments IMAQ
PCI-1408 . Si tratta di una scheda con 4 canali di ingresso
monocromatici , che ha imposto di riadattare gli algoritmi descritti
in [2] per lavorare con immagini a livelli di grigio. In figura 2.14
sono riportati i parametri di settaggio della scheda che permettono
la corretta acquisizione dell’immagine , di fondamentale
importanza perché le proporzioni siano rispettate e la
ricostruzione dei pixel a partire dal segnale analogico non dia luogo
a distorsioni . La dimensione della finestra di acquisizione è
stata trovata per tentativi , riducendola di un pixel alla volta a
partire dal bordo laterale sinistro e da quello superiore finché
le bande nere aggiunte dal frame-grabber non sono del tutto scomparse
. Si può notare che il numero di Pixel dell’immagine
così ottenuta è di
, il cui rapporto è 0.75 e assicura il mantenimento delle
proporzioni . Questa condizione non è sufficiente a garantire
il buon esito della calibrazione Pin-Hole : gli algoritmi proposti in
[14,15] chiedono infatti la conoscenza delle dimensioni del CCD e del
numero di elementi che lo compongono . Questi valori raramente sono
indicati dai costruttori e vanno aggiustati per tentativi a partire
dalle dimensioni standard di alcuni CCD ( ½’’ ,
1/3’’ , ¼’’ , .. ) : il segnale video
composito non divide ciascun fotogramma in pixel , ma in linee ,
perciò questa informazione va cercata per tentativi e aggiunge
un ulteriore elemento di incertezza nel procedimento di stima .

Figura 2.3 : I parametri per il settaggio della scheda di acquisizione
2.3 Il modello prospettico o Pin-Hole
Per risalire alle coordinate dei punti di
grasping dell’oggetto da manipolare bisogna conoscere in che
modo i punti dello spazio tridimensionale si mappino sul piano della
telecamera in cui si forma l’immagine , detto piano retinale
. Uno strumento che permette di descrivere compiutamente questo
mapping
è il modello prospettico o pin-hole ,
letteralmente traducibile come modello a punta di spillo ,
perché ipotizza che:
i raggi luminosi percorrano traiettorie rettilinee , si tratta cioè di un modello appartenente all’ottica geometrica ;
ogni punto dello spazio venga proiettato sul piano retinale passando per un solo punto C , detto centro ottico , coincidente col centro di curvatura del sistema di lenti della camera ; questa ipotesi non è sempre rispettata dalle telecamere low-cost come la ALM-2451G .
Figura 2.4 : Il modello pin-hole della telecamera
L’obiettivo del modello è descrivere una trasformazione di coordinate , quindi il primo passo consiste nella definizione dei sistemi di riferimento in cui queste saranno espresse ; con riferimento alla figura 2.4 nel prosieguo della tesi si indicheranno:
con
le coordinate di un punto dello spazio rispetto al sistema di
riferimento fisso
, che verrà fatto coincidere con il sistema solidale alla
base del robot , indicato con l’apice 0 nel capitolo 1 ;
con
le coordinate rispetto al sistema di riferimento della camera
, la cui origine coincide con il centro ottico (
) e il cui asse
coincide con l’asse ottico , cioè l’asse
ortogonale al piano retina passante per il centro ottico ;
con
le coordinate rispetto al sistema di riferimento del piano immagine
; il piano immagine è una schematizzazione che
permette di considerare immagini non ribaltate , come sono quelle
che si formano sul piano retina : viene definito come un piano
fittizio , posto fra il punto oggetto e il centro ottico , alla
stessa distanza che divide il piano retinale da C . Tale distanza
viene detta distanza focale ed è indicata con f .
Un punto dell’immagine è quindi
caratterizzato dalle coordinate metriche
e si indica con
. Il modello pin-hole descrive in che modo un punto di coordinate
si mappa in
, perciò se si conosce la matrice di trasformazione omogenea
fra sistema fisso e sistema standard della telecamera
,
la trasformazione complessiva si ottiene in due passi :
trasformazione di coordinate dal sistema di riferimento fisso al sistema di riferimento standard della camera ; in coordinate omogenee si ha :
(2.1) ;
trasformazione prospettica da
a
secondo il modello pin-hole . Le equazioni della trasformazione si
ricavano da considerazioni di similitudine fra triangoli ; facendo
riferimento alla figura 2.3 deve aversi:
(2.2) ;
da cui
ed
. Quindi il punto del piano immagine in cui si mappa
è
.

Figura 2.5 : I triangoli simili alla base della trasformazione pin-hole
In realtà i punti del piano immagine non
vengono mai espressi in coordinate metriche, ma nelle unità
elementari costituenti l’immagine , detti pixel ( PICture
ELement ) . Supponendo che ciascun pixel corrisponda secondo un
rapporto 1:1 ad un elemento fotosensibile della matrice del CCD , si
ha una quantizzazione delle coordinate x , y secondo intervalli
spaziali di dimensioni
e
, che corrispondono all’altezza e alla base di ciascun elemento
sensibile e danno luogo alle costanti di quantizzazione spaziale
e
. Nemmeno questa ipotesi è sempre verificata dalle telecamere
a basso costo .

Figura 2.6 : Le coordinate in pixel sul piano immagine
Come mostrato in figura 2.6 le coordinate
di un punto espresse in pixel si riferiscono ad un’origine che
, secondo la convenzione adottata in computer vision , si
trova nel vertice in alto a sinistra dell’immagine . L’origine
del sistema di assi
è indicato con la notazione
e viene detto punto principale dell’immagine . La
relazione che lega il punto
in coordinate metriche al suo corrispondente in pixel è quindi
:
(2.3) .
Componendo le equazioni 2.3 della quantizzazione
con le equazioni 2.1 e 2.2 delle trasformazioni precedenti , si ha la
relazione completa fra le coordinate
di un punto nel sistema fisso e il pixel dell’immagine in cui
esso viene mappato :
(2.4) .
I parametri
dipendono solo dalla telecamera utilizzata e vengono detti parametri
intrinseci o interni , mentre gli elementi di
dipendono dalla posizione relativa fra telecamera e sistema di
riferimento fisso , quindi vengono detti parametri estrinseci
o esterni.
Il modello pin-hole in coordinate omogenee
Se anche le coordinate in pixel vengono espresse
in forma omogenea, ricorrendo ad un parametro S tale che
e
, allora
viene espresso mediante il vettore a tre componenti
. In termini di questo vettore le equazioni 2.3 assumono la forma:
(2.5) ,
che definendo la matrice prospettica
diventano:
( 2.6 ) .
La matrice prospettica riassume quindi
tanto i parametri intrinseci , attraverso la matrice
, che i parametri estrinseci , attraverso la matrice
e descrive completamente la trasformazione
operata dal modello prospettico.
2.4 Il metodo tabellare
l modello Pin-Hole consente di descrivere , con un numero di parametri piuttosto limitato , una teoria della formazione dell’immagine che ha validità generale e che non dipende dalla posizione e dall’orientamento relativo fra la telecamera e gli oggetti . Queste quantità vengono anzi calcolate proprio a partire dai parametri estrinseci stimati per il modello. Contestualmente aumentano però le ipotesi che la telecamera deve soddisfare e le difficoltà nella stima del modello : il sistema di lenti deve essere confocale , devono conoscersi alcune informazioni a priori sul CCD e deve essere possibile effettuare la calibrazione su una porzione sufficientemente ampia dell’immagine . Quando si controlla un manipolatore mobile i vantaggi di un modello che non dipende dalla configurazione di acquisizione sono importanti , quindi si è cercato di descrivere la telecamera con le leggi prospettiche anche se nessuna delle tre ipotesi precedenti è soddisfatta dall’hardware utilizzato . I parametri stimati in questo modo hanno permesso di calcolare la posizione relativa fra la telecamera e il link sulla quale è fissata , come descritto nel paragrafo 2.5 , ma le posizioni dei punti di grasp così ricavate non sono risultate attendibili . Pertanto le posizioni dei punti di grasp sono state calcolate con un metodo meno potente , ma che non richiede informazioni a priori sulla telecamera e condizioni particolarmente stringenti in fase di calibrazione .

Figura 2.7 : Il setup di calibrazione per il metodo
tabellare
Si tratta del metodo tabellare 2D proposto in [2]
, la cui idea è mostrata in figura 2.7 : si riprende un
pattern di punti noti giacenti su un piano a distanza
dalla telecamera , con l’asse ottico ortogonale al piano stesso
, e si memorizzano due matrici Planx e Plany che
descrivono il mapping 3D2D in
queste particolari condizioni . Per risalire alle coordinate
di un pixel
è sufficiente così richiamare i valori memorizzati :
,
,
.
La semplicità del metodo e la possibilità di implementarlo in condizioni più generali si pagano in termini di prestazioni ; il metodo tabellare ha infatti i seguenti svantaggi :
è un modello 2D : le posizioni restituite sono valide solo se i punti risiedono su un piano ortogonale all’asse ottico della telecamera , a distanza pari a quella fissata in fase di calibrazione . Questa condizione restringe sensibilmente le classi di oggetti che si possono manipolare , inducendo a considerare il problema del grasping 2D ;
ha validità locale : il mapping descritto è valido solo se la telecamera riprende la scena dallo stesso punto in cui è stata calibrata , quindi per poter manipolare oggetti posti in regioni diverse è necessario effettuare più calibrazioni . Nel capitolo 6 saranno discussi gli effetti dell’errore di posizionamento della telecamera sulle coordinate di Planx e Plany ;
è una calibrazione parziale : il mapping 3D2D non viene ricostruito per tutti i punti dell’immagine , ma solo per quelli occupati dal pattern di calibrazione . Fra l’altro l’oggetto di calibrazione non può nemmeno essere troppo esteso , perché questo richiederebbe un allontanamento della telecamera dalla scena , con il rischio di non riconoscere tutti i dots di calibrazione ;
occupa molta memoria , perché per ogni calibrazione vanno memorizzate due matrici con lo stesso numero di elementi dell’immagine . Nel caso in esame le matrici sono di 576 righe e 678 colonne
La calibrazione
La calibrazione è quel processo che permette di determinare i parametri delle funzioni di trasformazione dallo spazio 3D al piano immagine della telecamera : i parametri intrinseci ed estrinseci nel modello Pin-Hole e le matrici Planx e Plany per il metodo tabellare . Per poter disporre di posizioni note , entrambi i metodi utilizzano un oggetto di calibrazione di dimensioni standard e definiscono su di esso un sistema di riferimento : i punti campione sono i centri di una matrice di dots bianchi su sfondo nero , che vengono estratti con tecniche di Image Processing , implementate dall’apposito toolbox di MATLAB .
2.5.1 La calibrazione Pin-Hole
Per la calibrazione Pin-Hole si è scelto di adottare la procedura di Heikkila e Silven [14,15] , perché è disponibile in laboratorio l’oggetto di calibrazione proposto da questi autori , utilizzato anche in [1,2,3] . Rispetto a questi lavori si sono però apportate alcune modifiche per adattare gli algoritmi di estrazione dei centri alle nuove esigenze operative , che saranno descritte nel paragrafo 2.5.3 .

Figura 2.8 : L’oggetto di calibrazione suggerito da Heikkila e Silven
Il metodo di Heikkila e Silven stima i parametri del modello che minimizzano lo scostamento fra le posizioni note di un certo numero di punti dello spazio e le posizioni che si otterrebbero col modello stesso. L’oggetto di calibrazione suggerito è un cubo di 270mm di lato con due facce ricoperte da 256 cerchi bianchi su sfondo nero , di 5mm di raggio e distanti fra loro 15mm (da centro a centro ).
Il tutto deve essere realizzato con tolleranze
inferiori ai
e su carta fotografica opaca per ridurre gli effetti di riflessione
della luce nell’immagine di calibrazione . Il sistema di
riferimento inerziale viene preso con l’origine sullo spigolo
in alto della porzione di cubo inquadrata dall’immagine e con
gli assi orientati come in figura 2.9 . Sapendo che la distanza del
centro del primo cerchio dallo spigolo è di 22.5mm , sia in
orizzontale che in verticale , le posizioni dei punti di calibrazione
rispetto al sistema inerziale risultano univocamente determinate .

Figura 2.9 : La scelta del sistema di riferimento inerziale per la calibrazione
L’algoritmo riceve in ingresso le coordinate
dei centri dei dot e necessita della conoscenza di alcuni parametri
non stimabili , come la dimensione ed il numero di righe e colonne
della matrice di elementi sensibili del CCD ; restituisce , oltre ai
parametri intrinseci ed estrinseci , anche dei coefficienti che
valutano la distorsione radiale e tangenziale dell’immagine e
permettono quindi una correzione delle non-linearità.
L’orientamento restituito per il sistema standard rispetto al
sistema di riferimento inerziale è espresso mediante gli
angoli di Eulero X-Y-Z : si tratta dello stesso genere di
rappresentazione minima che da luogo alla (1.15) , ma cambiano gli
assi correnti rispetto ai quali vengono effettuate le rotazioni . Per
sovrapporre le due terne bisogna eseguire una rotazione di un angolo
attorno all’asse x , di un angolo
attorno all’asse y’ e di un angolo
attorno all’asse z’’ , ottenendo la seguente
matrice di rotazione complessiva (2.7) :

Non si scenderà nei dettagli dell’algoritmo di Heikkila e Silven , perché per portare a termine la calibrazione non è stato necessario approfondirne i dettagli implementativi : ci si concentrerà piuttosto sulla procedura di estrazione dei centri dei cerchi , per descrivere le modifiche apportate all’algoritmo proposto in [1] .
2.5.2 La calibrazione tabellare
L’oggetto di calibrazione adottato per la calibrazione tabellare è mostrato in figura 2.10 così come appare al sistema di visione e si può notare che riprende alcune caratteristiche del pattern già adottato nella calibrazione Pin-Hole : i cerchi bianchi su sfondo nero hanno un raggio di 5mm e le distanze fra i centri sono di 15mm . La distanza del primo centro dal vertice in basso a sinistra , assunto come origine del sistema di riferimento , è di 17.5mm e la matrice è costituita da 32 righe e 32 colonne : complessivamente il lato della regione calibrata ha quindi un’estensione di 49.75cm .

Figura 2.10 : Il pattern di calibrazione per il metodo tabellare
A partire dalle posizioni dei centri estratti ,
che sono note per come è definito il pattern , si ricavano le
coordinate corrispondenti a ciascun pixel dell’immagine
mediante interpolazione lineare : si raggruppano i dots a gruppi di 3
come in figura 2.10 . I vertici triangoli così formati possono
avere coordinate
reali , mentre per i punti dell’immagine le grandezze u e v
sono intere : per ciascuna coppia di indici interi
che cade nell’area del triangolo si procede quindi
all’interpolazione come descritto in [2] .

Figura 2.11 : i triangoli entro i quali si effettua l’interpolazione locale
L’andamento di Planx e Plany
con u e v è mostrato in figura 2.12 e si può
notare come solo una porzione dell’immagine risulti calibrata ,
mentre per tutti gli altri pixel si ha
e
. Di questo fatto si è comunque tenuto conto nell’algoritmo
di grasping , che avvisa l’utente se il punto di presa
dell’oggetto cade al di fuori della regione .
|
|
|
Figura 2. 12 : Le coordinate x ed y restituite da Planx e Plany
Per avere tutta l’informazione necessaria a
ricostruire correttamente la trasformazione dal piano immagine alla
terna base del robot , mancano la posizione della telecamera e quella
dell’origine del s.d.r. solidale al pattern di calibrazione .
Il metodo più breve per ottenere questa seconda informazione
consiste nel portarvi la punta della pinza e nel leggere le variabili
di giunto corrispondenti . In tabella 2.2 sono riportate le
in queste due configurazioni , dalle quali si ricavano le posizioni
cartesiane calcolando la cinematica diretta .
Tabella 2.2 : le variabili di giunto che permetto di passare da Planx , Plany alla terna base del robot
|
|
|
|
|
|
|
|
Acquisizione dell’immagine |
|||||
|
-178.5° |
130.9° |
-221.6° |
-92.8° |
0.2° |
94.3° |
|
Posizionamento sul vertice in basso a sinistra del pattern |
|||||
|
-124.8° |
-147° |
52.4° |
-94° |
4° |
149.2° |
2.5.3 La procedura di estrazione dei centroidi
L’algoritmo per l’estrazione dei centri dei cerchi funziona correttamente se il cubo della calibrazione Pin-Hole e il quadrato della calibrazione 2D sono ripresi centralmente nella scena , con illuminazione uniforme e se vengono eseguite alcune operazioni preliminari : la conversione in formato Bitmap a 256 livelli di grigio e l’annerimento delle porzioni di immagine che possono disturbare il riconoscimento dei dots . Di seguito si esporranno le cause che , nelle condizioni operative in cui ci si è trovati , hanno impedito di riconoscere correttamente i centri . Saranno poi proposte le soluzioni a questo problema , concentrando l’attenzione più sul riconoscimento dei centri nel cubo piuttosto che nel quadrato , perché la distorsione prospettica trasforma i cerchi in ellissi e il riconoscimento risulta ancora più difficile . Per lo stesso motivo è più corretto parlare di centroidi che non di centri .

Figura 2.13 : l’immagine del cubo in scale di grigio privata dello sfondo
L’algoritmo effettua una prima grossolana ricerca dei dots nell’immagine mediante l’applicazione di una soglia seguita da una operazione di shrink , che consiste nella riduzione delle regioni connesse a un punto mediante erosioni successive : se i centri vengono ridotti a un pixel binario , il numero di cerchi si può ottenere come somma dei pixel non nulli nell’immagine . Si può quindi contare il numero di dots riconosciuti e se sono 512 per il cubo e 1024 per il quadrato si procede alla seconda fase , altrimenti l’algoritmo restituisce un messaggio di errore e va riutilizzato scegliendo un nuovo valore per la soglia . Una prima causa del mancato riconoscimento dei centroidi è costituita dall’illuminazione : se la cattura dell’immagine non avviene in un ambiente con luce diffusa , ma in un interno con luci artificiali , è difficile ottenere un’illuminazione uniforme su due facce ortogonali del cubo . In queste condizioni si osserva che una stessa soglia risulta troppo alta per una porzione dell’immagine e troppo bassa per l’altra . La prima modifica ha riguardato quindi la possibilità di distinguere fra una soglia per la faccia destra ed una soglia per quella sinistra da scegliere in base all’illuminazione dei due lati , con la possibilità di aggiustare iterativamente i valori fino a trovare le soglie ottime per il riconoscimento dei 256 dots desiderati.

Figura 2.14 : Il cubo di calibrazione con parte dell’immagine ostruita dal manipolatore
L’altra causa del mancato riconoscimento dei
centroidi è l’impossibilità di inquadrare il cubo
centralmente nella scena , per l’ostruzione della parte bassa
dell’immagine operata dal link 4 , come mostrato in figura 2.14
. Si tratta di una limitazione critica , perché coinvolge la
stima dei parametri estrinseci : se per ottenere i parametri interni
è comunque possibile effettuare l’esperimento
all’esterno o in un ambiente appositamente illuminato , la
stima dei parametri esterni deve necessariamente avvenire con la
telecamera montata sul robot . Questo set di parametri permette
infatti di ricavare la posizione relativa fra la telecamera e il
robot , determinando la forma assunta dalla matrice
del modello Pin-Hole .
Con la diminuzione dell’area occupata dal cubo diminuisce contestualmente l’area dei singoli dots e questo pregiudica , nell’algoritmo originario , la seconda fase dell’estrazione dei centroidi . Questa consiste nell’isolare i dots individuati con la funzione shrink e nell’applicare un operatore di dilatazione che faccia assumere loro una forma più vicina ad un cerchio , l’aspetto originario , che ad un ellisse , la forma assunta a causa della proiezione prospettica . Si è infatti osservato che i centroidi ottenuti dopo questa ulteriore elaborazione hanno una dispersione rispetto a quelli ottenuti con la sola operazione di shrink . A questo punto si calcola il centro di massa del dot espanso mediante le somme pesate dei singoli pixels :


dove con
si è indicato il livello di grigio del pixel considerato .
Proprio all’elevata dispersione è dovuto il mancato riconoscimento dei centroidi ; l’isolamento del dot che precede la dilatazione è ottenuto mediante le seguenti operazioni logiche:
separazione e sogliatura della porzione dell’immagine originale contenente il dot : è la porzione contenuta fra i 4 dots adiacenti a quello considerato come mostrato in figura 2.15 a ;
annerimento del dot considerato mediante la funzione di riempimento bwfill dell’Image Processing Toolbox di MATLAB . In figura 2.15b è rappresentato il risultato corretto, che si ottiene quando il dot occupa un numero di pixel significativo ;
operazione di OR esclusivo fra le finestre precedenti per ottenere il dot isolato , come mostrato in figura 2.15c .
|
|
|
|
|
|
Figura 2.15 a,b,c: le operazioni logiche per isolare il dot |
|
||
La funzione bwfill questo aggrega i pixel adiacenti ad un punto iniziale che hanno lo stesso colore : l’algoritmo proposto in [1] inizia il riempimento a partire dal centroide ricavato con l’operazione preliminare di shrink . Nel caso di dot costituito da un numero di pixel significativo il punto iniziale cade certamente all’interno dell’area da riempire , mentre quando il numero di pixel diminuisce questa condizione non è necessariamente vera . Questa situazione è mostrata in figura 2.16 dove con la freccia rossa è indicato il punto da cui parte il riempimento : immagine originale e immagine elaborata da bwfill risultano identiche , quindi l’OR esclusivo restituisce una finestra completamente nera e l’isolamento del dot fallisce .
|
|
|
|
|
Figura 2.16: Un esempio di isolamento fallito del dot |
||
La soluzione proposta consiste nel gestire queste eccezioni permettendo all’utente di selezionare il pixel dal quale inizia il riempimento : il risultato ottenuto è infatti lo stesso per ciascun pixel appartenente al dot stesso , purché interno .
2.5.4 L’esito della calibrazione Pin Hole
Con il metodo descritto si è riusciti ad estrarre il numero esatto di centroidi da tre immagini riprese da altrettante angolature differenti, permettendo di fornire all’algoritmo di Heikkila e Silven più matrici di centroidi e ricavare quindi più set di parametri estrinseci , che sono stati utilizzati per ricavare la posizione relativa fra link 4 e telecamera . In tabella 2.3 sono riportati anche i parametri intrinseci , che non sono però in grado di ricostruire correttamente la trasformazione dallo spazio al piano immagine e hanno quindi imposto il passaggio al metodo di calibrazione tabellare .
Tabella 2.3 L’esito della calibrazione ottenuto a partire da tre immagini
|
Parametri Intrinseci |
Valore |
Deviazione standard |
||
|
Fattore di scala |
0.9869 |
7.45e-004 |
||
|
Lunghezza focale [mm] |
3.4050 |
4.03e-003 |
||
|
Ascissa punto principale [pixel] |
417.4109 |
7.79e-001 |
||
|
Ordinata punto principale [pixel] |
226.8368 |
1.13e+000 |
||
|
1° coefficiente di distorsione radiale [mm-2] |
1.4808e-002 |
1.25e-003 |
||
|
2° coefficiente di distorsione radiale [mm-4] |
1.4245e-002 |
4.29e-004 |
||
|
1° coeff. di distorsione tangenziale [mm-1] |
-5.3424e-003 |
5.45e-004 |
||
|
2° coeff. di distorsione tangenziale [mm-1] |
-5.8171e-005 |
1.18e-004 |
||
|
Parametri estrinseci |
Valore |
Posizione dei giunti (gradi) |
||
|
Immagine 1 |
||||
|
Coordinata x origine [mm] |
-16.3811 |
|
||
|
Coordinata y origine [mm] |
-130.7553 |
|||
|
Coordinata z origine [mm] |
416.2408 |
|||
|
Rotazione asse x [ ° ] |
49.5701 |
|||
|
Rotazione asse y [ ° ] |
-31.7527 |
|||
|
Rotazione asse z [ ° ] |
-28.9928 |
|||
|
Immagine 2 |
||||
|
Coordinata x origine [mm] |
15.4726 |
|
||
|
Coordinata y origine [mm] |
-143.6673 |
|||
|
Coordinata z origine [mm] |
405.5731 |
|||
|
Rotazione asse x [ ° ] |
48.0046 |
|||
|
Rotazione asse y [ ° ] |
-25.6938 |
|||
|
Rotazione asse z [ ° ] |
-30.0290 |
|||
|
Immagine 3 |
||||
|
Coordinata x origine [mm] |
15.3134 |
|
||
|
Coordinata y origine [mm] |
-141.7323 |
|||
|
Coordinata z origine [mm] |
412.9849 |
|||
|
Rotazione asse x [ ° ] |
47.6933 |
|||
|
Rotazione asse y [ ° ] |
-25.7928 |
|||
|
Rotazione asse z [ ° ] |
-30.1480 |
|||
2.6 La cinematica diretta della telecamera
I
parametri estrinseci restituiti dall’algoritmo di Heikkila e
Silven descrivono la posizione e l’orientamento della
telecamera nella configurazione assunta dal robot al momento della
cattura dell’immagine , quando
. Indicando con
il sistema di riferimento definito da Heikkila e Silven , le
ricavabili dalla tabella precedente sono valide solo nelle posizioni
considerate , mentre perché il sistema di visione sia
operativo è necessaria una espressione di validità
generale . Per avere questa informazione bisogna calcolare a partire
dai parametri estrinseci la
che descrive la posizione relativa fra telecamera e terna base del
robot.

Figura 2.17 : la posizione della telecamera rispetto al link
Supponendo
che l’asse ottico sia parallelo all’asse del link 4 , si
tratta di conoscere la posizione relativa fra questo braccio e
l’origine del sistema di riferimento standard della telecamera
. Data la simmetria del problema è conveniente esprimere
questa posizione in coordinate cilindriche riconducendosi al calcolo
di tre parametri : la distanza
dal giunto 4 , la distanza
dall’asse del link e l’angolo
che rappresenta la rotazione attorno all’asse stesso . Il
significato geometrico di
,
,
è indicato in figura 2.17 .

d
r φ
Figura 2.18 : La posizione relativa della telecamera rispetto al link 4
L’origine
del sistema di coordinate cilindriche è l’origine della
terna 4 di Denavit Hartenberg e le trasformazioni elementari che
pertano
su
sono :
traslazione
di una quantità
lungo l’asse
, descritta dalla matrice :
;
rotazione
di un angolo
attorno all’asse
, descritta dalla matrice :
;
traslazione
di una quantità
lungo l’asse
, descritta dalla matrice :
;
Complessivamente
la matrice
che descrive la posizione relativa della telecamera rispetto alla
terna 4 è :
.
Moltiplicando
la
per la
si ottiene la matrice
che descrive la posizione e l’orientamento della telecamera
rispetto alla terna base del robot . Per ricavare i valori di
bisogna risolvere un sistema di equazioni trigonometriche nella
forma :
in cui le
,
,
sono i parametri estrinseci dell’algoritmo di calibrazione . La
matrice
esprime la trasformazione fra il sistema di riferimento di Heikkila e
Silven e la terna base del robot : il metodo più veloce per
ottenere i termini
,
e
consiste nel portare la punta della pinza a toccare con il vertice
desiderato e calcolare la cinematica diretta , come mostrato in
figura 2.19 .

Figura 2.19 Allineamento fra vertice del cubo e punta della pinza
Una volta
ottenute le grandezze
,
,
le si sottraggono ai termini costanti delle equazioni , ottenendo
,
,
e il sistema da risolvere per trovare
diventa:

La
funzione che esegue automaticamente questa procedura è
camera_rispetto_link.m : provvede anche a caricare i valori
di
in un database riutilizzato dalla funzione
cinematica_diretta_telecamera.m per il calcolo della matrice
. Entrambe le funzioni sono riportate nell’appendice B . Il
valore di
calcolato è trascurabile , pertanto si può affermare
che il sistema di riferimento della telecamera differisce da quello
del link 4 solo per due traslazioni di ampiezza
ed
: questo risultato è molto importante per esprimere
l’orientamento nell’algoritmo di grasping che verrà
presentato nel prossimo capitolo.
Il software per l’acquisizione è realizzato in LABVIEW e le funzioni per il grasping e il calcolo delle coordinate vengono richiamate con il MATLAB script node . Il pannello di controllo dello Strumento virtuale (così si chiamano i programmi realizzati in LABVIEW ) si presenta come in figura 2.20 : si possono distinguere il box di immissione delle variabili di giunto del robot , per il calcolo della posizione della telecamera secondo le equazioni del paragrafo 2.4 , e l’indicatore del punto di grasp e dell’angolo di presa , che costituiscono l’uscita del programma . E’ inoltre presente un indicatore dello stato del MATLAB script node che serve a comunicare eventuali messaggi di errore dal prompt dei comandi di MATLAB.

Figura 2.20 : Il pannello di controllo del VI di visione
Al lancio del programma viene acquisita l’immagine e mostrata all’utente per la selezione dell’oggetto da manipolare , come mostrato in figura 2.21a . L’area non appartenente alla selezione viene eliminata , per evitare di riconoscere oggetti indesiderati , e l’intera immagine viene ridotta in forma binaria mediante un valore di soglia iniziale . L’esito dell’elaborazione viene mostrato all’utente , che può scegliere iterativamente un nuovo valore della soglia finché non ritiene la binarizzazione soddisfacente . Una volta riconosciuto correttamente l’oggetto , l’immagine viene mandata all’algoritmo di grasping che sarà descritto nel prossimo capitolo 3 ; questo restituisce un punto nelle coordinate immagine , che la funzione punto_di_grasp2.m riporta in coordinate tridimensionali secondo la tecnica del paragrafo 2.4 . Allo stesso modo , noto l’orientamento relativo fra la telecamera e la terna base del robot , viene calcolato l’orientamento della pinza.a partire dall’angolo di grasp.
|
|
|
Figure 2.21 a,b : la finestra per la selezione dell’oggetto e l’oggetto privato dello sfondo e binarizzato