• Non ci sono risultati.

Un sistema ibrido risponde a queste esigenze. La componente globale si occupa di trovare un insieme ristretto di pose pi`u somiglianti globalmente, mentre la parte con classificatore locale deve migliorare i risultati ottenuti.

Come nel sistema del capitolo 10, l’algoritmo scelto per realizzare le de- scrizioni locali `e SHOT perch´e si `e dimostrato molto descrittivo e molto ve- loce nel descrivere una point cloud, in questo caso `e quella incognita a tempo di esecuzione. Per quanto riguarda la descrizione globale, viene utilizzato l’algoritmo VFH.

La pipeline del sistema `e identica a quella del capitolo 10.

11.3.1

Scelta dei set

La suddivisione fra insieme di addestramento e di test cos`ı come il criterio per valutare le risposte sono esattamente gli stessi della sezione precedente in modo da rendere confrontabili tutti i risultati. L’insieme Round1 `e il database mentre Round4 `e l’insieme di test. Round3 `e l’insieme usato nelle

sezioni precedenti per addestrare le reti. In questa parte sono state usate solo le due migliori reti prodotte (quelle con range pari a 10 e 20 che fanno uso di categorie).

11.3.2

Test

Per entrambe le reti il parametro dei k nearest Neighbors viene impostato pari a 5 o a 10. In questo caso il parametro k viene variato ad ogni test per verificare la capacit`a di risposta del sistema in funzione del numero di kNN restituito dalla componente di classificazione globale.

Le prestazioni della prima parte globale sono visibili in tabella 11.4. Range Oggetti ric. Pose ric. Pose no ric. Sbagliati

10 726 (91.7%) 486 (61.4%) 240 (30.3%) 66 (8.3%) 20 726 (91.7%) 544 (68.7%) 182 (23.0%) 66 (8.3%)

Tabella 11.4: Dataset PaCMan - Algoritmo Globale VFH

Ovviamente in questo caso `e il criterio di validazione delle pose a fare la differenza dato che `e pi`u restrittivo nel primo esempio.

I dati della risposta del sistema ibrido, completo di descrizione locale e rete neurale, sono riportati in tabella 11.5.

Range kNN Oggetti ric. Pose ric. Pose no ric. Sbagliati 10 5 718 (90.7%) 494 (62.4%) 224 (28.3%) 74 (9.3%) 10 10 720 (90.9%) 489 (61.7%) 231 (29.2%) 72 (9.1%) 20 5 721 (91.0%) 550 (69.4%) 171 (21.6%) 71 (9.0%) 20 10 719 (90.8%) 543 (68.6%) 176 (22.2%) 73 (9.2%) Tabella 11.5: Dataset PaCMan - Sistema ibrido globale VFH, locale SHOT, categorie, rete neurale

Osservazioni sui dati:

• il sistema ibrido alza le percentuali di stima delle pose, come accadeva anche nell’altro dataset [5];

• un problema riscontrato durante l’esperimento e che si ripercuote sul- le prestazioni `e che l’algoritmo globale con questo dataset pu`o esse- re pi`u “difettoso “ (percentuali inferiori a livello generale); nella lista dei kNN da passare al sistema locale inserisce anche oggetti che non corrispondono a quello incognito. Per esempio tazze al posto di uno scolapasta.

Quindi pu`o capitare che il sistema locale sbagli l’oggetto a causa del sottoinsieme di kNN generato dal globale che pu`o introdurre dei falsi positivi. Per`o nel complesso il sistema ibrido, se non viene penalizzato dai falsi positivi della componente globale, `e comunque in grado di migliorare la stima delle pose;

• `E’ difficile intervenire sul globale perch´e non lascia molte libert`a nella configurazione, `e un processo deterministico che ha solo bisogno di una point cloud senza altri parametri. Invece nelle reti e nel sistema locale `e possibile intervenire sulle categorie di oggetti, sui range e sul numero di kNN da considerare. `E anche possibile ripetere gli addestramenti per migliorare le risposte. Si tratta di trovare una configurazione ottimale per il dataset [1].

Anche in questa situazione vale il ragionamento fatto nella sezione prece- dente: il criterio di validazione delle soluzioni `e automatico e approssimativo per difetto, rischiando quindi di escludere altre situazioni di pose somiglianti. Applicando lo stesso ragionamento con forbici di casi favorevoli (100-120 con range 10 e 80-100 con range 20), si otterrebbero delle nuove percentuali approssimative delle prestazioni.

Range kNN Pose ric. Pose no ric. 10 5 594-614 (75.0-77.5%) 124-104 (15.7-13.2%) 10 10 589-609 (74.3-76.9%) 131-111 (16.6-14%) 20 5 630-650 (79.5-82.1%) 91-71 (11.5-8.9%) 20 10 623-643 (78.7-81.2%) 96-76 (12.1-9.6%))

Tabella 11.6: Dataset PaCMan - Sistema ibrido globale VFH, locale SHOT, categorie, rete neurale. Percentuali stimate empiricamente

Non si tratta di misure matematicamente certe perch´e sono ottenute gra- zie alla sensibilit`a umana che interviene laddove l’algoritmo di validazione automatico perde dei risultati buoni, ma permettono di capire che genere di prestazioni il sistema `e in grado di raggiungere con certe configurazioni.

Sia che si analizzino manualmente i risultati sia che si prendano per buoni quelli validati automaticamente, da questi dati emerge che la configurazione migliore `e quella pi`u flessibile, con un range di 20 gradi, ma con un kNN inferiore per evitare i falsi positivi introdotti dall’algoritmo globale. Questo, per sua natura, `e meno descrittivo e subisce abbassamenti di prestazioni nel caso di dataset con immagini 3D affette da rumore e ottenute su un insieme di oggetti complesso ed eteregeneo nella sua composizione. Il sistema

locale invece migliora i risultati globali grazie alla sua maggiore precisione e descrittivit`a.

Un’aspetto fondamentale `e che questo sistema ibrido con questo dataset, risponde in tempi molto rapidi, mediamente in 756ms. Questa caratteristica consente l’utilizzo del sistema ibrido in un contesto real-time.

Conclusioni

Nel presente lavoro `e stato affrontato il problema del riconoscimento degli oggetti e delle loro pose nell’ambito di afferraggio da parte di un braccio robotico.

L’approccio seguito `e stato quello empirico perch´e, rispetto a quello ana- litico, permette di evitare la creazione di modelli artificiali predefiniti che semplifichino la realt`a. Tali modelli, all’atto pratico avevano raggiunto pre- stazioni inferiori alle aspettative generate durante le simulazioni, a causa dell’introduzione di semplificazioni della realt`a e della minore precisione dei sensori e dei movimenti reali. Invece un sistema di tipo empirico non ha bisogno di alcun modello ma lavora sul campo, direttamente con i dati rea- li e produce soluzioni adattate a partire da una conoscenza di base sugli afferraggi reali, ottenuti dall’esempio umano diretto.

L’ambito di ricerca `e quello del Case-Based Reasoning (CBR) e la parte implementata in questo lavoro corrisponde alla fase iniziale di case retrieval che `e importante al fine di recuperare dalla conoscenza memorizzata tut- ti gli esempi che possono venire in aiuto per guidare un braccio robotico nell’afferraggio di oggetti.

Sono state presentate le tecnologie utilizzate per implementare il sistema di case retrieval. L’informazione di base che rappresenta l’immagine tridi- mensionale ripresa dalla Kinect `e una particolare struttura dati chiamata point cloud. Sono state quindi analizzate tecniche per descrivere le point cloud mediante un numero di feature (caratteristiche), definite sia localmen- te, individuando dei punti chiave, che globalmente. E’ stato poi affrontato il problema di definire delle somiglianze tra queste descrizioni, utilizzando reti neurali.

I dataset adoperati sono due, uno fornito dalla Point Cloud Library [5] e uno appartenente al progetto PaCMan [1], all’interno del quale `e stata svolta questa tesi. Entrambi sono formati da immagini 3D reali di oggetti ripresi in

varie pose. Il primo `e un dataset pi`u omogeneo con molti oggetti dello stesso tipo, il secondo `e un dataset molto pi`u variegato. La qualit`a delle immagini `

e inferiore nel secondo perch´e la Kinect pu`o essere pi`u facilmente soggetta a rumore.

I dati sono stati poi suddivisi per formare database di casi noti (la base del CBR) e insiemi di test.

Il database di casi noti deve essere analizzato a tempo di esecuzione per trovare il caso pi`u somigliante a quello incognito. Nello specifico sono state seguite due strade: la ricerca lineare e quella gerarchica.

La ricerca lineare, o forza bruta, consiste nella scansione di tutto il database e nel calcolo della somiglianza con tutti i suoi casi.

L’approccio gerarchico consiste nella suddivisione del database in classi di riferimento che consentono di velocizzare la ricerca. Individuato il miglior riferimento, i casi ad esso associati sono quindi i candidati per il confronto lineare. In questo modo il database viene ristretto in una prima fase e nella seconda viene analizzato soltanto il sottoinsieme.

In questi primi esperimenti le tecniche di descrizione usate sono esclu- sivamente locali, cio`e orientate a descrivere ogni regione della point cloud centrate nei vari punti chiave, individuati con un algoritmo scelto. Si trat- ta di descrizioni molto dettagliate che consentono ampia libert`a nella loro manipolazione. In particolare sono stati analizzati tutti gli algoritmi di de- scrizione locale proposti dalla libreria PCL ma sono stati scelti i migliori in termini di tempo di risposta e qualit`a delle descrizioni, cercando di realizzare un compromesso tra le due specifiche. Questi algoritmi sono SHOT (Signa- ture of Histogram of Orientation) ed FPFH (Fast Point Feature Histogram). Il dataset usato per le verifiche `e quello PCL [5].

Per quanto riguarda la ricerca lineare le prestazioni migliori sono 98% di oggetti riconosciuti e 76% di pose stimate correttamente, ottenute mediante descrizioni SHOT. Leggermente inferiori quelle ottenute con FPFH. I tempi di esecuzione medi sono rispettivamente 11s e 3s.

Per abbassare i tempi di risposta `e necessaria la tecnica gerarchica. La superiorit`a di SHOT si `e evidenziata in tutti i test. Il miglior risultato ottenuto con l’uso di riferimenti gerarchici `e 97% di riconoscimento di oggetti e 75% di stima delle pose. I tempi di risposta sono nell’ordine di 8s che `e inferiore ma non ancora sufficiente.

Per sfruttare meglio l’idea della gerarchia `e stato anche realizzato un sistema ibrido. Una prima componente utilizza un algoritmo di estrazione di feature globale, Viewpoint Feature Histogram (VFH), per confrontare i point cloud in modo generico senza i dettagli delle descrizioni locali. Seleziona i primi k Nearest Neighbors e passa questo database ristretto alla componente

locale, dotata di rete neurale, che si occupa di eseguire una classificazione lineare del miglior risultato.

Con questo sistema i miglioramenti sono molto pi`u incisivi perch´e sono state ottenute percentuali di riconoscimento degli oggetti pari al 99% dei casi e stima delle pose corrette con percentuale dell’84%. Rispetto ai precedenti sistemi i tempi si sono ristretti notevolmente arrivando a fornire risposte in un lasso di tempo medio pari a 1.3s.

Queste verifiche sono state poi realizzate anche sul dataset PaCMan[1], formato da tre cartelle di dati raccolti in giorni diversi, per testare maggior- mente la robustezza del sistema. Il dataset di oggetti `e molto pi`u eterogeneo di quello usato per progettare i sistemi di classificazione delle somiglianze ed `

e anche soggetto a pi`u rumore.

Il problema `e stato affrontato con il sistema ibrido, cio`e quello che ha dato le migliori prestazioni: per la parte globale `e stato riusato il VFH, invece per quella locale sono state realizzate delle reti neurali in modo pi`u specifico.

In particolare `e stato variato il criterio di addestramento usato per rico- noscere le somiglianze. Un range di rotazioni massime definisce quando due point cloud della stessa categoria sono somiglianti.

A seconda del range adoperato sono stati individuati gli oggetti nel 77- 78% dei casi e le pose con una probabilit`a del 50-55%. Le prestazioni sono degradate perch´e un dataset di questo tipo influenza le prestazioni di un sistema molto sensibile alle variazioni locali nei point cloud (sono oggetti quasi tutti diversi fra loro e soggetti a rumore sulle immagini).

Tuttavia se si controllano manualmente le risposte `e possibile osservare miglioramenti reali perch´e il sistema di validazione `e automatico e restrit- tivo, quindi non pu`o tenere conto delle vere somiglianze ottenute dal siste- ma. `E stato osservato che in realt`a il sistema locale trova pose corrette con percentuali nell’ordine del 72-73% dei casi.

Infine `e stato implementato il sistema ibrido con le migliori reti loca- li ottenute. Negli esperimenti migliori gli oggetti vengono riconosciuti con probabilit`a intorno al 90-91% e le pose con probabilit`a del 68-69%.

Anche con questo sistema, se si analizzano manualmente le risposte, si scopre che in realt`a questo risponde meglio perch´e classifica correttamente pi`u somiglianze di quelle previste, arrivando ad ottenere approssimativamente percentuali di stima delle pose intorno ad 81-82%.

Il tempo medio di risposta di questo sistema `e 0.7s, il pi`u rapido che `e stato riscontrato. Questa caratteristica conferma che il sistema ibrido `e il miglior candidato per un contesto real-time.

Gli sviluppi futuri di questa tesi possono comprendere lo studio di configu- razioni ottimali per un sistema di questo tipo oppure la parallelizzazione del sistema tramite schede grafiche (GPU) in modo da abbattere ulteriormente

i tempi computazionali. Inoltre, dovr`a essere investigata la fase successiva del CBR, ossia quella della case adaptation: una volta trovato nel databa- se il caso pi`u somigliante, `e necessario eseguire un processo di decisione e trasformazione dell’afferraggio migliore ad esso associato.

Codice PCL: esempi

Sono codici rappresentativi e riassuntivi delle fasi esposte durante la tesi: segmentazione, descrizione tramite features locali e match fra descrizioni con produzione di ingressi per la rete neurale.

A.1

Segmentazione

v o i d f i n d _ p l a n e ( P o i n t C l o u d < P o i n t T y p e >:: Ptr c l o u d _ i n , P o i n t C l o u d < P o i n t T y p e >:: Ptr c l o u d _ o u t , P o i n t T y p e m i n P t _ o u t , P o i n t T y p e m a x P t _ o u t ) { c o p y P o i n t C l o u d (* c l o u d _ i n , * c l o u d _ o u t ) ; S A C S e g m e n t a t i o n < P o i n t T y p e > s ; P o i n t I n d i c e s :: Ptr i n l i e r s (new P o i n t I n d i c e s ) ; M o d e l C o e f f i c i e n t s :: Ptr c o e f f i c i e n t s (new M o d e l C o e f f i c i e n t s ) ; s . s e t O p t i m i z e C o e f f i c i e n t s (t r u e) ; s . s e t M o d e l T y p e ( S A C M O D E L _ P L A N E ) ; s . s e t M e t h o d T y p e ( S A C _ R A N S A C ) ; s . s e t M a x I t e r a t i o n s ( 1 0 0 ) ; s . s e t D i s t a n c e T h r e s h o l d ( 0 . 0 2 ) ; s . s e t I n p u t C l o u d ( c l o u d _ o u t ) ; s . s e g m e n t (* inliers , * c o e f f i c i e n t s ) ; P o i n t C l o u d < P o i n t T y p e >:: Ptr c l o u d _ p l a n e (new P o i n t C l o u d < P o i n t T y p e >() ) ; E x t r a c t I n d i c e s < P o i n t T y p e > e x t r a c t ; e x t r a c t . s e t I n p u t C l o u d ( c l o u d _ o u t ) ; e x t r a c t . s e t I n d i c e s ( i n l i e r s ) ; e x t r a c t . s e t N e g a t i v e (f a l s e) ; e x t r a c t . f i l t e r (* c l o u d _ p l a n e ) ; g e t M i n M a x 3 D (* c l o u d _ p l a n e , m i n P t _ o u t , m a x P t _ o u t ) ; } v o i d f i n d _ o b j e c t ( P o i n t C l o u d < P o i n t T y p e >:: Ptr c l o u d _ i n , P o i n t T y p e m i n P t _ i n , P o i n t T y p e m a x P t _ i n , P o i n t C l o u d < P o i n t T y p e >:: Ptr c l u s t e r _ o b j _ o u t ) { P o i n t C l o u d < P o i n t T y p e >:: Ptr c l o u d _ f i l t e r e d (new P o i n t C l o u d < P o i n t T y p e >) ; P o i n t T y p e minPt , m a x P t ; f i n d _ p l a n e ( c l o u d _ i n , c l o u d _ f i l t e r e d , minPt , m a x P t ) ; 143

P a s s T h r o u g h < P o i n t T y p e > p (t r u e) ; p t f i l t e r . s e t I n p u t C l o u d ( c l o u d _ f i l t e r e d ) ; p t f i l t e r . s e t F i l t e r F i e l d N a m e ( x ) ; p t f i l t e r . s e t F i l t e r L i m i t s ( m i n P t . x , M a x P t . x ) ; p t f i l t e r . f i l t e r () ; // r e p e a t for y and z

s e a r c h :: KdTree < P o i n t T y p e >:: Ptr t r e e (new s e a r c h :: KdTree < P o i n t T y p e >) ; tree - > s e t I n p u t C l o u d ( c l o u d _ f i l t e r e d ) ; std :: vector < P o i n t I n d i c e s > c l u s t e r _ i n d i c e s ; E u c l i d e a n C l u s t e r E x t r a c t i o n < P o i n t T y p e > c ; c . s e t C l u s t e r T o l e r a n c e ( 0 . 0 2 ) ; c . s e t M i n C l u s t e r S i z e ( 8 0 0 ) ; c . s e t M a x C l u s t e r S i z e ( 2 5 0 0 0 ) ; c . s e t S e a r c h M e t h o d ( t r e e ) ; c . s e t I n p u t C l o u d ( c l o u d _ f i l t e r e d ) ; c . e x t r a c t ( c l u s t e r _ i n d i c e s ) ; c o p y P o i n t C l o u d (* c l o u d _ c l u s t e r , c l u s t e r _ i n d i c e s , * c l u s t e r _ o b j _ o u t ) ; }