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
58