SlideShare uma empresa Scribd logo
1 de 101
Baixar para ler offline
Università degli Studi di Trieste
Dipartimento di Ingegneria e Architettura
Corso di Laurea in Ingegneria Informatica
Tesi di Laurea in Sistemi operativi
DEGLI STUD
UNIVERSITÀ
Controllo di un braccio
robotico mediante i
movimenti della mano
Candidato: Relatore:
Basilio Marco Matessi Chiar.mo Prof. Enzo Mumolo
Correlatore:
Ph.D. Livio Tenze
Anno Accademico 2013-14 Sessione straordinaria
Dedicato ai miei genitori.
ii
Introduzione
L’Interazione Uomo-Robot(HRI, Human-Robot Interaction) `e un’area di ricerca mul-
tidisciplinare in costante sviluppo, ricca di spunti per ricerche avanzate e trasferi-
menti di tecnologia. Essa gioca un ruolo fondamentale nella realizzazione di robot
che operano in ambienti aperti e che cooperano con gli esseri umani. Compiti di
questo tipo richiedono lo sviluppo di tecniche che aprano la possibilit`a d’impiego dei
robot, non solo ai professionisti del settore, ma anche ad utenti inesperti, in modo
semplice e sicuro, utilizzando interfacce intuitive e naturali.
Si `e pensato di studiare e valutare la realizzazione di un sistema che permetta il
controllo di un braccio robotico, tramite la rilevazione e la riproduzione dei movimenti
della mano.
Tale approccio si differenzia dai sistemi di controllo tradizionali, basati su tra-
iettorie generate tramite un calcolatore e che potrebbero avere dei movimenti poco
naturali, se confrontati con i movimenti umani.
La simulazione del movimento umano `e l’ideale per un robot progettato per
svolgere compiti al servizio dell’uomo.
I risultati di questo lavoro potrebbero essere impiegati nella realizzazione di ap-
plicazioni di telecontrollo, movimento di bracci antropomorfi, chirurgia, lavori di
precisione ed applicazioni ludiche.
Ad esempio la capacit`a di muovere un manipolatore mediante movimenti umani
apre la possibilit`a di realizzare robot antropomorfi con un miglior feedback, i cui
movimenti da riprodurre sarebbero ricavati direttamente da quelli del corpo umano.
Il lavoro di tesi verr`a svolto presso l’azienda ESTECO S.p.A, nella sede sita presso
l’AREA SCIENCE PARK (Padriciano - TS) e sar`a integrato all’interno delle attivit`a
del gruppo di Ricerca e Sviluppo.
ESTECO `e una delle aziende leader nelle soluzioni di ottimizzazione numerica,
specializzata nella ricerca e nello sviluppo di software ingegneristico per tutte le fasi
del processo di progettazione basata sulla simulazione.
Questo studio rientra in uno dei rami di ricerca dell’azienda, in particolare quello
dell’ottimizzazione dei parametri per il controllo e la taratura di sistemi hardware
che agiscono in tempo reale: Hardware In the Loop (HIL).
iii
Presso l’azienda sono stati messi a disposizione due manipolatori robotici ed un
dispositivo che permette di rilevare i movimenti della mano a distanza, il LeapMotion
Controller [1].
Verr`a valutata la possibilit`a di utilizzare il LeapMotion per controllo dei mani-
polatori robotici e sar`a effettuata una ricerca esaustiva per verificare l’esistenza di
altre tecnologie di rilevamento dei movimenti, pi`u adatte al progetto di tesi.
Allo stato attuale esistono progetti simili basati sul LeapMotion, ma si limitano
a rilevare i gesti della mano (gesture recognition), associando determinati movimenti
della mano a delle operazioni che il manipolatore deve eseguire (ad esempio: “vai
avanti”, “vai indietro”, etc.), e non cercano di seguirne i movimenti compiuti in modo
naturale.
Dalla letteratura `e noto che il controllo dei bracci robotici presenti alcune cri-
ticit`a, in particolare non `e possibile far raggiungere al manipolatore una posizione
spaziale in modo banale. Il problema deriva dal fatto che le azioni dei robot av-
vengono specificando le posizioni angolari o lineari dei giunti che lo compongono,
mentre le posizioni desiderate sono espresse nello spazio Cartesiano. La conversione
delle coordinate dallo spazio Cartesiano a quello dei giunti `e risolta dalla cinemati-
ca inversa. La cinematica inversa, tranne nei casi di manipolatori pi`u semplici (ad
esempio formati da soli tre giunti), `e di complessa risoluzione e dipende strettamente
dalla struttura del manipolatore.
Allo stato attuale, non esiste ancora una soluzione generalizzata del problema
priva di controindicazioni. Tale argomento `e stato oggetto, negli ultimi anni, di
numerose trattazioni sulle riviste scientifiche internazionali. Verranno prese in esame
tali pubblicazioni, allo scopo di valutare quali approcci siano pi`u adatti a trovare
una soluzione al problema della cinematica inversa, nel contesto del controllo dei
manipolatori tramite il LeapMotion Controller.
Il lavoro di tesi permetter`a di approfondire argomenti di interesse sulla robotica,
che durante il corso di studi sono stati solamente accennati.
Il lavoro di tesi verr`a organizzato nel seguente modo seguente:
• studio teorico delle problematiche di controllo dei manipolatori e valutazione
dello stato dell’arte;
• analisi dei manipolatori a disposizione e messa a punto del sistema di controllo;
• approfondimento dei sistemi di rilevazione dei movimenti del corpo umano, e
studio del LeapMotion Controller;
• utilizzo di un simulatore per applicazioni robotiche e realizzazione dei relativi
modelli dei manipolatori a disposizione;
• analisi del problema della cinematica inversa, e realizzazione di un risolutore
per i manipolatori a disposizione;
iv
• realizzazione del sistema di controllo per bracci robotici basati sul LeapMotion
Controller.
v
vi
Ringraziamenti
E finalmente il traguardo `e stato raggiunto!
Ringrazio tutti quanti coloro ci hanno creduto e pazientemente aspettato.
Vorrei ringraziare il prof. Mumolo per aver accettato di seguirmi in questo
percorso di tesi, Livio e Carlos per essere stati sempre molto disponibili ed avermi
aiutato a superare le problematiche incontrate durante quest’ultimo periodo.
Un ringraziamento speciale va alla mia famiglia, mamma Katia, pap`a Carlo e
mio fratello Alessio che mi hanno permesso di coltivare la mia passione.
Un ringraziamento ai miei compagni di studi, in particolare Raffaele per avermi
supportato durante le infernali ore di studio.
Vorrei ringraziare tutti gli amici di sempre (che ultimamente ho un po’
trascurato) e le persone che, volenti o dolenti, hanno attraversato la mia strada
negli ultimi anni. Ognuna di loro mi ha lasciato qualcosa, anche senza saperlo.
Infine, ultimo, ma non per importanza, il ringraziamento di cuore va a Caterina
che negli ultimi mesi `e stata molto paziente, ha condiviso con me fatiche, rinunce e
malumori e che mi ha sostenuto durante la scrittura di questa tesi.
vii
viii
Indice
Introduzione iii
Ringraziamenti vii
Indice ix
Elenco delle figure xi
1 Introduzione della robotica 1
2 Problematiche di controllo 5
2.1 I tipi di giunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Cinematica diretta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Cinematica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 I manipolatori a disposizione 17
3.1 Denso Robotics VE026A . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 CrustCrawler AX-18A Smart Robotic Arm . . . . . . . . . . . . . . . 19
4 Rilevamento dei movimenti della mano 23
4.1 Tecnologie disponibili . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Leap Motion Controller . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Ambiente di simulazione 29
5.1 OpenRAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6 Cinematica inversa con reti neurali 35
6.1 Rete neurale biologica . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2 Rete neurale artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2.1 Modello di un neurone artificiale . . . . . . . . . . . . . . . . . 37
6.2.2 Funzionamento di una rete neurale artificiale . . . . . . . . . . 38
6.3 Cinematica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ix
6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa
basate sulle reti neurali . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.5 Rete neurale proposta . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.6 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.6.1 Generazione dei campioni . . . . . . . . . . . . . . . . . . . . 49
6.6.2 Normalizzazione dei campioni . . . . . . . . . . . . . . . . . . 50
6.6.3 Addestramento della rete neurale . . . . . . . . . . . . . . . . 50
6.6.4 Valutazione delle prestazioni . . . . . . . . . . . . . . . . . . . 51
6.6.5 Risultati sperimentali . . . . . . . . . . . . . . . . . . . . . . . 51
7 Realizzazione del manipolatore controllato dalla mano 57
8 Conclusioni 63
8.1 Lavoro svolto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.2 Analisi dei risultati e sviluppi futuri . . . . . . . . . . . . . . . . . . . 65
A Appendice: sistema di controllo Denso VE026A 67
A.1 Sistema di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.2 Servomotori Futaba RS303MR . . . . . . . . . . . . . . . . . . . . . . 68
A.3 Collegamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A.4 Parte software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A.4.1 Ambiente di sviluppo . . . . . . . . . . . . . . . . . . . . . . . 73
A.4.2 Programmi realizzati . . . . . . . . . . . . . . . . . . . . . . . 73
B Appendice: sistema di controllo CrustCrawler AX-18A 77
B.1 Servomotori Robotis Dynamixel AX-18A . . . . . . . . . . . . . . . . 77
B.2 Sistema di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
B.3 Parte software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
B.3.1 Programmi realizzati . . . . . . . . . . . . . . . . . . . . . . . 81
Bibliografia 83
x
Elenco delle figure
1.1 Stima annuale delle spedizioni mondiali di robot industriali . . . . . . 2
1.2 Stima delle spedizioni mondiali di robot industruali divisi per settore,
anni 2011-2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Schematizzazione di un braccio robotico a due gradi di libert`a . . . . 6
2.2 Angoli di Tait–Bryan . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Giunto prismatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Giunto rotoidale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5 Parametri di Denavit-Heartenberg . . . . . . . . . . . . . . . . . . . . 9
2.6 Esempio di un polso sferico . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Foto del braccio robot Denso Robotics VE026A . . . . . . . . . . . . 18
3.2 Dimensioni Denso Robotics VE026A - (valori in cm) . . . . . . . . . 20
3.3 Foto del braccio robot CrustCrawler AX-18A Smart Robotic Arm - 4
DOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 Dimensioni CrustCrawler AX-18A Smart Robotic Arm - 6 DOF (valori
in cm) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1 Nintendo PowerGlove . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 Sensori presenti nel Kinect . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Nodi individuabili dal Kinect . . . . . . . . . . . . . . . . . . . . . . 25
4.4 Controller LeapMotion . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5 Nodi individuabili dal LeapMotion . . . . . . . . . . . . . . . . . . . 26
4.6 Area visibile dal controller LeapMotion . . . . . . . . . . . . . . . . 27
5.1 Modello VE026A di HiveGround . . . . . . . . . . . . . . . . . . . . . 31
5.2 Modello CrustCrawler contenuto in OpenRAVE . . . . . . . . . . . . 32
5.3 Modello VE026A con XML proprietario . . . . . . . . . . . . . . . . . 33
5.4 Modello CrustCrawler in configurazione 6 DOF con XML proprietario 34
6.1 Flusso informazionale in una rete neurale biologica . . . . . . . . . . 36
6.2 Il neurone artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
xi
6.3 Esempi di funzioni di attivazione per un neurone artificiale . . . . . . 38
6.4 Rete neurale artificiale multi-livello . . . . . . . . . . . . . . . . . . . 39
6.5 Curva sigmoidale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.6 Tangente iperbolica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.7 Esempio di gimbal-lock . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.8 Andamento tipico dell’errore durante la fase di training . . . . . . . . 52
6.9 Andamento dell’errore della rete neurale, campionamento 1000[ms],
50 neuroni nascosti, 4000 epoche . . . . . . . . . . . . . . . . . . . . . 53
7.1 Vettori di orientamento di una mano rilevati da LeapMotion . . . . . 58
7.2 Posizione ed orientamento delle dita rilevati da LeapMotion . . . . . 58
7.3 Esempio di oggetto rilevato da LeapMotion . . . . . . . . . . . . . . . 58
7.4 Tempo di calcolo con la rete neurale per alcuni campioni, in rosso sono
evidenziati i campioni per cui non esiste un risultato valido . . . . . . 60
7.5 Tempo di calcolo con IKFast per alcuni campioni, in rosso sono evi-
denziati i campioni per cui non esiste un risultato valido . . . . . . . 60
7.6 Errore della rete neurale in caso di non esistenza della soluzione . . . 61
A.1 Arduino UNO, scheda di prototipazione . . . . . . . . . . . . . . . . 69
A.2 Spaccato di un servomotore Futaba (RS405CB) . . . . . . . . . . . . 69
A.3 Schema dei collegamenti dei servomotori del braccio robot VE026A . 71
A.4 Foto del collegamento dell’interfaccia di controllo . . . . . . . . . . . 71
A.5 Interfaccia di controllo dei servomotori Futaba VE026A . . . . . . . . 75
B.1 Collegamento in cascata dei servomotori Dynamixel AX-18A . . . . . 79
B.2 Dyanamixel2USB, interfaccia di controllo dei servomotori Dynamixel 79
B.3 Dynamixel Wizard, tool di controllo dei servomotori Dynamixel . . . 80
B.4 Interfaccia di controllo del manipolatore CrustCrawler Smart Robotic
Arm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
xii
Capitolo 1
Introduzione della robotica
Il termine robot non trae origine dal mondo scientifico o ingegneristico, bens`ı com-
pare per la prima volta nel dramma teatrale dello scrittore ceco Karel ˇCapek I robot
universali di Rossum, rappresentato per la prima volta a Praga nel 1921. A diffe-
renza del concetto moderno, i robot di ˇCapek non erano meccanici, ma dei servitori
creati mediante procedimenti chimico/biologici, dei lavoratori perfetti privi di sen-
timenti, creativit`a e capacit`a di sentire il dolore. L’etimologia della parola robot `e
da ricondursi al ceco robota, che significa lavoro pesante e che veniva utilizzato per
indicare i lavori della schiavit`u.
Isaac Asimov, che nei suoi scritti propose le Leggi della Robotica [2], codifica
le norme etico/comportamentali che un qualsiasi robot deve rispettare. Tali Leggi,
piuttosto che identificare compiti specifici che un robot deve assolvere, si limitano
a definire il ruolo che essi possono assumere all’interno della societ`a, vincolandone
la propria autonomia di comportamento, rispettivamente alla sicurezza dell’uomo e
dell’umanit`a, quindi alla sua manifestazione di volont`a.
• Prima legge: “Un robot non pu`o recare danno a un essere umano, n´e pu`o
permettere che, a causa del proprio mancato intervento, un essere umano riceva
danno”.
• Seconda legge: “Un robot deve obbedire agli ordini impartiti dagli esseri umani,
purch´e tali ordini non contravvengano alla Prima Legge”.
• Terza legge: “Un robot deve proteggere la propria esistenza, purch´e questa
autodifesa non contrasti con la Prima e la Seconda Legge”.
`E tra la fine degli anni Cinquanta e gli inizi degli anni Sessanta che inizia la
storia dei robot: questo termine abbandona un’accezione letteraria e fantascientifica
per assumerne una tecnica ed industriale. Il primo robot industriale fu installato
nel 1961 presso gli impianti della General Motors negli USA per il trattamento di
1
2 Introduzione della robotica
Figura 1.1 – Stima annuale delle spedizioni mondiali di robot industriali
parti realizzate in pressofusione, al fine di sostituire l’uomo in questo pericoloso ed
insalubre lavoro. Di l`ı a poco, i bracci robotici vennero largamente utilizzati nel
campo industriale per lavori di saldatura, verniciatura, montaggio, trasporto, etc.
Oggi, i robot industriali rappresentano un punto chiave dell’automazione e sono
il risultato dell’integrazione di varie tecnologie scientifiche: meccanica, sistemi di
controllo, elettronica, etc. [3]. Pi`u di 1,3 milioni di robot industriali operano nelle
fabbriche di tutto il mondo con lo scopo di:
• migliorare la qualit`a del lavoro per i dipendenti;
• aumentare la capacit`a produttiva;
• incrementare la qualit`a e la consistenza del prodotto;
• rendere pi`u flessibile la produzione del prodotto;
• ridurre i costi operativi.
Come si evince dai grafici in fig. 1.1 e fig. 1.2, l’impiego dei robot `e in continuo
aumento, e i principali campi di utilizzo sono quelli della produzione automobilistica
e dell’elettronica [4].
Sono state proposte delle definizioni formali di robot industriale:
3
Figura 1.2 – Stima delle spedizioni mondiali di robot industruali divisi per settore,
anni 2011-2013
A reprogrammable, multifunctional manipulator designed to move ma-
terial, parts, tools, or specialized devices through various programmed
motions for the performance of a variety of tasks.
Un manipolatore riprogrammabile, multifunzionale, progettato per spo-
stare materiali, oggetti, utensili, o particolari accessori attraverso diversi
movimenti programmati per l’esecuzione di vari compiti.
(1979, Robotics Institute of America)
An automatically controlled, reprogrammable, multipurpose manipulator
programmable in three or more axes, which may be either fixed in place
or mobile for use in industrial automation applications.
Un manipolatore a controllo automatico, riprogrammabile, multifunzio-
nale programmabile su tre o pi`u assi, che pu`o essere sia fisso che mobile,
usato nelle applicazioni di automazione industriale. (1988, ISO 8373)
Dalle definizioni di cui sopra si desume che un robot industriale `e riprogram-
mabile e multifunzionale. Tali caratteristiche differenziano i robot dalle macchine
industriali. Queste ultime sono in grado di svolgere solamente un compito prede-
finito con operazioni da eseguire in sequenza; non possono prendere delle decisioni
4 Introduzione della robotica
se si presenta una variazione dell’ambiente di lavoro; non possiedono dei sensori per
riprogrammare un percorso predefinito e non possiedono alcuna conoscenza di base
o intelligenza. Ad esempio, un mulino riproduce alcune azioni meccaniche in modo
ripetitivo, ma senza avere la possibilit`a di modificarle. Al contrario, un robot deve
poter essere messo in condizione di adattare le proprie azioni a richieste che possono
mutare nel tempo.
Capitolo 2
Problematiche di controllo
Fra i robot pi`u utilizzati nell’industria vi `e il braccio robotico, o manipolatore mec-
canico, costruito a imitazione del braccio umano, ma spesso dotato di pi`u gradi di
libert`a.
Il braccio robotico `e formato da una sequenza di segmenti rigidi chiamati link,
connessi in cascata da giunti (fig. 2.1).
I link sono disposti in modo da formare una catena aperta. Ogni link `e connesso
al pi`u ad altri due link, in modo da evitare la formazione di catene chiuse. Il primo
giunto `e connesso alla base, che `e solitamente fissata rigidamente all’ambiente di
lavoro, mentre l’ultimo giunto, all’estremit`a della catena, `e connesso ad un organo
terminale (end-effector).
Il numero dei gradi di libert`a di un manipolatore (DOF, degrees of freedom) `e
il numero di variabili indipendenti necessarie per determinare univocamente la sua
posizione nello spazio. Nei manipolatori ogni coppia giunto-link rappresenta un grado
di libert`a. In uno spazio tridimensionale, per poter ottenere qualunque posizione e
orientazione, sono necessari dei bracci ad almeno sei gradi di libert`a. Se la posizione
desiderata `e all’interno dell’area di lavoro, allora l’esistenza di almeno una soluzione
`e garantita [5]. Se il numero di gradi di libert`a `e maggiore rispetto al numero delle
variabili necessarie alla caratterizzazione di un determinato compito, ci troviamo
in una situazione di ridondanza cinematica [6]. La ridondanza permette di poter
scegliere tra pi`u configurazioni dei giunti equivalenti, ma di contro introduce una
maggiore complessit`a di calcolo e di controllo.
I robot sono azionati mediante attuatori posti tipicamente in corrispondenza di
alcuni dei giunti che ne determinano la configurazione.
L’utilizzo dei sensori in robotica `e di vitale importanza, essi permettono di cono-
scere lo stato interno del robot e dell’ambiente che si trova intorno. Esistono svariati
tipi di sensori: quelli che permettono di conoscere la posizione e la velocit`a dei giunti,
la coppia dei motori, la temperatura, di rilevare l’area di lavoro con una videocamera,
etc.
5
6 Problematiche di controllo
Figura 2.1 – Schematizzazione di un braccio robotico a due gradi di libert`a
Il controllo del braccio robotico viene eseguito nello spazio dei giunti, mentre i
movimenti sono specificati nello spazio Cartesiano. Nello spazio Cartesiano vengono
specificati posizione spaziale ed orientamento dell’end-effector. La posizione spaziale
`e riferita ad un sistema di coordinate fissate sulla base del braccio (x, y, z), mentre
l’orientamento `e definito dagli angoli di rollio, beccheggio e imbardata (roll, pitch,
yaw), chiamati angoli di Tait–Bryan. Tali angoli identificano la rotazione lungo gli
assi di riferimento (fig. 2.2).
Nei sistemi di controllo dei manipolatori la conversione tra i due sistemi di
riferimento `e di primaria importanza.
2.1 I tipi di giunti
I giunti che collegano bracci rigidi, con un solo grado di libert`a, possono essere divisi
in due categorie:
• giunti prismatici;
• giunti rotoidali.
I giunti prismatici (fig. 2.3) permettono ad una coppia di bracci di effettuare una
traslazione lungo un asse, mentre i secondi (fig. 2.4) permettono ad una coppia di
bracci di eseguire una rotazione lungo un asse.
2.2 Cinematica diretta 7
Figura 2.2 – Angoli di Tait–Bryan
In questa tesi sono stati impiegati solo giunti rotoidali. Questa scelta `e dovuta
al fatto che nei bracci utilizzati `e presente solo questo tipo di giunto. Nel seguito,
salvo diversamente specificato, si far`a riferimento unicamente ai giunti rotoidali.
2.2 Cinematica diretta
Lo stato di un manipolatore con n gradi di libert`a `e rappresentato dal vettore:
Θ(θ1, ..., θn) (2.1)
dove θi indica la posizione angolare dell’i-esimo giunto. I giunti vengono numerati
da 1 a n, partendo dalla base ed arrivando all’organo terminale.
Per posizionare un corpo rigido nello spazio `e necessario e sufficiente specificare
sei coordinate, tre per la posizione e tre per l’orientamento. Quindi, un corpo rigido
nello spazio possiede sei gradi di libert`a.
Chi usa un manipolatore ha come obiettivo quello di poter controllare l’end-
effector, definendo la posizione e l’orientamento. La posizione e l’orientamento
dell’end-effector sono rappresentati nelle coordinate Cartesiane da:
XEE(x, y, z, θx, θy, θz) (2.2)
La cinematica diretta permette di determinare la posizione dell’end-effector quando
siano note le posizioni dei giunti e viene risolta da:
XEE = f(Θ) (2.3)
8 Problematiche di controllo
Figura 2.3 – Giunto prismatico Figura 2.4 – Giunto rotoidale
dove f `e una funzione non lineare, continua e differenziabile. Viene solitamente
risolta con il metodo di Denavit-Hartenberg [7]. Tale metodo utilizza matrici di
rototraslazione ed, attraverso trasformazioni sequenziali, permette di esprimere la
posizione dell’end-effector rispetto al sistema di riferimento della base, a cui `e fissato
il braccio.
Per definire tali trasformazioni, come indicato in [8], si considerano due giunti
consecutivi i − 1 e i (fig. 2.5) e si pone:
• l’asse zi−1 coincidente con l’asse del giunto ji;
• si individua Oi nel punto d’intersezione tra l’asse zi e la normale comune agli
assi zi−1×zi
1
. Si indica, po, con Oi l’intersezione della normale comune, ricavata
precedentemente, con l’asse zi−1;
• l’asse xi−1 diretto lungo la normale comune zi−1 × zi;
• l’asse yi−1 fissato in modo da completare la terna levogira (regola della mano
destra).
In generale la scelta della terna, secondo questa convenzione, `e univoca tranne
che per i casi:
• con riferimento alla terna base, l’origine O0 e la direzione di x0 non sono univo-
camente determinate, essendo mancante il giunto O−1, quindi non si pu`o deter-
minare la normale comune. Pertanto solo la direzione dell’asse z0 `e determinata.
In questo caso O0 e x0 si scelgono in modo arbitrario;
1
La normale comune tra due rette sghembe `e la retta a cui appartiene il segmento di minima
distanza tra le rette
2.2 Cinematica diretta 9
Figura 2.5 – Parametri di Denavit-Heartenberg
10 Problematiche di controllo
• con riferimento all’ultima terna, poich´e non esiste il giunto n + 1, l’asse zn non
pu`o essere determinato, mentre xn deve essere normale all’asse zn−1; Poich´e
generalmente il giunto n `e rotoidale, l’asse zn si sceglie parallelo all’asse zn−1;
• quando due assi consecutivi sono paralleli, la terna non `e univocamente deter-
minata, perch´e `e impossibile stabilire la normale comune, in tal caso si pone xi
in modo che passi per l’origine della terna i − 1;
• quando due assi consecutivi si intersecano `e impossibile stabilire il verso di xi,
essendo la normale comune un punto, in tal caso si pone coincidente al prodotto
vettoriale zi−1 × zi;
• quando il giunto i `e prismatico solo la direzione dell’asse zi−1 `e determinata.
In tutti questi casi l’indeterminazione pu`o essere sfruttata per semplificare la
procedura ricercando, ad esempio, condizioni d’allineamento tra assi delle terne
consecutive.
I quattro parametri in grado di descrivere la trasformazione tra i giunti i − 1 e i
sono definiti come segue:
ai distanza tra le origini Oi ed Oi (lunghezza del braccio);
di coordinata di Oi sull’asse zi−1 (offset);
αi angolo intorno all’asse xi tra l’asse zi−1 e l’asse zi, valutato positivo in senso
antiorario (torsione del link);
θi angolo intorno all’asse zi−1 tra l’asse xx−1 e l’asse xi, valutato positivo in senso
antiorario.
Dei quattro parametri, due (ai e αi) sono sempre costanti e dipendono soltanto
dalla geometria di connessione della coppia dei giunti. Degli altri due (di e θi) uno
soltanto `e variabile in dipendenza del tipo di giunto (prismatico o rotoidale) utilizzato
per connettere il braccio i − 1 al braccio i. A questo punto si `e in grado di esprimere
la trasformazione di coordinate che lega la terna i alla terna i − 1.
La matrice di trasformazione `e definita come una serie di due rototraslazioni
consecutive:
1. traslare lungo l’asse zi di una lunghezza pari a di in modo da far coincidere le
due origini Oi−1 ed Oi;
2. ruotare intorno all’asse zi−1 di un angolo θi per allineare l’asse xi con il segmento
ai;
2.2 Cinematica diretta 11
3. traslare lungo l’asse xi di una lunghezza pari ad ai in modo da far coincidere
le due origini Oi−1 ed Oi;
4. ruotare intorno all’asse xi di un angolo pari ad αi in modo da fare coincidere
le terne zi e zi−1
Quindi la matrice di trasformazione viene ottenuta con la sequenza delle seguenti
trasformazioni:
Ai−1
i = Transzi−1
(di) · Rotzi−1
(θi) · Transxi
(ai) · Rotxi
(αi) (2.4)
Ai−1
i =







cos θi − sin θi cos αi sin θi sin αi ai cos θi
sin θi cos θi cos αi − cos θi sin αi ai sin θi
0 sin αi cos αi di
0 0 0 1







(2.5)
Moltiplicando sequenzialmente le varie matrici, `e possibile esprimere la posizione
dell’end-effector nel sistema di coordinate della base.
A0
n(Θ) =
n
i=1
Ai−1
i (θi) (2.6)
Le matrici cos`ı ottenute si possono interpretare nel modo seguente:
H =


R3×3 D3×1
P1×3 S1×1

 =


Rotrazione Traslazione
Prospettiva FattoreDiScala

 (2.7)
In particolare, prospettiva e fattore di scala spesso utilizzati nella computer
grafica non sono necessari in questo contesto e quindi la matrice diventa:
A(Θ) =


R(Θ) D(Θ)
0 1

 (2.8)
con:
R =




r11 r12 r13
r21 r22 r23
r31 r32 r33



 D =




x
y
z



 (2.9)
Per ottenere yaw, pitch, e roll dalla matrice di rotazione si eseguono le seguenti
trasformazioni:
12 Problematiche di controllo
pitch = Atan2 −r31, r2
11 + r2
21 (2.10)
yaw = Atan2
r21
cos(pitch)
,
r11
cos(pitch)
(2.11)
roll = Atan2
r32
cos(pitch)
,
r33
cos(pitch)
(2.12)
2.3 Cinematica inversa
La cinematica inversa consiste nella determinazione delle configurazioni da far assu-
mere ai giunti per fare in modo che la posizione dell’end-effector sia quella desiderata,
e viene risolta da:
Θ = f−1
(XEE) (2.13)
Tale problematica non coinvolge solo il controllo dei bracci industriali, ma viene
affrontata anche nell’animazione grafica per il controllo di strutture articolate [9] ed
inoltre nello studio della conformazione delle catene molecolari [10].
La risoluzione della cinematica inversa `e un problema molto pi`u complesso ri-
spetto a quello della cinematica diretta e non esiste alcuna tecnica di tipo generale
che, applicata sistematicamente, dia una soluzione:
• bisogna risolvere equazioni non lineari;
• si possono avere soluzioni multiple o infinite;
• possono non esistere soluzioni ammissibili.
Vengono utilizzate diverse tecniche per risolvere la cinematica inversa; esse pos-
sono essere divise in varie tipologie [11]:
• soluzioni in forma chiusa
– metodi algebrici [12];
– metodi geometrici [13–15];
• soluzioni numeriche
– metodi con eliminazione simbolica [16,17];
– metodi di omotopia continua [15];
– metodi iterativi [13].
2.3 Cinematica inversa 13
L’approccio in forma chiusa consiste nella ricerca delle soluzioni dell’equazione:
A1
n(θ1, ..., θn) = H =







h11 h12 h13 h14
h21 h22 h23 h24
h31 h32 h33 h34
0 0 0 1







(2.14)
dove H rappresenta, in forma matriciale, la posizione e l’orientazione dell’end-
effector. Il compito della cinematica inversa consiste nel trovare i valori di θ1, ..., θn
che soddisfino l’equazione.
Il sistema `e formato da dodici equazioni trascendentali non lineari con n variabili
incognite (con n pari al numero di giunti) che possono essere scritte nella forma
seguente:
A1
n(θ1, ..., θn) = hij, i = 1, 2, 3, j = 1, 2, 3, 4 (2.15)
Le soluzioni in forma chiusa hanno due vantaggi rispetto alle soluzioni numeriche.
Il primo vantaggio `e che i calcoli possono essere eseguiti in modo molto rapido.
Questa velocit`a `e di particolare importanza per le applicazioni robotiche in tempo
reale. Il secondo vantaggio `e dato dalla possibilit`a di trovare tutte le soluzioni,
ottenendo una maggior flessibilit`a rispetto alle tecniche che convergono ad una sola
soluzione.
Purtroppo non `e possibile risolvere la cinematica inversa in forma chiusa per
tutti i tipi di struttura di bracci robotici [18]. Solitamente, i bracci robotici vengono
progettati in modo da soddisfare determinate condizioni che garantiscano l’esistenza
di una soluzione in forma chiusa [19].
I metodi algebrici identificano le equazioni contenenti le posizioni dei giunti e le
manipolano per giungere ad una soluzione [12]. La strategia di tali metodi `e quella
di cercare di ridurre le equazioni in modo che esse dipendano da un’unica variabile.
I metodi geometrici prendono in considerazione la struttura del manipolatore
per semplificare il problema, dividendo il problema della cinematica inversa in due
sotto-problemi, trattando separatamente posizione ed orientazione. Tali metodi for-
niscono delle condizioni sufficienti per l’esistenza di una soluzione in forma chiusa.
Ad esempio per un manipolatore a sei gradi di libert`a le condizioni sono:
• gli assi di tre giunti di rotazione consecutivi si devono intersecare in un punto
(polso sferico, fig. 2.6) [13];
oppure:
• gli assi di tre giunti consecutivi devono essere paralleli ad un altro asse [15].
14 Problematiche di controllo
Figura 2.6 – Esempio di un polso sferico
I metodi numerici non dipendono dalla struttura del manipolatore e quindi pos-
sono essere applicati a qualunque configurazione. Lo svantaggio dei metodi numerici
`e che possono essere lenti ed in alcuni casi non forniscono tutte le soluzioni possibili.
I metodi con eliminazione simbolica eseguono manipolazioni analitiche per eli-
minare le variabili dal sistema di equazioni non lineari per ottenere un pi`u piccolo
insieme di equazioni. Ad esempio, riducono il problema della cinematica inversa per
un manipolatore a sei gradi di libert`a in un polinomio di grado sedici per trovare
tutte le possibili soluzioni [16].
I metodi di omotopia continua cercano una soluzione per tracciare il percorso
da un punto di partenza in cui la soluzione `e nota verso la destinazione in cui la
soluzione non `e nota a priori [15].
Un largo numero di differenti metodi iterativi possono essere impiegati per risol-
vere il problema della cinematica inversa [13]. Molti di questi convergono ad una sola
soluzione basata da una stima iniziale, la qualit`a della stima ha un notevole impatto
sul tempo di calcolo. Spesso tali metodi sono basati sul metodo di Newton-Raphson
detto anche metodo delle tangenti. Il metodo di Newton-Raphson, `e uno dei metodi
per il calcolo approssimato di una soluzione di un’equazione della forma f(x) = 0.
Il metodo delle tangenti viene usato per trovare una soluzione all’equazione:
f(Θ) − XEE = 0 (2.16)
dove f(Θ) `e l’equazione della cinematica diretta, Θ indica le posizioni dei giunti,
e XEE la posizione e l’orientazione dell’end-effector nello spazio Cartesiano.
2.3 Cinematica inversa 15
Nel caso in cui non sia nota una soluzione in forma chiusa per un particolare
manipolatore, i metodi tradizionali richiedono una elevata complessit`a di calcolo
dovuta all’articolata struttura del manipolatore.
Per superare le difficolt`a dei metodi tradizionali, sono stati presi in considerazione
dei metodi alternativi. In particolare `e stato argomento di ricerca la possibilit`a
d’impiego delle reti neurali artificiali per la risoluzione della cinematica inversa.
Le reti neurali artificiali permettono di ottenere una ottimizzazione di tipo off-
line, in grado di assimilare il comportamento di una funzione tramite campioni di
esempio. Tale trattazione `e stata approfondita nel capitolo 6.
16 Problematiche di controllo
Capitolo 3
I manipolatori a disposizione
In azienda sono stati messi a disposizione, per il lavoro di tesi, due manipolatori
robotici:
• Denso Robotics VE026A;
• CrustCrawler AX-18A Smart Robotic Arm.
Tali bracci robotici sono di ridotte dimensioni e sono pensati ai fini dell’appren-
dimento e della formazione in campo accademico [20] [21].
In entrambi i manipolatori l’end-effector `e formato da una pinza (gripper), che serve
ad afferrare gli oggetti in modo simile a quanto avviene con la mano.
Tali manipolatori sono dotati di servomotori con micro-controllore integrato: ogni
motore viene pilotato tramite un bus seriale con cui `e possibile impostare la velo-
cit`a massima di rotazione del motore e la posizione desiderata. Inoltre nel micro-
controllore sono presenti numerosi sensori da cui `e possibile ottenere utili informazioni
per il controllo del manipolatore, ad esempio coppia, posizione e velocit`a istantanea.
La presenza di tali controller integrati nei motori, ha permesso di ridurre al minimo
l’utilizzo di hardware aggiuntivo per il controllo del manipolatore ed ha reso possibile
l’impiego di un unico bus condiviso.
Se fossero stati impiegati sensori “meno sofisticati” sarebbe stato necessario impie-
gare una linea dedicata per ogni servomotore (ad esempio motori comandati con
segnale PWM) ed altre linee supplementari per i sensori.
Per poter interagire con l’elettronica dei servomotori `e necessario utilizzare il
corretto protocollo di comunicazione. Tale protocollo non `e standardizzato e varia
da modello a modello, infatti, per controllare i due manipolatori, `e stato necessario
l’impiego di due sistemi di controllo differenti.
Si `e resa necessaria anche una conversione elettrica dei segnali: i servomotori a
disposizione utilizzano un bus half-duplex con segnali di tipo TTL, mentre le porte
RS-232, presenti comunemente sui PC, sono di tipo full-duplex operanti a ± 12V.
Per tale motivo si `e reso necessario l’utilizzo di hardware supplementare.
17
18 I manipolatori a disposizione
Figura 3.1 – Foto del braccio robot Denso Robotics VE026A
3.1 Denso Robotics VE026A
Denso Corporation `e un produttore giapponese di sistemi integrati e componenti au-
tomobilistici; la Denso Robotics `e il ramo d’azienda che si occupa della progettazione
e della realizzazione di bracci industriali.
Il VE026A `e stato prodotto dalla HIMEJI SoftWorks Co. che si occupa della realiz-
zazione di piccoli robot per scopi ludici/accademici. `E distribuito dalla Denso allo
scopo di mettere a disposizione di studenti un prodotto economico per poter com-
prendere il funzionamento dei modelli utilizzati realmente in ambito industriale.
Il VE026A `e un braccio robot con sei gradi di libert`a ed un un gripper. Per questo
manipolatore non `e disponibile la documentazione originale e i dati tecnici sono stati
estratti da un catalogo [20]. Il manipolatore `e destinato al solo mercato giapponese
ed in rete si trovano documenti scritti prevalentemente in lingua giapponese; tali
riferimenti si sono rivelati di scarsa utilit`a.
3.2 CrustCrawler AX-18A Smart Robotic Arm 19
Tabella 3.1 – Dati tecnici del braccio robot Denso Robotics VE026A
Modello VE026A
Numero di assi 6
Carico massimo senza gripper 100 g
Carico massimo con gripper 50 g
Movimento dei giunti
J1 -80 ∼ +105 deg
J2 -35 ∼ +90 deg
J3 -75 ∼ +135 deg
J4 -140 ∼ +140 deg
J5 -90 ∼ +105 deg
J6 -140 ∼ +140 deg
Peso 550 g
Servo motori Futaba RS303MR
Alimentazione 5 V
4 A
Per il VE026A non era a disposizione il sistema di controllo; `e stato quindi necessario
studiare il funzionamento dei servomotori e realizzare un sistema di controllo. Per
approfondimenti si veda l’appendice a pagina 67.
Analizzando la struttura del manipolatore si pu`o notare che gli assi degli ultimi tre
giunti si intersecano in un punto. Tale configurazione prende il nome di polso sferico
(spherical wrist). Come gi`a visto a pagina 13, tale condizione assicura l’esistenza di
una soluzione in forma chiusa.
La presenza del polso sferico in un manipolatore a sei gradi di libert`a permette di
dividere il problema della cinematica inversa in due sotto-problemi a tre gradi di
libert`a: uno per il posizionamento ed uno per l’orientazione.
3.2 CrustCrawler AX-18A Smart Robotic Arm
CrustCrawler `e una azienda Statunitense fondata nel 2001, produttrice di robot di
piccole dimensioni per utilizzo hobbistico, di ricerca ed industriale. CrustCrawler
20 I manipolatori a disposizione
Figura 3.2 – Dimensioni Denso Robotics VE026A - (valori in cm)
Figura 3.3 – Foto del braccio robot CrustCrawler AX-18A Smart Robotic Arm - 4
DOF
3.2 CrustCrawler AX-18A Smart Robotic Arm 21
Figura 3.4 – Dimensioni CrustCrawler AX-18A Smart Robotic Arm - 6 DOF (valori
in cm)
AX-18A Smart Robotic Arm `e un manipolatore dotato, nella versione base, di quat-
tro gradi di libert`a pi`u un gripper. Tale manipolatore condivide la struttura con
il CrustCrawler AX-12A, e si differenzia solo per il tipo di motori utilizzati, meno
potenti nella versione AX-12A. Il manipolatore AX-18A ha una struttura modulare,
che permette l’installazione di diversi accessori ed elementi aggiuntivi. Tra gli ac-
cessori disponibili si possono trovare: gripper di forme e dimensioni differenti, base
con ruote per trasformare il manipolatore in un robot mobile, sensori di pressione e
ad ultrasuoni ed infine kit per aumentare i gradi di libert`a. Durante il lavoro di tesi
sono stati utilizzati due kit di espansione, che hanno permesso di estendere le capa-
cit`a del braccio fino a sei gradi di libert`a. Sfortunatamente, la struttura di questo
manipolatore non soddisfa le condizioni di esistenza di una soluzione chiusa viste a
pagina 13, quindi non `e garantita l’esistenza di una soluzione in forma chiusa per la
cinematica inversa:
• in nessuna delle tre configurazioni (4, 5 e 6 DOF) `e possibile ottenere tre giunti
di rotazione consecutivi che si intersecano in un punto;
• nella configurazione a sei gradi di libert`a i primi tre giunti hanno assi paralleli,
non `e presente alcun altro giunto parallelo ad essi.
La gestione del sistema di controllo di tale manipolatore `e affrontata nell’appen-
dice a pagina 77.
22 I manipolatori a disposizione
Tabella 3.2 – Dati tecnici del braccio robotico CrustCrawler AX-18A Smart Robotic
Arm
Modello AX-18A
Numero di assi 4, 5, 6
Carico massimo con gripper 2000 g
Movimento dei giunti
J1 -150 ∼ +150 deg
J2 -150 ∼ +150 deg
J3 -150 ∼ +150 deg
J4 -150 ∼ +150 deg
J5 -150 ∼ +150 deg
J6 -150 ∼ +150 deg
Peso 1180 (6 DOF) g
Servo motori Dynamixel AX-18A
Alimentazione 9 V
6 A
Capitolo 4
Rilevamento dei movimenti della
mano
Lo scopo di questa tesi `e quello di realizzare un sistema che permetta di muovere
un manipolare robotico seguendo i movimenti di una mano. A tal proposito `e sta-
to necessario studiare un sistema in grado di individuare posizione ed orientazione
della mano con una certa precisione. Nella successive sezioni vengono presentate le
tecnologie che permettono di seguire i movimenti del corpo umano.
4.1 Tecnologie disponibili
I movimenti di una persona possono essere catturati mediante diversi strumenti.
Negli anni ci sono state numerose proposte:
• Wired glove: speciali guanti in grado di fornire posizione ed orientamento della
mano utilizzando dispositivi di localizzazione magnetici ed inerziali. Il primo
dispositivo di questo tipo commercializzato `e stato il DataGlove [22], un dispo-
sitivo in grado di rilevare posizione e orientamento della mano, il movimento e
la flessione delle dita ed il contatto con gli oggetti.
Sono stati proposti anche dei sistemi per rilevare la posizione delle dita tramite
fibre ottiche [23]. All’interno del guanto, in modo longitudinale alle dita, ven-
gono poste delle fibre ottiche. Tali fibre sono attraversate da impulsi di luce.
Le dita, quando sono piegate, provocano un indebolimento o un’interruzione
del fascio luminoso. Tale variazione permette di stimare la posa della mano.
• Laser scanner: sono degli strumenti che permettono di ottenere il modello
tridimensionale di un oggetto inquadrato. Esistono numerosi tipi diversi di
laser scanner, ma quasi tutti si basano sulle seguenti tre tecnologie o sulla
combinazione di esse:
23
24 Rilevamento dei movimenti della mano
– Triangolazione: viene illuminato un punto dell’oggetto da rilevare. L’an-
golo di riflessione viene rilevato da un sensore posto ad una distanza
predeterminata da cui `e possibile calcolare la distanza.
– Tempo di volo: viene inviato un impulso di luce verso l’oggetto da rilevare.
La riflessione di tale impulso viene rilevata da un sensore. Il tempo inter-
corso tra l’invio e la ricezione dell’impulso permette di rilevare la distanza
dell’oggetto.
– Misurazione di fase: un punto dell’oggetto da rilevare viene illuminato
con un segnale modulato. Un sensore riceve il segnale riflesso e dalla mi-
surazione dello sfasamento dei due segnali viene determinata la distanza.
Vengono eseguite sequenzialmente numerose misurazioni, per poter ricostruire
digitalmente l’intero oggetto.
• Stereo camera: utilizzo combinato di due videocamere. Mediante l’analisi delle
differenze presenti nelle immagini `e possibile stimare le distanze degli oggetti
inquadrati.
• Controller di gesture: strumenti usati come estensione del corpo umano. Tali
controller devono essere impugnati e includono dei sensori che permettono di
rilevare la posizione ed il movimento della mano. Solitamente utilizzano dei
sensori di distanza ad infrarossi affiancati da accelerometri e giroscopi.
Queste tecnologie, dato il loro particolare campo di utilizzo limitato ed ambienti
specifici, hanno spesso un prezzo elevato. Nel campo ludico, per coinvolgere mag-
giormente il giocatore, sono state proposte pi`u implementazioni di tali tecnologie.
Ci`o ha permesso la diffusione di questi strumenti ad un costo ridotto.
Ad esempio, la Nintendo nel 1989 ha presentato il PowerGlove, che `e un guanto in
grado di rilevare l’orientamento della della mano (fig. 4.1) nello spazio. Nel 2006,
sempre Nintendo, ha presentato il Wii Remote: un controller che, mediante l’utilizzo
di accelerometri e sensori di distanza ad infrarossi, fornisce il posizionamento della
mano che impugna tale controller.
Nel 2010 Microsoft ha presentato il Kinect, un sistema in grado di rilevare i
movimenti di un intero corpo umano, senza la necessit`a di indossare o impugnare al-
cunch´e. Tale sistema combina diverse tecnologie: una videocamera RGB, un sensore
di profondit`a ad infrarossi, un array di microfoni, un motore ed un accelerometro
(fig. 4.2). Nella sua ultima revisione (Kinect ver. 2) il sistema `e in grado di tracciare
due corpi e di rilevare la presenza di sei corpi. La localizzazione e i movimenti di
un corpo avvengono mediante l’individuazione di 20 nodi. Tali nodi sono connessi
in modo da formare uno scheletro (Skeletal Tracking) come `e possibile osservare in
fig. 4.3.
4.2 Leap Motion Controller 25
Figura 4.1 – Nintendo PowerGlove
Nel 2013 `e stato presentato il LeapMotion Controller dall’omonima azienda, un
dispositivo che permette di interagire a distanza con il PC ed altri dispositivi (ad
esempio SmartTV) con il rilevamento remoto dei movimenti delle mani [1].
Nel 2014 `e stato presentato il VR Developer Mount, un kit che permette di
utilizzare il LeapMotion Controller in combinazione ad un visore stereoscopico di
realt`a virtuale (Oculus Rift).
Tali tecnologie sono in continua evoluzione e potrebbero, in futuro, aprire nuovi
scenari di sviluppo in applicazioni robotiche e non solo.
Figura 4.2 – Sensori presenti nel
Kinect
Figura 4.3 – Nodi individuabili dal
Kinect
4.2 Leap Motion Controller
Per questo progetto si `e deciso di scegliere un sistema di rilevamento della mano
in grado di funzionare senza la necessit`a di indossare alcun dispositivo particolare,
26 Rilevamento dei movimenti della mano
similmente a quanto avviene con il Kinect. La scelta `e ricaduta sul LeapMotion
Controller, gi`a disponibile in azienda.
La Leap Motion `e una startup, specializzata nello sviluppo di tecnologie di rile-
vazione del movimento dell’uomo per interazione con il computer. Nel 2013 la Leap
Motion ha commercializzato l’omonimo controller.
Codesto dispositivo a differenza del Kinect non `e in grado di riconoscere l’intero
corpo, ma `e specializzato al rilevamento della mano e delle dita. Kinect `e pensato
per identificare i movimenti di un corpo all’interno di una stanza (range 3 m), mentre
il LeapMotion `e un sistema a corto raggio, pensato per poter essere posto su una
scrivania e rilevare i movimenti di oggetti a breve distanza (range 60 cm). La minore
area di lavoro del LeapMotion controller permette di ottenere una migliore precisione
nelle brevi distanze. Il LeapMotion Controller, `e sembrata la scelta pi`u adatta allo
scopo in quanto il campo di utilizzo `e quello che meglio si adatta al progetto.
Figura 4.4 – Controller LeapMo-
tion
Figura 4.5 – Nodi individuabili dal
LeapMotion
Il Leap Motion Controller `e un piccolo dispositivo USB (13x13x76 mm, 45 g)
che integra due camere ad infrarossi e tre led infrarossi. Il range di funzionamento
`e limitato dalla luce emessa dai LED ad infrarossi. L’intensit`a della luce diminuisce
all’aumentare della distanza e quindi `e difficile rilevare gli oggetti oltre una certa
distanza. La quantit`a di luce emessa dai LED `e limitata alla corrente massima
consentita dal bus USB.
4.2 Leap Motion Controller 27
Figura 4.6 – Area visibile dal controller LeapMotion
28 Rilevamento dei movimenti della mano
Capitolo 5
Ambiente di simulazione
Per porre le basi per testare gli algoritmi di cinematica inversa si `e deciso di utilizzare
un ambiente di simulazione: tale scelta ha permesso di eseguire diverse prove senza
dover usare fisicamente il manipolatore reale. Questo modo di procedere ha ridotto i
tempi di sviluppo e ha preservato l’integrit`a del manipolatore, limitandone, l’utilizzo
allo stretto necessario.
L’uso del simulatore ha inoltre permesso di evitare eventuali collisioni che, se
avvenissero con il manipolatore reale, rischierebbero di danneggiarlo. Le collisioni
posso avvenire con l’ambiente circostante, contro la base d’appoggio o con la stessa
struttura del manipolatore.
Per poter simulare il funzionamento di un manipolatore `e necessario essere in
possesso di un modello sufficientemente preciso del braccio da utilizzare, in modo da
rendere coerenti i dati simulati e quelli reali. In questo capitolo verr`a presentato il
simulatore OpenRAVE ed una descrizione dei modelli impiegati.
5.1 OpenRAVE
La scelta sul simulatore `e ricaduta su OpenRAVE [24], in quanto gi`a utilizzato da
precedenti prove all’interno dell’azienda. OpenRAVE `e un ambiente per il test, lo
sviluppo e la messa in funzione di algoritmi per la pianificazione dei movimenti di
applicazioni robotiche. Il target a cui si rivolge questo applicativo `e quello della
robotica industriale.
OpenRAVE `e un software open-source scritto come risultato e continuazione della
tesi di laurea di Rosen Diankov [25]. Nonostante questo strumento sia abbastanza
diffuso, `e poco supportato dalla comunit`a online, infatti in rete si trovano solo esempi
e documenti scritti dallo stesso Diankov. Questo particolare ha reso abbastanza
problematico l’apprendimento dell’utilizzo di OpenRAVE, rallentando non poco lo
sviluppo del progetto di tesi.
29
30 Ambiente di simulazione
`E possibile interagire con OpenRAVE tramite un’interfaccia a riga di comando
Python, oppure tramite la programmazione in C++.
Il punto di forza di OpenRAVE `e l’implementazione del risolutore di cinematica
inversa chiamato IKFast: esso permette di calcolare le soluzioni del modello in forma
chiusa. La particolarit`a principale di questa soluzione `e data dalla velocit`a di calcolo
(6 microsecondi contro i 10 millisecondi di altri metodi numerici [25, p. 78]).
Come gi`a affrontato al capitolo 3, il VE026A soddisfa una condizione per cui `e
garantita l’esistenza di una soluzione in forma chiusa della cinematica inversa: gli
assi di tre giunti consecutivi si intersecano in un unico punto.
Purtroppo, per il manipolatore AX-18A non `e possibile ottenere una soluzione in
forma chiusa chiusa.
A conferma di ci`o il risolutore IKFast `e stato testato con entrambi i manipola-
tori. Nel caso del VE026A il funzionamento `e stato regolare, mentre con l’AX-18A
il risolutore non `e mai riuscito a funzionare correttamente, nonostante i numerosi
tentativi di messa in opera, nelle varie configurazioni con 4, 5 e 6 gradi di libert`a.
Si precisa che OpenRAVE include un risolutore della cinematica diretta che ha
funzionato correttamente con tutti i modelli. Come si vedr`a nel successivo capitolo,
tale risolutore `e stato impiegato per la generazione dei campioni di addestramento di
una rete neurale. Tale rete neurale verr`a utilizzata per ottenere un diverso risolutore
della cinematica inversa.
Modelli in OpenRAVE
Tramite OpenRAVE `e possibile caricare i modelli dei robot, l’ambiente di lavoro
(ostacoli, oggetti) e pianificare i movimenti. Per poter utilizzare un simulatore `e
necessario avere un modello del braccio desiderato. La precisione del modello `e di
estrema importanza, in quanto un modello non corretto genererebbe delle incon-
gruenze tra i valori del simulatore e quelli dell’ambiente reale. OpenRAVE supporta
modelli descritti con formato Collada ed XML proprietario.
Collada (COLLAborative Design Activity) `e uno standard basato su XML uti-
lizzato come formato di interscambio nelle applicazioni di modelli 3D [26].
Il formato XML proprietario, data la sua semplicit`a di utilizzo, `e da preferire nel
caso venga creato il modello manualmente e non si abbia la necessit`a di importare/e-
sportare il modello da/verso altri software [27]. Per il VE026A in rete `e stata trovata
la libreria distribuita da HiveGround [28] contenente il modello del manipolatore.
Tale modello `e disponibile nel formato URDF (Unified Robot Description For-
mat), formato utilizzato dall’ambiente ROS (Robot Operating System) [29]. Median-
te il pacchetto collada urdf contenuto in ROS, `e stato possibile esportare il modello
nel formato Collada e provarene l’utilizzo con il simulatore OpenRAVE.
Per il manipolatore CrustCrawler `e disponibile, invece, un modello Collada di-
rettamente all’interno del repository di OpenRAVE [30].
5.1 OpenRAVE 31
Figura 5.1 – Modello VE026A di HiveGround
32 Ambiente di simulazione
Figura 5.2 – Modello CrustCrawler contenuto in OpenRAVE
5.1 OpenRAVE 33
Figura 5.3 – Modello VE026A con XML proprietario
Un ulteriore modello per il manipolatore CrustCrawler `e disponibile in un pro-
getto ROS con nome AU-CrustCrawler [31].
Nei modelli trovati sono presenti alcune differenze rispetto ai manipolatori in pos-
sesso e pertanto i modelli hanno richiesto alcune modifiche. Tali modelli possiedono
un end-effector differente e, nel caso del CrustCrawler, non sono presenti i kit di
aggiornamento per simulare il quinto ed il sesto grado di libert`a. I file, dal punto di
vista grafico, sono molto accurati e descrivono graficamente il manipolatore punto
per punto. Tali file molto probabilmente sono stati generati mediante l’ausilio di
scanner tridimensionali. I file sono di notevoli dimensioni e, data la loro complessit`a,
la modifica manuale di tali modelli risulta essere molto difficoltosa.
Pertanto si `e optato per la realizzazione da zero dei modelli nel formato XML
proprietario.
Dopo aver realizzato i modelli, `e stato scritto un programma in C++ per la
generazione delle traiettorie.
34 Ambiente di simulazione
Figura 5.4 – Modello CrustCrawler in configurazione 6 DOF con XML proprietario
Capitolo 6
Cinematica inversa con reti neurali
Per superare la complessit`a del controllo dei bracci robotici `e stata presa in esame
l’applicabilit`a delle reti neurali come tecnica risolutiva della cinematica inversa. Le
reti neurali sono largamente accettate come una tecnologia in grado di offrire una
via alternativa per superare le difficolt`a di problemi complessi e mal posti. Le reti
neurali vengono istruite tramite esempi, sono in grado di funzionare in presenza di
rumore o di dati incompleti, possono funzionare con problemi non lineari e, una volta
istruite, forniscono sempre una soluzione con un costo computazionale molto ridotto.
Le reti neurali artificiali sono nate per riprodurre attivit`a tipiche del cervello uma-
no, come la percezione di immagini, il riconoscimento di forme, la comprensione del
linguaggio, il coordinamento senso-motorio, etc. Per una persona risolvere problemi
di questo tipo `e estremamente naturale, mentre non `e banale la loro risoluzione per
un calcolatore. Da questa osservazione risultano evidenti le enormi potenzialit`a di
un computer in grado di imitare il funzionamento del cervello umano in situazioni
di questo tipo. Per questo la struttura di una rete neurale artificiale riprende la
struttura di una rete biologica, con le opportune semplificazioni.
6.1 Rete neurale biologica
Il cervello umano ha circa 20 miliardi di cellule nervose (neuroni), connesse fra loro
[32]. Il numero di interconnessioni `e stimato dell’ordine di un milione di miliardi.
Quando un neurone viene attivato, manda un impulso elettrochimico ai neuroni a cui
`e connesso: l’operazione si ripete per ogni neurone e, nell’intervallo di pochi centesimi
di secondo, intere regioni del cervello risultano interessate dall’evento.
Il neurone `e il componente elementare del sistema nervoso ed `e composto da
(fig. 6.1):
• corpo cellulare;
35
36 Cinematica inversa con reti neurali
Figura 6.1 – Flusso informazionale in una rete neurale biologica
• dendriti;
• assone.
Il corpo cellulare `e rivestito da una membrana in grado di mantenere una polariz-
zazione, vale a dire una concentrazione di cariche elettriche. Tali cariche provengono
dai dendriti, che sono dei prolungamenti ramificati a loro volta in contatto con altri
neuroni. I molteplici dendriti di un neurone concorrono ad eccitare il corpo cellulare
il quale, oltre un certo limite, “scarica” la sua attivazione lungo l’assone, andando
quindi ad interessare altri neuroni. Il punto di contatto fra due neuroni si chiama
sinapsi e si manifesta mediante l’avvicinamento fra l’assone di un neurone con il
dendrite di un altro neurone.
La sinapsi `e una leggera intercapedine fra assone e dendrite in cui il segnale
proveniente dall’assone si trasmette, con un processo elettrochimico, verso il dendrite.
Lo spessore di questa intercapedine pu`o variare nel tempo, provocando quindi un
rafforzamento o un indebolimento della connessione fra due neuroni.
Il contenuto informativo del cervello umano `e rappresentato dall’insieme dei valori
di attivazione di tutti i neuroni e l’elaborazione dell’informazione `e rappresentata dal
flusso di segnali fra i vari neuroni che si eccitano o inibiscono a vicenda (testo tratto
da [33]).
6.2 Rete neurale artificiale
Una rete neurale artificiale (ANN, Artificial Neural Network), normalmente chiamata
solo “rete neurale” (NN, Neural Network), `e un modello di calcolo matematico il cui
6.2 Rete neurale artificiale 37
Figura 6.2 – Il neurone artificiale
funzionamento `e derivato da quello delle reti neurali biologiche.
Una rete neurale artificiale `e formata dalla connessione di neuroni artificiali. Il
neurone artificiale `e una schematizzazione del neurone biologico, in cui le propriet`a
funzionali sono descritte da formule matematiche, senza tener conto dei fenomeni
elettrici, chimici, termici e biologici che avvengono nella realt`a.
La rete neurale artificiale `e un sistema adattivo che cambia la sua struttura basata
su informazioni esterne o interne, che scorrono attraverso la rete durante la fase di
apprendimento. Una rete neurale artificiale riceve segnali esterni su uno strato di
nodi (unit`a di elaborazione) d’ingresso, ciascuno dei quali `e collegato a numerosi nodi
interni, organizzati in pi`u livelli. Ogni nodo elabora i segnali ricevuti e trasmette il
risultato ai nodi successivi.
6.2.1 Modello di un neurone artificiale
Ogni neurone ha n canali di ingresso x1, ...xn, a ciascuno dei quali `e associato un peso
(fig. 6.2). I pesi wi sono numeri reali che riproducono le sinapsi. Il valore assoluto
di un peso rappresenta la forza della connessione. L’uscita, cio`e il segnale, con cui
il neurone trasmette la sua attivit`a all’esterno, `e calcolata applicando la funzione di
attivazione alla somma pesata degli ingressi. Indicando con a = n
i=1 wixi la somma
pesata degli ingressi, abbiamo:
y = f(a) = f
n
i=1
wixi (6.1)
L’uscita di un neurone artificiale (e di conseguenza anche della rete artificiale) pu`o
essere un numero reale o discreto appartenente ad un certo intervallo, solitamente
[0,1] oppure [-1,1]. Le funzioni comunemente utilizzate sono le funzioni lineari, lineari
a tratti, a soglia e di tipo sigmoide (fig. 6.3).
38 Cinematica inversa con reti neurali
Funzione lineare Funzione soglia Funzione sigmoide
Figura 6.3 – Esempi di funzioni di attivazione per un neurone artificiale
6.2.2 Funzionamento di una rete neurale artificiale
Le reti neurali per poter essere utilizzate devono essere addestrate. Esistono princi-
palmente due tipi di tipologie di apprendimento per le reti neurali:
• apprendimento non supervisionato;
• apprendimento supervisionato.
L’apprendimento non supervisionato necessita dei soli valori di ingresso. Le re-
ti che utilizzano l’apprendimento non supervisionato tentano di raggruppare i dati
d’ingresso e di individuare degli opportuni cluster rappresentativi dei dati stessi, fa-
cendo uso tipicamente di metodi topologici o probabilistici. Vengono solitamente
utilizzate per la classificazione e per la compressione dei dati. Le reti di questo tipo
pi`u utilizzate sono le reti di Kohonen. Esse rappresentano i dati in input su una
mappa bidimensionale, in cui i campioni simili sono mappati vicini mentre i dissimili
sono mappati distanti.
L’apprendimento supervisionato prevede di sottoporre alla rete degli esempi di
addestramento contenenti i valori di ingresso e le relative uscite, per far in modo
che la rete possa imparare dai valori che le vengono proposti. Il compito della rete
`e quello di fornire un’uscita per ogni valore degli ingressi; in altre parole, la rete
neurale realizza una funzione F:
Y = F(X) (6.2)
La rete neurale con apprendimento supervisionato `e quindi la tipologia di rete che
meglio si presta alla risoluzione della cinematica inversa. In particolare si render`a
necessario addestrare una rete neurale in grado di computare l’equazione (2.13). Per-
ci`o lo studio di questa tesi si `e concentrato sullo studio delle reti con apprendimento
supervisionato.
Una rete neurale `e formata da pi`u neuroni interconnessi. Alcuni neuroni ricevono
segnali dall’esterno e sono chiamati unit`a di input, analogamente i neuroni che forni-
scono il loro output all’ambiente esterno sono le unit`a di output. I restanti neuroni
appartenenti alla rete vengono chiamati neuroni nascosti o intermedi.
6.2 Rete neurale artificiale 39
Figura 6.4 – Rete neurale artificiale multi-livello
L’input di una rete neurale `e dunque un insieme di numeri reali che indichiamo
con X; analogamente indichiamo con Y l’insieme dei numeri che formano l’output
della rete.
I neuroni possono essere connessi utilizzando varie strutture topologiche, ma quel-
le comunemente utilizzate sono le reti multi-livello (fig. 6.4). Nelle reti multi-livello
i neuroni sono organizzati in insiemi separati e disgiunti, in cui `e presente un livello
di ingresso, uno d’uscita e tutti gli altri livelli sono chiamati nascosti o intermedi.
Ogni livello `e completamente connesso con il livello successivo e non sono possibili
ulteriori collegamenti (fig. 6.4).
Il teorema di Hecht-Nielsen [34] afferma che una qualsiasi funzione Y = F(X)
pu`o essere computata con elevata accuratezza da una rete neurale multi-livello con
un solo livello intermedio.
Tale teorema riveste importanza pi`u teorica che pratica, infatti non indica quante
devono essere le unit`a, n´e quali devono essere i pesi wi per ottenere una rete che
effettivamente esegua una funzione F. Non vi `e una soluzione generale a questo
problema, ma esistono delle tecniche che forniscono delle approssimazioni funzionanti
nella pratica come la back-propagation.
Il fatto che l’informazione venga elaborata in maniera distribuita da una molti-
tudine di unit`a elementari (neuroni), porta a due conseguenze:
• resistenza al rumore;
• resistenza al degrado.
40 Cinematica inversa con reti neurali
Resistenza al rumore significa che la rete `e in grado di funzionare anche in presen-
za di dati incerti, incompleti o leggermente errati. Resistenza al degrado significa
che la rete `e in grado di funzionare anche in presenza di unit`a elementari difettose.
Quest’ultima caratteristica non assume un aspetto rilevante per le reti neurali imple-
mentate via software, ma assume importanza in quelle implementate via hardware o
in quelle biologiche.
L’addestramento di una rete neurale pu`o avvenire senza doverle fornire tutti gli
esempi possibili, ma soltanto un sottoinsieme significativo di essi. La capacit`a di
generalizzazione del rete neurale, permette di ottenere dei risultati per dei valori non
noti a priori.
La back-propagation `e un algoritmo di allenamento della rete neurale che permet-
te di ottenere i pesi della rete a partire da campioni di valori di cui si conosce l’input
e l’output, chiamato insieme di addestramento (training set). L’algoritmo sottopone
pi`u volte il training set alla rete, aggiustando di volta in volta i pesi per minimizzare
l’errore quadratico ottenuto dalla differenza dall’uscita desiderata e quella ottenuta
mediante l’utilizzo della rete. Ogni ciclo di apprendimento della rete neurale `e detto
“epoca” (epoch). Dopo aver ottenuto una sufficiente approssimazione della funzione
desiderata, termina la fase di addestramento e risultano determinati i pesi.
Successivamente si passa alla fase di testing, in cui viene utilizzato un secondo
insieme di valori di input ed output, chiamato insieme di testing, con cui si valuta
il grado di generalizzazione della rete. In altre parole, si valutano le prestazioni per
valori non noti durante l’addestramento.
Una rete neurale esegue una ottimizzazione di tipo off-line durante la fase di
training e, durante la fase di testing vengono valutate le prestazioni di tale otti-
mizzazione. Tali procedimenti possono richiedere molto tempo e dipendono dalla
struttura topologica della rete, dall’algoritmo di allenamento, dalla grandezza dei
pattern, etc. Una rete addestrata `e in grado di fornire un risultato in un tempo
molto ridotto in quanto `e gi`a stata eseguita una ottimizzazione a priori.
In una rete neurale multi-livello le funzioni di attivazione dei neuroni di ingresso
sono lineari, mentre quelle dei livelli intermedi e d’uscita sono di tipo sigmoidale. Le
funzioni sigmoidali (fig. 6.3) forniscono un valore d’uscita solo per valori appartenenti
ad un intervallo, solitamente [0, 1] o [−1, 1]. Quindi, i valori d’uscita della rete neurale
devono appartenere ad un determinato intervallo. Pertanto, per poter addestrare
correttamente una rete neurale `e necessario normalizzare i valori d’uscita degli insiemi
di testing e di training. Siccome i neuroni di ingresso utilizzano una funzione di
attivazione lineare, non `e strettamente necessaria la normalizzazione dei valori di
input, comunque la normalizzazione di tali valori viene comunemente effettuata,
rendendo omogenee le grandezze dei valori di input e di output, poich´e tale approccio
permette di velocizzare l’apprendimento della rete.
`E bene puntualizzare che le capacit`a di apprendimento di una rete neurale di-
pendono da una accurata scelta dei parametri, ed `e possibile che una rete non riesca
6.3 Cinematica inversa 41
affatto ad apprendere la funzione desiderata se i vari parametri non sono adegua-
ti. Per fare in modo che la rete approssimi correttamente la funzione desiderata
bisogna [35]:
• trovare una struttura adeguata di rete neurale;
• scegliere opportunamente gli input e gli output;
• creare un opportuno campione di training;
• addestrare adeguatamente la rete.
Il funzionamento di una rete neurale addestrata pu`o essere visto come una black-
box e non `e possibile dall’esterno comprendere il funzionamento interno della strut-
tura. Siccome non esistono delle tecniche generalizzate che permettano di ottenere
automaticamente i parametri adeguati, per poter trovare i valori ottimali di una rete
neurale `e necessario eseguire molte prove in cui si confrontano i risultati ottenuti.
6.3 Cinematica inversa
Come visto nel capitolo 2, la risoluzione della cinematica inversa avviene mediante
la risoluzione della seguente equazione:
Θ = f−1
(XEE) (6.3)
dove Θ(θ1, ..., θn) rappresenta lo stato dei giunti, XEE(x, y, z, θx, θy, θz) le coordina-
te Cartesiane dell’end-effector e f(Θ) rappresenta la formulazione della cinematica
diretta.
Per poter addestrare una rete neurale `e necessario generare i campioni degli in-
siemi di training e testing. Per ottenere tali valori viene utilizzata la cinematica
diretta.
Bisogna porre attenzione al fatto che la cinematica diretta ammette sempre una
soluzione (salvo collisioni); data la configurazione dei giunti `e possibile calcolare
univocamente le coordinate Cartesiane dell’end-effector. La cinematica inversa al
contrario pu`o ammettere pi`u di una soluzione, data la posizione dell’end-effector
potrebbero esistere pi`u configurazioni dei giunti valide, oppure potrebbe non esistere
alcuna configurazione valida.
Quando si usa un risolutore che fornisce solo una delle molteplici soluzioni della
cinematica inversa, ci si trova nella condizione in cui `e molto difficile poter eseguire
delle traiettorie. Una traiettoria `e formata da un insieme ordinato di coordinate
Cartesiane dell’end-effector. Per poter seguire in modo opportuno una traiettoria
sarebbe necessario trovare di volta in volta le configurazioni angolari che richiedono
42 Cinematica inversa con reti neurali
il minor movimento dei giunti. In questo modo si limita il problema per il quale,
per eseguire piccoli movimenti spaziali, sia necessario utilizzare una configurazione
molto differente da quella precedente.
Per la loro struttura le reti neurali permettono di ottenere solo una soluzione del
problema ed hanno difficolt`a a gestire problemi in cui sono possibili pi`u soluzioni.
Se la rete viene addestrata con campioni contraddittori la rete non potrebbe indivi-
duare pi`u soluzioni differenti, ma fornirebbe in uscita un valore intermedio, con la
conseguenza di ottenere un valore errato.
Per cercare di ovviare al problema delle soluzioni multiple `e possibile formulare
diversamente il problema, fornendo maggiori informazioni in modo che il problema
ammetta un’unica soluzione.
Nel successivo paragrafo verranno presentati articoli scientifici che propongono
l’impiego delle reti neurali come risolutori della cinematica inversa.
6.4 Stato dell’arte delle soluzioni al problema del-
la cinematica inversa basate sulle reti neurali
Durante il lavoro di tesi sono stati presi in considerazione pi`u articoli che trattano la
risoluzione della cinematica inversa. Dal lavoro di ricerca `e emerso che le reti neurali
possono essere utilizzate senza un’approfondita conoscenza del modello fisico/mate-
matico del funzionamento del manipolatore. Inoltre le reti neurali permettono di
ottenere un risolutore generalizzato che non dipende strettamente dal tipo di mani-
polatore utilizzato. Tutte le reti prese in considerazione sono state allenate facendo
uso dell’algoritmo di back-propagation e sue varianti, in quanto questo algoritmo
sembra essere il pi`u diffuso ed adeguato allo scopo.
Gli articoli [36] e [37] propongono l’utilizzo delle reti neurali come sistema per la
soluzione della cinematica inversa per i manipolatori di cui non si conosce una solu-
zione in forma chiusa, valutando i pregi di tale soluzione. Le reti neurali consentono
di superare le difficolt`a derivanti dall’utilizzo dei metodi tradizionali, eseguendo una
ottimizzazione che permette di ottenere un risultato in tempi molto brevi, adatti ai
movimenti real-time.
Nell’articolo [38] viene proposta una rete neurale con un livello intermedio formato
da 100 neuroni per risolvere la cinematica inversa per un manipolatore planare a tre
link. Vengono impiegati come ingressi della rete le coordinate Cartesiane dell’end-
effector (3)1
, come uscite le posizioni angolari dei giunti (3). `E interessante notare
1
I valori indicati tra perentesi tonde indicano la quantit`a di neuroni di input/output associati
alle variabili
6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa basate sulle reti
neurali 43
che viene eseguito un filtraggio dei dati di training, valori in contraddizione tra loro
vengono eliminati. Questo permette di evitare che la rete neurale apprenda due
configurazioni angolari differenti per la medesima posizione dell’end-effector.
Nell’articolo [39] vengono confrontate varie configurazioni di reti neurali per risol-
vere la cinematica inversa per un manipolatore a sei gradi di libert`a. In particolare
dallo studio si evince che i migliori risultati si ottengono quando la rete `e strutturata
con:
• un solo un neurone d’uscita e due livelli intermedi;
• pi`u neuroni d’uscita ed un solo livello intermedio.
Nell’articolo [35] viene proposto un metodo alternativo per la risoluzione della
cinematica inversa. Per un manipolatore a sei gradi di libert`a viene proposta una
particolare rete neurale che tratta separatamente posizionamento (primi tre giunti)
e orientazione (ultimi tre giunti) dell’end-effector. Tale approccio sembra essere
ispirato al metodo di decomposizione proposto da Pieper [13]. Dai risultati emerge
che il risolutore riesce ad ottenere buoni risultati per il posizionamento, ma scarsi
risultati per l’orientazione.
Nell’articolo [40] viene proposta una variante dell’algoritmo di back-propagation
per la risoluzione della cinematica inversa di un manipolatore a tre gradi di libert`a.
Tale variante non richiede l’utilizzo di una fase di training, ma necessit`a una stima
iniziale del risultato desiderato. Di volta in volta viene utilizzata la cinematica diretta
per valutare le prestazioni della rete ed aggiustare i pesi al fine di minimizzare l’errore.
Si differenzia dall’approccio classico della back-propagation in quanto viene eseguita
una ottimizzazione on-line.
Nell’articolo [41] vengono confrontati gli algoritmi di apprendimento di una rete
utilizzata per la risoluzione della cinematica inversa di un manipolatore a sei gradi di
libert`a. In questo caso come input viene usata la posizione dell’end-effector (3) e come
output la configurazione angolare dei giunti (6). Tra gli algoritmi confrontati, quello
che ottiene un miglior risultato `e quello chiamato Quick-Propagation. Tale metodo
risulta essere notevolmente pi`u veloce rispetto ai modelli analitici generalizzati per i
manipolatori che non hanno una semplice soluzione in forma chiusa. Inoltre rispetto
agli altri algoritmi di apprendimento `e quello che fornisce l’errore minore.
Nell’articolo [42] vengono confrontate varie strutture e funzioni di attivazione per
la risoluzione della cinematica inversa in un manipolatore con sette gradi di libert`a.
Vengono posti in input le coordinate Cartesiane dell’end-effector (12, posizione e
44 Cinematica inversa con reti neurali
matrice di rotazione) ed in output le configurazioni dei giunti angolari (7). Dai
risultati si osserva che le migliori prestazioni si ottengono con una rete un livello
intermedio, 40 neuroni nascosti e con funzioni di attivazione: la curva sigmoidale (in
Matlab Logsig, input normalizzati nell’intervallo [0,1])(fig. 6.5) e tangente iperbolica
(in Matlab Tansig, input normalizzati nell’intervallo [-1,1])(fig. 6.6).
Figura 6.5 – Curva sigmoidale Figura 6.6 – Tangente iperbolica
La curva sigmoidale `e ottenuta dalla formula:
logsig(x) =
1
1 + e−x
(6.4)
La tangente iperbolica `e ottenuta:
tanh(x) =
1 − e−2x
1 + e−2x
(6.5)
Nella pubblicazione [43], vengono discusse le tecniche per la normalizzazione dei
pattern da utilizzare con una rete neurale nella risoluzione della cinematica inversa.
Vengono proposti tre metodi per individuare i valori minimi e i valori massimi, allo
scopo di effettuare una opportuna normalizzazione:
1. Valutazione dei limiti strutturali del manipolatore. Ogni giunto possiede un
range minimo e massimo in cui pu`o muoversi, da tali dati `e possibile ricavare
l’area di lavoro del manipolatore.
2. Individuazione dei valori minimi e massimi dell’insieme di training. Questo ap-
proccio `e da preferire nel caso in cui si preveda di utilizzare solo un sottoinsieme
dell’area di lavoro.
3. Filtraggio dell’insieme di training dei valori che potrebbero generare soluzioni
contraddittorie e successiva individuazione di minimi e massimi.
6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa basate sulle reti
neurali 45
Nella pubblicazione [39] vengono provate diverse strutture di rete neurale per la
soluzione della cinematica inversa, da cui si evince che la rete neurale fornisce migliori
risultati:
• in presenza di output multipli, con un solo layer nascosto;
• il numero di neuroni nei livelli nascosti deve essere pari al numero di neuroni
in input.
Anche se non riguarda in modo specifico il problema della cinematica inversa
`e stato considerato l’articolo [44] che propone una tecnica per dimensionare una
rete neurale con un solo livello nascosto. Tale metodo pone in relazione i neuroni
appartenenti al layer nascosto con il numero di neuroni in input, il numero di neuroni
in output e i campioni di training.
0, 6h =
m(q − 1)
n + m + 1
(6.6)
dove:
• h = neuroni presenti nel layer nascoso;
• n = numero di input;
• m = numero di output;
• q = campioni di training.
Con tale valore, la rete neurale generalmente viene addestrata correttamente e per-
mette di evitare il rischio di sovradattamento (overfitting), fenomeno che avviene
quando la rete neurale si specializza troppo sui campioni di training, perdendo la
generalit`a della risoluzione su campioni differenti.
L’articolo [45] propone un interessante approccio per migliorare le prestazioni di
una rete neurale la cui struttura sia gi`a stata collaudata. Partendo da una rete neu-
rale esistente, mantenendo inalterati i parametri di input e output, vengono generate
altre reti neurali, con dei parametri leggermente differenti, ad esempio allenate con
un diverso training-set, oppure con un numero di epoche differenti o un numero di
neuroni intermedi differenti. Tutte le reti contemporaneamente vengono utilizzate
per la risoluzione della cinematica inversa (committee machine approach). Mediante
l’utilizzo della cinematica diretta, di volta in volta viene calcolato l’errore commesso
da ciascuna rete e viene scelto il risultato con errore minore. L’utilizzo simultaneo
di pi`u reti neurali `e reso possibile dalle modeste capacit`a di calcolo richieste per il
calcolo della cinematica diretta e dall’alto grado di parallelizzazione di questo ap-
proccio. Dalle prove si evince che non si hanno significativi vantaggi nell’utilizzo di
pi`u di sei reti neurali.
46 Cinematica inversa con reti neurali
Nella pubblicazione [46] viene presentato un utilizzo alternativo della rete neurale
nella soluzione della cinematica inversa per un manipolatore a sei gradi di libert`a.
La rete viene utilizzata per l’individuazione delle singolarit`a. La singolarit`a viene
definita come:
A condition caused by the collinear alignment of two or more robot axes
resulting in unpredictable robot motion and velocities.
Una condizione causata dall’allineamento collineare di due o pi`u assi del
robot con conseguente movimento e velocit`a imprevedibile del robot.
(1999, American National Standard for Industrial Robots and Robot Systems)
Quando la struttura `e in una configurazione singolare, possono esistere infinite so-
luzioni al problema cinematico inverso [47]. Per individuare le singolarit`a vengono
analizzate le differenze delle posizioni ottenute tramite la rete neurale e i risultati ot-
tenuti con la cinematica diretta. Nelle zone in cui la rete neurale commette un errore
maggiore si suppone la presenza di configurazioni singolari. Conoscere le singolarit`a
pu`o essere utile nella scelta di una adeguata traiettoria che eviti punti critici nel suo
percorso.
Gli articoli che hanno suscitato maggior interesse sono quelli proposti da A. T.
Hasan [48,49] e riguardano l’utilizzo della rete neurale per la risoluzione della cine-
matica inversa per un manipolatore a sei gradi di libert`a. Tali articoli si differenziano
dagli altri perch´e, oltre a correlare le posizioni dell’end-effector con quelle dei giunti
prendono in considerazione anche le loro velocit`a (cinematica istantanea [11]). Le-
gare le velocit`a angolari dei giunti con quelle dell’end-effector permette di superare
le singolarit`a, evitando che piccoli movimenti nello spazio Cartesiano comportino
elevati movimenti nello spazio dei giunti.
Partendo dalla formulazione della cinematica diretta e calcolando la sua derivata
si ottengono:
XEE = f(θ) (6.7)
˙XEE = J(f(θ)) ˙θ (6.8)
in cui f rappresenta una funzione differenziabile non lineare. Invertendo tali
equazioni si ottengono le formulazioni relative alla cinematica inversa:
θ = f−1
(XEE) (6.9)
˙θ = J−1
(f(θ)) ˙XEE (6.10)
6.5 Rete neurale proposta 47
Nell’articolo [49] vengono messe a confronto due reti neurali per la risoluzione
della cinematica inversa per un manipolatore a sei gradi di libert`a. Nella prima,
viene usato un approccio “tradizionale” con in input la posizione spaziale dell’end-
effector (3) ed in output le configurazioni angolari dei giunti (6). Nella seconda invece
vengono aggiunti: in input la velocit`a lineare dell’end-effector (4) ed in output le
velocit`a angolari dei giunti (12). Dalle prove emerge che la seconda rete possiede
migliori capacit`a di apprendimento ed, in genere, fornisce prestazioni migliori.
L’articolo [48] prosegue lo studio dell’articolo precedente e propone una rete cos`ı
strutturata:
• In input:
– posizione Cartesiana desiderata (3);
– orientazione desiderata (3);
– modulo velocit`a lineare desiderata (1).
• In output:
– posizione angolare dei giunti desiderata (6);
– velocit`a angolare dei giunti desiderata (6).
In questo caso viene aggiunto in ingresso anche l’orientamento dell’end-effector. An-
che con questa configurazione vengono mostrate le capacit`a di superare le singolarit`a
con l’approccio della cinematica istantanea.
Prendendo in considerazioni gli articoli sopraccitati, sono state provate varie
strutture di reti neurali che potessero essere utili alla risoluzione della cinematica
inversa dei manipolatori a disposizione.
6.5 Rete neurale proposta
Riprendendo le considerazioni i risultati dell’articolo [48] `e stata provata una rete
strutturata nel seguente modo:
• In input:
– posizione spaziale dell’end-effector (3);
– orientazione dell’end-effector espressa dal quaternione (4);
– modulo della velocit`a spaziale dell’end-effector (1);
– velocit`a spaziale dell’end-effector lungo gli assi x, y e z (3).
• In output:
48 Cinematica inversa con reti neurali
– posizione angolare dei giunti (6);
– velocit`a angolare dei giunti (6).
Tale configurazione si differenzia da quella proposta da A. T. Hasan [48] per l’uti-
lizzo del quaternione per determinare l’orientazione dell’end-effector e per l’aggiunta
delle singole velocit`a spaziali.
La scelta del quaternione `e dovuta al fatto che il simulatore OpenRAVE per
determinare l’orientamento di un corpo rigido non utilizza gli angoli di Tait–Bryan
ma il quaternione. Tale sistema `e da considerarsi pi`u adatto allo scopo in quanto
permette di superare il problema del blocco cardanico (gimbal-lock).
Utilizzando la rappresentazione di Tait–Bryan, il gimbal-lock si manifesta quando
viene a mancare una rappresentazione univoca dell’orientamento. Tale situazione si
verifica quando viene eseguita una rotazione di 90° lungo un asse, rendendo coinci-
denti i restanti assi, provocando la perdita di un grado di libert`a. Nella fig. 6.7 `e
possibile osservare che `e possibile ottenere la medesima rotazione eseguendo rota-
zioni di 90° lungo l’asse di yaw e successivamente di pitch ed in modo equivalente
eseguendo le rotazioni lungo l’angolo di pitch e poi di roll.
Figura 6.7 – Esempio di gimbal-lock
L’aggiunta delle velocit`a lungo gli assi ha permesso di migliorare i risultati.
La rete utilizza, come tecnica di addestramento, la back-propagation, la funzione
di attivazione lineare per i neuroni di ingresso e la tangente iperbolica come funzione
di attivazione dei neuroni nascosti e d’uscita.
6.6 Metodologia 49
6.6 Metodologia
Il lavoro relativo all’impiego delle reti neurali `e stato suddiviso in pi`u fasi:
• generazione dei campioni;
• normalizzazione dei campioni;
• addestramento di una rete neurale;
• applicazione pratica del risolutore di cinematica inversa.
6.6.1 Generazione dei campioni
Per poter addestrate una rete neurale `e necessario generare dei campioni compren-
denti alcuni valori di input e di output della funzione che si vuole implementare.
Parte di tale insieme viene utilizzato per la fase di training, mentre la parte restante
per la fase di testing.
Nel caso in questione in cui si vuole implementare la cinematica inversa, tali
valori sono ottenibili tramite la cinematica diretta. In ingresso saranno presenti le
coordinate spaziali dell’end-effector (posizione ed orientamento) ed in uscita saranno
presenti le posizioni angolari dei giunti.
Siccome la cinematica inversa pu`o ammettere pi`u di una soluzione `e possibile
aggiungere dei valori di input e di output in modo da limitare lo spazio delle soluzioni.
I valori di addestramento della rete neurale sono stati ottenuti tramite il simula-
tore OpenRAVE. I valori sono stati ottenuti nel modo seguente:
1. tramite una funziona di randomizzazione si ottiene una nuova configurazione
dei giunti che soddisfi i limiti strutturali del manipolatore;
2. si verifica che tale configurazione non comporti delle collisioni, in tal caso si
ripete il passo precedente;
3. si genera una traiettoria per raggiungere la nuova configurazione, che rispetta
i vincoli di velocit`a massima dei giunti;
4. si esegue la traiettoria e ad intervalli regolari si si registrano posizione e velocit`a
dei giunti e dell’end-effector;
5. si ripete il procedimento fino al raggiungimento di campioni desiderati.
In questa fase `e importante dimensionare adeguatamente l’intervallo di lettura
dei parametri del manipolatore mentre esegue i movimenti. Un intervallo troppo
breve porterebbe in una situazione si “sovraccampionamento”, mentre un intervallo
troppo duraturo avrebbe l’effetto opposto. Nel seguito verr`a valutata l’influenza di
tale valore.
50 Cinematica inversa con reti neurali
6.6.2 Normalizzazione dei campioni
Per il corretto utilizzo delle reti neurali `e necessario normalizzare i campioni d’uscita.
Considerando i risultati dell’articolo [42] `e stato deciso di utilizzare nei livelli inter-
medi e d’uscita la funzione tangente iperbolica sigmoidale(fig. 6.6). Per poter usare
tale funzione `e necessario necessario normalizzare i valori d’uscita all’interno dell’in-
tervallo [-1,1]. Per velocizzare l’apprendimento della rete, e per omogeneizzare le
dimensioni dei campioni, anche i valori di ingresso sono stati normalizzati all’interno
lo stesso intervallo.
Per l’individuazione dei valori minimi e massimi da usare per la normalizzazione
`e stata seguita la seconda proposta dell’articolo [43], che consiste nell’individuazione
dei minimi e dei massimi sull’insieme di training.
Per poter eseguire una normalizzazione lineare con range [0,1] la formula da
applicare `e:
xnorm1 =
(x − xmin)
(xmax − xmin)
(6.11)
Per ottenere l’intervallo [-1,+1] `e sufficiente scalare la precedente equazione:
xnorm2 = (2xnorm1) − 1 (6.12)
6.6.3 Addestramento della rete neurale
Per realizzare le reti neurali necessarie si `e scelto di far uso di una libreria che
possa implementare le reti neurali; in particolare la libreria deve poter realizzare reti
multi-livello e far uso dell’algoritmo di back-propagation. Tale scelta `e ricaduta sulla
libreria FANN [50] (Fast Artificial Neural Network Library).
Questa libreria `e disponibile per vari linguaggi di programmazione, tra cui il C++,
utilizzato per il lavoro di questa tesi. La libreria `e progettata con l’obiettivo di essere
veloce, versatile e semplice da utilizzare. Essa `e stata sviluppata per poter essere
eseguita su dispositivi senza elevata capacit`a computazionale e pu`o essere eseguita
anche su dispositivi senza un processore per il calcolo in virgola mobile. L’autore
ha scritto tale libreria in quanto aveva bisogno di una rete neurale in grado di poter
essere eseguita su un palmare IPAQ non dotato di FPU.
Spesso, valutare le prestazioni di una rete neurale basandosi solamente su risultati
numerici non `e molto agevole, per questo sono stati utilizzati dei tool grafici in modo
da comprendere e valutare meglio il comportamento delle reti provate. In particolare
sono stati utilizzati:
• FannTool [51]: strumento che include funzioni automatizzate per la ricerca dei
migliori parametri della rete neurale. In particolare, `e possibile provare tutte
le tecniche di apprendimento e le funzioni di attivazione fornite dalla libreria
6.6 Metodologia 51
FANN. Al termine dell’analisi vengono forniti i parametri che permettono di
minimizzare l’errore.
• FannExplorer [52]: strumento che permette di eseguire una rappresentazione
grafica dei dati relativi alla rete neurale. In particolare `e stato utilizzato per
studiare l’andamento dell’errore durante l’addestramento della rete, e per otte-
nere un confronto grafico tra i valori di output desiderati e quelli ottenuti dalla
rete neurale.
6.6.4 Valutazione delle prestazioni
Le prestazioni di una rete neurale vengono ottenute valutando l’errore quadratico
medio (MSE, Mean squared error). Tale errore `e misurato dal confronto dei valori i
cui risultati sono noti con i valori ottenuti in uscita della rete neurale.
Solitamente, si considerano due valori di MSE, uno relativo ai campioni di training
e uno per quelli di testing. Quando il pattern di training viene sottoposto numerose
volte e quando il numero di neuroni nascosti `e sovra-abbondante si rischia di ottenere
un addestramento “aggressivo” con la possibilit`a che la rete neurale manifesti l’effetto
memoria, specializzandosi troppo sul pattern di addestramento. In questa situazione
il comportamento della rete perde le capacit`a di generalizzazione, offrendo buoni
risultati solo con i valori di testing.
Il grafico in fig. 6.8 riporta un andamento tipico del comportamento delle reti
all’aumentare delle epoche di apprendimento.
La rete `e inizializzata con i pesi dei neuroni casuali e durante le prime iterazioni
l’errore con entrambi gli insiemi `e molto elevato. La rete, all’aumentare delle itera-
zioni, assimila la relazione tra gli ingressi e le uscite e quindi gli errori diminuiscono.
Dopo alcuni cicli, in corrispondenza dell’errore minimo riferito ai campioni di testing,
la rete ha un comportamento generalizzato. Superato tale valore si verifica il feno-
meno di overfitting: la rete inizia a specializzarsi sui campioni di training, perdendo
generalit`a. Il caso ideale prevede che l’addestramento della rete neurale venga inter-
rotto quando l’errore di testing raggiunge il valore minimo. Non `e possibile sapere
a priori quando la rete entra in una fase di overfitting, quindi `e necessario calcolare
l’errore di volta in volta durante la fase di addestramento.
6.6.5 Risultati sperimentali
Sono state provare varie tipologie di reti per valutare sotto quali condizioni si po-
tevano ottenere risultati migliori. In particolare sono state eseguite le prove con
l’obbiettivo di minimizzare lo scarto quadratico medio sui campioni di testing.
52 Cinematica inversa con reti neurali
Figura 6.8 – Andamento tipico dell’errore durante la fase di training
La libreria FANN include delle funzioni per calcolare lo scarto quadratico medio.
Per rendere comparabili gli errori ottenibili con i valori normalizzati nell’intervallo
[0,1] e [-1,1] lo scarto quadratico medio `e ottenuto in modo differente [53].
MSE[0,1] = N (outtest − outfann)
N
(6.13)
MSE[−1,1] =
N
outtest−outfann
2
N
= N (outtest − outfann)
4 · N
(6.14)
Dove N `e dato dal prodotto dei neuroni d’uscita per la dimensione dell’insieme di
testing.
La rete utilizzata ha 11 neuroni di ingresso, 12 neuroni d’uscita, 50 neuroni in-
termedi, 1 livello nascosto, funzione di ingresso lineare e funzione di attivazione dei
neuroni nascosti e dei neuroni d’uscita tangente iperbolica (Fann Sigmoid Simme-
tric). Con il simulatore `e stato generato un percorso formato da 5000 campioni, con
un periodo di campionamento pari ad un secondo. 4000 campioni sono stati utiliz-
zati per l’addestramento della rete, mentre i restanti 1000 per valutare le prestazioni
della rete.
Partendo da una configurazione base formata da una rete con 11 neuroni di ingres-
so, 12 neuroni d’uscita, 50 neuroni intermedi, 1 livello nascosto, funzione di ingresso
lineare e funzione di attivazione dei neuroni nascosti e dei neuroni d’uscita tangente
6.6 Metodologia 53
Figura 6.9 – Andamento dell’errore della rete neurale, campionamento 1000[ms], 50
neuroni nascosti, 4000 epoche
iperbolica (Fann Sigmoid Simmetric), sono state eseguite numerose simulazioni va-
riando i parametri della rete, per valutare il loro grado di influenza alla ricerca della
configurazione migliore.
I risultati sono riportati nelle tabelle e grafici seguenti.
Dalle prove `e emerso che le prestazioni della rete neurale utilizzata non sono molto
sensibili al cambio dei parametri. In particolare `e emerso che bastano 1000 epoche
per addestrare la rete e 20 neuroni nascosti; superati tali valori le prestazioni della
rete si mantengono stabili sia con l’insieme di training che con quello di testing.
54 Cinematica inversa con reti neurali
Tabella 6.1 – Confronto delle prestazioni al variare del numero di neuroni nascosti
Intervallo Neuroni Epoche di MSE MSE
ms nascosti addestramento training testing
1000 10 4000 0.0250 0.0271
1000 15 4000 0.0230 0.0251
1000 20 4000 0.0215 0.0241
1000 50 4000 0.0189 0.0227
1000 100 4000 0.0191 0.0230
1000 400 4000 0.0183 0.0231
Tabella 6.2 – Confronto delle prestazioni al variare delle epoche di addestramento
Intervallo Neuroni Epoche di MSE MSE
ms nascosti addestramento training testing
1000 20 4000 0.0215 0.0241
1000 20 8000 0.0218 0.0242
Tabella 6.3 – Confronto delle prestazioni al variare del tempo di campionamento
Intervallo Neuroni Epoche di MSE MSE
ms nascosti addestramento training testing
800 30 4000 0.0194 0.0218
1000 30 4000 0.0204 0.0230
1300 30 4000 0.0206 0.0230
1500 30 4000 0.0202 0.0241
6.6 Metodologia 55
Tabella 6.4 – Confronto delle prestazioni al variare del numero di neuroni di input
ed output
Valori di Valori di MSE MSE
Input Output training testing
7 posxyz(3), quat(4) 6 posΘ(6) 0.0206 0.0282
8 posxyz(3), quat(4), 12 posΘ(6), velΘ(6) 0.0212 0.0249
vellin(1)
10 posxyz(3), quat(4), 12 posΘ(6), velΘ(6) 0.0194 0.0230
velxyz(3)
11 posxyz(3), quat(4), 12 posΘ(6), velΘ(6) 0.0193 0.0227
vellin, velxyz(3)
56 Cinematica inversa con reti neurali
Capitolo 7
Realizzazione del manipolatore
controllato dalla mano
In questo capitolo vengono presentati i risultati della realizzazione finale, frutto del
lavoro presentato nei capitoli precedenti.
In particolare questo lavoro ha richiesto l’integrazione di tre strumenti differenti:
• ambiente di simulazione OpenRAVE;
• libreria di reti neurali FANN;
• libreria di controllo del LeapMotion controller.
Questo lavoro di integrazione `e stato realizzato nell’ambiente di sviluppo Net-
beans ed `e stato realizzato utilizzando il linguaggio di programmazione C++.
Il lavoro di integrazione non `e stato immediato: l’ultima versione di OpenRAVE
`e disponibile per la sola distribuzione Ubuntu 12.04 (aprile 2012), quindi non molto
aggiornata. `E stata tentata la ricompilazione di OpenRAVE in una distribuzione
pi`u recente, ma senza successo. Tale condizione ha pregiudicato l’installazione delle
librerie pi`u recenti del LeapMotion controller.
Il frutto di questa integrazione ha permesso di ottenere un sistema con cui `e pos-
sibile controllare la posizione dell’end-effector tramite i dati forniti dal LeapMotion
controller.
Il LeapMotion `e in grado di acquisire numerosi parametri, in particolare posizione
ed orientamento del palmo della mano e di tutte le sue falangi. Inoltre, `e in grado
di rilevare l’impugnatura di semplici oggetti come una penna.
Dai numerosi parametri forniti dal LeapMotion vengono impiegati quelli relati-
vi alle coordinate del palmo della mano per il controllo dell’end-effector e l’angolo
compreso tra il pollice e l’indice per l’apertura e la chiusura del gripper.
57
58 Realizzazione del manipolatore controllato dalla mano
Figura 7.1 – Vettori di orientamento di una mano rilevati da LeapMotion
Figura 7.2 – Posizione ed orientamento delle dita rilevati da LeapMotion
Figura 7.3 – Esempio di oggetto rilevato da LeapMotion
59
Tali coordinate sono composte dalle due terne Cartesiane di posizione (x, y, z)
e di orientazione (yaw, pitch, roll). Per rendere tali dati compatibili con quelli
utilizzati nell’ambiente OpenRAVE si sono rese necessarie delle conversioni:
• inversione degli assi y e z;
• conversione di dati da millimetri a metri;
• conversione degli angoli di Tait–Bryan nel quaternione corrispondente.
Dopo aver realizzato in sistema di conversione di coordinate `e stato possibi-
le realizzare il sistema che permette all’end-effector del manipolatore di replicare
i movimenti del palmo della mano.
A questo punto quindi `e stato possibile integrare i dati forniti dal LeapMotion
con il risolutore di cinematica inversa all’interno dell’ambiente OpenRAVE.
Sono state provati due risolutori differenti: quello in forma chiusa IKFast integra-
to in OpenRAVE e quelli ottenuti tramite le reti neurali implementate con la libreria
FANN.
Il programma realizzato funziona nel modo seguente:
1. il LeapMotion controller continuamente analizza le immagini fornite dai suoi
sensori;
2. quando una mano viene rilevata, vengono estratte le coordinate del palmo;
3. vengono convertite tali coordinate nel sistema di riferimento OpenRAVE;
4. i dati vengono elaborati dal risolutore di cinematica inversa;
5. le nuove posizioni angolari vengono inviate ai servomotori.
Con il manipolatore VE026A `e stato possibile utilizzare entrambi i risolutori,
mentre con il manipolatore AX-18A `e stato possibile utilizzare solo il risolutore
basato sulla rete neurale.
Dalle prove eseguite con il manipolatore VE026A `e stato possibile confrontare i
risultati dei due risolutori.
Come prevedibile `e stato verificato che il calcolo della cinematica inversa `e risolta
in un tempo minore da una rete neurale rispetto ad un metodo numerico. Utilizzando
lo spesso computer, `e emerso che il calcolo richiesto della cinematica inversa dalla
rete neurale `e sempre costante ed `e pari a 15 µs (fig. 7.4), mentre il calcolo tramite
IKFast varia tra gli 80 e i 300 µs (fig. 7.5).
Inoltre, `e stato osservato che, il tempo di calcolo impiegato da IKFast per ve-
rificare la non esistenza di una soluzione `e mediamente inferiore al caso in cui la
soluzione esiste e viene calcolata.
60 Realizzazione del manipolatore controllato dalla mano
Figura 7.4 – Tempo di calcolo con la rete neurale per alcuni campioni, in rosso sono
evidenziati i campioni per cui non esiste un risultato valido
Figura 7.5 – Tempo di calcolo con IKFast per alcuni campioni, in rosso sono
evidenziati i campioni per cui non esiste un risultato valido
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano
Controllo di un braccio robotico mediante i movimenti della mano

Mais conteúdo relacionado

Mais procurados

Robotics End Effector
Robotics End EffectorRobotics End Effector
Robotics End EffectorYasodharan R
 
Automates programmables industriels
Automates programmables industrielsAutomates programmables industriels
Automates programmables industrielsHafsaELMessaoudi
 
Programación del robot mitsubishi con el software cosirop
Programación del robot mitsubishi con el software cosiropProgramación del robot mitsubishi con el software cosirop
Programación del robot mitsubishi con el software cosiropJose Antonio Velasquez Costa
 
Better motion control using accelerometer/gyroscope sensor fusion
Better motion control using accelerometer/gyroscope sensor fusionBetter motion control using accelerometer/gyroscope sensor fusion
Better motion control using accelerometer/gyroscope sensor fusionGabor Paller
 
Les systèmes bielle - manivelle.pdf
Les systèmes bielle - manivelle.pdfLes systèmes bielle - manivelle.pdf
Les systèmes bielle - manivelle.pdfdidikael
 
Robot force control
Robot force controlRobot force control
Robot force controljusticeli
 
pick-and-place-robot
pick-and-place-robotpick-and-place-robot
pick-and-place-robotSuchit Moon
 
Practicas de robotica utilizando matlab - Roque
Practicas de robotica utilizando matlab -  RoquePracticas de robotica utilizando matlab -  Roque
Practicas de robotica utilizando matlab - RoquePROD LARD
 
Differential kinematics robotic
Differential kinematics  roboticDifferential kinematics  robotic
Differential kinematics roboticdahmane sid ahmed
 
Obstacle Avoiding robot
Obstacle Avoiding robotObstacle Avoiding robot
Obstacle Avoiding robotDurga Singh
 
Human Collaborative Robotic Processes
Human Collaborative Robotic ProcessesHuman Collaborative Robotic Processes
Human Collaborative Robotic ProcessesEWI
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナーRyuichi Ueda
 
Unit IV Solved Question Bank- Robotics Engineering
Unit IV  Solved Question Bank-  Robotics EngineeringUnit IV  Solved Question Bank-  Robotics Engineering
Unit IV Solved Question Bank- Robotics EngineeringSanjay Singh
 
Sistemas articuladas de 4 barras
Sistemas articuladas de 4 barrasSistemas articuladas de 4 barras
Sistemas articuladas de 4 barrasAbrahamAray1
 
Industrial Robotics Chap 01 Fundamentals
Industrial  Robotics  Chap 01  FundamentalsIndustrial  Robotics  Chap 01  Fundamentals
Industrial Robotics Chap 01 FundamentalsKevin Carvalho
 

Mais procurados (20)

Robotics End Effector
Robotics End EffectorRobotics End Effector
Robotics End Effector
 
1 Morfologia
1 Morfologia1 Morfologia
1 Morfologia
 
Automates programmables industriels
Automates programmables industrielsAutomates programmables industriels
Automates programmables industriels
 
cour robotique
cour robotiquecour robotique
cour robotique
 
Programación del robot mitsubishi con el software cosirop
Programación del robot mitsubishi con el software cosiropProgramación del robot mitsubishi con el software cosirop
Programación del robot mitsubishi con el software cosirop
 
Better motion control using accelerometer/gyroscope sensor fusion
Better motion control using accelerometer/gyroscope sensor fusionBetter motion control using accelerometer/gyroscope sensor fusion
Better motion control using accelerometer/gyroscope sensor fusion
 
Les systèmes bielle - manivelle.pdf
Les systèmes bielle - manivelle.pdfLes systèmes bielle - manivelle.pdf
Les systèmes bielle - manivelle.pdf
 
Robot force control
Robot force controlRobot force control
Robot force control
 
pick-and-place-robot
pick-and-place-robotpick-and-place-robot
pick-and-place-robot
 
Practicas de robotica utilizando matlab - Roque
Practicas de robotica utilizando matlab -  RoquePracticas de robotica utilizando matlab -  Roque
Practicas de robotica utilizando matlab - Roque
 
Differential kinematics robotic
Differential kinematics  roboticDifferential kinematics  robotic
Differential kinematics robotic
 
Obstacle Avoiding robot
Obstacle Avoiding robotObstacle Avoiding robot
Obstacle Avoiding robot
 
Human Collaborative Robotic Processes
Human Collaborative Robotic ProcessesHuman Collaborative Robotic Processes
Human Collaborative Robotic Processes
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー
 
Universal Robots
Universal RobotsUniversal Robots
Universal Robots
 
Unit IV Solved Question Bank- Robotics Engineering
Unit IV  Solved Question Bank-  Robotics EngineeringUnit IV  Solved Question Bank-  Robotics Engineering
Unit IV Solved Question Bank- Robotics Engineering
 
Robot Arm Kinematics
Robot Arm KinematicsRobot Arm Kinematics
Robot Arm Kinematics
 
Sistemas articuladas de 4 barras
Sistemas articuladas de 4 barrasSistemas articuladas de 4 barras
Sistemas articuladas de 4 barras
 
Industrial Robotics Chap 01 Fundamentals
Industrial  Robotics  Chap 01  FundamentalsIndustrial  Robotics  Chap 01  Fundamentals
Industrial Robotics Chap 01 Fundamentals
 
Line Follower Final Report
Line Follower Final ReportLine Follower Final Report
Line Follower Final Report
 

Destaque

Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5Michele Maffucci
 
Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Michele Maffucci
 
Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3Michele Maffucci
 
Alfabeto di arduino - lezione 4
Alfabeto di arduino - lezione 4Alfabeto di arduino - lezione 4
Alfabeto di arduino - lezione 4Michele Maffucci
 
Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6Michele Maffucci
 
Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1Michele Maffucci
 
Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Michele Maffucci
 

Destaque (7)

Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5
 
Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011
 
Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3
 
Alfabeto di arduino - lezione 4
Alfabeto di arduino - lezione 4Alfabeto di arduino - lezione 4
Alfabeto di arduino - lezione 4
 
Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6
 
Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1
 
Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2
 

Semelhante a Controllo di un braccio robotico mediante i movimenti della mano

24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...maaske
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiPietro Corona
 
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Daniele Ciriello
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsLorenzo Stacchio
 
[Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System [Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System Stefano Bonetta
 
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...Francesco Cucari
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Maurizio Cacace
 
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...Davide Bravin
 
Publish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingPublish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingNicola Mezzetti
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMDavide Ciambelli
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionAmmLibera AL
 
Apprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov ModelApprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov ModelFausto Intilla
 
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Francesco Komauli
 
tesi_Lelli_Matteo_finale
tesi_Lelli_Matteo_finaletesi_Lelli_Matteo_finale
tesi_Lelli_Matteo_finaleMatteo Lelli
 
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...Antonio Sanfelice
 
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...danieledegan
 
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...GabrieleGandossi
 
Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...
Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...
Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...Filippo Muscolino
 

Semelhante a Controllo di un braccio robotico mediante i movimenti della mano (20)

a4_centrata
a4_centrataa4_centrata
a4_centrata
 
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzati
 
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistems
 
[Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System [Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System
 
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques
 
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
Analisi e realizzazione di uno strumento per la verifica di conformità su sis...
 
Publish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingPublish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based Routing
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisition
 
Apprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov ModelApprendimento di movimenti della testa tramite Hidden Markov Model
Apprendimento di movimenti della testa tramite Hidden Markov Model
 
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
 
tesi_Lelli_Matteo_finale
tesi_Lelli_Matteo_finaletesi_Lelli_Matteo_finale
tesi_Lelli_Matteo_finale
 
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
 
domenicoCaputiTriennale
domenicoCaputiTriennaledomenicoCaputiTriennale
domenicoCaputiTriennale
 
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
 
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
 
Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...
Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...
Analisi e sviluppo di un sistema collaborativo simultaneo per la modifica di ...
 

Controllo di un braccio robotico mediante i movimenti della mano

  • 1. Università degli Studi di Trieste Dipartimento di Ingegneria e Architettura Corso di Laurea in Ingegneria Informatica Tesi di Laurea in Sistemi operativi DEGLI STUD UNIVERSITÀ Controllo di un braccio robotico mediante i movimenti della mano Candidato: Relatore: Basilio Marco Matessi Chiar.mo Prof. Enzo Mumolo Correlatore: Ph.D. Livio Tenze Anno Accademico 2013-14 Sessione straordinaria
  • 2.
  • 3. Dedicato ai miei genitori.
  • 4. ii
  • 5. Introduzione L’Interazione Uomo-Robot(HRI, Human-Robot Interaction) `e un’area di ricerca mul- tidisciplinare in costante sviluppo, ricca di spunti per ricerche avanzate e trasferi- menti di tecnologia. Essa gioca un ruolo fondamentale nella realizzazione di robot che operano in ambienti aperti e che cooperano con gli esseri umani. Compiti di questo tipo richiedono lo sviluppo di tecniche che aprano la possibilit`a d’impiego dei robot, non solo ai professionisti del settore, ma anche ad utenti inesperti, in modo semplice e sicuro, utilizzando interfacce intuitive e naturali. Si `e pensato di studiare e valutare la realizzazione di un sistema che permetta il controllo di un braccio robotico, tramite la rilevazione e la riproduzione dei movimenti della mano. Tale approccio si differenzia dai sistemi di controllo tradizionali, basati su tra- iettorie generate tramite un calcolatore e che potrebbero avere dei movimenti poco naturali, se confrontati con i movimenti umani. La simulazione del movimento umano `e l’ideale per un robot progettato per svolgere compiti al servizio dell’uomo. I risultati di questo lavoro potrebbero essere impiegati nella realizzazione di ap- plicazioni di telecontrollo, movimento di bracci antropomorfi, chirurgia, lavori di precisione ed applicazioni ludiche. Ad esempio la capacit`a di muovere un manipolatore mediante movimenti umani apre la possibilit`a di realizzare robot antropomorfi con un miglior feedback, i cui movimenti da riprodurre sarebbero ricavati direttamente da quelli del corpo umano. Il lavoro di tesi verr`a svolto presso l’azienda ESTECO S.p.A, nella sede sita presso l’AREA SCIENCE PARK (Padriciano - TS) e sar`a integrato all’interno delle attivit`a del gruppo di Ricerca e Sviluppo. ESTECO `e una delle aziende leader nelle soluzioni di ottimizzazione numerica, specializzata nella ricerca e nello sviluppo di software ingegneristico per tutte le fasi del processo di progettazione basata sulla simulazione. Questo studio rientra in uno dei rami di ricerca dell’azienda, in particolare quello dell’ottimizzazione dei parametri per il controllo e la taratura di sistemi hardware che agiscono in tempo reale: Hardware In the Loop (HIL). iii
  • 6. Presso l’azienda sono stati messi a disposizione due manipolatori robotici ed un dispositivo che permette di rilevare i movimenti della mano a distanza, il LeapMotion Controller [1]. Verr`a valutata la possibilit`a di utilizzare il LeapMotion per controllo dei mani- polatori robotici e sar`a effettuata una ricerca esaustiva per verificare l’esistenza di altre tecnologie di rilevamento dei movimenti, pi`u adatte al progetto di tesi. Allo stato attuale esistono progetti simili basati sul LeapMotion, ma si limitano a rilevare i gesti della mano (gesture recognition), associando determinati movimenti della mano a delle operazioni che il manipolatore deve eseguire (ad esempio: “vai avanti”, “vai indietro”, etc.), e non cercano di seguirne i movimenti compiuti in modo naturale. Dalla letteratura `e noto che il controllo dei bracci robotici presenti alcune cri- ticit`a, in particolare non `e possibile far raggiungere al manipolatore una posizione spaziale in modo banale. Il problema deriva dal fatto che le azioni dei robot av- vengono specificando le posizioni angolari o lineari dei giunti che lo compongono, mentre le posizioni desiderate sono espresse nello spazio Cartesiano. La conversione delle coordinate dallo spazio Cartesiano a quello dei giunti `e risolta dalla cinemati- ca inversa. La cinematica inversa, tranne nei casi di manipolatori pi`u semplici (ad esempio formati da soli tre giunti), `e di complessa risoluzione e dipende strettamente dalla struttura del manipolatore. Allo stato attuale, non esiste ancora una soluzione generalizzata del problema priva di controindicazioni. Tale argomento `e stato oggetto, negli ultimi anni, di numerose trattazioni sulle riviste scientifiche internazionali. Verranno prese in esame tali pubblicazioni, allo scopo di valutare quali approcci siano pi`u adatti a trovare una soluzione al problema della cinematica inversa, nel contesto del controllo dei manipolatori tramite il LeapMotion Controller. Il lavoro di tesi permetter`a di approfondire argomenti di interesse sulla robotica, che durante il corso di studi sono stati solamente accennati. Il lavoro di tesi verr`a organizzato nel seguente modo seguente: • studio teorico delle problematiche di controllo dei manipolatori e valutazione dello stato dell’arte; • analisi dei manipolatori a disposizione e messa a punto del sistema di controllo; • approfondimento dei sistemi di rilevazione dei movimenti del corpo umano, e studio del LeapMotion Controller; • utilizzo di un simulatore per applicazioni robotiche e realizzazione dei relativi modelli dei manipolatori a disposizione; • analisi del problema della cinematica inversa, e realizzazione di un risolutore per i manipolatori a disposizione; iv
  • 7. • realizzazione del sistema di controllo per bracci robotici basati sul LeapMotion Controller. v
  • 8. vi
  • 9. Ringraziamenti E finalmente il traguardo `e stato raggiunto! Ringrazio tutti quanti coloro ci hanno creduto e pazientemente aspettato. Vorrei ringraziare il prof. Mumolo per aver accettato di seguirmi in questo percorso di tesi, Livio e Carlos per essere stati sempre molto disponibili ed avermi aiutato a superare le problematiche incontrate durante quest’ultimo periodo. Un ringraziamento speciale va alla mia famiglia, mamma Katia, pap`a Carlo e mio fratello Alessio che mi hanno permesso di coltivare la mia passione. Un ringraziamento ai miei compagni di studi, in particolare Raffaele per avermi supportato durante le infernali ore di studio. Vorrei ringraziare tutti gli amici di sempre (che ultimamente ho un po’ trascurato) e le persone che, volenti o dolenti, hanno attraversato la mia strada negli ultimi anni. Ognuna di loro mi ha lasciato qualcosa, anche senza saperlo. Infine, ultimo, ma non per importanza, il ringraziamento di cuore va a Caterina che negli ultimi mesi `e stata molto paziente, ha condiviso con me fatiche, rinunce e malumori e che mi ha sostenuto durante la scrittura di questa tesi. vii
  • 10. viii
  • 11. Indice Introduzione iii Ringraziamenti vii Indice ix Elenco delle figure xi 1 Introduzione della robotica 1 2 Problematiche di controllo 5 2.1 I tipi di giunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Cinematica diretta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Cinematica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 I manipolatori a disposizione 17 3.1 Denso Robotics VE026A . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 CrustCrawler AX-18A Smart Robotic Arm . . . . . . . . . . . . . . . 19 4 Rilevamento dei movimenti della mano 23 4.1 Tecnologie disponibili . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2 Leap Motion Controller . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5 Ambiente di simulazione 29 5.1 OpenRAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6 Cinematica inversa con reti neurali 35 6.1 Rete neurale biologica . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.2 Rete neurale artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.2.1 Modello di un neurone artificiale . . . . . . . . . . . . . . . . . 37 6.2.2 Funzionamento di una rete neurale artificiale . . . . . . . . . . 38 6.3 Cinematica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 ix
  • 12. 6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa basate sulle reti neurali . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.5 Rete neurale proposta . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.6 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.6.1 Generazione dei campioni . . . . . . . . . . . . . . . . . . . . 49 6.6.2 Normalizzazione dei campioni . . . . . . . . . . . . . . . . . . 50 6.6.3 Addestramento della rete neurale . . . . . . . . . . . . . . . . 50 6.6.4 Valutazione delle prestazioni . . . . . . . . . . . . . . . . . . . 51 6.6.5 Risultati sperimentali . . . . . . . . . . . . . . . . . . . . . . . 51 7 Realizzazione del manipolatore controllato dalla mano 57 8 Conclusioni 63 8.1 Lavoro svolto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.2 Analisi dei risultati e sviluppi futuri . . . . . . . . . . . . . . . . . . . 65 A Appendice: sistema di controllo Denso VE026A 67 A.1 Sistema di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 A.2 Servomotori Futaba RS303MR . . . . . . . . . . . . . . . . . . . . . . 68 A.3 Collegamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 A.4 Parte software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 A.4.1 Ambiente di sviluppo . . . . . . . . . . . . . . . . . . . . . . . 73 A.4.2 Programmi realizzati . . . . . . . . . . . . . . . . . . . . . . . 73 B Appendice: sistema di controllo CrustCrawler AX-18A 77 B.1 Servomotori Robotis Dynamixel AX-18A . . . . . . . . . . . . . . . . 77 B.2 Sistema di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 B.3 Parte software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 B.3.1 Programmi realizzati . . . . . . . . . . . . . . . . . . . . . . . 81 Bibliografia 83 x
  • 13. Elenco delle figure 1.1 Stima annuale delle spedizioni mondiali di robot industriali . . . . . . 2 1.2 Stima delle spedizioni mondiali di robot industruali divisi per settore, anni 2011-2013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1 Schematizzazione di un braccio robotico a due gradi di libert`a . . . . 6 2.2 Angoli di Tait–Bryan . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Giunto prismatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Giunto rotoidale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5 Parametri di Denavit-Heartenberg . . . . . . . . . . . . . . . . . . . . 9 2.6 Esempio di un polso sferico . . . . . . . . . . . . . . . . . . . . . . . 14 3.1 Foto del braccio robot Denso Robotics VE026A . . . . . . . . . . . . 18 3.2 Dimensioni Denso Robotics VE026A - (valori in cm) . . . . . . . . . 20 3.3 Foto del braccio robot CrustCrawler AX-18A Smart Robotic Arm - 4 DOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4 Dimensioni CrustCrawler AX-18A Smart Robotic Arm - 6 DOF (valori in cm) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.1 Nintendo PowerGlove . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2 Sensori presenti nel Kinect . . . . . . . . . . . . . . . . . . . . . . . . 25 4.3 Nodi individuabili dal Kinect . . . . . . . . . . . . . . . . . . . . . . 25 4.4 Controller LeapMotion . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5 Nodi individuabili dal LeapMotion . . . . . . . . . . . . . . . . . . . 26 4.6 Area visibile dal controller LeapMotion . . . . . . . . . . . . . . . . 27 5.1 Modello VE026A di HiveGround . . . . . . . . . . . . . . . . . . . . . 31 5.2 Modello CrustCrawler contenuto in OpenRAVE . . . . . . . . . . . . 32 5.3 Modello VE026A con XML proprietario . . . . . . . . . . . . . . . . . 33 5.4 Modello CrustCrawler in configurazione 6 DOF con XML proprietario 34 6.1 Flusso informazionale in una rete neurale biologica . . . . . . . . . . 36 6.2 Il neurone artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 xi
  • 14. 6.3 Esempi di funzioni di attivazione per un neurone artificiale . . . . . . 38 6.4 Rete neurale artificiale multi-livello . . . . . . . . . . . . . . . . . . . 39 6.5 Curva sigmoidale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.6 Tangente iperbolica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.7 Esempio di gimbal-lock . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.8 Andamento tipico dell’errore durante la fase di training . . . . . . . . 52 6.9 Andamento dell’errore della rete neurale, campionamento 1000[ms], 50 neuroni nascosti, 4000 epoche . . . . . . . . . . . . . . . . . . . . . 53 7.1 Vettori di orientamento di una mano rilevati da LeapMotion . . . . . 58 7.2 Posizione ed orientamento delle dita rilevati da LeapMotion . . . . . 58 7.3 Esempio di oggetto rilevato da LeapMotion . . . . . . . . . . . . . . . 58 7.4 Tempo di calcolo con la rete neurale per alcuni campioni, in rosso sono evidenziati i campioni per cui non esiste un risultato valido . . . . . . 60 7.5 Tempo di calcolo con IKFast per alcuni campioni, in rosso sono evi- denziati i campioni per cui non esiste un risultato valido . . . . . . . 60 7.6 Errore della rete neurale in caso di non esistenza della soluzione . . . 61 A.1 Arduino UNO, scheda di prototipazione . . . . . . . . . . . . . . . . 69 A.2 Spaccato di un servomotore Futaba (RS405CB) . . . . . . . . . . . . 69 A.3 Schema dei collegamenti dei servomotori del braccio robot VE026A . 71 A.4 Foto del collegamento dell’interfaccia di controllo . . . . . . . . . . . 71 A.5 Interfaccia di controllo dei servomotori Futaba VE026A . . . . . . . . 75 B.1 Collegamento in cascata dei servomotori Dynamixel AX-18A . . . . . 79 B.2 Dyanamixel2USB, interfaccia di controllo dei servomotori Dynamixel 79 B.3 Dynamixel Wizard, tool di controllo dei servomotori Dynamixel . . . 80 B.4 Interfaccia di controllo del manipolatore CrustCrawler Smart Robotic Arm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 xii
  • 15. Capitolo 1 Introduzione della robotica Il termine robot non trae origine dal mondo scientifico o ingegneristico, bens`ı com- pare per la prima volta nel dramma teatrale dello scrittore ceco Karel ˇCapek I robot universali di Rossum, rappresentato per la prima volta a Praga nel 1921. A diffe- renza del concetto moderno, i robot di ˇCapek non erano meccanici, ma dei servitori creati mediante procedimenti chimico/biologici, dei lavoratori perfetti privi di sen- timenti, creativit`a e capacit`a di sentire il dolore. L’etimologia della parola robot `e da ricondursi al ceco robota, che significa lavoro pesante e che veniva utilizzato per indicare i lavori della schiavit`u. Isaac Asimov, che nei suoi scritti propose le Leggi della Robotica [2], codifica le norme etico/comportamentali che un qualsiasi robot deve rispettare. Tali Leggi, piuttosto che identificare compiti specifici che un robot deve assolvere, si limitano a definire il ruolo che essi possono assumere all’interno della societ`a, vincolandone la propria autonomia di comportamento, rispettivamente alla sicurezza dell’uomo e dell’umanit`a, quindi alla sua manifestazione di volont`a. • Prima legge: “Un robot non pu`o recare danno a un essere umano, n´e pu`o permettere che, a causa del proprio mancato intervento, un essere umano riceva danno”. • Seconda legge: “Un robot deve obbedire agli ordini impartiti dagli esseri umani, purch´e tali ordini non contravvengano alla Prima Legge”. • Terza legge: “Un robot deve proteggere la propria esistenza, purch´e questa autodifesa non contrasti con la Prima e la Seconda Legge”. `E tra la fine degli anni Cinquanta e gli inizi degli anni Sessanta che inizia la storia dei robot: questo termine abbandona un’accezione letteraria e fantascientifica per assumerne una tecnica ed industriale. Il primo robot industriale fu installato nel 1961 presso gli impianti della General Motors negli USA per il trattamento di 1
  • 16. 2 Introduzione della robotica Figura 1.1 – Stima annuale delle spedizioni mondiali di robot industriali parti realizzate in pressofusione, al fine di sostituire l’uomo in questo pericoloso ed insalubre lavoro. Di l`ı a poco, i bracci robotici vennero largamente utilizzati nel campo industriale per lavori di saldatura, verniciatura, montaggio, trasporto, etc. Oggi, i robot industriali rappresentano un punto chiave dell’automazione e sono il risultato dell’integrazione di varie tecnologie scientifiche: meccanica, sistemi di controllo, elettronica, etc. [3]. Pi`u di 1,3 milioni di robot industriali operano nelle fabbriche di tutto il mondo con lo scopo di: • migliorare la qualit`a del lavoro per i dipendenti; • aumentare la capacit`a produttiva; • incrementare la qualit`a e la consistenza del prodotto; • rendere pi`u flessibile la produzione del prodotto; • ridurre i costi operativi. Come si evince dai grafici in fig. 1.1 e fig. 1.2, l’impiego dei robot `e in continuo aumento, e i principali campi di utilizzo sono quelli della produzione automobilistica e dell’elettronica [4]. Sono state proposte delle definizioni formali di robot industriale:
  • 17. 3 Figura 1.2 – Stima delle spedizioni mondiali di robot industruali divisi per settore, anni 2011-2013 A reprogrammable, multifunctional manipulator designed to move ma- terial, parts, tools, or specialized devices through various programmed motions for the performance of a variety of tasks. Un manipolatore riprogrammabile, multifunzionale, progettato per spo- stare materiali, oggetti, utensili, o particolari accessori attraverso diversi movimenti programmati per l’esecuzione di vari compiti. (1979, Robotics Institute of America) An automatically controlled, reprogrammable, multipurpose manipulator programmable in three or more axes, which may be either fixed in place or mobile for use in industrial automation applications. Un manipolatore a controllo automatico, riprogrammabile, multifunzio- nale programmabile su tre o pi`u assi, che pu`o essere sia fisso che mobile, usato nelle applicazioni di automazione industriale. (1988, ISO 8373) Dalle definizioni di cui sopra si desume che un robot industriale `e riprogram- mabile e multifunzionale. Tali caratteristiche differenziano i robot dalle macchine industriali. Queste ultime sono in grado di svolgere solamente un compito prede- finito con operazioni da eseguire in sequenza; non possono prendere delle decisioni
  • 18. 4 Introduzione della robotica se si presenta una variazione dell’ambiente di lavoro; non possiedono dei sensori per riprogrammare un percorso predefinito e non possiedono alcuna conoscenza di base o intelligenza. Ad esempio, un mulino riproduce alcune azioni meccaniche in modo ripetitivo, ma senza avere la possibilit`a di modificarle. Al contrario, un robot deve poter essere messo in condizione di adattare le proprie azioni a richieste che possono mutare nel tempo.
  • 19. Capitolo 2 Problematiche di controllo Fra i robot pi`u utilizzati nell’industria vi `e il braccio robotico, o manipolatore mec- canico, costruito a imitazione del braccio umano, ma spesso dotato di pi`u gradi di libert`a. Il braccio robotico `e formato da una sequenza di segmenti rigidi chiamati link, connessi in cascata da giunti (fig. 2.1). I link sono disposti in modo da formare una catena aperta. Ogni link `e connesso al pi`u ad altri due link, in modo da evitare la formazione di catene chiuse. Il primo giunto `e connesso alla base, che `e solitamente fissata rigidamente all’ambiente di lavoro, mentre l’ultimo giunto, all’estremit`a della catena, `e connesso ad un organo terminale (end-effector). Il numero dei gradi di libert`a di un manipolatore (DOF, degrees of freedom) `e il numero di variabili indipendenti necessarie per determinare univocamente la sua posizione nello spazio. Nei manipolatori ogni coppia giunto-link rappresenta un grado di libert`a. In uno spazio tridimensionale, per poter ottenere qualunque posizione e orientazione, sono necessari dei bracci ad almeno sei gradi di libert`a. Se la posizione desiderata `e all’interno dell’area di lavoro, allora l’esistenza di almeno una soluzione `e garantita [5]. Se il numero di gradi di libert`a `e maggiore rispetto al numero delle variabili necessarie alla caratterizzazione di un determinato compito, ci troviamo in una situazione di ridondanza cinematica [6]. La ridondanza permette di poter scegliere tra pi`u configurazioni dei giunti equivalenti, ma di contro introduce una maggiore complessit`a di calcolo e di controllo. I robot sono azionati mediante attuatori posti tipicamente in corrispondenza di alcuni dei giunti che ne determinano la configurazione. L’utilizzo dei sensori in robotica `e di vitale importanza, essi permettono di cono- scere lo stato interno del robot e dell’ambiente che si trova intorno. Esistono svariati tipi di sensori: quelli che permettono di conoscere la posizione e la velocit`a dei giunti, la coppia dei motori, la temperatura, di rilevare l’area di lavoro con una videocamera, etc. 5
  • 20. 6 Problematiche di controllo Figura 2.1 – Schematizzazione di un braccio robotico a due gradi di libert`a Il controllo del braccio robotico viene eseguito nello spazio dei giunti, mentre i movimenti sono specificati nello spazio Cartesiano. Nello spazio Cartesiano vengono specificati posizione spaziale ed orientamento dell’end-effector. La posizione spaziale `e riferita ad un sistema di coordinate fissate sulla base del braccio (x, y, z), mentre l’orientamento `e definito dagli angoli di rollio, beccheggio e imbardata (roll, pitch, yaw), chiamati angoli di Tait–Bryan. Tali angoli identificano la rotazione lungo gli assi di riferimento (fig. 2.2). Nei sistemi di controllo dei manipolatori la conversione tra i due sistemi di riferimento `e di primaria importanza. 2.1 I tipi di giunti I giunti che collegano bracci rigidi, con un solo grado di libert`a, possono essere divisi in due categorie: • giunti prismatici; • giunti rotoidali. I giunti prismatici (fig. 2.3) permettono ad una coppia di bracci di effettuare una traslazione lungo un asse, mentre i secondi (fig. 2.4) permettono ad una coppia di bracci di eseguire una rotazione lungo un asse.
  • 21. 2.2 Cinematica diretta 7 Figura 2.2 – Angoli di Tait–Bryan In questa tesi sono stati impiegati solo giunti rotoidali. Questa scelta `e dovuta al fatto che nei bracci utilizzati `e presente solo questo tipo di giunto. Nel seguito, salvo diversamente specificato, si far`a riferimento unicamente ai giunti rotoidali. 2.2 Cinematica diretta Lo stato di un manipolatore con n gradi di libert`a `e rappresentato dal vettore: Θ(θ1, ..., θn) (2.1) dove θi indica la posizione angolare dell’i-esimo giunto. I giunti vengono numerati da 1 a n, partendo dalla base ed arrivando all’organo terminale. Per posizionare un corpo rigido nello spazio `e necessario e sufficiente specificare sei coordinate, tre per la posizione e tre per l’orientamento. Quindi, un corpo rigido nello spazio possiede sei gradi di libert`a. Chi usa un manipolatore ha come obiettivo quello di poter controllare l’end- effector, definendo la posizione e l’orientamento. La posizione e l’orientamento dell’end-effector sono rappresentati nelle coordinate Cartesiane da: XEE(x, y, z, θx, θy, θz) (2.2) La cinematica diretta permette di determinare la posizione dell’end-effector quando siano note le posizioni dei giunti e viene risolta da: XEE = f(Θ) (2.3)
  • 22. 8 Problematiche di controllo Figura 2.3 – Giunto prismatico Figura 2.4 – Giunto rotoidale dove f `e una funzione non lineare, continua e differenziabile. Viene solitamente risolta con il metodo di Denavit-Hartenberg [7]. Tale metodo utilizza matrici di rototraslazione ed, attraverso trasformazioni sequenziali, permette di esprimere la posizione dell’end-effector rispetto al sistema di riferimento della base, a cui `e fissato il braccio. Per definire tali trasformazioni, come indicato in [8], si considerano due giunti consecutivi i − 1 e i (fig. 2.5) e si pone: • l’asse zi−1 coincidente con l’asse del giunto ji; • si individua Oi nel punto d’intersezione tra l’asse zi e la normale comune agli assi zi−1×zi 1 . Si indica, po, con Oi l’intersezione della normale comune, ricavata precedentemente, con l’asse zi−1; • l’asse xi−1 diretto lungo la normale comune zi−1 × zi; • l’asse yi−1 fissato in modo da completare la terna levogira (regola della mano destra). In generale la scelta della terna, secondo questa convenzione, `e univoca tranne che per i casi: • con riferimento alla terna base, l’origine O0 e la direzione di x0 non sono univo- camente determinate, essendo mancante il giunto O−1, quindi non si pu`o deter- minare la normale comune. Pertanto solo la direzione dell’asse z0 `e determinata. In questo caso O0 e x0 si scelgono in modo arbitrario; 1 La normale comune tra due rette sghembe `e la retta a cui appartiene il segmento di minima distanza tra le rette
  • 23. 2.2 Cinematica diretta 9 Figura 2.5 – Parametri di Denavit-Heartenberg
  • 24. 10 Problematiche di controllo • con riferimento all’ultima terna, poich´e non esiste il giunto n + 1, l’asse zn non pu`o essere determinato, mentre xn deve essere normale all’asse zn−1; Poich´e generalmente il giunto n `e rotoidale, l’asse zn si sceglie parallelo all’asse zn−1; • quando due assi consecutivi sono paralleli, la terna non `e univocamente deter- minata, perch´e `e impossibile stabilire la normale comune, in tal caso si pone xi in modo che passi per l’origine della terna i − 1; • quando due assi consecutivi si intersecano `e impossibile stabilire il verso di xi, essendo la normale comune un punto, in tal caso si pone coincidente al prodotto vettoriale zi−1 × zi; • quando il giunto i `e prismatico solo la direzione dell’asse zi−1 `e determinata. In tutti questi casi l’indeterminazione pu`o essere sfruttata per semplificare la procedura ricercando, ad esempio, condizioni d’allineamento tra assi delle terne consecutive. I quattro parametri in grado di descrivere la trasformazione tra i giunti i − 1 e i sono definiti come segue: ai distanza tra le origini Oi ed Oi (lunghezza del braccio); di coordinata di Oi sull’asse zi−1 (offset); αi angolo intorno all’asse xi tra l’asse zi−1 e l’asse zi, valutato positivo in senso antiorario (torsione del link); θi angolo intorno all’asse zi−1 tra l’asse xx−1 e l’asse xi, valutato positivo in senso antiorario. Dei quattro parametri, due (ai e αi) sono sempre costanti e dipendono soltanto dalla geometria di connessione della coppia dei giunti. Degli altri due (di e θi) uno soltanto `e variabile in dipendenza del tipo di giunto (prismatico o rotoidale) utilizzato per connettere il braccio i − 1 al braccio i. A questo punto si `e in grado di esprimere la trasformazione di coordinate che lega la terna i alla terna i − 1. La matrice di trasformazione `e definita come una serie di due rototraslazioni consecutive: 1. traslare lungo l’asse zi di una lunghezza pari a di in modo da far coincidere le due origini Oi−1 ed Oi; 2. ruotare intorno all’asse zi−1 di un angolo θi per allineare l’asse xi con il segmento ai;
  • 25. 2.2 Cinematica diretta 11 3. traslare lungo l’asse xi di una lunghezza pari ad ai in modo da far coincidere le due origini Oi−1 ed Oi; 4. ruotare intorno all’asse xi di un angolo pari ad αi in modo da fare coincidere le terne zi e zi−1 Quindi la matrice di trasformazione viene ottenuta con la sequenza delle seguenti trasformazioni: Ai−1 i = Transzi−1 (di) · Rotzi−1 (θi) · Transxi (ai) · Rotxi (αi) (2.4) Ai−1 i =        cos θi − sin θi cos αi sin θi sin αi ai cos θi sin θi cos θi cos αi − cos θi sin αi ai sin θi 0 sin αi cos αi di 0 0 0 1        (2.5) Moltiplicando sequenzialmente le varie matrici, `e possibile esprimere la posizione dell’end-effector nel sistema di coordinate della base. A0 n(Θ) = n i=1 Ai−1 i (θi) (2.6) Le matrici cos`ı ottenute si possono interpretare nel modo seguente: H =   R3×3 D3×1 P1×3 S1×1   =   Rotrazione Traslazione Prospettiva FattoreDiScala   (2.7) In particolare, prospettiva e fattore di scala spesso utilizzati nella computer grafica non sono necessari in questo contesto e quindi la matrice diventa: A(Θ) =   R(Θ) D(Θ) 0 1   (2.8) con: R =     r11 r12 r13 r21 r22 r23 r31 r32 r33     D =     x y z     (2.9) Per ottenere yaw, pitch, e roll dalla matrice di rotazione si eseguono le seguenti trasformazioni:
  • 26. 12 Problematiche di controllo pitch = Atan2 −r31, r2 11 + r2 21 (2.10) yaw = Atan2 r21 cos(pitch) , r11 cos(pitch) (2.11) roll = Atan2 r32 cos(pitch) , r33 cos(pitch) (2.12) 2.3 Cinematica inversa La cinematica inversa consiste nella determinazione delle configurazioni da far assu- mere ai giunti per fare in modo che la posizione dell’end-effector sia quella desiderata, e viene risolta da: Θ = f−1 (XEE) (2.13) Tale problematica non coinvolge solo il controllo dei bracci industriali, ma viene affrontata anche nell’animazione grafica per il controllo di strutture articolate [9] ed inoltre nello studio della conformazione delle catene molecolari [10]. La risoluzione della cinematica inversa `e un problema molto pi`u complesso ri- spetto a quello della cinematica diretta e non esiste alcuna tecnica di tipo generale che, applicata sistematicamente, dia una soluzione: • bisogna risolvere equazioni non lineari; • si possono avere soluzioni multiple o infinite; • possono non esistere soluzioni ammissibili. Vengono utilizzate diverse tecniche per risolvere la cinematica inversa; esse pos- sono essere divise in varie tipologie [11]: • soluzioni in forma chiusa – metodi algebrici [12]; – metodi geometrici [13–15]; • soluzioni numeriche – metodi con eliminazione simbolica [16,17]; – metodi di omotopia continua [15]; – metodi iterativi [13].
  • 27. 2.3 Cinematica inversa 13 L’approccio in forma chiusa consiste nella ricerca delle soluzioni dell’equazione: A1 n(θ1, ..., θn) = H =        h11 h12 h13 h14 h21 h22 h23 h24 h31 h32 h33 h34 0 0 0 1        (2.14) dove H rappresenta, in forma matriciale, la posizione e l’orientazione dell’end- effector. Il compito della cinematica inversa consiste nel trovare i valori di θ1, ..., θn che soddisfino l’equazione. Il sistema `e formato da dodici equazioni trascendentali non lineari con n variabili incognite (con n pari al numero di giunti) che possono essere scritte nella forma seguente: A1 n(θ1, ..., θn) = hij, i = 1, 2, 3, j = 1, 2, 3, 4 (2.15) Le soluzioni in forma chiusa hanno due vantaggi rispetto alle soluzioni numeriche. Il primo vantaggio `e che i calcoli possono essere eseguiti in modo molto rapido. Questa velocit`a `e di particolare importanza per le applicazioni robotiche in tempo reale. Il secondo vantaggio `e dato dalla possibilit`a di trovare tutte le soluzioni, ottenendo una maggior flessibilit`a rispetto alle tecniche che convergono ad una sola soluzione. Purtroppo non `e possibile risolvere la cinematica inversa in forma chiusa per tutti i tipi di struttura di bracci robotici [18]. Solitamente, i bracci robotici vengono progettati in modo da soddisfare determinate condizioni che garantiscano l’esistenza di una soluzione in forma chiusa [19]. I metodi algebrici identificano le equazioni contenenti le posizioni dei giunti e le manipolano per giungere ad una soluzione [12]. La strategia di tali metodi `e quella di cercare di ridurre le equazioni in modo che esse dipendano da un’unica variabile. I metodi geometrici prendono in considerazione la struttura del manipolatore per semplificare il problema, dividendo il problema della cinematica inversa in due sotto-problemi, trattando separatamente posizione ed orientazione. Tali metodi for- niscono delle condizioni sufficienti per l’esistenza di una soluzione in forma chiusa. Ad esempio per un manipolatore a sei gradi di libert`a le condizioni sono: • gli assi di tre giunti di rotazione consecutivi si devono intersecare in un punto (polso sferico, fig. 2.6) [13]; oppure: • gli assi di tre giunti consecutivi devono essere paralleli ad un altro asse [15].
  • 28. 14 Problematiche di controllo Figura 2.6 – Esempio di un polso sferico I metodi numerici non dipendono dalla struttura del manipolatore e quindi pos- sono essere applicati a qualunque configurazione. Lo svantaggio dei metodi numerici `e che possono essere lenti ed in alcuni casi non forniscono tutte le soluzioni possibili. I metodi con eliminazione simbolica eseguono manipolazioni analitiche per eli- minare le variabili dal sistema di equazioni non lineari per ottenere un pi`u piccolo insieme di equazioni. Ad esempio, riducono il problema della cinematica inversa per un manipolatore a sei gradi di libert`a in un polinomio di grado sedici per trovare tutte le possibili soluzioni [16]. I metodi di omotopia continua cercano una soluzione per tracciare il percorso da un punto di partenza in cui la soluzione `e nota verso la destinazione in cui la soluzione non `e nota a priori [15]. Un largo numero di differenti metodi iterativi possono essere impiegati per risol- vere il problema della cinematica inversa [13]. Molti di questi convergono ad una sola soluzione basata da una stima iniziale, la qualit`a della stima ha un notevole impatto sul tempo di calcolo. Spesso tali metodi sono basati sul metodo di Newton-Raphson detto anche metodo delle tangenti. Il metodo di Newton-Raphson, `e uno dei metodi per il calcolo approssimato di una soluzione di un’equazione della forma f(x) = 0. Il metodo delle tangenti viene usato per trovare una soluzione all’equazione: f(Θ) − XEE = 0 (2.16) dove f(Θ) `e l’equazione della cinematica diretta, Θ indica le posizioni dei giunti, e XEE la posizione e l’orientazione dell’end-effector nello spazio Cartesiano.
  • 29. 2.3 Cinematica inversa 15 Nel caso in cui non sia nota una soluzione in forma chiusa per un particolare manipolatore, i metodi tradizionali richiedono una elevata complessit`a di calcolo dovuta all’articolata struttura del manipolatore. Per superare le difficolt`a dei metodi tradizionali, sono stati presi in considerazione dei metodi alternativi. In particolare `e stato argomento di ricerca la possibilit`a d’impiego delle reti neurali artificiali per la risoluzione della cinematica inversa. Le reti neurali artificiali permettono di ottenere una ottimizzazione di tipo off- line, in grado di assimilare il comportamento di una funzione tramite campioni di esempio. Tale trattazione `e stata approfondita nel capitolo 6.
  • 30. 16 Problematiche di controllo
  • 31. Capitolo 3 I manipolatori a disposizione In azienda sono stati messi a disposizione, per il lavoro di tesi, due manipolatori robotici: • Denso Robotics VE026A; • CrustCrawler AX-18A Smart Robotic Arm. Tali bracci robotici sono di ridotte dimensioni e sono pensati ai fini dell’appren- dimento e della formazione in campo accademico [20] [21]. In entrambi i manipolatori l’end-effector `e formato da una pinza (gripper), che serve ad afferrare gli oggetti in modo simile a quanto avviene con la mano. Tali manipolatori sono dotati di servomotori con micro-controllore integrato: ogni motore viene pilotato tramite un bus seriale con cui `e possibile impostare la velo- cit`a massima di rotazione del motore e la posizione desiderata. Inoltre nel micro- controllore sono presenti numerosi sensori da cui `e possibile ottenere utili informazioni per il controllo del manipolatore, ad esempio coppia, posizione e velocit`a istantanea. La presenza di tali controller integrati nei motori, ha permesso di ridurre al minimo l’utilizzo di hardware aggiuntivo per il controllo del manipolatore ed ha reso possibile l’impiego di un unico bus condiviso. Se fossero stati impiegati sensori “meno sofisticati” sarebbe stato necessario impie- gare una linea dedicata per ogni servomotore (ad esempio motori comandati con segnale PWM) ed altre linee supplementari per i sensori. Per poter interagire con l’elettronica dei servomotori `e necessario utilizzare il corretto protocollo di comunicazione. Tale protocollo non `e standardizzato e varia da modello a modello, infatti, per controllare i due manipolatori, `e stato necessario l’impiego di due sistemi di controllo differenti. Si `e resa necessaria anche una conversione elettrica dei segnali: i servomotori a disposizione utilizzano un bus half-duplex con segnali di tipo TTL, mentre le porte RS-232, presenti comunemente sui PC, sono di tipo full-duplex operanti a ± 12V. Per tale motivo si `e reso necessario l’utilizzo di hardware supplementare. 17
  • 32. 18 I manipolatori a disposizione Figura 3.1 – Foto del braccio robot Denso Robotics VE026A 3.1 Denso Robotics VE026A Denso Corporation `e un produttore giapponese di sistemi integrati e componenti au- tomobilistici; la Denso Robotics `e il ramo d’azienda che si occupa della progettazione e della realizzazione di bracci industriali. Il VE026A `e stato prodotto dalla HIMEJI SoftWorks Co. che si occupa della realiz- zazione di piccoli robot per scopi ludici/accademici. `E distribuito dalla Denso allo scopo di mettere a disposizione di studenti un prodotto economico per poter com- prendere il funzionamento dei modelli utilizzati realmente in ambito industriale. Il VE026A `e un braccio robot con sei gradi di libert`a ed un un gripper. Per questo manipolatore non `e disponibile la documentazione originale e i dati tecnici sono stati estratti da un catalogo [20]. Il manipolatore `e destinato al solo mercato giapponese ed in rete si trovano documenti scritti prevalentemente in lingua giapponese; tali riferimenti si sono rivelati di scarsa utilit`a.
  • 33. 3.2 CrustCrawler AX-18A Smart Robotic Arm 19 Tabella 3.1 – Dati tecnici del braccio robot Denso Robotics VE026A Modello VE026A Numero di assi 6 Carico massimo senza gripper 100 g Carico massimo con gripper 50 g Movimento dei giunti J1 -80 ∼ +105 deg J2 -35 ∼ +90 deg J3 -75 ∼ +135 deg J4 -140 ∼ +140 deg J5 -90 ∼ +105 deg J6 -140 ∼ +140 deg Peso 550 g Servo motori Futaba RS303MR Alimentazione 5 V 4 A Per il VE026A non era a disposizione il sistema di controllo; `e stato quindi necessario studiare il funzionamento dei servomotori e realizzare un sistema di controllo. Per approfondimenti si veda l’appendice a pagina 67. Analizzando la struttura del manipolatore si pu`o notare che gli assi degli ultimi tre giunti si intersecano in un punto. Tale configurazione prende il nome di polso sferico (spherical wrist). Come gi`a visto a pagina 13, tale condizione assicura l’esistenza di una soluzione in forma chiusa. La presenza del polso sferico in un manipolatore a sei gradi di libert`a permette di dividere il problema della cinematica inversa in due sotto-problemi a tre gradi di libert`a: uno per il posizionamento ed uno per l’orientazione. 3.2 CrustCrawler AX-18A Smart Robotic Arm CrustCrawler `e una azienda Statunitense fondata nel 2001, produttrice di robot di piccole dimensioni per utilizzo hobbistico, di ricerca ed industriale. CrustCrawler
  • 34. 20 I manipolatori a disposizione Figura 3.2 – Dimensioni Denso Robotics VE026A - (valori in cm) Figura 3.3 – Foto del braccio robot CrustCrawler AX-18A Smart Robotic Arm - 4 DOF
  • 35. 3.2 CrustCrawler AX-18A Smart Robotic Arm 21 Figura 3.4 – Dimensioni CrustCrawler AX-18A Smart Robotic Arm - 6 DOF (valori in cm) AX-18A Smart Robotic Arm `e un manipolatore dotato, nella versione base, di quat- tro gradi di libert`a pi`u un gripper. Tale manipolatore condivide la struttura con il CrustCrawler AX-12A, e si differenzia solo per il tipo di motori utilizzati, meno potenti nella versione AX-12A. Il manipolatore AX-18A ha una struttura modulare, che permette l’installazione di diversi accessori ed elementi aggiuntivi. Tra gli ac- cessori disponibili si possono trovare: gripper di forme e dimensioni differenti, base con ruote per trasformare il manipolatore in un robot mobile, sensori di pressione e ad ultrasuoni ed infine kit per aumentare i gradi di libert`a. Durante il lavoro di tesi sono stati utilizzati due kit di espansione, che hanno permesso di estendere le capa- cit`a del braccio fino a sei gradi di libert`a. Sfortunatamente, la struttura di questo manipolatore non soddisfa le condizioni di esistenza di una soluzione chiusa viste a pagina 13, quindi non `e garantita l’esistenza di una soluzione in forma chiusa per la cinematica inversa: • in nessuna delle tre configurazioni (4, 5 e 6 DOF) `e possibile ottenere tre giunti di rotazione consecutivi che si intersecano in un punto; • nella configurazione a sei gradi di libert`a i primi tre giunti hanno assi paralleli, non `e presente alcun altro giunto parallelo ad essi. La gestione del sistema di controllo di tale manipolatore `e affrontata nell’appen- dice a pagina 77.
  • 36. 22 I manipolatori a disposizione Tabella 3.2 – Dati tecnici del braccio robotico CrustCrawler AX-18A Smart Robotic Arm Modello AX-18A Numero di assi 4, 5, 6 Carico massimo con gripper 2000 g Movimento dei giunti J1 -150 ∼ +150 deg J2 -150 ∼ +150 deg J3 -150 ∼ +150 deg J4 -150 ∼ +150 deg J5 -150 ∼ +150 deg J6 -150 ∼ +150 deg Peso 1180 (6 DOF) g Servo motori Dynamixel AX-18A Alimentazione 9 V 6 A
  • 37. Capitolo 4 Rilevamento dei movimenti della mano Lo scopo di questa tesi `e quello di realizzare un sistema che permetta di muovere un manipolare robotico seguendo i movimenti di una mano. A tal proposito `e sta- to necessario studiare un sistema in grado di individuare posizione ed orientazione della mano con una certa precisione. Nella successive sezioni vengono presentate le tecnologie che permettono di seguire i movimenti del corpo umano. 4.1 Tecnologie disponibili I movimenti di una persona possono essere catturati mediante diversi strumenti. Negli anni ci sono state numerose proposte: • Wired glove: speciali guanti in grado di fornire posizione ed orientamento della mano utilizzando dispositivi di localizzazione magnetici ed inerziali. Il primo dispositivo di questo tipo commercializzato `e stato il DataGlove [22], un dispo- sitivo in grado di rilevare posizione e orientamento della mano, il movimento e la flessione delle dita ed il contatto con gli oggetti. Sono stati proposti anche dei sistemi per rilevare la posizione delle dita tramite fibre ottiche [23]. All’interno del guanto, in modo longitudinale alle dita, ven- gono poste delle fibre ottiche. Tali fibre sono attraversate da impulsi di luce. Le dita, quando sono piegate, provocano un indebolimento o un’interruzione del fascio luminoso. Tale variazione permette di stimare la posa della mano. • Laser scanner: sono degli strumenti che permettono di ottenere il modello tridimensionale di un oggetto inquadrato. Esistono numerosi tipi diversi di laser scanner, ma quasi tutti si basano sulle seguenti tre tecnologie o sulla combinazione di esse: 23
  • 38. 24 Rilevamento dei movimenti della mano – Triangolazione: viene illuminato un punto dell’oggetto da rilevare. L’an- golo di riflessione viene rilevato da un sensore posto ad una distanza predeterminata da cui `e possibile calcolare la distanza. – Tempo di volo: viene inviato un impulso di luce verso l’oggetto da rilevare. La riflessione di tale impulso viene rilevata da un sensore. Il tempo inter- corso tra l’invio e la ricezione dell’impulso permette di rilevare la distanza dell’oggetto. – Misurazione di fase: un punto dell’oggetto da rilevare viene illuminato con un segnale modulato. Un sensore riceve il segnale riflesso e dalla mi- surazione dello sfasamento dei due segnali viene determinata la distanza. Vengono eseguite sequenzialmente numerose misurazioni, per poter ricostruire digitalmente l’intero oggetto. • Stereo camera: utilizzo combinato di due videocamere. Mediante l’analisi delle differenze presenti nelle immagini `e possibile stimare le distanze degli oggetti inquadrati. • Controller di gesture: strumenti usati come estensione del corpo umano. Tali controller devono essere impugnati e includono dei sensori che permettono di rilevare la posizione ed il movimento della mano. Solitamente utilizzano dei sensori di distanza ad infrarossi affiancati da accelerometri e giroscopi. Queste tecnologie, dato il loro particolare campo di utilizzo limitato ed ambienti specifici, hanno spesso un prezzo elevato. Nel campo ludico, per coinvolgere mag- giormente il giocatore, sono state proposte pi`u implementazioni di tali tecnologie. Ci`o ha permesso la diffusione di questi strumenti ad un costo ridotto. Ad esempio, la Nintendo nel 1989 ha presentato il PowerGlove, che `e un guanto in grado di rilevare l’orientamento della della mano (fig. 4.1) nello spazio. Nel 2006, sempre Nintendo, ha presentato il Wii Remote: un controller che, mediante l’utilizzo di accelerometri e sensori di distanza ad infrarossi, fornisce il posizionamento della mano che impugna tale controller. Nel 2010 Microsoft ha presentato il Kinect, un sistema in grado di rilevare i movimenti di un intero corpo umano, senza la necessit`a di indossare o impugnare al- cunch´e. Tale sistema combina diverse tecnologie: una videocamera RGB, un sensore di profondit`a ad infrarossi, un array di microfoni, un motore ed un accelerometro (fig. 4.2). Nella sua ultima revisione (Kinect ver. 2) il sistema `e in grado di tracciare due corpi e di rilevare la presenza di sei corpi. La localizzazione e i movimenti di un corpo avvengono mediante l’individuazione di 20 nodi. Tali nodi sono connessi in modo da formare uno scheletro (Skeletal Tracking) come `e possibile osservare in fig. 4.3.
  • 39. 4.2 Leap Motion Controller 25 Figura 4.1 – Nintendo PowerGlove Nel 2013 `e stato presentato il LeapMotion Controller dall’omonima azienda, un dispositivo che permette di interagire a distanza con il PC ed altri dispositivi (ad esempio SmartTV) con il rilevamento remoto dei movimenti delle mani [1]. Nel 2014 `e stato presentato il VR Developer Mount, un kit che permette di utilizzare il LeapMotion Controller in combinazione ad un visore stereoscopico di realt`a virtuale (Oculus Rift). Tali tecnologie sono in continua evoluzione e potrebbero, in futuro, aprire nuovi scenari di sviluppo in applicazioni robotiche e non solo. Figura 4.2 – Sensori presenti nel Kinect Figura 4.3 – Nodi individuabili dal Kinect 4.2 Leap Motion Controller Per questo progetto si `e deciso di scegliere un sistema di rilevamento della mano in grado di funzionare senza la necessit`a di indossare alcun dispositivo particolare,
  • 40. 26 Rilevamento dei movimenti della mano similmente a quanto avviene con il Kinect. La scelta `e ricaduta sul LeapMotion Controller, gi`a disponibile in azienda. La Leap Motion `e una startup, specializzata nello sviluppo di tecnologie di rile- vazione del movimento dell’uomo per interazione con il computer. Nel 2013 la Leap Motion ha commercializzato l’omonimo controller. Codesto dispositivo a differenza del Kinect non `e in grado di riconoscere l’intero corpo, ma `e specializzato al rilevamento della mano e delle dita. Kinect `e pensato per identificare i movimenti di un corpo all’interno di una stanza (range 3 m), mentre il LeapMotion `e un sistema a corto raggio, pensato per poter essere posto su una scrivania e rilevare i movimenti di oggetti a breve distanza (range 60 cm). La minore area di lavoro del LeapMotion controller permette di ottenere una migliore precisione nelle brevi distanze. Il LeapMotion Controller, `e sembrata la scelta pi`u adatta allo scopo in quanto il campo di utilizzo `e quello che meglio si adatta al progetto. Figura 4.4 – Controller LeapMo- tion Figura 4.5 – Nodi individuabili dal LeapMotion Il Leap Motion Controller `e un piccolo dispositivo USB (13x13x76 mm, 45 g) che integra due camere ad infrarossi e tre led infrarossi. Il range di funzionamento `e limitato dalla luce emessa dai LED ad infrarossi. L’intensit`a della luce diminuisce all’aumentare della distanza e quindi `e difficile rilevare gli oggetti oltre una certa distanza. La quantit`a di luce emessa dai LED `e limitata alla corrente massima consentita dal bus USB.
  • 41. 4.2 Leap Motion Controller 27 Figura 4.6 – Area visibile dal controller LeapMotion
  • 42. 28 Rilevamento dei movimenti della mano
  • 43. Capitolo 5 Ambiente di simulazione Per porre le basi per testare gli algoritmi di cinematica inversa si `e deciso di utilizzare un ambiente di simulazione: tale scelta ha permesso di eseguire diverse prove senza dover usare fisicamente il manipolatore reale. Questo modo di procedere ha ridotto i tempi di sviluppo e ha preservato l’integrit`a del manipolatore, limitandone, l’utilizzo allo stretto necessario. L’uso del simulatore ha inoltre permesso di evitare eventuali collisioni che, se avvenissero con il manipolatore reale, rischierebbero di danneggiarlo. Le collisioni posso avvenire con l’ambiente circostante, contro la base d’appoggio o con la stessa struttura del manipolatore. Per poter simulare il funzionamento di un manipolatore `e necessario essere in possesso di un modello sufficientemente preciso del braccio da utilizzare, in modo da rendere coerenti i dati simulati e quelli reali. In questo capitolo verr`a presentato il simulatore OpenRAVE ed una descrizione dei modelli impiegati. 5.1 OpenRAVE La scelta sul simulatore `e ricaduta su OpenRAVE [24], in quanto gi`a utilizzato da precedenti prove all’interno dell’azienda. OpenRAVE `e un ambiente per il test, lo sviluppo e la messa in funzione di algoritmi per la pianificazione dei movimenti di applicazioni robotiche. Il target a cui si rivolge questo applicativo `e quello della robotica industriale. OpenRAVE `e un software open-source scritto come risultato e continuazione della tesi di laurea di Rosen Diankov [25]. Nonostante questo strumento sia abbastanza diffuso, `e poco supportato dalla comunit`a online, infatti in rete si trovano solo esempi e documenti scritti dallo stesso Diankov. Questo particolare ha reso abbastanza problematico l’apprendimento dell’utilizzo di OpenRAVE, rallentando non poco lo sviluppo del progetto di tesi. 29
  • 44. 30 Ambiente di simulazione `E possibile interagire con OpenRAVE tramite un’interfaccia a riga di comando Python, oppure tramite la programmazione in C++. Il punto di forza di OpenRAVE `e l’implementazione del risolutore di cinematica inversa chiamato IKFast: esso permette di calcolare le soluzioni del modello in forma chiusa. La particolarit`a principale di questa soluzione `e data dalla velocit`a di calcolo (6 microsecondi contro i 10 millisecondi di altri metodi numerici [25, p. 78]). Come gi`a affrontato al capitolo 3, il VE026A soddisfa una condizione per cui `e garantita l’esistenza di una soluzione in forma chiusa della cinematica inversa: gli assi di tre giunti consecutivi si intersecano in un unico punto. Purtroppo, per il manipolatore AX-18A non `e possibile ottenere una soluzione in forma chiusa chiusa. A conferma di ci`o il risolutore IKFast `e stato testato con entrambi i manipola- tori. Nel caso del VE026A il funzionamento `e stato regolare, mentre con l’AX-18A il risolutore non `e mai riuscito a funzionare correttamente, nonostante i numerosi tentativi di messa in opera, nelle varie configurazioni con 4, 5 e 6 gradi di libert`a. Si precisa che OpenRAVE include un risolutore della cinematica diretta che ha funzionato correttamente con tutti i modelli. Come si vedr`a nel successivo capitolo, tale risolutore `e stato impiegato per la generazione dei campioni di addestramento di una rete neurale. Tale rete neurale verr`a utilizzata per ottenere un diverso risolutore della cinematica inversa. Modelli in OpenRAVE Tramite OpenRAVE `e possibile caricare i modelli dei robot, l’ambiente di lavoro (ostacoli, oggetti) e pianificare i movimenti. Per poter utilizzare un simulatore `e necessario avere un modello del braccio desiderato. La precisione del modello `e di estrema importanza, in quanto un modello non corretto genererebbe delle incon- gruenze tra i valori del simulatore e quelli dell’ambiente reale. OpenRAVE supporta modelli descritti con formato Collada ed XML proprietario. Collada (COLLAborative Design Activity) `e uno standard basato su XML uti- lizzato come formato di interscambio nelle applicazioni di modelli 3D [26]. Il formato XML proprietario, data la sua semplicit`a di utilizzo, `e da preferire nel caso venga creato il modello manualmente e non si abbia la necessit`a di importare/e- sportare il modello da/verso altri software [27]. Per il VE026A in rete `e stata trovata la libreria distribuita da HiveGround [28] contenente il modello del manipolatore. Tale modello `e disponibile nel formato URDF (Unified Robot Description For- mat), formato utilizzato dall’ambiente ROS (Robot Operating System) [29]. Median- te il pacchetto collada urdf contenuto in ROS, `e stato possibile esportare il modello nel formato Collada e provarene l’utilizzo con il simulatore OpenRAVE. Per il manipolatore CrustCrawler `e disponibile, invece, un modello Collada di- rettamente all’interno del repository di OpenRAVE [30].
  • 45. 5.1 OpenRAVE 31 Figura 5.1 – Modello VE026A di HiveGround
  • 46. 32 Ambiente di simulazione Figura 5.2 – Modello CrustCrawler contenuto in OpenRAVE
  • 47. 5.1 OpenRAVE 33 Figura 5.3 – Modello VE026A con XML proprietario Un ulteriore modello per il manipolatore CrustCrawler `e disponibile in un pro- getto ROS con nome AU-CrustCrawler [31]. Nei modelli trovati sono presenti alcune differenze rispetto ai manipolatori in pos- sesso e pertanto i modelli hanno richiesto alcune modifiche. Tali modelli possiedono un end-effector differente e, nel caso del CrustCrawler, non sono presenti i kit di aggiornamento per simulare il quinto ed il sesto grado di libert`a. I file, dal punto di vista grafico, sono molto accurati e descrivono graficamente il manipolatore punto per punto. Tali file molto probabilmente sono stati generati mediante l’ausilio di scanner tridimensionali. I file sono di notevoli dimensioni e, data la loro complessit`a, la modifica manuale di tali modelli risulta essere molto difficoltosa. Pertanto si `e optato per la realizzazione da zero dei modelli nel formato XML proprietario. Dopo aver realizzato i modelli, `e stato scritto un programma in C++ per la generazione delle traiettorie.
  • 48. 34 Ambiente di simulazione Figura 5.4 – Modello CrustCrawler in configurazione 6 DOF con XML proprietario
  • 49. Capitolo 6 Cinematica inversa con reti neurali Per superare la complessit`a del controllo dei bracci robotici `e stata presa in esame l’applicabilit`a delle reti neurali come tecnica risolutiva della cinematica inversa. Le reti neurali sono largamente accettate come una tecnologia in grado di offrire una via alternativa per superare le difficolt`a di problemi complessi e mal posti. Le reti neurali vengono istruite tramite esempi, sono in grado di funzionare in presenza di rumore o di dati incompleti, possono funzionare con problemi non lineari e, una volta istruite, forniscono sempre una soluzione con un costo computazionale molto ridotto. Le reti neurali artificiali sono nate per riprodurre attivit`a tipiche del cervello uma- no, come la percezione di immagini, il riconoscimento di forme, la comprensione del linguaggio, il coordinamento senso-motorio, etc. Per una persona risolvere problemi di questo tipo `e estremamente naturale, mentre non `e banale la loro risoluzione per un calcolatore. Da questa osservazione risultano evidenti le enormi potenzialit`a di un computer in grado di imitare il funzionamento del cervello umano in situazioni di questo tipo. Per questo la struttura di una rete neurale artificiale riprende la struttura di una rete biologica, con le opportune semplificazioni. 6.1 Rete neurale biologica Il cervello umano ha circa 20 miliardi di cellule nervose (neuroni), connesse fra loro [32]. Il numero di interconnessioni `e stimato dell’ordine di un milione di miliardi. Quando un neurone viene attivato, manda un impulso elettrochimico ai neuroni a cui `e connesso: l’operazione si ripete per ogni neurone e, nell’intervallo di pochi centesimi di secondo, intere regioni del cervello risultano interessate dall’evento. Il neurone `e il componente elementare del sistema nervoso ed `e composto da (fig. 6.1): • corpo cellulare; 35
  • 50. 36 Cinematica inversa con reti neurali Figura 6.1 – Flusso informazionale in una rete neurale biologica • dendriti; • assone. Il corpo cellulare `e rivestito da una membrana in grado di mantenere una polariz- zazione, vale a dire una concentrazione di cariche elettriche. Tali cariche provengono dai dendriti, che sono dei prolungamenti ramificati a loro volta in contatto con altri neuroni. I molteplici dendriti di un neurone concorrono ad eccitare il corpo cellulare il quale, oltre un certo limite, “scarica” la sua attivazione lungo l’assone, andando quindi ad interessare altri neuroni. Il punto di contatto fra due neuroni si chiama sinapsi e si manifesta mediante l’avvicinamento fra l’assone di un neurone con il dendrite di un altro neurone. La sinapsi `e una leggera intercapedine fra assone e dendrite in cui il segnale proveniente dall’assone si trasmette, con un processo elettrochimico, verso il dendrite. Lo spessore di questa intercapedine pu`o variare nel tempo, provocando quindi un rafforzamento o un indebolimento della connessione fra due neuroni. Il contenuto informativo del cervello umano `e rappresentato dall’insieme dei valori di attivazione di tutti i neuroni e l’elaborazione dell’informazione `e rappresentata dal flusso di segnali fra i vari neuroni che si eccitano o inibiscono a vicenda (testo tratto da [33]). 6.2 Rete neurale artificiale Una rete neurale artificiale (ANN, Artificial Neural Network), normalmente chiamata solo “rete neurale” (NN, Neural Network), `e un modello di calcolo matematico il cui
  • 51. 6.2 Rete neurale artificiale 37 Figura 6.2 – Il neurone artificiale funzionamento `e derivato da quello delle reti neurali biologiche. Una rete neurale artificiale `e formata dalla connessione di neuroni artificiali. Il neurone artificiale `e una schematizzazione del neurone biologico, in cui le propriet`a funzionali sono descritte da formule matematiche, senza tener conto dei fenomeni elettrici, chimici, termici e biologici che avvengono nella realt`a. La rete neurale artificiale `e un sistema adattivo che cambia la sua struttura basata su informazioni esterne o interne, che scorrono attraverso la rete durante la fase di apprendimento. Una rete neurale artificiale riceve segnali esterni su uno strato di nodi (unit`a di elaborazione) d’ingresso, ciascuno dei quali `e collegato a numerosi nodi interni, organizzati in pi`u livelli. Ogni nodo elabora i segnali ricevuti e trasmette il risultato ai nodi successivi. 6.2.1 Modello di un neurone artificiale Ogni neurone ha n canali di ingresso x1, ...xn, a ciascuno dei quali `e associato un peso (fig. 6.2). I pesi wi sono numeri reali che riproducono le sinapsi. Il valore assoluto di un peso rappresenta la forza della connessione. L’uscita, cio`e il segnale, con cui il neurone trasmette la sua attivit`a all’esterno, `e calcolata applicando la funzione di attivazione alla somma pesata degli ingressi. Indicando con a = n i=1 wixi la somma pesata degli ingressi, abbiamo: y = f(a) = f n i=1 wixi (6.1) L’uscita di un neurone artificiale (e di conseguenza anche della rete artificiale) pu`o essere un numero reale o discreto appartenente ad un certo intervallo, solitamente [0,1] oppure [-1,1]. Le funzioni comunemente utilizzate sono le funzioni lineari, lineari a tratti, a soglia e di tipo sigmoide (fig. 6.3).
  • 52. 38 Cinematica inversa con reti neurali Funzione lineare Funzione soglia Funzione sigmoide Figura 6.3 – Esempi di funzioni di attivazione per un neurone artificiale 6.2.2 Funzionamento di una rete neurale artificiale Le reti neurali per poter essere utilizzate devono essere addestrate. Esistono princi- palmente due tipi di tipologie di apprendimento per le reti neurali: • apprendimento non supervisionato; • apprendimento supervisionato. L’apprendimento non supervisionato necessita dei soli valori di ingresso. Le re- ti che utilizzano l’apprendimento non supervisionato tentano di raggruppare i dati d’ingresso e di individuare degli opportuni cluster rappresentativi dei dati stessi, fa- cendo uso tipicamente di metodi topologici o probabilistici. Vengono solitamente utilizzate per la classificazione e per la compressione dei dati. Le reti di questo tipo pi`u utilizzate sono le reti di Kohonen. Esse rappresentano i dati in input su una mappa bidimensionale, in cui i campioni simili sono mappati vicini mentre i dissimili sono mappati distanti. L’apprendimento supervisionato prevede di sottoporre alla rete degli esempi di addestramento contenenti i valori di ingresso e le relative uscite, per far in modo che la rete possa imparare dai valori che le vengono proposti. Il compito della rete `e quello di fornire un’uscita per ogni valore degli ingressi; in altre parole, la rete neurale realizza una funzione F: Y = F(X) (6.2) La rete neurale con apprendimento supervisionato `e quindi la tipologia di rete che meglio si presta alla risoluzione della cinematica inversa. In particolare si render`a necessario addestrare una rete neurale in grado di computare l’equazione (2.13). Per- ci`o lo studio di questa tesi si `e concentrato sullo studio delle reti con apprendimento supervisionato. Una rete neurale `e formata da pi`u neuroni interconnessi. Alcuni neuroni ricevono segnali dall’esterno e sono chiamati unit`a di input, analogamente i neuroni che forni- scono il loro output all’ambiente esterno sono le unit`a di output. I restanti neuroni appartenenti alla rete vengono chiamati neuroni nascosti o intermedi.
  • 53. 6.2 Rete neurale artificiale 39 Figura 6.4 – Rete neurale artificiale multi-livello L’input di una rete neurale `e dunque un insieme di numeri reali che indichiamo con X; analogamente indichiamo con Y l’insieme dei numeri che formano l’output della rete. I neuroni possono essere connessi utilizzando varie strutture topologiche, ma quel- le comunemente utilizzate sono le reti multi-livello (fig. 6.4). Nelle reti multi-livello i neuroni sono organizzati in insiemi separati e disgiunti, in cui `e presente un livello di ingresso, uno d’uscita e tutti gli altri livelli sono chiamati nascosti o intermedi. Ogni livello `e completamente connesso con il livello successivo e non sono possibili ulteriori collegamenti (fig. 6.4). Il teorema di Hecht-Nielsen [34] afferma che una qualsiasi funzione Y = F(X) pu`o essere computata con elevata accuratezza da una rete neurale multi-livello con un solo livello intermedio. Tale teorema riveste importanza pi`u teorica che pratica, infatti non indica quante devono essere le unit`a, n´e quali devono essere i pesi wi per ottenere una rete che effettivamente esegua una funzione F. Non vi `e una soluzione generale a questo problema, ma esistono delle tecniche che forniscono delle approssimazioni funzionanti nella pratica come la back-propagation. Il fatto che l’informazione venga elaborata in maniera distribuita da una molti- tudine di unit`a elementari (neuroni), porta a due conseguenze: • resistenza al rumore; • resistenza al degrado.
  • 54. 40 Cinematica inversa con reti neurali Resistenza al rumore significa che la rete `e in grado di funzionare anche in presen- za di dati incerti, incompleti o leggermente errati. Resistenza al degrado significa che la rete `e in grado di funzionare anche in presenza di unit`a elementari difettose. Quest’ultima caratteristica non assume un aspetto rilevante per le reti neurali imple- mentate via software, ma assume importanza in quelle implementate via hardware o in quelle biologiche. L’addestramento di una rete neurale pu`o avvenire senza doverle fornire tutti gli esempi possibili, ma soltanto un sottoinsieme significativo di essi. La capacit`a di generalizzazione del rete neurale, permette di ottenere dei risultati per dei valori non noti a priori. La back-propagation `e un algoritmo di allenamento della rete neurale che permet- te di ottenere i pesi della rete a partire da campioni di valori di cui si conosce l’input e l’output, chiamato insieme di addestramento (training set). L’algoritmo sottopone pi`u volte il training set alla rete, aggiustando di volta in volta i pesi per minimizzare l’errore quadratico ottenuto dalla differenza dall’uscita desiderata e quella ottenuta mediante l’utilizzo della rete. Ogni ciclo di apprendimento della rete neurale `e detto “epoca” (epoch). Dopo aver ottenuto una sufficiente approssimazione della funzione desiderata, termina la fase di addestramento e risultano determinati i pesi. Successivamente si passa alla fase di testing, in cui viene utilizzato un secondo insieme di valori di input ed output, chiamato insieme di testing, con cui si valuta il grado di generalizzazione della rete. In altre parole, si valutano le prestazioni per valori non noti durante l’addestramento. Una rete neurale esegue una ottimizzazione di tipo off-line durante la fase di training e, durante la fase di testing vengono valutate le prestazioni di tale otti- mizzazione. Tali procedimenti possono richiedere molto tempo e dipendono dalla struttura topologica della rete, dall’algoritmo di allenamento, dalla grandezza dei pattern, etc. Una rete addestrata `e in grado di fornire un risultato in un tempo molto ridotto in quanto `e gi`a stata eseguita una ottimizzazione a priori. In una rete neurale multi-livello le funzioni di attivazione dei neuroni di ingresso sono lineari, mentre quelle dei livelli intermedi e d’uscita sono di tipo sigmoidale. Le funzioni sigmoidali (fig. 6.3) forniscono un valore d’uscita solo per valori appartenenti ad un intervallo, solitamente [0, 1] o [−1, 1]. Quindi, i valori d’uscita della rete neurale devono appartenere ad un determinato intervallo. Pertanto, per poter addestrare correttamente una rete neurale `e necessario normalizzare i valori d’uscita degli insiemi di testing e di training. Siccome i neuroni di ingresso utilizzano una funzione di attivazione lineare, non `e strettamente necessaria la normalizzazione dei valori di input, comunque la normalizzazione di tali valori viene comunemente effettuata, rendendo omogenee le grandezze dei valori di input e di output, poich´e tale approccio permette di velocizzare l’apprendimento della rete. `E bene puntualizzare che le capacit`a di apprendimento di una rete neurale di- pendono da una accurata scelta dei parametri, ed `e possibile che una rete non riesca
  • 55. 6.3 Cinematica inversa 41 affatto ad apprendere la funzione desiderata se i vari parametri non sono adegua- ti. Per fare in modo che la rete approssimi correttamente la funzione desiderata bisogna [35]: • trovare una struttura adeguata di rete neurale; • scegliere opportunamente gli input e gli output; • creare un opportuno campione di training; • addestrare adeguatamente la rete. Il funzionamento di una rete neurale addestrata pu`o essere visto come una black- box e non `e possibile dall’esterno comprendere il funzionamento interno della strut- tura. Siccome non esistono delle tecniche generalizzate che permettano di ottenere automaticamente i parametri adeguati, per poter trovare i valori ottimali di una rete neurale `e necessario eseguire molte prove in cui si confrontano i risultati ottenuti. 6.3 Cinematica inversa Come visto nel capitolo 2, la risoluzione della cinematica inversa avviene mediante la risoluzione della seguente equazione: Θ = f−1 (XEE) (6.3) dove Θ(θ1, ..., θn) rappresenta lo stato dei giunti, XEE(x, y, z, θx, θy, θz) le coordina- te Cartesiane dell’end-effector e f(Θ) rappresenta la formulazione della cinematica diretta. Per poter addestrare una rete neurale `e necessario generare i campioni degli in- siemi di training e testing. Per ottenere tali valori viene utilizzata la cinematica diretta. Bisogna porre attenzione al fatto che la cinematica diretta ammette sempre una soluzione (salvo collisioni); data la configurazione dei giunti `e possibile calcolare univocamente le coordinate Cartesiane dell’end-effector. La cinematica inversa al contrario pu`o ammettere pi`u di una soluzione, data la posizione dell’end-effector potrebbero esistere pi`u configurazioni dei giunti valide, oppure potrebbe non esistere alcuna configurazione valida. Quando si usa un risolutore che fornisce solo una delle molteplici soluzioni della cinematica inversa, ci si trova nella condizione in cui `e molto difficile poter eseguire delle traiettorie. Una traiettoria `e formata da un insieme ordinato di coordinate Cartesiane dell’end-effector. Per poter seguire in modo opportuno una traiettoria sarebbe necessario trovare di volta in volta le configurazioni angolari che richiedono
  • 56. 42 Cinematica inversa con reti neurali il minor movimento dei giunti. In questo modo si limita il problema per il quale, per eseguire piccoli movimenti spaziali, sia necessario utilizzare una configurazione molto differente da quella precedente. Per la loro struttura le reti neurali permettono di ottenere solo una soluzione del problema ed hanno difficolt`a a gestire problemi in cui sono possibili pi`u soluzioni. Se la rete viene addestrata con campioni contraddittori la rete non potrebbe indivi- duare pi`u soluzioni differenti, ma fornirebbe in uscita un valore intermedio, con la conseguenza di ottenere un valore errato. Per cercare di ovviare al problema delle soluzioni multiple `e possibile formulare diversamente il problema, fornendo maggiori informazioni in modo che il problema ammetta un’unica soluzione. Nel successivo paragrafo verranno presentati articoli scientifici che propongono l’impiego delle reti neurali come risolutori della cinematica inversa. 6.4 Stato dell’arte delle soluzioni al problema del- la cinematica inversa basate sulle reti neurali Durante il lavoro di tesi sono stati presi in considerazione pi`u articoli che trattano la risoluzione della cinematica inversa. Dal lavoro di ricerca `e emerso che le reti neurali possono essere utilizzate senza un’approfondita conoscenza del modello fisico/mate- matico del funzionamento del manipolatore. Inoltre le reti neurali permettono di ottenere un risolutore generalizzato che non dipende strettamente dal tipo di mani- polatore utilizzato. Tutte le reti prese in considerazione sono state allenate facendo uso dell’algoritmo di back-propagation e sue varianti, in quanto questo algoritmo sembra essere il pi`u diffuso ed adeguato allo scopo. Gli articoli [36] e [37] propongono l’utilizzo delle reti neurali come sistema per la soluzione della cinematica inversa per i manipolatori di cui non si conosce una solu- zione in forma chiusa, valutando i pregi di tale soluzione. Le reti neurali consentono di superare le difficolt`a derivanti dall’utilizzo dei metodi tradizionali, eseguendo una ottimizzazione che permette di ottenere un risultato in tempi molto brevi, adatti ai movimenti real-time. Nell’articolo [38] viene proposta una rete neurale con un livello intermedio formato da 100 neuroni per risolvere la cinematica inversa per un manipolatore planare a tre link. Vengono impiegati come ingressi della rete le coordinate Cartesiane dell’end- effector (3)1 , come uscite le posizioni angolari dei giunti (3). `E interessante notare 1 I valori indicati tra perentesi tonde indicano la quantit`a di neuroni di input/output associati alle variabili
  • 57. 6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa basate sulle reti neurali 43 che viene eseguito un filtraggio dei dati di training, valori in contraddizione tra loro vengono eliminati. Questo permette di evitare che la rete neurale apprenda due configurazioni angolari differenti per la medesima posizione dell’end-effector. Nell’articolo [39] vengono confrontate varie configurazioni di reti neurali per risol- vere la cinematica inversa per un manipolatore a sei gradi di libert`a. In particolare dallo studio si evince che i migliori risultati si ottengono quando la rete `e strutturata con: • un solo un neurone d’uscita e due livelli intermedi; • pi`u neuroni d’uscita ed un solo livello intermedio. Nell’articolo [35] viene proposto un metodo alternativo per la risoluzione della cinematica inversa. Per un manipolatore a sei gradi di libert`a viene proposta una particolare rete neurale che tratta separatamente posizionamento (primi tre giunti) e orientazione (ultimi tre giunti) dell’end-effector. Tale approccio sembra essere ispirato al metodo di decomposizione proposto da Pieper [13]. Dai risultati emerge che il risolutore riesce ad ottenere buoni risultati per il posizionamento, ma scarsi risultati per l’orientazione. Nell’articolo [40] viene proposta una variante dell’algoritmo di back-propagation per la risoluzione della cinematica inversa di un manipolatore a tre gradi di libert`a. Tale variante non richiede l’utilizzo di una fase di training, ma necessit`a una stima iniziale del risultato desiderato. Di volta in volta viene utilizzata la cinematica diretta per valutare le prestazioni della rete ed aggiustare i pesi al fine di minimizzare l’errore. Si differenzia dall’approccio classico della back-propagation in quanto viene eseguita una ottimizzazione on-line. Nell’articolo [41] vengono confrontati gli algoritmi di apprendimento di una rete utilizzata per la risoluzione della cinematica inversa di un manipolatore a sei gradi di libert`a. In questo caso come input viene usata la posizione dell’end-effector (3) e come output la configurazione angolare dei giunti (6). Tra gli algoritmi confrontati, quello che ottiene un miglior risultato `e quello chiamato Quick-Propagation. Tale metodo risulta essere notevolmente pi`u veloce rispetto ai modelli analitici generalizzati per i manipolatori che non hanno una semplice soluzione in forma chiusa. Inoltre rispetto agli altri algoritmi di apprendimento `e quello che fornisce l’errore minore. Nell’articolo [42] vengono confrontate varie strutture e funzioni di attivazione per la risoluzione della cinematica inversa in un manipolatore con sette gradi di libert`a. Vengono posti in input le coordinate Cartesiane dell’end-effector (12, posizione e
  • 58. 44 Cinematica inversa con reti neurali matrice di rotazione) ed in output le configurazioni dei giunti angolari (7). Dai risultati si osserva che le migliori prestazioni si ottengono con una rete un livello intermedio, 40 neuroni nascosti e con funzioni di attivazione: la curva sigmoidale (in Matlab Logsig, input normalizzati nell’intervallo [0,1])(fig. 6.5) e tangente iperbolica (in Matlab Tansig, input normalizzati nell’intervallo [-1,1])(fig. 6.6). Figura 6.5 – Curva sigmoidale Figura 6.6 – Tangente iperbolica La curva sigmoidale `e ottenuta dalla formula: logsig(x) = 1 1 + e−x (6.4) La tangente iperbolica `e ottenuta: tanh(x) = 1 − e−2x 1 + e−2x (6.5) Nella pubblicazione [43], vengono discusse le tecniche per la normalizzazione dei pattern da utilizzare con una rete neurale nella risoluzione della cinematica inversa. Vengono proposti tre metodi per individuare i valori minimi e i valori massimi, allo scopo di effettuare una opportuna normalizzazione: 1. Valutazione dei limiti strutturali del manipolatore. Ogni giunto possiede un range minimo e massimo in cui pu`o muoversi, da tali dati `e possibile ricavare l’area di lavoro del manipolatore. 2. Individuazione dei valori minimi e massimi dell’insieme di training. Questo ap- proccio `e da preferire nel caso in cui si preveda di utilizzare solo un sottoinsieme dell’area di lavoro. 3. Filtraggio dell’insieme di training dei valori che potrebbero generare soluzioni contraddittorie e successiva individuazione di minimi e massimi.
  • 59. 6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa basate sulle reti neurali 45 Nella pubblicazione [39] vengono provate diverse strutture di rete neurale per la soluzione della cinematica inversa, da cui si evince che la rete neurale fornisce migliori risultati: • in presenza di output multipli, con un solo layer nascosto; • il numero di neuroni nei livelli nascosti deve essere pari al numero di neuroni in input. Anche se non riguarda in modo specifico il problema della cinematica inversa `e stato considerato l’articolo [44] che propone una tecnica per dimensionare una rete neurale con un solo livello nascosto. Tale metodo pone in relazione i neuroni appartenenti al layer nascosto con il numero di neuroni in input, il numero di neuroni in output e i campioni di training. 0, 6h = m(q − 1) n + m + 1 (6.6) dove: • h = neuroni presenti nel layer nascoso; • n = numero di input; • m = numero di output; • q = campioni di training. Con tale valore, la rete neurale generalmente viene addestrata correttamente e per- mette di evitare il rischio di sovradattamento (overfitting), fenomeno che avviene quando la rete neurale si specializza troppo sui campioni di training, perdendo la generalit`a della risoluzione su campioni differenti. L’articolo [45] propone un interessante approccio per migliorare le prestazioni di una rete neurale la cui struttura sia gi`a stata collaudata. Partendo da una rete neu- rale esistente, mantenendo inalterati i parametri di input e output, vengono generate altre reti neurali, con dei parametri leggermente differenti, ad esempio allenate con un diverso training-set, oppure con un numero di epoche differenti o un numero di neuroni intermedi differenti. Tutte le reti contemporaneamente vengono utilizzate per la risoluzione della cinematica inversa (committee machine approach). Mediante l’utilizzo della cinematica diretta, di volta in volta viene calcolato l’errore commesso da ciascuna rete e viene scelto il risultato con errore minore. L’utilizzo simultaneo di pi`u reti neurali `e reso possibile dalle modeste capacit`a di calcolo richieste per il calcolo della cinematica diretta e dall’alto grado di parallelizzazione di questo ap- proccio. Dalle prove si evince che non si hanno significativi vantaggi nell’utilizzo di pi`u di sei reti neurali.
  • 60. 46 Cinematica inversa con reti neurali Nella pubblicazione [46] viene presentato un utilizzo alternativo della rete neurale nella soluzione della cinematica inversa per un manipolatore a sei gradi di libert`a. La rete viene utilizzata per l’individuazione delle singolarit`a. La singolarit`a viene definita come: A condition caused by the collinear alignment of two or more robot axes resulting in unpredictable robot motion and velocities. Una condizione causata dall’allineamento collineare di due o pi`u assi del robot con conseguente movimento e velocit`a imprevedibile del robot. (1999, American National Standard for Industrial Robots and Robot Systems) Quando la struttura `e in una configurazione singolare, possono esistere infinite so- luzioni al problema cinematico inverso [47]. Per individuare le singolarit`a vengono analizzate le differenze delle posizioni ottenute tramite la rete neurale e i risultati ot- tenuti con la cinematica diretta. Nelle zone in cui la rete neurale commette un errore maggiore si suppone la presenza di configurazioni singolari. Conoscere le singolarit`a pu`o essere utile nella scelta di una adeguata traiettoria che eviti punti critici nel suo percorso. Gli articoli che hanno suscitato maggior interesse sono quelli proposti da A. T. Hasan [48,49] e riguardano l’utilizzo della rete neurale per la risoluzione della cine- matica inversa per un manipolatore a sei gradi di libert`a. Tali articoli si differenziano dagli altri perch´e, oltre a correlare le posizioni dell’end-effector con quelle dei giunti prendono in considerazione anche le loro velocit`a (cinematica istantanea [11]). Le- gare le velocit`a angolari dei giunti con quelle dell’end-effector permette di superare le singolarit`a, evitando che piccoli movimenti nello spazio Cartesiano comportino elevati movimenti nello spazio dei giunti. Partendo dalla formulazione della cinematica diretta e calcolando la sua derivata si ottengono: XEE = f(θ) (6.7) ˙XEE = J(f(θ)) ˙θ (6.8) in cui f rappresenta una funzione differenziabile non lineare. Invertendo tali equazioni si ottengono le formulazioni relative alla cinematica inversa: θ = f−1 (XEE) (6.9) ˙θ = J−1 (f(θ)) ˙XEE (6.10)
  • 61. 6.5 Rete neurale proposta 47 Nell’articolo [49] vengono messe a confronto due reti neurali per la risoluzione della cinematica inversa per un manipolatore a sei gradi di libert`a. Nella prima, viene usato un approccio “tradizionale” con in input la posizione spaziale dell’end- effector (3) ed in output le configurazioni angolari dei giunti (6). Nella seconda invece vengono aggiunti: in input la velocit`a lineare dell’end-effector (4) ed in output le velocit`a angolari dei giunti (12). Dalle prove emerge che la seconda rete possiede migliori capacit`a di apprendimento ed, in genere, fornisce prestazioni migliori. L’articolo [48] prosegue lo studio dell’articolo precedente e propone una rete cos`ı strutturata: • In input: – posizione Cartesiana desiderata (3); – orientazione desiderata (3); – modulo velocit`a lineare desiderata (1). • In output: – posizione angolare dei giunti desiderata (6); – velocit`a angolare dei giunti desiderata (6). In questo caso viene aggiunto in ingresso anche l’orientamento dell’end-effector. An- che con questa configurazione vengono mostrate le capacit`a di superare le singolarit`a con l’approccio della cinematica istantanea. Prendendo in considerazioni gli articoli sopraccitati, sono state provate varie strutture di reti neurali che potessero essere utili alla risoluzione della cinematica inversa dei manipolatori a disposizione. 6.5 Rete neurale proposta Riprendendo le considerazioni i risultati dell’articolo [48] `e stata provata una rete strutturata nel seguente modo: • In input: – posizione spaziale dell’end-effector (3); – orientazione dell’end-effector espressa dal quaternione (4); – modulo della velocit`a spaziale dell’end-effector (1); – velocit`a spaziale dell’end-effector lungo gli assi x, y e z (3). • In output:
  • 62. 48 Cinematica inversa con reti neurali – posizione angolare dei giunti (6); – velocit`a angolare dei giunti (6). Tale configurazione si differenzia da quella proposta da A. T. Hasan [48] per l’uti- lizzo del quaternione per determinare l’orientazione dell’end-effector e per l’aggiunta delle singole velocit`a spaziali. La scelta del quaternione `e dovuta al fatto che il simulatore OpenRAVE per determinare l’orientamento di un corpo rigido non utilizza gli angoli di Tait–Bryan ma il quaternione. Tale sistema `e da considerarsi pi`u adatto allo scopo in quanto permette di superare il problema del blocco cardanico (gimbal-lock). Utilizzando la rappresentazione di Tait–Bryan, il gimbal-lock si manifesta quando viene a mancare una rappresentazione univoca dell’orientamento. Tale situazione si verifica quando viene eseguita una rotazione di 90° lungo un asse, rendendo coinci- denti i restanti assi, provocando la perdita di un grado di libert`a. Nella fig. 6.7 `e possibile osservare che `e possibile ottenere la medesima rotazione eseguendo rota- zioni di 90° lungo l’asse di yaw e successivamente di pitch ed in modo equivalente eseguendo le rotazioni lungo l’angolo di pitch e poi di roll. Figura 6.7 – Esempio di gimbal-lock L’aggiunta delle velocit`a lungo gli assi ha permesso di migliorare i risultati. La rete utilizza, come tecnica di addestramento, la back-propagation, la funzione di attivazione lineare per i neuroni di ingresso e la tangente iperbolica come funzione di attivazione dei neuroni nascosti e d’uscita.
  • 63. 6.6 Metodologia 49 6.6 Metodologia Il lavoro relativo all’impiego delle reti neurali `e stato suddiviso in pi`u fasi: • generazione dei campioni; • normalizzazione dei campioni; • addestramento di una rete neurale; • applicazione pratica del risolutore di cinematica inversa. 6.6.1 Generazione dei campioni Per poter addestrate una rete neurale `e necessario generare dei campioni compren- denti alcuni valori di input e di output della funzione che si vuole implementare. Parte di tale insieme viene utilizzato per la fase di training, mentre la parte restante per la fase di testing. Nel caso in questione in cui si vuole implementare la cinematica inversa, tali valori sono ottenibili tramite la cinematica diretta. In ingresso saranno presenti le coordinate spaziali dell’end-effector (posizione ed orientamento) ed in uscita saranno presenti le posizioni angolari dei giunti. Siccome la cinematica inversa pu`o ammettere pi`u di una soluzione `e possibile aggiungere dei valori di input e di output in modo da limitare lo spazio delle soluzioni. I valori di addestramento della rete neurale sono stati ottenuti tramite il simula- tore OpenRAVE. I valori sono stati ottenuti nel modo seguente: 1. tramite una funziona di randomizzazione si ottiene una nuova configurazione dei giunti che soddisfi i limiti strutturali del manipolatore; 2. si verifica che tale configurazione non comporti delle collisioni, in tal caso si ripete il passo precedente; 3. si genera una traiettoria per raggiungere la nuova configurazione, che rispetta i vincoli di velocit`a massima dei giunti; 4. si esegue la traiettoria e ad intervalli regolari si si registrano posizione e velocit`a dei giunti e dell’end-effector; 5. si ripete il procedimento fino al raggiungimento di campioni desiderati. In questa fase `e importante dimensionare adeguatamente l’intervallo di lettura dei parametri del manipolatore mentre esegue i movimenti. Un intervallo troppo breve porterebbe in una situazione si “sovraccampionamento”, mentre un intervallo troppo duraturo avrebbe l’effetto opposto. Nel seguito verr`a valutata l’influenza di tale valore.
  • 64. 50 Cinematica inversa con reti neurali 6.6.2 Normalizzazione dei campioni Per il corretto utilizzo delle reti neurali `e necessario normalizzare i campioni d’uscita. Considerando i risultati dell’articolo [42] `e stato deciso di utilizzare nei livelli inter- medi e d’uscita la funzione tangente iperbolica sigmoidale(fig. 6.6). Per poter usare tale funzione `e necessario necessario normalizzare i valori d’uscita all’interno dell’in- tervallo [-1,1]. Per velocizzare l’apprendimento della rete, e per omogeneizzare le dimensioni dei campioni, anche i valori di ingresso sono stati normalizzati all’interno lo stesso intervallo. Per l’individuazione dei valori minimi e massimi da usare per la normalizzazione `e stata seguita la seconda proposta dell’articolo [43], che consiste nell’individuazione dei minimi e dei massimi sull’insieme di training. Per poter eseguire una normalizzazione lineare con range [0,1] la formula da applicare `e: xnorm1 = (x − xmin) (xmax − xmin) (6.11) Per ottenere l’intervallo [-1,+1] `e sufficiente scalare la precedente equazione: xnorm2 = (2xnorm1) − 1 (6.12) 6.6.3 Addestramento della rete neurale Per realizzare le reti neurali necessarie si `e scelto di far uso di una libreria che possa implementare le reti neurali; in particolare la libreria deve poter realizzare reti multi-livello e far uso dell’algoritmo di back-propagation. Tale scelta `e ricaduta sulla libreria FANN [50] (Fast Artificial Neural Network Library). Questa libreria `e disponibile per vari linguaggi di programmazione, tra cui il C++, utilizzato per il lavoro di questa tesi. La libreria `e progettata con l’obiettivo di essere veloce, versatile e semplice da utilizzare. Essa `e stata sviluppata per poter essere eseguita su dispositivi senza elevata capacit`a computazionale e pu`o essere eseguita anche su dispositivi senza un processore per il calcolo in virgola mobile. L’autore ha scritto tale libreria in quanto aveva bisogno di una rete neurale in grado di poter essere eseguita su un palmare IPAQ non dotato di FPU. Spesso, valutare le prestazioni di una rete neurale basandosi solamente su risultati numerici non `e molto agevole, per questo sono stati utilizzati dei tool grafici in modo da comprendere e valutare meglio il comportamento delle reti provate. In particolare sono stati utilizzati: • FannTool [51]: strumento che include funzioni automatizzate per la ricerca dei migliori parametri della rete neurale. In particolare, `e possibile provare tutte le tecniche di apprendimento e le funzioni di attivazione fornite dalla libreria
  • 65. 6.6 Metodologia 51 FANN. Al termine dell’analisi vengono forniti i parametri che permettono di minimizzare l’errore. • FannExplorer [52]: strumento che permette di eseguire una rappresentazione grafica dei dati relativi alla rete neurale. In particolare `e stato utilizzato per studiare l’andamento dell’errore durante l’addestramento della rete, e per otte- nere un confronto grafico tra i valori di output desiderati e quelli ottenuti dalla rete neurale. 6.6.4 Valutazione delle prestazioni Le prestazioni di una rete neurale vengono ottenute valutando l’errore quadratico medio (MSE, Mean squared error). Tale errore `e misurato dal confronto dei valori i cui risultati sono noti con i valori ottenuti in uscita della rete neurale. Solitamente, si considerano due valori di MSE, uno relativo ai campioni di training e uno per quelli di testing. Quando il pattern di training viene sottoposto numerose volte e quando il numero di neuroni nascosti `e sovra-abbondante si rischia di ottenere un addestramento “aggressivo” con la possibilit`a che la rete neurale manifesti l’effetto memoria, specializzandosi troppo sul pattern di addestramento. In questa situazione il comportamento della rete perde le capacit`a di generalizzazione, offrendo buoni risultati solo con i valori di testing. Il grafico in fig. 6.8 riporta un andamento tipico del comportamento delle reti all’aumentare delle epoche di apprendimento. La rete `e inizializzata con i pesi dei neuroni casuali e durante le prime iterazioni l’errore con entrambi gli insiemi `e molto elevato. La rete, all’aumentare delle itera- zioni, assimila la relazione tra gli ingressi e le uscite e quindi gli errori diminuiscono. Dopo alcuni cicli, in corrispondenza dell’errore minimo riferito ai campioni di testing, la rete ha un comportamento generalizzato. Superato tale valore si verifica il feno- meno di overfitting: la rete inizia a specializzarsi sui campioni di training, perdendo generalit`a. Il caso ideale prevede che l’addestramento della rete neurale venga inter- rotto quando l’errore di testing raggiunge il valore minimo. Non `e possibile sapere a priori quando la rete entra in una fase di overfitting, quindi `e necessario calcolare l’errore di volta in volta durante la fase di addestramento. 6.6.5 Risultati sperimentali Sono state provare varie tipologie di reti per valutare sotto quali condizioni si po- tevano ottenere risultati migliori. In particolare sono state eseguite le prove con l’obbiettivo di minimizzare lo scarto quadratico medio sui campioni di testing.
  • 66. 52 Cinematica inversa con reti neurali Figura 6.8 – Andamento tipico dell’errore durante la fase di training La libreria FANN include delle funzioni per calcolare lo scarto quadratico medio. Per rendere comparabili gli errori ottenibili con i valori normalizzati nell’intervallo [0,1] e [-1,1] lo scarto quadratico medio `e ottenuto in modo differente [53]. MSE[0,1] = N (outtest − outfann) N (6.13) MSE[−1,1] = N outtest−outfann 2 N = N (outtest − outfann) 4 · N (6.14) Dove N `e dato dal prodotto dei neuroni d’uscita per la dimensione dell’insieme di testing. La rete utilizzata ha 11 neuroni di ingresso, 12 neuroni d’uscita, 50 neuroni in- termedi, 1 livello nascosto, funzione di ingresso lineare e funzione di attivazione dei neuroni nascosti e dei neuroni d’uscita tangente iperbolica (Fann Sigmoid Simme- tric). Con il simulatore `e stato generato un percorso formato da 5000 campioni, con un periodo di campionamento pari ad un secondo. 4000 campioni sono stati utiliz- zati per l’addestramento della rete, mentre i restanti 1000 per valutare le prestazioni della rete. Partendo da una configurazione base formata da una rete con 11 neuroni di ingres- so, 12 neuroni d’uscita, 50 neuroni intermedi, 1 livello nascosto, funzione di ingresso lineare e funzione di attivazione dei neuroni nascosti e dei neuroni d’uscita tangente
  • 67. 6.6 Metodologia 53 Figura 6.9 – Andamento dell’errore della rete neurale, campionamento 1000[ms], 50 neuroni nascosti, 4000 epoche iperbolica (Fann Sigmoid Simmetric), sono state eseguite numerose simulazioni va- riando i parametri della rete, per valutare il loro grado di influenza alla ricerca della configurazione migliore. I risultati sono riportati nelle tabelle e grafici seguenti. Dalle prove `e emerso che le prestazioni della rete neurale utilizzata non sono molto sensibili al cambio dei parametri. In particolare `e emerso che bastano 1000 epoche per addestrare la rete e 20 neuroni nascosti; superati tali valori le prestazioni della rete si mantengono stabili sia con l’insieme di training che con quello di testing.
  • 68. 54 Cinematica inversa con reti neurali Tabella 6.1 – Confronto delle prestazioni al variare del numero di neuroni nascosti Intervallo Neuroni Epoche di MSE MSE ms nascosti addestramento training testing 1000 10 4000 0.0250 0.0271 1000 15 4000 0.0230 0.0251 1000 20 4000 0.0215 0.0241 1000 50 4000 0.0189 0.0227 1000 100 4000 0.0191 0.0230 1000 400 4000 0.0183 0.0231 Tabella 6.2 – Confronto delle prestazioni al variare delle epoche di addestramento Intervallo Neuroni Epoche di MSE MSE ms nascosti addestramento training testing 1000 20 4000 0.0215 0.0241 1000 20 8000 0.0218 0.0242 Tabella 6.3 – Confronto delle prestazioni al variare del tempo di campionamento Intervallo Neuroni Epoche di MSE MSE ms nascosti addestramento training testing 800 30 4000 0.0194 0.0218 1000 30 4000 0.0204 0.0230 1300 30 4000 0.0206 0.0230 1500 30 4000 0.0202 0.0241
  • 69. 6.6 Metodologia 55 Tabella 6.4 – Confronto delle prestazioni al variare del numero di neuroni di input ed output Valori di Valori di MSE MSE Input Output training testing 7 posxyz(3), quat(4) 6 posΘ(6) 0.0206 0.0282 8 posxyz(3), quat(4), 12 posΘ(6), velΘ(6) 0.0212 0.0249 vellin(1) 10 posxyz(3), quat(4), 12 posΘ(6), velΘ(6) 0.0194 0.0230 velxyz(3) 11 posxyz(3), quat(4), 12 posΘ(6), velΘ(6) 0.0193 0.0227 vellin, velxyz(3)
  • 70. 56 Cinematica inversa con reti neurali
  • 71. Capitolo 7 Realizzazione del manipolatore controllato dalla mano In questo capitolo vengono presentati i risultati della realizzazione finale, frutto del lavoro presentato nei capitoli precedenti. In particolare questo lavoro ha richiesto l’integrazione di tre strumenti differenti: • ambiente di simulazione OpenRAVE; • libreria di reti neurali FANN; • libreria di controllo del LeapMotion controller. Questo lavoro di integrazione `e stato realizzato nell’ambiente di sviluppo Net- beans ed `e stato realizzato utilizzando il linguaggio di programmazione C++. Il lavoro di integrazione non `e stato immediato: l’ultima versione di OpenRAVE `e disponibile per la sola distribuzione Ubuntu 12.04 (aprile 2012), quindi non molto aggiornata. `E stata tentata la ricompilazione di OpenRAVE in una distribuzione pi`u recente, ma senza successo. Tale condizione ha pregiudicato l’installazione delle librerie pi`u recenti del LeapMotion controller. Il frutto di questa integrazione ha permesso di ottenere un sistema con cui `e pos- sibile controllare la posizione dell’end-effector tramite i dati forniti dal LeapMotion controller. Il LeapMotion `e in grado di acquisire numerosi parametri, in particolare posizione ed orientamento del palmo della mano e di tutte le sue falangi. Inoltre, `e in grado di rilevare l’impugnatura di semplici oggetti come una penna. Dai numerosi parametri forniti dal LeapMotion vengono impiegati quelli relati- vi alle coordinate del palmo della mano per il controllo dell’end-effector e l’angolo compreso tra il pollice e l’indice per l’apertura e la chiusura del gripper. 57
  • 72. 58 Realizzazione del manipolatore controllato dalla mano Figura 7.1 – Vettori di orientamento di una mano rilevati da LeapMotion Figura 7.2 – Posizione ed orientamento delle dita rilevati da LeapMotion Figura 7.3 – Esempio di oggetto rilevato da LeapMotion
  • 73. 59 Tali coordinate sono composte dalle due terne Cartesiane di posizione (x, y, z) e di orientazione (yaw, pitch, roll). Per rendere tali dati compatibili con quelli utilizzati nell’ambiente OpenRAVE si sono rese necessarie delle conversioni: • inversione degli assi y e z; • conversione di dati da millimetri a metri; • conversione degli angoli di Tait–Bryan nel quaternione corrispondente. Dopo aver realizzato in sistema di conversione di coordinate `e stato possibi- le realizzare il sistema che permette all’end-effector del manipolatore di replicare i movimenti del palmo della mano. A questo punto quindi `e stato possibile integrare i dati forniti dal LeapMotion con il risolutore di cinematica inversa all’interno dell’ambiente OpenRAVE. Sono state provati due risolutori differenti: quello in forma chiusa IKFast integra- to in OpenRAVE e quelli ottenuti tramite le reti neurali implementate con la libreria FANN. Il programma realizzato funziona nel modo seguente: 1. il LeapMotion controller continuamente analizza le immagini fornite dai suoi sensori; 2. quando una mano viene rilevata, vengono estratte le coordinate del palmo; 3. vengono convertite tali coordinate nel sistema di riferimento OpenRAVE; 4. i dati vengono elaborati dal risolutore di cinematica inversa; 5. le nuove posizioni angolari vengono inviate ai servomotori. Con il manipolatore VE026A `e stato possibile utilizzare entrambi i risolutori, mentre con il manipolatore AX-18A `e stato possibile utilizzare solo il risolutore basato sulla rete neurale. Dalle prove eseguite con il manipolatore VE026A `e stato possibile confrontare i risultati dei due risolutori. Come prevedibile `e stato verificato che il calcolo della cinematica inversa `e risolta in un tempo minore da una rete neurale rispetto ad un metodo numerico. Utilizzando lo spesso computer, `e emerso che il calcolo richiesto della cinematica inversa dalla rete neurale `e sempre costante ed `e pari a 15 µs (fig. 7.4), mentre il calcolo tramite IKFast varia tra gli 80 e i 300 µs (fig. 7.5). Inoltre, `e stato osservato che, il tempo di calcolo impiegato da IKFast per ve- rificare la non esistenza di una soluzione `e mediamente inferiore al caso in cui la soluzione esiste e viene calcolata.
  • 74. 60 Realizzazione del manipolatore controllato dalla mano Figura 7.4 – Tempo di calcolo con la rete neurale per alcuni campioni, in rosso sono evidenziati i campioni per cui non esiste un risultato valido Figura 7.5 – Tempo di calcolo con IKFast per alcuni campioni, in rosso sono evidenziati i campioni per cui non esiste un risultato valido