101

Controllo di un braccio robotico mediante i movimenti della mano

  • Upload
    basix86

  • View
    247

  • Download
    2

Embed Size (px)

Citation preview

Università degli Studi di Trieste

Dipartimento di Ingegneria e ArchitetturaCorso di Laurea in Ingegneria Informatica

Tesi di Laurea in Sistemi operativi

DEGLI STUDI DI TRIESTEUNIVERSITÀ

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 robotche operano in ambienti aperti e che cooperano con gli esseri umani. Compiti diquesto tipo richiedono lo sviluppo di tecniche che aprano la possibilita d’impiego deirobot, non solo ai professionisti del settore, ma anche ad utenti inesperti, in modosemplice e sicuro, utilizzando interfacce intuitive e naturali.

Si e pensato di studiare e valutare la realizzazione di un sistema che permetta ilcontrollo di un braccio robotico, tramite la rilevazione e la riproduzione dei movimentidella mano.

Tale approccio si differenzia dai sistemi di controllo tradizionali, basati su tra-iettorie generate tramite un calcolatore e che potrebbero avere dei movimenti poconaturali, se confrontati con i movimenti umani.

La simulazione del movimento umano e l’ideale per un robot progettato persvolgere 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 diprecisione ed applicazioni ludiche.

Ad esempio la capacita di muovere un manipolatore mediante movimenti umaniapre la possibilita di realizzare robot antropomorfi con un miglior feedback, i cuimovimenti da riprodurre sarebbero ricavati direttamente da quelli del corpo umano.

Il lavoro di tesi verra svolto presso l’azienda ESTECO S.p.A, nella sede sita pressol’AREA SCIENCE PARK (Padriciano - TS) e sara integrato all’interno delle attivitadel 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 fasidel processo di progettazione basata sulla simulazione.

Questo studio rientra in uno dei rami di ricerca dell’azienda, in particolare quellodell’ottimizzazione dei parametri per il controllo e la taratura di sistemi hardwareche agiscono in tempo reale: Hardware In the Loop (HIL).

iii

Presso l’azienda sono stati messi a disposizione due manipolatori robotici ed undispositivo che permette di rilevare i movimenti della mano a distanza, il LeapMotionController [1].

Verra valutata la possibilita di utilizzare il LeapMotion per controllo dei mani-polatori robotici e sara effettuata una ricerca esaustiva per verificare l’esistenza dialtre tecnologie di rilevamento dei movimenti, piu adatte al progetto di tesi.

Allo stato attuale esistono progetti simili basati sul LeapMotion, ma si limitanoa rilevare i gesti della mano (gesture recognition), associando determinati movimentidella mano a delle operazioni che il manipolatore deve eseguire (ad esempio: “vaiavanti”, “vai indietro”, etc.), e non cercano di seguirne i movimenti compiuti in modonaturale.

Dalla letteratura e noto che il controllo dei bracci robotici presenti alcune cri-ticita, in particolare non e possibile far raggiungere al manipolatore una posizionespaziale 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 conversionedelle coordinate dallo spazio Cartesiano a quello dei giunti e risolta dalla cinemati-ca inversa. La cinematica inversa, tranne nei casi di manipolatori piu semplici (adesempio formati da soli tre giunti), e di complessa risoluzione e dipende strettamentedalla struttura del manipolatore.

Allo stato attuale, non esiste ancora una soluzione generalizzata del problemapriva di controindicazioni. Tale argomento e stato oggetto, negli ultimi anni, dinumerose trattazioni sulle riviste scientifiche internazionali. Verranno prese in esametali pubblicazioni, allo scopo di valutare quali approcci siano piu adatti a trovareuna soluzione al problema della cinematica inversa, nel contesto del controllo deimanipolatori tramite il LeapMotion Controller.

Il lavoro di tesi permettera di approfondire argomenti di interesse sulla robotica,che durante il corso di studi sono stati solamente accennati.

Il lavoro di tesi verra organizzato nel seguente modo seguente:

• studio teorico delle problematiche di controllo dei manipolatori e valutazionedello 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, estudio del LeapMotion Controller;

• utilizzo di un simulatore per applicazioni robotiche e realizzazione dei relativimodelli dei manipolatori a disposizione;

• analisi del problema della cinematica inversa, e realizzazione di un risolutoreper i manipolatori a disposizione;

iv

• realizzazione del sistema di controllo per bracci robotici basati sul LeapMotionController.

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 questopercorso 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, papa Carlo emio fratello Alessio che mi hanno permesso di coltivare la mia passione.

Un ringraziamento ai miei compagni di studi, in particolare Raffaele per avermisupportato 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 stradanegli ultimi anni. Ognuna di loro mi ha lasciato qualcosa, anche senza saperlo.

Infine, ultimo, ma non per importanza, il ringraziamento di cuore va a Caterinache 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 52.1 I tipi di giunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Cinematica diretta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Cinematica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 I manipolatori a disposizione 173.1 Denso Robotics VE026A . . . . . . . . . . . . . . . . . . . . . . . . . 183.2 CrustCrawler AX-18A Smart Robotic Arm . . . . . . . . . . . . . . . 19

4 Rilevamento dei movimenti della mano 234.1 Tecnologie disponibili . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 Leap Motion Controller . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5 Ambiente di simulazione 295.1 OpenRAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6 Cinematica inversa con reti neurali 356.1 Rete neurale biologica . . . . . . . . . . . . . . . . . . . . . . . . . . 356.2 Rete neurale artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.2.1 Modello di un neurone artificiale . . . . . . . . . . . . . . . . . 376.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 inversabasate sulle reti neurali . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6.5 Rete neurale proposta . . . . . . . . . . . . . . . . . . . . . . . . . . 476.6 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6.6.1 Generazione dei campioni . . . . . . . . . . . . . . . . . . . . 496.6.2 Normalizzazione dei campioni . . . . . . . . . . . . . . . . . . 506.6.3 Addestramento della rete neurale . . . . . . . . . . . . . . . . 506.6.4 Valutazione delle prestazioni . . . . . . . . . . . . . . . . . . . 516.6.5 Risultati sperimentali . . . . . . . . . . . . . . . . . . . . . . . 51

7 Realizzazione del manipolatore controllato dalla mano 57

8 Conclusioni 638.1 Lavoro svolto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.2 Analisi dei risultati e sviluppi futuri . . . . . . . . . . . . . . . . . . . 65

A Appendice: sistema di controllo Denso VE026A 67A.1 Sistema di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68A.2 Servomotori Futaba RS303MR . . . . . . . . . . . . . . . . . . . . . . 68A.3 Collegamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70A.4 Parte software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

A.4.1 Ambiente di sviluppo . . . . . . . . . . . . . . . . . . . . . . . 73A.4.2 Programmi realizzati . . . . . . . . . . . . . . . . . . . . . . . 73

B Appendice: sistema di controllo CrustCrawler AX-18A 77B.1 Servomotori Robotis Dynamixel AX-18A . . . . . . . . . . . . . . . . 77B.2 Sistema di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78B.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 . . . . . . 21.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 liberta . . . . 62.2 Angoli di Tait–Bryan . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Giunto prismatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.4 Giunto rotoidale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Parametri di Denavit-Heartenberg . . . . . . . . . . . . . . . . . . . . 92.6 Esempio di un polso sferico . . . . . . . . . . . . . . . . . . . . . . . 14

3.1 Foto del braccio robot Denso Robotics VE026A . . . . . . . . . . . . 183.2 Dimensioni Denso Robotics VE026A - (valori in cm) . . . . . . . . . 203.3 Foto del braccio robot CrustCrawler AX-18A Smart Robotic Arm - 4

DOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4 Dimensioni CrustCrawler AX-18A Smart Robotic Arm - 6 DOF (valori

in cm) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1 Nintendo PowerGlove . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2 Sensori presenti nel Kinect . . . . . . . . . . . . . . . . . . . . . . . . 254.3 Nodi individuabili dal Kinect . . . . . . . . . . . . . . . . . . . . . . 254.4 Controller LeapMotion . . . . . . . . . . . . . . . . . . . . . . . . . . 264.5 Nodi individuabili dal LeapMotion . . . . . . . . . . . . . . . . . . . 264.6 Area visibile dal controller LeapMotion . . . . . . . . . . . . . . . . 27

5.1 Modello VE026A di HiveGround . . . . . . . . . . . . . . . . . . . . . 315.2 Modello CrustCrawler contenuto in OpenRAVE . . . . . . . . . . . . 325.3 Modello VE026A con XML proprietario . . . . . . . . . . . . . . . . . 335.4 Modello CrustCrawler in configurazione 6 DOF con XML proprietario 34

6.1 Flusso informazionale in una rete neurale biologica . . . . . . . . . . 366.2 Il neurone artificiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

xi

6.3 Esempi di funzioni di attivazione per un neurone artificiale . . . . . . 386.4 Rete neurale artificiale multi-livello . . . . . . . . . . . . . . . . . . . 396.5 Curva sigmoidale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.6 Tangente iperbolica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.7 Esempio di gimbal-lock . . . . . . . . . . . . . . . . . . . . . . . . . . 486.8 Andamento tipico dell’errore durante la fase di training . . . . . . . . 526.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 . . . . . 587.2 Posizione ed orientamento delle dita rilevati da LeapMotion . . . . . 587.3 Esempio di oggetto rilevato da LeapMotion . . . . . . . . . . . . . . . 587.4 Tempo di calcolo con la rete neurale per alcuni campioni, in rosso sono

evidenziati i campioni per cui non esiste un risultato valido . . . . . . 607.5 Tempo di calcolo con IKFast per alcuni campioni, in rosso sono evi-

denziati i campioni per cui non esiste un risultato valido . . . . . . . 607.6 Errore della rete neurale in caso di non esistenza della soluzione . . . 61

A.1 Arduino UNO, scheda di prototipazione . . . . . . . . . . . . . . . . 69A.2 Spaccato di un servomotore Futaba (RS405CB) . . . . . . . . . . . . 69A.3 Schema dei collegamenti dei servomotori del braccio robot VE026A . 71A.4 Foto del collegamento dell’interfaccia di controllo . . . . . . . . . . . 71A.5 Interfaccia di controllo dei servomotori Futaba VE026A . . . . . . . . 75

B.1 Collegamento in cascata dei servomotori Dynamixel AX-18A . . . . . 79B.2 Dyanamixel2USB, interfaccia di controllo dei servomotori Dynamixel 79B.3 Dynamixel Wizard, tool di controllo dei servomotori Dynamixel . . . 80B.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 robotuniversali 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 servitoricreati mediante procedimenti chimico/biologici, dei lavoratori perfetti privi di sen-timenti, creativita e capacita di sentire il dolore. L’etimologia della parola robot eda ricondursi al ceco robota, che significa lavoro pesante e che veniva utilizzato perindicare i lavori della schiavitu.

Isaac Asimov, che nei suoi scritti propose le Leggi della Robotica [2], codificale norme etico/comportamentali che un qualsiasi robot deve rispettare. Tali Leggi,piuttosto che identificare compiti specifici che un robot deve assolvere, si limitanoa definire il ruolo che essi possono assumere all’interno della societa, vincolandonela propria autonomia di comportamento, rispettivamente alla sicurezza dell’uomo edell’umanita, quindi alla sua manifestazione di volonta.

• Prima legge: “Un robot non puo recare danno a un essere umano, ne puopermettere che, a causa del proprio mancato intervento, un essere umano ricevadanno”.

• Seconda legge: “Un robot deve obbedire agli ordini impartiti dagli esseri umani,purche tali ordini non contravvengano alla Prima Legge”.

• Terza legge: “Un robot deve proteggere la propria esistenza, purche questaautodifesa non contrasti con la Prima e la Seconda Legge”.

E tra la fine degli anni Cinquanta e gli inizi degli anni Sessanta che inizia lastoria dei robot: questo termine abbandona un’accezione letteraria e fantascientificaper assumerne una tecnica ed industriale. Il primo robot industriale fu installatonel 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 edinsalubre lavoro. Di lı a poco, i bracci robotici vennero largamente utilizzati nelcampo industriale per lavori di saldatura, verniciatura, montaggio, trasporto, etc.

Oggi, i robot industriali rappresentano un punto chiave dell’automazione e sonoil risultato dell’integrazione di varie tecnologie scientifiche: meccanica, sistemi dicontrollo, elettronica, etc. [3]. Piu di 1,3 milioni di robot industriali operano nellefabbriche di tutto il mondo con lo scopo di:

• migliorare la qualita del lavoro per i dipendenti;

• aumentare la capacita produttiva;

• incrementare la qualita e la consistenza del prodotto;

• rendere piu 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 continuoaumento, e i principali campi di utilizzo sono quelli della produzione automobilisticae 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 programmedmotions for the performance of a variety of tasks.

Un manipolatore riprogrammabile, multifunzionale, progettato per spo-stare materiali, oggetti, utensili, o particolari accessori attraverso diversimovimenti programmati per l’esecuzione di vari compiti.

(1979, Robotics Institute of America)

An automatically controlled, reprogrammable, multipurpose manipulatorprogrammable in three or more axes, which may be either fixed in placeor mobile for use in industrial automation applications.

Un manipolatore a controllo automatico, riprogrammabile, multifunzio-nale programmabile su tre o piu assi, che puo 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 macchineindustriali. 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 perriprogrammare un percorso predefinito e non possiedono alcuna conoscenza di baseo intelligenza. Ad esempio, un mulino riproduce alcune azioni meccaniche in modoripetitivo, ma senza avere la possibilita di modificarle. Al contrario, un robot devepoter essere messo in condizione di adattare le proprie azioni a richieste che possonomutare nel tempo.

Capitolo 2

Problematiche di controllo

Fra i robot piu utilizzati nell’industria vi e il braccio robotico, o manipolatore mec-canico, costruito a imitazione del braccio umano, ma spesso dotato di piu gradi diliberta.

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 connessoal piu ad altri due link, in modo da evitare la formazione di catene chiuse. Il primogiunto e connesso alla base, che e solitamente fissata rigidamente all’ambiente dilavoro, mentre l’ultimo giunto, all’estremita della catena, e connesso ad un organoterminale (end-effector).

Il numero dei gradi di liberta di un manipolatore (DOF, degrees of freedom) eil numero di variabili indipendenti necessarie per determinare univocamente la suaposizione nello spazio. Nei manipolatori ogni coppia giunto-link rappresenta un gradodi liberta. In uno spazio tridimensionale, per poter ottenere qualunque posizione eorientazione, sono necessari dei bracci ad almeno sei gradi di liberta. Se la posizionedesiderata e all’interno dell’area di lavoro, allora l’esistenza di almeno una soluzionee garantita [5]. Se il numero di gradi di liberta e maggiore rispetto al numero dellevariabili necessarie alla caratterizzazione di un determinato compito, ci troviamoin una situazione di ridondanza cinematica [6]. La ridondanza permette di poterscegliere tra piu configurazioni dei giunti equivalenti, ma di contro introduce unamaggiore complessita di calcolo e di controllo.

I robot sono azionati mediante attuatori posti tipicamente in corrispondenza dialcuni 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 svariatitipi di sensori: quelli che permettono di conoscere la posizione e la velocita 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 liberta

Il controllo del braccio robotico viene eseguito nello spazio dei giunti, mentre imovimenti sono specificati nello spazio Cartesiano. Nello spazio Cartesiano vengonospecificati posizione spaziale ed orientamento dell’end-effector. La posizione spazialee riferita ad un sistema di coordinate fissate sulla base del braccio (x, y, z), mentrel’orientamento e definito dagli angoli di rollio, beccheggio e imbardata (roll, pitch,yaw), chiamati angoli di Tait–Bryan. Tali angoli identificano la rotazione lungo gliassi di riferimento (fig. 2.2).

Nei sistemi di controllo dei manipolatori la conversione tra i due sistemi diriferimento e di primaria importanza.

2.1 I tipi di giunti

I giunti che collegano bracci rigidi, con un solo grado di liberta, possono essere divisiin due categorie:

• giunti prismatici;

• giunti rotoidali.

I giunti prismatici (fig. 2.3) permettono ad una coppia di bracci di effettuare unatraslazione lungo un asse, mentre i secondi (fig. 2.4) permettono ad una coppia dibracci 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 dovutaal fatto che nei bracci utilizzati e presente solo questo tipo di giunto. Nel seguito,salvo diversamente specificato, si fara riferimento unicamente ai giunti rotoidali.

2.2 Cinematica diretta

Lo stato di un manipolatore con n gradi di liberta e rappresentato dal vettore:

Θ(θ1, ..., θn) (2.1)

dove θi indica la posizione angolare dell’i-esimo giunto. I giunti vengono numeratida 1 a n, partendo dalla base ed arrivando all’organo terminale.

Per posizionare un corpo rigido nello spazio e necessario e sufficiente specificaresei coordinate, tre per la posizione e tre per l’orientamento. Quindi, un corpo rigidonello spazio possiede sei gradi di liberta.

Chi usa un manipolatore ha come obiettivo quello di poter controllare l’end-effector, definendo la posizione e l’orientamento. La posizione e l’orientamentodell’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 quandosiano 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 solitamenterisolta con il metodo di Denavit-Hartenberg [7]. Tale metodo utilizza matrici dirototraslazione ed, attraverso trasformazioni sequenziali, permette di esprimere laposizione dell’end-effector rispetto al sistema di riferimento della base, a cui e fissatoil braccio.

Per definire tali trasformazioni, come indicato in [8], si considerano due giunticonsecutivi 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 agliassi zi−1×zi1. Si indica, po, conO′i l’intersezione della normale comune, ricavataprecedentemente, 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 manodestra).

In generale la scelta della terna, secondo questa convenzione, e univoca tranneche 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 puo 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;

1La normale comune tra due rette sghembe e la retta a cui appartiene il segmento di minimadistanza tra le rette

2.2 Cinematica diretta 9

Figura 2.5 – Parametri di Denavit-Heartenberg

10 Problematiche di controllo

• con riferimento all’ultima terna, poiche non esiste il giunto n+ 1, l’asse zn nonpuo essere determinato, mentre xn deve essere normale all’asse zn−1; Poichegeneralmente 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, perche e impossibile stabilire la normale comune, in tal caso si pone xiin 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 prodottovettoriale zi−1 × zi;

• quando il giunto i e prismatico solo la direzione dell’asse zi−1 e determinata.

In tutti questi casi l’indeterminazione puo essere sfruttata per semplificare laprocedura ricercando, ad esempio, condizioni d’allineamento tra assi delle terneconsecutive.

I quattro parametri in grado di descrivere la trasformazione tra i giunti i− 1 e isono definiti come segue:

ai distanza tra le origini Oi ed O′i (lunghezza del braccio);

di coordinata di O′i sull’asse zi−1 (offset);

αi angolo intorno all’asse xi tra l’asse zi−1 e l’asse zi, valutato positivo in sensoantiorario (torsione del link);

θi angolo intorno all’asse zi−1 tra l’asse xx−1 e l’asse xi, valutato positivo in sensoantiorario.

Dei quattro parametri, due (ai e αi) sono sempre costanti e dipendono soltantodalla geometria di connessione della coppia dei giunti. Degli altri due (di e θi) unosoltanto e variabile in dipendenza del tipo di giunto (prismatico o rotoidale) utilizzatoper connettere il braccio i− 1 al braccio i. A questo punto si e in grado di esprimerela trasformazione di coordinate che lega la terna i alla terna i− 1.

La matrice di trasformazione e definita come una serie di due rototraslazioniconsecutive:

1. traslare lungo l’asse zi di una lunghezza pari a di in modo da far coincidere ledue origini Oi−1 ed O′i;

2. ruotare intorno all’asse zi−1 di un angolo θi per allineare l’asse xi con il segmentoai;

2.2 Cinematica diretta 11

3. traslare lungo l’asse xi di una lunghezza pari ad ai in modo da far coinciderele due origini Oi−1 ed Oi;

4. ruotare intorno all’asse xi di un angolo pari ad αi in modo da fare coinciderele terne zi e zi−1

Quindi la matrice di trasformazione viene ottenuta con la sequenza delle seguentitrasformazioni:

Ai−1i = Transzi−1

(di) · Rotzi−1(θi) · Transxi

(ai) · Rotxi(αi) (2.4)

Ai−1i =

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 posizionedell’end-effector nel sistema di coordinate della base.

A0n(Θ) =

n∏i=1

Ai−1i (θ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 computergrafica 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 seguentitrasformazioni:

12 Problematiche di controllo

pitch = Atan2

(−r31,

√r2

11 + r221

)(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 vieneaffrontata anche nell’animazione grafica per il controllo di strutture articolate [9] edinoltre nello studio della conformazione delle catene molecolari [10].

La risoluzione della cinematica inversa e un problema molto piu complesso ri-spetto a quello della cinematica diretta e non esiste alcuna tecnica di tipo generaleche, 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:

A1n(θ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, ..., θnche soddisfino l’equazione.

Il sistema e formato da dodici equazioni trascendentali non lineari con n variabiliincognite (con n pari al numero di giunti) che possono essere scritte nella formaseguente:

A1n(θ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 velocita e di particolare importanza per le applicazioni robotiche in temporeale. Il secondo vantaggio e dato dalla possibilita di trovare tutte le soluzioni,ottenendo una maggior flessibilita rispetto alle tecniche che convergono ad una solasoluzione.

Purtroppo non e possibile risolvere la cinematica inversa in forma chiusa pertutti i tipi di struttura di bracci robotici [18]. Solitamente, i bracci robotici vengonoprogettati in modo da soddisfare determinate condizioni che garantiscano l’esistenzadi una soluzione in forma chiusa [19].

I metodi algebrici identificano le equazioni contenenti le posizioni dei giunti e lemanipolano per giungere ad una soluzione [12]. La strategia di tali metodi e quelladi cercare di ridurre le equazioni in modo che esse dipendano da un’unica variabile.

I metodi geometrici prendono in considerazione la struttura del manipolatoreper semplificare il problema, dividendo il problema della cinematica inversa in duesotto-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 liberta 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 numericie 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 piu piccoloinsieme di equazioni. Ad esempio, riducono il problema della cinematica inversa perun manipolatore a sei gradi di liberta in un polinomio di grado sedici per trovaretutte le possibili soluzioni [16].

I metodi di omotopia continua cercano una soluzione per tracciare il percorsoda un punto di partenza in cui la soluzione e nota verso la destinazione in cui lasoluzione 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 solasoluzione basata da una stima iniziale, la qualita della stima ha un notevole impattosul tempo di calcolo. Spesso tali metodi sono basati sul metodo di Newton-Raphsondetto anche metodo delle tangenti. Il metodo di Newton-Raphson, e uno dei metodiper 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 particolaremanipolatore, i metodi tradizionali richiedono una elevata complessita di calcolodovuta all’articolata struttura del manipolatore.

Per superare le difficolta dei metodi tradizionali, sono stati presi in considerazionedei metodi alternativi. In particolare e stato argomento di ricerca la possibilitad’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 diesempio. 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 manipolatorirobotici:

• 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 servead afferrare gli oggetti in modo simile a quanto avviene con la mano.Tali manipolatori sono dotati di servomotori con micro-controllore integrato: ognimotore viene pilotato tramite un bus seriale con cui e possibile impostare la velo-cita massima di rotazione del motore e la posizione desiderata. Inoltre nel micro-controllore sono presenti numerosi sensori da cui e possibile ottenere utili informazioniper il controllo del manipolatore, ad esempio coppia, posizione e velocita istantanea.La presenza di tali controller integrati nei motori, ha permesso di ridurre al minimol’utilizzo di hardware aggiuntivo per il controllo del manipolatore ed ha reso possibilel’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 consegnale PWM) ed altre linee supplementari per i sensori.

Per poter interagire con l’elettronica dei servomotori e necessario utilizzare ilcorretto protocollo di comunicazione. Tale protocollo non e standardizzato e variada modello a modello, infatti, per controllare i due manipolatori, e stato necessariol’impiego di due sistemi di controllo differenti.Si e resa necessaria anche una conversione elettrica dei segnali: i servomotori adisposizione utilizzano un bus half-duplex con segnali di tipo TTL, mentre le porteRS-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 progettazionee 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 alloscopo 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 liberta ed un un gripper. Per questomanipolatore non e disponibile la documentazione originale e i dati tecnici sono statiestratti da un catalogo [20]. Il manipolatore e destinato al solo mercato giapponeseed in rete si trovano documenti scritti prevalentemente in lingua giapponese; taliriferimenti si sono rivelati di scarsa utilita.

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 necessariostudiare il funzionamento dei servomotori e realizzare un sistema di controllo. Perapprofondimenti si veda l’appendice a pagina 67.Analizzando la struttura del manipolatore si puo notare che gli assi degli ultimi tregiunti si intersecano in un punto. Tale configurazione prende il nome di polso sferico(spherical wrist). Come gia visto a pagina 13, tale condizione assicura l’esistenza diuna soluzione in forma chiusa.La presenza del polso sferico in un manipolatore a sei gradi di liberta permette didividere il problema della cinematica inversa in due sotto-problemi a tre gradi diliberta: 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 dipiccole 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 - 4DOF

3.2 CrustCrawler AX-18A Smart Robotic Arm 21

Figura 3.4 – Dimensioni CrustCrawler AX-18A Smart Robotic Arm - 6 DOF (valoriin cm)

AX-18A Smart Robotic Arm e un manipolatore dotato, nella versione base, di quat-tro gradi di liberta piu un gripper. Tale manipolatore condivide la struttura conil CrustCrawler AX-12A, e si differenzia solo per il tipo di motori utilizzati, menopotenti 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, basecon ruote per trasformare il manipolatore in un robot mobile, sensori di pressione ead ultrasuoni ed infine kit per aumentare i gradi di liberta. Durante il lavoro di tesisono stati utilizzati due kit di espansione, che hanno permesso di estendere le capa-cita del braccio fino a sei gradi di liberta. Sfortunatamente, la struttura di questomanipolatore non soddisfa le condizioni di esistenza di una soluzione chiusa viste apagina 13, quindi non e garantita l’esistenza di una soluzione in forma chiusa per lacinematica inversa:

• in nessuna delle tre configurazioni (4, 5 e 6 DOF) e possibile ottenere tre giuntidi rotazione consecutivi che si intersecano in un punto;

• nella configurazione a sei gradi di liberta 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 RoboticArm

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 dellamano

Lo scopo di questa tesi e quello di realizzare un sistema che permetta di muovereun manipolare robotico seguendo i movimenti di una mano. A tal proposito e sta-to necessario studiare un sistema in grado di individuare posizione ed orientazionedella mano con una certa precisione. Nella successive sezioni vengono presentate letecnologie 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 dellamano utilizzando dispositivi di localizzazione magnetici ed inerziali. Il primodispositivo di questo tipo commercializzato e stato il DataGlove [22], un dispo-sitivo in grado di rilevare posizione e orientamento della mano, il movimento ela flessione delle dita ed il contatto con gli oggetti.Sono stati proposti anche dei sistemi per rilevare la posizione delle dita tramitefibre 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’interruzionedel fascio luminoso. Tale variazione permette di stimare la posa della mano.

• Laser scanner : sono degli strumenti che permettono di ottenere il modellotridimensionale di un oggetto inquadrato. Esistono numerosi tipi diversi dilaser scanner, ma quasi tutti si basano sulle seguenti tre tecnologie o sullacombinazione 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 distanzapredeterminata 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 distanzadell’oggetto.

– Misurazione di fase: un punto dell’oggetto da rilevare viene illuminatocon 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 ricostruiredigitalmente l’intero oggetto.

• Stereo camera: utilizzo combinato di due videocamere. Mediante l’analisi delledifferenze presenti nelle immagini e possibile stimare le distanze degli oggettiinquadrati.

• Controller di gesture: strumenti usati come estensione del corpo umano. Talicontroller devono essere impugnati e includono dei sensori che permettono dirilevare la posizione ed il movimento della mano. Solitamente utilizzano deisensori di distanza ad infrarossi affiancati da accelerometri e giroscopi.

Queste tecnologie, dato il loro particolare campo di utilizzo limitato ed ambientispecifici, hanno spesso un prezzo elevato. Nel campo ludico, per coinvolgere mag-giormente il giocatore, sono state proposte piu implementazioni di tali tecnologie.Cio 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 ingrado 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’utilizzodi accelerometri e sensori di distanza ad infrarossi, fornisce il posizionamento dellamano che impugna tale controller.

Nel 2010 Microsoft ha presentato il Kinect, un sistema in grado di rilevare imovimenti di un intero corpo umano, senza la necessita di indossare o impugnare al-cunche. Tale sistema combina diverse tecnologie: una videocamera RGB, un sensoredi profondita 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 tracciaredue corpi e di rilevare la presenza di sei corpi. La localizzazione e i movimenti diun corpo avvengono mediante l’individuazione di 20 nodi. Tali nodi sono connessiin modo da formare uno scheletro (Skeletal Tracking) come e possibile osservare infig. 4.3.

4.2 Leap Motion Controller 25

Figura 4.1 – Nintendo PowerGlove

Nel 2013 e stato presentato il LeapMotion Controller dall’omonima azienda, undispositivo che permette di interagire a distanza con il PC ed altri dispositivi (adesempio SmartTV) con il rilevamento remoto dei movimenti delle mani [1].

Nel 2014 e stato presentato il VR Developer Mount, un kit che permette diutilizzare il LeapMotion Controller in combinazione ad un visore stereoscopico direalta virtuale (Oculus Rift).

Tali tecnologie sono in continua evoluzione e potrebbero, in futuro, aprire nuoviscenari di sviluppo in applicazioni robotiche e non solo.

Figura 4.2 – Sensori presenti nelKinect

Figura 4.3 – Nodi individuabili dalKinect

4.2 Leap Motion Controller

Per questo progetto si e deciso di scegliere un sistema di rilevamento della manoin grado di funzionare senza la necessita di indossare alcun dispositivo particolare,

26 Rilevamento dei movimenti della mano

similmente a quanto avviene con il Kinect. La scelta e ricaduta sul LeapMotionController, gia 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 LeapMotion ha commercializzato l’omonimo controller.

Codesto dispositivo a differenza del Kinect non e in grado di riconoscere l’interocorpo, ma e specializzato al rilevamento della mano e delle dita. Kinect e pensatoper identificare i movimenti di un corpo all’interno di una stanza (range 3 m), mentreil LeapMotion e un sistema a corto raggio, pensato per poter essere posto su unascrivania e rilevare i movimenti di oggetti a breve distanza (range 60 cm). La minorearea di lavoro del LeapMotion controller permette di ottenere una migliore precisionenelle brevi distanze. Il LeapMotion Controller, e sembrata la scelta piu adatta alloscopo 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 dalLeapMotion

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 funzionamentoe limitato dalla luce emessa dai LED ad infrarossi. L’intensita della luce diminuisceall’aumentare della distanza e quindi e difficile rilevare gli oggetti oltre una certadistanza. La quantita di luce emessa dai LED e limitata alla corrente massimaconsentita 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 utilizzareun ambiente di simulazione: tale scelta ha permesso di eseguire diverse prove senzadover usare fisicamente il manipolatore reale. Questo modo di procedere ha ridotto itempi di sviluppo e ha preservato l’integrita del manipolatore, limitandone, l’utilizzoallo stretto necessario.

L’uso del simulatore ha inoltre permesso di evitare eventuali collisioni che, seavvenissero con il manipolatore reale, rischierebbero di danneggiarlo. Le collisioniposso avvenire con l’ambiente circostante, contro la base d’appoggio o con la stessastruttura del manipolatore.

Per poter simulare il funzionamento di un manipolatore e necessario essere inpossesso di un modello sufficientemente preciso del braccio da utilizzare, in modo darendere coerenti i dati simulati e quelli reali. In questo capitolo verra presentato ilsimulatore OpenRAVE ed una descrizione dei modelli impiegati.

5.1 OpenRAVE

La scelta sul simulatore e ricaduta su OpenRAVE [24], in quanto gia utilizzato daprecedenti prove all’interno dell’azienda. OpenRAVE e un ambiente per il test, losviluppo e la messa in funzione di algoritmi per la pianificazione dei movimenti diapplicazioni robotiche. Il target a cui si rivolge questo applicativo e quello dellarobotica industriale.

OpenRAVE e un software open-source scritto come risultato e continuazione dellatesi di laurea di Rosen Diankov [25]. Nonostante questo strumento sia abbastanzadiffuso, e poco supportato dalla comunita online, infatti in rete si trovano solo esempie documenti scritti dallo stesso Diankov. Questo particolare ha reso abbastanzaproblematico l’apprendimento dell’utilizzo di OpenRAVE, rallentando non poco losviluppo del progetto di tesi.

29

30 Ambiente di simulazione

E possibile interagire con OpenRAVE tramite un’interfaccia a riga di comandoPython, oppure tramite la programmazione in C++.

Il punto di forza di OpenRAVE e l’implementazione del risolutore di cinematicainversa chiamato IKFast: esso permette di calcolare le soluzioni del modello in formachiusa. La particolarita principale di questa soluzione e data dalla velocita di calcolo(6 microsecondi contro i 10 millisecondi di altri metodi numerici [25, p. 78]).

Come gia affrontato al capitolo 3, il VE026A soddisfa una condizione per cui egarantita l’esistenza di una soluzione in forma chiusa della cinematica inversa: gliassi di tre giunti consecutivi si intersecano in un unico punto.

Purtroppo, per il manipolatore AX-18A non e possibile ottenere una soluzione informa chiusa chiusa.

A conferma di cio il risolutore IKFast e stato testato con entrambi i manipola-tori. Nel caso del VE026A il funzionamento e stato regolare, mentre con l’AX-18Ail risolutore non e mai riuscito a funzionare correttamente, nonostante i numerositentativi di messa in opera, nelle varie configurazioni con 4, 5 e 6 gradi di liberta.

Si precisa che OpenRAVE include un risolutore della cinematica diretta che hafunzionato correttamente con tutti i modelli. Come si vedra nel successivo capitolo,tale risolutore e stato impiegato per la generazione dei campioni di addestramento diuna rete neurale. Tale rete neurale verra utilizzata per ottenere un diverso risolutoredella 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 enecessario avere un modello del braccio desiderato. La precisione del modello e diestrema importanza, in quanto un modello non corretto genererebbe delle incon-gruenze tra i valori del simulatore e quelli dell’ambiente reale. OpenRAVE supportamodelli 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 semplicita di utilizzo, e da preferire nelcaso venga creato il modello manualmente e non si abbia la necessita di importare/e-sportare il modello da/verso altri software [27]. Per il VE026A in rete e stata trovatala 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 modellonel 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 possiedonoun end-effector differente e, nel caso del CrustCrawler, non sono presenti i kit diaggiornamento per simulare il quinto ed il sesto grado di liberta. I file, dal punto divista grafico, sono molto accurati e descrivono graficamente il manipolatore puntoper punto. Tali file molto probabilmente sono stati generati mediante l’ausilio discanner tridimensionali. I file sono di notevoli dimensioni e, data la loro complessita,la modifica manuale di tali modelli risulta essere molto difficoltosa.

Pertanto si e optato per la realizzazione da zero dei modelli nel formato XMLproprietario.

Dopo aver realizzato i modelli, e stato scritto un programma in C++ per lagenerazione 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 complessita del controllo dei bracci robotici e stata presa in esamel’applicabilita delle reti neurali come tecnica risolutiva della cinematica inversa. Lereti neurali sono largamente accettate come una tecnologia in grado di offrire unavia alternativa per superare le difficolta di problemi complessi e mal posti. Le retineurali vengono istruite tramite esempi, sono in grado di funzionare in presenza dirumore o di dati incompleti, possono funzionare con problemi non lineari e, una voltaistruite, forniscono sempre una soluzione con un costo computazionale molto ridotto.

Le reti neurali artificiali sono nate per riprodurre attivita tipiche del cervello uma-no, come la percezione di immagini, il riconoscimento di forme, la comprensione dellinguaggio, il coordinamento senso-motorio, etc. Per una persona risolvere problemidi questo tipo e estremamente naturale, mentre non e banale la loro risoluzione perun calcolatore. Da questa osservazione risultano evidenti le enormi potenzialita diun computer in grado di imitare il funzionamento del cervello umano in situazionidi questo tipo. Per questo la struttura di una rete neurale artificiale riprende lastruttura 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 cuie connesso: l’operazione si ripete per ogni neurone e, nell’intervallo di pochi centesimidi 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 provengonodai dendriti, che sono dei prolungamenti ramificati a loro volta in contatto con altrineuroni. I molteplici dendriti di un neurone concorrono ad eccitare il corpo cellulareil quale, oltre un certo limite, “scarica” la sua attivazione lungo l’assone, andandoquindi ad interessare altri neuroni. Il punto di contatto fra due neuroni si chiamasinapsi e si manifesta mediante l’avvicinamento fra l’assone di un neurone con ildendrite di un altro neurone.

La sinapsi e una leggera intercapedine fra assone e dendrite in cui il segnaleproveniente dall’assone si trasmette, con un processo elettrochimico, verso il dendrite.Lo spessore di questa intercapedine puo variare nel tempo, provocando quindi unrafforzamento o un indebolimento della connessione fra due neuroni.

Il contenuto informativo del cervello umano e rappresentato dall’insieme dei valoridi attivazione di tutti i neuroni e l’elaborazione dell’informazione e rappresentata dalflusso di segnali fra i vari neuroni che si eccitano o inibiscono a vicenda (testo trattoda [33]).

6.2 Rete neurale artificiale

Una rete neurale artificiale (ANN, Artificial Neural Network), normalmente chiamatasolo “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 proprietafunzionali sono descritte da formule matematiche, senza tener conto dei fenomenielettrici, chimici, termici e biologici che avvengono nella realta.

La rete neurale artificiale e un sistema adattivo che cambia la sua struttura basatasu informazioni esterne o interne, che scorrono attraverso la rete durante la fase diapprendimento. Una rete neurale artificiale riceve segnali esterni su uno strato dinodi (unita di elaborazione) d’ingresso, ciascuno dei quali e collegato a numerosi nodiinterni, organizzati in piu livelli. Ogni nodo elabora i segnali ricevuti e trasmette ilrisultato 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 assolutodi un peso rappresenta la forza della connessione. L’uscita, cioe il segnale, con cuiil neurone trasmette la sua attivita all’esterno, e calcolata applicando la funzione diattivazione alla somma pesata degli ingressi. Indicando con a =

∑ni=1wixi 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) puoessere un numero reale o discreto appartenente ad un certo intervallo, solitamente[0,1] oppure [-1,1]. Le funzioni comunemente utilizzate sono le funzioni lineari, linearia 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 datid’ingresso e di individuare degli opportuni cluster rappresentativi dei dati stessi, fa-cendo uso tipicamente di metodi topologici o probabilistici. Vengono solitamenteutilizzate per la classificazione e per la compressione dei dati. Le reti di questo tipopiu utilizzate sono le reti di Kohonen. Esse rappresentano i dati in input su unamappa bidimensionale, in cui i campioni simili sono mappati vicini mentre i dissimilisono mappati distanti.

L’apprendimento supervisionato prevede di sottoporre alla rete degli esempi diaddestramento contenenti i valori di ingresso e le relative uscite, per far in modoche la rete possa imparare dai valori che le vengono proposti. Il compito della retee quello di fornire un’uscita per ogni valore degli ingressi; in altre parole, la reteneurale realizza una funzione F :

Y = F (X) (6.2)

La rete neurale con apprendimento supervisionato e quindi la tipologia di rete chemeglio si presta alla risoluzione della cinematica inversa. In particolare si renderanecessario addestrare una rete neurale in grado di computare l’equazione (2.13). Per-cio lo studio di questa tesi si e concentrato sullo studio delle reti con apprendimentosupervisionato.

Una rete neurale e formata da piu neuroni interconnessi. Alcuni neuroni ricevonosegnali dall’esterno e sono chiamati unita di input, analogamente i neuroni che forni-scono il loro output all’ambiente esterno sono le unita di output. I restanti neuroniappartenenti 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 indichiamocon X; analogamente indichiamo con Y l’insieme dei numeri che formano l’outputdella 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-livelloi neuroni sono organizzati in insiemi separati e disgiunti, in cui e presente un livellodi 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 possibiliulteriori collegamenti (fig. 6.4).

Il teorema di Hecht-Nielsen [34] afferma che una qualsiasi funzione Y = F (X)puo essere computata con elevata accuratezza da una rete neurale multi-livello conun solo livello intermedio.

Tale teorema riveste importanza piu teorica che pratica, infatti non indica quantedevono essere le unita, ne quali devono essere i pesi wi per ottenere una rete cheeffettivamente esegua una funzione F . Non vi e una soluzione generale a questoproblema, ma esistono delle tecniche che forniscono delle approssimazioni funzionantinella pratica come la back-propagation.

Il fatto che l’informazione venga elaborata in maniera distribuita da una molti-tudine di unita 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 significache la rete e in grado di funzionare anche in presenza di unita 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 oin quelle biologiche.

L’addestramento di una rete neurale puo avvenire senza doverle fornire tutti gliesempi possibili, ma soltanto un sottoinsieme significativo di essi. La capacita digeneralizzazione del rete neurale, permette di ottenere dei risultati per dei valori nonnoti 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’inpute l’output, chiamato insieme di addestramento (training set). L’algoritmo sottoponepiu volte il training set alla rete, aggiustando di volta in volta i pesi per minimizzarel’errore quadratico ottenuto dalla differenza dall’uscita desiderata e quella ottenutamediante l’utilizzo della rete. Ogni ciclo di apprendimento della rete neurale e detto“epoca” (epoch). Dopo aver ottenuto una sufficiente approssimazione della funzionedesiderata, termina la fase di addestramento e risultano determinati i pesi.

Successivamente si passa alla fase di testing, in cui viene utilizzato un secondoinsieme di valori di input ed output, chiamato insieme di testing, con cui si valutail grado di generalizzazione della rete. In altre parole, si valutano le prestazioni pervalori non noti durante l’addestramento.

Una rete neurale esegue una ottimizzazione di tipo off-line durante la fase ditraining e, durante la fase di testing vengono valutate le prestazioni di tale otti-mizzazione. Tali procedimenti possono richiedere molto tempo e dipendono dallastruttura topologica della rete, dall’algoritmo di allenamento, dalla grandezza deipattern, etc. Una rete addestrata e in grado di fornire un risultato in un tempomolto ridotto in quanto e gia stata eseguita una ottimizzazione a priori.

In una rete neurale multi-livello le funzioni di attivazione dei neuroni di ingressosono lineari, mentre quelle dei livelli intermedi e d’uscita sono di tipo sigmoidale. Lefunzioni sigmoidali (fig. 6.3) forniscono un valore d’uscita solo per valori appartenentiad un intervallo, solitamente [0, 1] o [−1, 1]. Quindi, i valori d’uscita della rete neuraledevono appartenere ad un determinato intervallo. Pertanto, per poter addestrarecorrettamente una rete neurale e necessario normalizzare i valori d’uscita degli insiemidi testing e di training. Siccome i neuroni di ingresso utilizzano una funzione diattivazione lineare, non e strettamente necessaria la normalizzazione dei valori diinput, comunque la normalizzazione di tali valori viene comunemente effettuata,rendendo omogenee le grandezze dei valori di input e di output, poiche tale approcciopermette di velocizzare l’apprendimento della rete.

E bene puntualizzare che le capacita 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 desideratabisogna [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 puo 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 ottenereautomaticamente i parametri adeguati, per poter trovare i valori ottimali di una reteneurale 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 mediantela 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 cinematicadiretta.

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 cinematicadiretta.

Bisogna porre attenzione al fatto che la cinematica diretta ammette sempre unasoluzione (salvo collisioni); data la configurazione dei giunti e possibile calcolareunivocamente le coordinate Cartesiane dell’end-effector. La cinematica inversa alcontrario puo ammettere piu di una soluzione, data la posizione dell’end-effectorpotrebbero esistere piu configurazioni dei giunti valide, oppure potrebbe non esisterealcuna configurazione valida.

Quando si usa un risolutore che fornisce solo una delle molteplici soluzioni dellacinematica inversa, ci si trova nella condizione in cui e molto difficile poter eseguiredelle traiettorie. Una traiettoria e formata da un insieme ordinato di coordinateCartesiane dell’end-effector. Per poter seguire in modo opportuno una traiettoriasarebbe 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 configurazionemolto differente da quella precedente.

Per la loro struttura le reti neurali permettono di ottenere solo una soluzione delproblema ed hanno difficolta a gestire problemi in cui sono possibili piu soluzioni.Se la rete viene addestrata con campioni contraddittori la rete non potrebbe indivi-duare piu soluzioni differenti, ma fornirebbe in uscita un valore intermedio, con laconseguenza di ottenere un valore errato.

Per cercare di ovviare al problema delle soluzioni multiple e possibile formularediversamente il problema, fornendo maggiori informazioni in modo che il problemaammetta un’unica soluzione.

Nel successivo paragrafo verranno presentati articoli scientifici che propongonol’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 piu articoli che trattano larisoluzione della cinematica inversa. Dal lavoro di ricerca e emerso che le reti neuralipossono essere utilizzate senza un’approfondita conoscenza del modello fisico/mate-matico del funzionamento del manipolatore. Inoltre le reti neurali permettono diottenere un risolutore generalizzato che non dipende strettamente dal tipo di mani-polatore utilizzato. Tutte le reti prese in considerazione sono state allenate facendouso dell’algoritmo di back-propagation e sue varianti, in quanto questo algoritmosembra essere il piu diffuso ed adeguato allo scopo.

Gli articoli [36] e [37] propongono l’utilizzo delle reti neurali come sistema per lasoluzione 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 consentonodi superare le difficolta derivanti dall’utilizzo dei metodi tradizionali, eseguendo unaottimizzazione che permette di ottenere un risultato in tempi molto brevi, adatti aimovimenti real-time.

Nell’articolo [38] viene proposta una rete neurale con un livello intermedio formatoda 100 neuroni per risolvere la cinematica inversa per un manipolatore planare a trelink. 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

1I valori indicati tra perentesi tonde indicano la quantita di neuroni di input/output associatialle variabili

6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa basate sulle retineurali 43

che viene eseguito un filtraggio dei dati di training, valori in contraddizione tra lorovengono eliminati. Questo permette di evitare che la rete neurale apprenda dueconfigurazioni 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 liberta. In particolaredallo studio si evince che i migliori risultati si ottengono quando la rete e strutturatacon:

• un solo un neurone d’uscita e due livelli intermedi;

• piu neuroni d’uscita ed un solo livello intermedio.

Nell’articolo [35] viene proposto un metodo alternativo per la risoluzione dellacinematica inversa. Per un manipolatore a sei gradi di liberta viene proposta unaparticolare rete neurale che tratta separatamente posizionamento (primi tre giunti)e orientazione (ultimi tre giunti) dell’end-effector. Tale approccio sembra essereispirato al metodo di decomposizione proposto da Pieper [13]. Dai risultati emergeche il risolutore riesce ad ottenere buoni risultati per il posizionamento, ma scarsirisultati per l’orientazione.

Nell’articolo [40] viene proposta una variante dell’algoritmo di back-propagationper la risoluzione della cinematica inversa di un manipolatore a tre gradi di liberta.Tale variante non richiede l’utilizzo di una fase di training, ma necessita una stimainiziale del risultato desiderato. Di volta in volta viene utilizzata la cinematica direttaper 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 eseguitauna ottimizzazione on-line.

Nell’articolo [41] vengono confrontati gli algoritmi di apprendimento di una reteutilizzata per la risoluzione della cinematica inversa di un manipolatore a sei gradi diliberta. In questo caso come input viene usata la posizione dell’end-effector (3) e comeoutput la configurazione angolare dei giunti (6). Tra gli algoritmi confrontati, quelloche ottiene un miglior risultato e quello chiamato Quick-Propagation. Tale metodorisulta essere notevolmente piu veloce rispetto ai modelli analitici generalizzati per imanipolatori che non hanno una semplice soluzione in forma chiusa. Inoltre rispettoagli altri algoritmi di apprendimento e quello che fornisce l’errore minore.

Nell’articolo [42] vengono confrontate varie strutture e funzioni di attivazione perla risoluzione della cinematica inversa in un manipolatore con sette gradi di liberta.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). Dairisultati si osserva che le migliori prestazioni si ottengono con una rete un livellointermedio, 40 neuroni nascosti e con funzioni di attivazione: la curva sigmoidale (inMatlab 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 deipattern da utilizzare con una rete neurale nella risoluzione della cinematica inversa.Vengono proposti tre metodi per individuare i valori minimi e i valori massimi, alloscopo di effettuare una opportuna normalizzazione:

1. Valutazione dei limiti strutturali del manipolatore. Ogni giunto possiede unrange minimo e massimo in cui puo muoversi, da tali dati e possibile ricavarel’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 sottoinsiemedell’area di lavoro.

3. Filtraggio dell’insieme di training dei valori che potrebbero generare soluzionicontraddittorie e successiva individuazione di minimi e massimi.

6.4 Stato dell’arte delle soluzioni al problema della cinematica inversa basate sulle retineurali 45

Nella pubblicazione [39] vengono provate diverse strutture di rete neurale per lasoluzione della cinematica inversa, da cui si evince che la rete neurale fornisce miglioririsultati:

• in presenza di output multipli, con un solo layer nascosto;

• il numero di neuroni nei livelli nascosti deve essere pari al numero di neuroniin input.

Anche se non riguarda in modo specifico il problema della cinematica inversae stato considerato l’articolo [44] che propone una tecnica per dimensionare unarete neurale con un solo livello nascosto. Tale metodo pone in relazione i neuroniappartenenti al layer nascosto con il numero di neuroni in input, il numero di neuroniin 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 avvienequando la rete neurale si specializza troppo sui campioni di training, perdendo lageneralita della risoluzione su campioni differenti.

L’articolo [45] propone un interessante approccio per migliorare le prestazioni diuna rete neurale la cui struttura sia gia stata collaudata. Partendo da una rete neu-rale esistente, mantenendo inalterati i parametri di input e output, vengono generatealtre reti neurali, con dei parametri leggermente differenti, ad esempio allenate conun diverso training-set, oppure con un numero di epoche differenti o un numero dineuroni intermedi differenti. Tutte le reti contemporaneamente vengono utilizzateper la risoluzione della cinematica inversa (committee machine approach). Mediantel’utilizzo della cinematica diretta, di volta in volta viene calcolato l’errore commessoda ciascuna rete e viene scelto il risultato con errore minore. L’utilizzo simultaneodi piu reti neurali e reso possibile dalle modeste capacita di calcolo richieste per ilcalcolo 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 dipiu di sei reti neurali.

46 Cinematica inversa con reti neurali

Nella pubblicazione [46] viene presentato un utilizzo alternativo della rete neuralenella soluzione della cinematica inversa per un manipolatore a sei gradi di liberta.La rete viene utilizzata per l’individuazione delle singolarita. La singolarita vienedefinita come:

A condition caused by the collinear alignment of two or more robot axesresulting in unpredictable robot motion and velocities.

Una condizione causata dall’allineamento collineare di due o piu assi delrobot con conseguente movimento e velocita 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 singolarita vengonoanalizzate 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 erroremaggiore si suppone la presenza di configurazioni singolari. Conoscere le singolaritapuo essere utile nella scelta di una adeguata traiettoria che eviti punti critici nel suopercorso.

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 liberta. Tali articoli si differenzianodagli altri perche, oltre a correlare le posizioni dell’end-effector con quelle dei giuntiprendono in considerazione anche le loro velocita (cinematica istantanea [11]). Le-gare le velocita angolari dei giunti con quelle dell’end-effector permette di superarele singolarita, evitando che piccoli movimenti nello spazio Cartesiano comportinoelevati movimenti nello spazio dei giunti.

Partendo dalla formulazione della cinematica diretta e calcolando la sua derivatasi ottengono:

XEE = f(θ) (6.7)

XEE = J(f(θ))θ (6.8)

in cui f rappresenta una funzione differenziabile non lineare. Invertendo taliequazioni 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 risoluzionedella cinematica inversa per un manipolatore a sei gradi di liberta. 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 invecevengono aggiunti: in input la velocita lineare dell’end-effector (4) ed in output levelocita angolari dei giunti (12). Dalle prove emerge che la seconda rete possiedemigliori capacita 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 velocita lineare desiderata (1).

• In output:

– posizione angolare dei giunti desiderata (6);

– velocita 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 capacita di superare le singolaritacon l’approccio della cinematica istantanea.

Prendendo in considerazioni gli articoli sopraccitati, sono state provate variestrutture di reti neurali che potessero essere utili alla risoluzione della cinematicainversa dei manipolatori a disposizione.

6.5 Rete neurale proposta

Riprendendo le considerazioni i risultati dell’articolo [48] e stata provata una retestrutturata nel seguente modo:

• In input:

– posizione spaziale dell’end-effector (3);

– orientazione dell’end-effector espressa dal quaternione (4);

– modulo della velocita spaziale dell’end-effector (1);

– velocita 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);

– velocita 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’aggiuntadelle singole velocita spaziali.

La scelta del quaternione e dovuta al fatto che il simulatore OpenRAVE perdeterminare l’orientamento di un corpo rigido non utilizza gli angoli di Tait–Bryanma il quaternione. Tale sistema e da considerarsi piu adatto allo scopo in quantopermette di superare il problema del blocco cardanico (gimbal-lock).

Utilizzando la rappresentazione di Tait–Bryan, il gimbal-lock si manifesta quandoviene a mancare una rappresentazione univoca dell’orientamento. Tale situazione siverifica quando viene eseguita una rotazione di 90° lungo un asse, rendendo coinci-denti i restanti assi, provocando la perdita di un grado di liberta. Nella fig. 6.7 epossibile 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 equivalenteeseguendo le rotazioni lungo l’angolo di pitch e poi di roll.

Figura 6.7 – Esempio di gimbal-lock

L’aggiunta delle velocita 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 funzionedi 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 piu 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 restanteper la fase di testing.

Nel caso in questione in cui si vuole implementare la cinematica inversa, talivalori sono ottenibili tramite la cinematica diretta. In ingresso saranno presenti lecoordinate spaziali dell’end-effector (posizione ed orientamento) ed in uscita sarannopresenti le posizioni angolari dei giunti.

Siccome la cinematica inversa puo ammettere piu di una soluzione e possibileaggiungere 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 configurazionedei giunti che soddisfi i limiti strutturali del manipolatore;

2. si verifica che tale configurazione non comporti delle collisioni, in tal caso siripete il passo precedente;

3. si genera una traiettoria per raggiungere la nuova configurazione, che rispettai vincoli di velocita massima dei giunti;

4. si esegue la traiettoria e ad intervalli regolari si si registrano posizione e velocitadei 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 letturadei parametri del manipolatore mentre esegue i movimenti. Un intervallo troppobreve porterebbe in una situazione si “sovraccampionamento”, mentre un intervallotroppo duraturo avrebbe l’effetto opposto. Nel seguito verra valutata l’influenza ditale 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 usaretale 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 ledimensioni dei campioni, anche i valori di ingresso sono stati normalizzati all’internolo stesso intervallo.

Per l’individuazione dei valori minimi e massimi da usare per la normalizzazionee stata seguita la seconda proposta dell’articolo [43], che consiste nell’individuazionedei minimi e dei massimi sull’insieme di training.

Per poter eseguire una normalizzazione lineare con range [0,1] la formula daapplicare 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 chepossa implementare le reti neurali; in particolare la libreria deve poter realizzare retimulti-livello e far uso dell’algoritmo di back-propagation. Tale scelta e ricaduta sullalibreria 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 essereveloce, versatile e semplice da utilizzare. Essa e stata sviluppata per poter essereeseguita su dispositivi senza elevata capacita computazionale e puo essere eseguitaanche su dispositivi senza un processore per il calcolo in virgola mobile. L’autoreha scritto tale libreria in quanto aveva bisogno di una rete neurale in grado di poteressere eseguita su un palmare IPAQ non dotato di FPU.

Spesso, valutare le prestazioni di una rete neurale basandosi solamente su risultatinumerici non e molto agevole, per questo sono stati utilizzati dei tool grafici in mododa comprendere e valutare meglio il comportamento delle reti provate. In particolaresono stati utilizzati:

• FannTool [51]: strumento che include funzioni automatizzate per la ricerca deimigliori parametri della rete neurale. In particolare, e possibile provare tuttele 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 diminimizzare l’errore.

• FannExplorer [52]: strumento che permette di eseguire una rappresentazionegrafica dei dati relativi alla rete neurale. In particolare e stato utilizzato perstudiare 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 dallarete neurale.

6.6.4 Valutazione delle prestazioni

Le prestazioni di una rete neurale vengono ottenute valutando l’errore quadraticomedio (MSE, Mean squared error). Tale errore e misurato dal confronto dei valori icui risultati sono noti con i valori ottenuti in uscita della rete neurale.

Solitamente, si considerano due valori di MSE, uno relativo ai campioni di traininge uno per quelli di testing. Quando il pattern di training viene sottoposto numerosevolte e quando il numero di neuroni nascosti e sovra-abbondante si rischia di ottenereun addestramento “aggressivo” con la possibilita che la rete neurale manifesti l’effettomemoria, specializzandosi troppo sul pattern di addestramento. In questa situazioneil comportamento della rete perde le capacita di generalizzazione, offrendo buonirisultati solo con i valori di testing.

Il grafico in fig. 6.8 riporta un andamento tipico del comportamento delle retiall’aumentare delle epoche di apprendimento.

La rete e inizializzata con i pesi dei neuroni casuali e durante le prime iterazionil’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, perdendogeneralita. 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 saperea priori quando la rete entra in una fase di overfitting, quindi e necessario calcolarel’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 conl’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 ditesting.

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 deineuroni nascosti e dei neuroni d’uscita tangente iperbolica (Fann Sigmoid Simme-tric). Con il simulatore e stato generato un percorso formato da 5000 campioni, conun 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 prestazionidella 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 ingressolineare 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], 50neuroni 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 dellaconfigurazione 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 epocheper addestrare la rete e 20 neuroni nascosti; superati tali valori le prestazioni dellarete 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 inputed 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 manipolatorecontrollato dalla mano

In questo capitolo vengono presentati i risultati della realizzazione finale, frutto dellavoro 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 OpenRAVEe disponibile per la sola distribuzione Ubuntu 12.04 (aprile 2012), quindi non moltoaggiornata. E stata tentata la ricompilazione di OpenRAVE in una distribuzionepiu recente, ma senza successo. Tale condizione ha pregiudicato l’installazione dellelibrerie piu 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 LeapMotioncontroller.

Il LeapMotion e in grado di acquisire numerosi parametri, in particolare posizioneed orientamento del palmo della mano e di tutte le sue falangi. Inoltre, e in gradodi 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’angolocompreso 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 quelliutilizzati 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 replicarei movimenti del palmo della mano.

A questo punto quindi e stato possibile integrare i dati forniti dal LeapMotioncon 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 libreriaFANN.

Il programma realizzato funziona nel modo seguente:

1. il LeapMotion controller continuamente analizza le immagini fornite dai suoisensori;

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 risolutorebasato sulla rete neurale.

Dalle prove eseguite con il manipolatore VE026A e stato possibile confrontare irisultati dei due risolutori.

Come prevedibile e stato verificato che il calcolo della cinematica inversa e risoltain un tempo minore da una rete neurale rispetto ad un metodo numerico. Utilizzandolo spesso computer, e emerso che il calcolo richiesto della cinematica inversa dallarete neurale e sempre costante ed e pari a 15 µs (fig. 7.4), mentre il calcolo tramiteIKFast 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 lasoluzione 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 sonoevidenziati i campioni per cui non esiste un risultato valido

Figura 7.5 – Tempo di calcolo con IKFast per alcuni campioni, in rosso sonoevidenziati i campioni per cui non esiste un risultato valido

61

Figura 7.6 – Errore della rete neurale in caso di non esistenza della soluzione

Dalle prove con l’impiego del LeapMotion controller, muovendo la mano all’in-terno dell’area raggiungibile del manipolatore e emerso che IKFast non riesce a tro-vare sempre una soluzione. Tale problema deriva dalle limitazioni strutturali delmanipolatore.

Diversamente la rete neurale, per come e strutturata non e in grado di distinguereil caso in cui esiste o meno una soluzione. In output quindi, la rete neurale forniscesempre un risultato. Ovviamente nel caso in cui non esiste un risultato valido talevalore e sicuramente errato, ma potrebbe essere relativamente vicino ad un risultatovalido.

Per risolvere, almeno parzialmente tale problema e possibile realizzare un filtro,che elimini i risultati il cui errore e superiore ad una determinata soglia. La rete neu-rale, date le coordinate Cartesiane dell’end-effector, computa la cinematica inversae fornisce le configurazioni dei giunti. Dalle configurazioni dei giunti cosı ottenute epossibile applicare la cinematica inversa per valutare lo scostamento dalle coordinateiniziali. Se lo scostamento supera un determinato valore di soglia si puo presupporrela non esistenza della soluzione.

Si consideri il grafico in fig. 7.6. Si ricorda che le reti neurali per loro natura nonforniscono un dato preciso, in quanto approssimano il comportamento della soluzionedesiderata e di conseguenza i risultati sono sempre affetti da qualche errore. Perottenere tale grafico sono stati acquisiti i movimenti della mano ed e stato utilizzatoil risolutore di cinematica inversa basato su rete neurale. Nel diagramma temporale,in blu e indicato lo scarto quadratico medio calcolato sulle posizioni delle coordinateCartesiane. In rosso e evidenziato l’attraversamento di una zona in cui non esisteuna soluzione corretta. In questo esempio si puo considerare come condizione di nonesistenza di una soluzione la presenza di un errore maggiore a 10 mm.

62 Realizzazione del manipolatore controllato dalla mano

Capitolo 8

Conclusioni

In questo capitolo vengono indicati i passi seguiti nello sviluppo del lavoro, ripercor-rendo le tappe principali e indicando i possibili sviluppi futuri.

8.1 Lavoro svolto

Sono state analizzate le pubblicazioni scientifiche riguardanti la risoluzione del pro-blema della cinematica inversa (cap 2). La ricerca teorica ha permesso di compren-dere le problematiche di controllo dei manipolatori robotici e di valutare le tecni-che esistenti per superare tali difficolta. La criticita del controllo dei manipolatorirobotici riguarda principalmente la risoluzione della cinematica inversa, mentre ilproblema della cinematica diretta e di semplice risoluzione (ad esempio con il me-todo di Denavit-Hartenberg). In particolare e stato ricercato un metodo risolutivogeneralizzato della cinematica inversa, utilizzabile con diversi tipi di manipolatori eche fornisse dei risultati in tempi brevi, adatto alle applicazioni in tempo reale.

Tra le varie proposte analizzate l’impiego delle reti neurali e sembrato esserequello piu promettente (cap 5).

Le reti neurali artificiali sono uno strumento matematico, il cui funzionamentoe ispirato a quello delle reti neurali biologiche le cui principali caratteristiche so-no l’elevata velocita di elaborazione e la capacita di imparare tramite esempi. Lavelocita di risposta le rende ideali per applicazioni di controllo in tempo reale e lapossibilita di imparare tramite esempi la rende adatte a superare le difficolta delcalcolo della cinematica inversa soprattutto quando una soluzione in forma chiusanon e disponibile. Per generare i campioni d’addestramento e possibile utilizzare lacinematica diretta, con la quale e sempre possibile generare un insieme di campioniche permettano di allenare la rete di controllo.

Dei due manipolatori a disposizione e stata analizzata la struttura ed e statostudiato il sistema elettronico di interfacciamento (cap. 4). In particolare, per uno

63

64 Conclusioni

dei due manipolatori (VE026) non era disponibile il sistema di comunicazione con ilPC ed e stato quindi necessario lo studio dei servomotori e del relativo protocollo dicomunicazione.

Sono stati inoltre scritti dei tool che permettono di interagire con i manipolatorie che riguardano in particolare: la gestione dei movimenti, la riconfigurazione deiparametri operativi ed il controllo dello lo stato dei sensori (app. 1,2). L’altro ma-nipolatore (AX-18A) e stato fornito come kit di montaggio pertanto si e provvedutoall’assemblaggio ed alla relativa messa a punto del sistema.

E stata inoltre effettuata una ricerca sui sistemi di rilevamento dei movimen-ti. Tale ricerca ha permesso di valutare le tecnologie piu adatte al controllo di unmanipolatore robot. Dalle ricerca e emerso che il LeapMotion controller puo essereadatto al progetto di tesi (cap 4). In particolare e emerso che il dispositivo forniscein modo continuo le coordinate Cartesiane e l’orientazione del palmo della mano, conun’elevata precisione spaziale (1 mm) ed un’adeguata frequenza di aggiornamento(oltre 100 frame per secondo).

Per poter testare i sistemi di controllo si e deciso di utilizzare un simulatore perapplicazioni robotiche all’interno del quale fosse possibile muovere un manipolato-re robotico; tale scelta ha semplificato il lavoro di sviluppo, preservando l’integritadel braccio robotico reale, ed ha permesso una piu agevole analisi dei i parametrioperativi. La scelta del simulatore e ricaduta su OpenRAVE, software gia utilizzatoprecedentemente in azienda: la complessita del software, la mancanza di una ade-guata documentazione ed esempi, ha reso molto complicata la comprensione di talestrumento ed ha rallentato in modo sensibile il lavoro di tesi.

Lo studio della letteratura e l’approfondimento iniziale di diversi temi hanno per-messo di ottenere un prototipo funzionante, il cui sistema di controllo e basato sureti neurali; in particolare l’utilizzo delle reti neurali, in combinazione con il simula-tore OpenRAVE ed il LeapMotion, e stato l’elemento essenziale che ha permesso direalizzare il sistema di controllo in tempo reale del manipolatore, basato sui movi-menti della mano dell’operatore. Lo stesso approccio e stato applicato sia al bracciorobotico VE026 della Denso Robotics, sia al AX-18A prodotto da Crust Crawler peril quale non e stato possibile ottenere, in modo semplice, una soluzione in formachiusa.

La soluzione in forma chiusa e nota solo per un ristretto numero di tipologie dimanipolatori. I risolutori basati su reti neurali si prestano ad essere utilizzati pertutte quelle strutture di manipolatori la cui soluzione in forma chiusa non e nota.Questo scenario apre la porta all’impiego di strutture alternative rispetto a quellecomunemente impiegate in ambito industriale.

La rete neurale e stata ottenuta mediante l’utilizzo della libreria FANN (FastArtificial Neural Network) [50]. FANN e un progetto open-source che permettedi implementare una rete multilivello. La scelta e ricaduta su questa libreria perla semplice implementazione, la documentazione completa di esempi e l’efficiente

8.2 Analisi dei risultati e sviluppi futuri 65

implementazione che garantisce buone prestazioni generali rispetto ad altre librerieper reti neurali.

8.2 Analisi dei risultati e sviluppi futuri

Allo stato attuale, il controllo del manipolatore non e molto preciso e si suppone checi possano essere ampi margini di miglioramento. Tali miglioramenti si potrebberoottenere tramite una messa a punto piu raffinata del sistema di controllo, provandorisolutori differenti per la cinematica inversa e mediante l’utilizzo di strumenti dirilevamento dei movimenti piu accurati.

Le ricerche scientifiche nel campo robotico e lo sviluppo tecnologico sono in conti-nuo fermento ed e probabile che le soluzioni adottate durante il lavoro di tesi possanoessere superate nel giro di pochi anni.

Saranno argomento di studio futuro la risoluzione della cinematica inversa me-diante approcci differenti, come ad esempio l’implementazione di algoritmi genetici.

Un ulteriore sviluppo potrebbe riguardare l’acquisizione di piu parametri dellamano (per ora limitati alle sole coordinate Cartesiane del palmo) in modo da ottenereun controllo piu preciso, ad esempio valutando le posizioni delle falangi.

Successivamente si potrebbe prendere in considerazione l’adozione di un diversosistema di rilevamento dei movimenti, ad esempio il DragonFly, evoluzione del Lea-pMotion controller (di cui e stata annunciata l’uscita) che promette una maggioreprecisione e una piu ampia area di lavoro.

66 Conclusioni

Appendice A

Appendice: sistema di controlloDenso VE026A

Come gia introdotto nella sezione 3.1 il robot Denso Robotics VE026A (fig. 3.1),e un manipolatore a sei gradi di liberta e come end-effector impiega un gripper(tabella 3.1). Per questo manipolatore non e disponibile il sistema di controllo equindi si e resa necessaria la sua realizzazione.

Il manipolatore e dotato di sette servomotori Futaba RS303MR (6 per i giuntied uno per il gripper). In rete e disponibile il manuale tecnico di questi motori [54]e grazie a questo documento e stato possibile progettare il sistema di controllo.

Gli RS303MR sono dei piccoli e leggeri servomotori pensati per l’utilizzo in ap-plicazioni robotiche ed integrano al loro interno un microcontrollore. Possono esse-re pilotati tramite sia con un segnale PWM, sia con dei comandi su bus seriale ebidirezionale mediante un protocollo proprietario.

L’utilizzo del segnale PWM potrebbe sembrare la scelta piu semplice in virtu dellanecessita di non dover implementare il protocollo, ma vanificherebbe la possibilita didialogare con il micro-controllore integrato.

All’interno del servomotore sono presenti dei sensori che permettono di monito-rare:

• posizione angolare dei giunti;

• velocita angolare dei giunti;

• temperatura interna del motore;

• tensione di alimentazione;

• assorbimento di corrente.

67

68 Appendice: sistema di controllo Denso VE026A

Tramite la comunicazione seriale e possibile monitorare tali valori, eseguire mo-vimenti e configurare alcuni parametri interni del servomotore.

Durante le prove e emerso che i motori tendono facilmente a surriscaldarsi sottosforzo. Per evitare di danneggiare i servomotori l’elettronica integrata in essi per-mette di monitorare la temperatura ed impostare una temperatura massima limite.Superata tale soglia il motore automaticamente si spegne, non fornendo piu la forzanecessaria. Pertanto, e importante monitorare le temperature durante le fasi d’eserci-zio, basta che un solo motore vada in protezione e conseguentemente non fornisca piula coppia necessaria al mantenimento della posizione per mettere a rischio l’integritadel manipolatore.

La realizzazione e avvenuta utilizzando la scheda di prototipazione Arduino UNO.Arduino UNO e una scheda elettronica di piccole dimensioni, che presenta un mi-crocontrollore e circuiteria di contorno, utile per creare rapidamente prototipi e perscopi hobbistici e didattici. La scelta e ricaduta su questa scheda per la semplicitadi utilizzo, il basso costo, e per le numerose documentazioni disponibili in rete.

A.1 Sistema di controllo

L’Arduino UNO (fig. A.1) possiede una sola porta USART che condivide con ilbus USB, necessaria alla comunicazione con il pc. Pertanto, per dialogare con iservomotori, e stato necessario ottenere una seconda porta seriale di tipo softwareconnessa ad un pin delle GPIO. Il bus seriale dei servomotori e di tipo half-duplexcon cavo singolo, a differenza delle porte seriali RS232, comunemente presenti nei PCche sono di tipo full-duplex. Per ottenere una porta seriale connessa ad una GPIOe necessario implementare il protocollo seriale via software(Soft Serial Port). A talescopo sono state provate varie librerie. Il problema principale di tali implementazionie che hanno difficolta a gestire correttamente le temporizzazioni, soprattutto alle piualte velocita di trasferimento. Dopo varie prove e stata trovata una libreria adatta,molto efficiente e scritta a basso livello, pubblicata sul blog Nerdralph [55].

A.2 Servomotori Futaba RS303MR

Futaba e una azienda giapponese produttrice di componenti elettronici e dal 2004produce accessori per la robotica, ed in particolare sevomotori con controller integrati(Command-Type Servo) (fig. A.2).

Il movimento di un servomotore avviene comunicando al microcontrollore integra-to la posizione desiderata, e la velocita di spostamento. La possibilita di inviare deimessaggi su protocollo seriale permette di non dover controllare istante per istante imovimenti come avviene con i segnali PWM.

A.2 Servomotori Futaba RS303MR 69

Figura A.1 – Arduino UNO, scheda di prototipazione

Figura A.2 – Spaccato di un servomotore Futaba (RS405CB)

70 Appendice: sistema di controllo Denso VE026A

Tabella A.1 – Dati tecnici del sistema di controllo Arduino

Modello Arduino UNO

Microcontrollore ATmega328

Tensione di alimentazione 5 V

I/O digitali 14

(6 utilizzabili come PWM)

I/O analogici 6

DC Current per I/O Pin 40 mA

DC Current for 3.3V Pin 50 mA

Memoria Flash 32 KB

SRAM 2 KB

EEPROM 1 KB

Velocita di clock 16 MHz

Ogni servomotore e dotato di un identificativo preimpostato dalla casa costrut-trice. Il protocollo prevede che ogni messaggio contenga un numero che identificail motore che dovra ricevere tale comando. Per poter usare piu servomotori con ununico bus condiviso e quindi necessario riprogrammare tale identificativo, in modoche ogni servomotore possieda un identificativo univoco.

I dati dei servomotori RS303MR sono riportati in tabella A.2.

A.3 Collegamenti

Il VE026A e dotato di un connettore DB25, sul quale sono presenti i pin di controllodei servomotori (fig. A.3).

E stata realizzata una basetta per interfacciare il braccio robotico con l’ArduinoUNO (fig. A.4).

Su tale basetta vengono uniti in modo opportuno i vari cavi di comunicazionedei servomotori, in modo da unificare il bus. Su di essa sono installati 3 led chepermettono di segnalare eventuali errori di comunicazione. Per collegare il bracciorobotico viene utilizzato un connettore DB25, mentre per l’Arduino si utilizza unaconnessione a 5 pin (tabella A.3).

L’Arduino, a sua volta, e collegato al pc tramite connessione USB.

A.3 Collegamenti 71

Figura A.3 – Schema dei collegamenti dei servomotori del braccio robot VE026A

Figura A.4 – Foto del collegamento dell’interfaccia di controllo

72 Appendice: sistema di controllo Denso VE026A

Tabella A.2 – Dati tecnici dei servomotori Futaba

Modello RS303MR

Dimensioni 38.5x19.6x25.0 mm

Peso 28 g

Consumo di corrente in sospensione 16 mA

Consumo di corrente in operazione (senza carico) 90 mA

Massima coppia 0.64 n ·mMassima velocita 91 rpm

Angolo di movimento con controllo pwm -144 ∼ +144 deg

Angolo di movimento con controllo seriale -150 ∼ +150 deg

Tensione di alimentazione 4.8 ∼ 7.4 V

Temperatura di lavoro 0 ∼ +40 °C

Comunicazione seriale:

- Baud Rate (max) 230.4 kbps

- Protocollo 8bit, 1 bit di stop,

nessuna parita, asincrono

asincrono

A.4 Parte software

Per poter controllare il manipolatore si e resa necessaria l’implementazione del pro-tocollo dei servomotori. In particolare si e resa necessaria la programmazione di unalibreria che gestisca la comunicazione tra PC e Arduino e una secondo programmache gestisce la comunicazione tra Arduino e servomotori.

Il protocollo di comunicazione con il servomotori prevede che ogni messaggio siastrutturato come segue:

Header + ID + Flag + Address + Count + Length + Data + CheckSum

• Header : identificativo di inizio del messaggio (0xFAAF);

• ID : identificativo del servomotore da controllare;

A.4 Parte software 73

Tabella A.3 – Collegamento basetta-Arduino

Segnale Pin Basetta Pin Arduino UNO

GND 1 GND

TX/RX 2 13

LED2 3 12

LED1 4 11

LED0 5 10

• Flag : operazione da eseguire (lettura/scrittura memoria, reboot, etc.);

• Address : puntatore ad un’area di memoria;

• Lengh: quantita di byte nel capo Data;

• Count : quantita di servomotori da controllare (1 in generale);

• Data: dati da scrivere nella memoria del sevo-motore;

• Sum: controllo di integrita del messaggio.

A.4.1 Ambiente di sviluppo

La scrittura del codice sorgente per Arduino e stata eseguita mediante l’ambienteArduino IDE, utilizzando il linguaggio C. Nei progetti e stata importata la libreriahalf-duplex [55] scritta nel linguaggio assembler per microcontrollori Atmel AVR a8bit.

Per la scrittura del codice da eseguire sul pc si e utilizzato il linguaggio C++con il compilatore GCC (GNU Compiler Collection). Per la parte grafica e statautilizzata la libreria QT e, come ambiente di sviluppo, QT Creator.

A.4.2 Programmi realizzati

ReadMotors

Tool che fornisce i dati sullo stato corrente dei servomotori. Per ottenere tali infor-mazioni e necessario caricare il programma nella memoria dell’Arduino e collegarsitramite il pc mediante un terminale. Dai vari motori viene fornita la lettura di:posizione, velocita, corrente, tensione, abilitazione della coppia ed il valore coppia.

74 Appendice: sistema di controllo Denso VE026A

SetMotors

Tool da caricare nella memoria dell’Arduino necessario per la riprogrammazione del-l’identificativo dei motori e del senso di rotazione. Il programma permette di modifi-care le impostazioni dei motori, con la possibilita di rendere le modifiche permanentimediante il salvataggio, all’interno della memoria ROM, dei motori. Siccome il pro-gramma permette la sovrascrittura della ROM, e da utilizzare con cautela, in quantoun utilizzo scorretto potrebbe rendere inutilizzabili i motori. Questo programma estato utilizzato per cambiare l’identificativo predefinito dei motori e per permetterela condivisione del bus seriale. Inoltre, e stato utilizzato per rendere il verso deimovimenti coerente con quello del simulatore.

GuiMotors

Il programma da eseguire sul pc fornisce una interfaccia di controllo in cui e possibileacquisire ed inviare comandi al robot (fig. A.5). In particolare e possibile attivare/di-sattivare la coppia dei motori, impostare una nuova posizione angolare e specificareil tempo con cui eseguire lo spostamento. Permette di leggere dalla memoria deiservo-motori i seguenti parametri:

• posizione angolare;

• tempo necessario per eseguire gli spostamenti;

• velocita istantanea;

• assorbimento di corrente;

• temperatura interna;

• tensione di alimentazione.

Per eseguire il programma bisogna utilizzare due componenti software, una dacaricare nella memoria dell’Arduino e una sul pc. La parte sull’Arduino riceve ipacchetti dal pc e si occupa di inoltrarli ai motori, e viceversa.

A.4 Parte software 75

Figura A.5 – Interfaccia di controllo dei servomotori Futaba VE026A

76 Appendice: sistema di controllo Denso VE026A

Appendice B

Appendice: sistema di controlloCrustCrawler AX-18A

Il braccio meccanico CrustCrawler AX-18A Smart Robotic Arm (fig. 3.3) e un mani-polatore modulare, e puo essere configurato in modo da avere quattro, cinque, o seigradi di liberta. Questo manipolatore e di dimensioni maggiori rispetto al Denso Ro-botics VE026A, e per poter essere controllato adeguatamente utilizza dei servomotoricon una coppia maggiore.

Per questo manipolatore sono disponibili due tipi di servomotore: Robotis Dy-namixel AX-12A e AX-18A, che di differenziano per velocita e capacita di carico chesono maggiori nella versione AX-18A. Il braccio utilizzato e dotato di 10 servomotoriAX-18A.

B.1 Servomotori Robotis Dynamixel AX-18A

I servomotori impiegati in questo manipolatore sono i Robotis Dynamixel AX-18A.I dati tecnici sono riportati in tabella B.1 [56].

Come i Futaba RS303MR anche questi motori integrano un microcontrollore.Tutti i motori sono collegati in cascata tra loro (fig. B.1).

Il collegamento avviene tramite una linea a tre pin: alimentazione, segnale dicontrollo e massa. Il controllo dei motori avviene tramite un bus seriale ed erelativamente simile a quello impiegato nei motori Futaba.

Il braccio in questione e di dimensioni piu elevate rispetto al precedente ed hauna capacita di carico maggiore. La maggiore capacita di carico e data dalla coppiadei motori decisamente maggiore rispetto a quelli montati sul braccio della DensoRobotics. I motori e la struttura hanno un peso considerevole ed i motori montatinella parte bassa della catena sono particolarmente sollecitati dallo sforzo necessario

77

78 Appendice: sistema di controllo CrustCrawler AX-18A

Tabella B.1 – Dati tecnici dei servomotori Robotis Dynamixel AX-18A

Modello AX-18A

Dimensioni 32x50x40 mm

Peso 55.9 g

Consumo di corrente in sospensione 50 mA

Consumo di corrente in operazione 2200 mA

Massima coppia 1.8 N ·mMassima velocita 97 rpm

Angolo di movimento -150 ∼ +150 deg

Tensione di alimentazione 9 ∼ 12 V

Temperatura di lavoro -5 ∼ +75 °C

Comunicazione seriale:

- Baud Rate (max) 1 Mbps

- Protocollo 8bit, 1 bit di stop,

nessuna parita, asincrono

asincrono

per mantenere il manipolatore in posizione. Per i giunti soggetti al maggior carico eprevista la configurazione a doppio motore.

B.2 Sistema di controllo

Per pilotare i servomotori e stata utilizzata l’interfaccia Dyanamixel2USB (fig. B.2).Tale interfaccia permette di controllare i servomotori Dynamixel tramite il bus USB.

In rete e disponibile l’implementazione del protocollo di comunicazione, e quindinon e stato necessario scriverla. Robotis fornisce il tool Dynamixel Wizard (fig. B.3)che e stato utile per riprogrammare i servomotori, in particolare per assegnare adognuno un numero identificativo differente, impostare la velocita minima e massima,e la temperatura di protezione.

I giunti dotati di doppio motore hanno introdotto alcune problematiche. Sicco-me la gestione dei motori avviene in modo indipendente e necessario sincronizzare ilfunzionamento dei due motori. I motori sono montati in modo speculare, e quindi

B.2 Sistema di controllo 79

Figura B.1 – Collegamento in cascata dei servomotori Dynamixel AX-18A

Figura B.2 – Dyanamixel2USB, interfaccia di controllo dei servomotori Dynamixel

80 Appendice: sistema di controllo CrustCrawler AX-18A

Figura B.3 – Dynamixel Wizard, tool di controllo dei servomotori Dynamixel

per fare in modo che i movimenti siano corretti e necessario che le rotazioni ven-gano eseguite in direzione opposta. Inoltre bisogna porre particolare attenzione aisincronismi, essendo disponibile un unico bus non e possibile inviare due pacchetticontemporaneamente. Per tali giunti si e quindi reso necessario l’utilizzo di partico-lari strutture di messaggi (Sync Write) documentate nel manuale Dynamixel. Talimessaggi Sync Write al loro interno possono includere piu comandi, che verrannoeseguiti contemporaneamente da piu motori utilizzando parametri differenti.

Sarebbe auspicabile possedere dei motori tarati allo stesso modo, purtroppo, perquesta serie di motori non e disponibile la possibilita di ri-tarare i motori. Talecaratteristica e possibile con i motori di classe superiore come quelli della serie Ro-botis Dynamixel MX. Questa possibilita sarebbe stata molto utile per tarare in modoottimale le coppie di motori, facendo in modo che il carico di lavoro fosse sempreequi-distribuito tra i due motori.

B.3 Parte software

Essendo disponibile la libreria che implementa il protocollo dei motori Dynamixel,non si e resa necessaria la scrittura di tale codice. Inoltre, essendo disponibile l’adat-tatore Dynamixel2USB, non si e reso necessario l’utilizzo di Arduino e della scrittura

B.3 Parte software 81

Figura B.4 – Interfaccia di controllo del manipolatore CrustCrawler Smart RoboticArm

del relativo codice di controllo. Tali situazioni hanno agevolato il lavoro di sviluppodel controllo del manipolatore prodotto da CrustCrawler.

B.3.1 Programmi realizzati

GuiMotors

Il programma realizzato per il controllo dei motori del braccio Denso e stato adattatoin modo da implementare il controllo dei motori Dynamixel (fig. B.4). Le modificheriguardano l’integrazione con le librerie Dynamixel e l’introduzione della gestione deigiunti a doppio motore.

82 Appendice: sistema di controllo CrustCrawler AX-18A

Bibliografia

[1] Website Leap Motion, Leap Motion. [Online]. Indirizzo: https://www.leapmotion.com/

[2] I. Asimov, I, Robot. New York: Gnome Press, 1950.

[3] History of Industrial Robots, International Federation of Robotics, 2012.[Online]. Indirizzo: http://www.ifr.org/uploads/media/History of IndustrialRobots online brochure by IFR 2012.pdf

[4] Executive Summary World Robotics 2014, International Federation ofRobotics, 2014. [Online]. Indirizzo: http://www.ifr.org/uploads/media/Executive Summary WR 2014 01.pdf

[5] S. Y. Nof., Handbook of industrial robotics. New York: Wiley, 1999.

[6] E. Conkur e R. Buckingham, “Clarifying the definition of redundancy as usedin robotics,” Robotica, vol. 15, no. 05, pp. 583–586, 1997.

[7] J. Denavit e R. S. Hartenberg, “A kinematic notation for lower-pair mechanismsbased on matrices,” Trans. ASME E, Journal of Applied Mechanics, vol. 22, pp.215–221, June 1955.

[8] P. B. Siciliano, Slide corso di robotica, Robotics and AutomationGroup of the University of Naples and Partners. [Online]. Indirizzo:http://www.prisma.unina.it/courses/Cinematica.pdf

[9] J. Korein e N. Badler, “Techniques for generating the goal-directed motion of ar-ticulated structures,” Computer Graphics and Applications, IEEE, vol. 2, no. 9,pp. 71–81, Nov 1982.

[10] D. Manocha, Y. Zhu, e W. V. Wright, “Conformational analysis of molecu-lar chains using nano-kinematics.” Computer Applications in the Biosciences,vol. 11, no. 1, pp. 71–86, 1995.

[11] B. Siciliano e O. Khatib, Eds., Springer Handbook of Robotics. Springer, 2008.

83

84 Bibliografia

[12] D. Manocha e J. F. Canny, “Efficient inverse kinematics for general 6r ma-nipulators.” IEEE T. Robotics and Automation, vol. 10, no. 5, pp. 648–657,1994.

[13] D. L. Pieper, “The kinematics of manipulators under computer control,” Ph.D.Dissertation, Stanford University, 1968.

[14] C. Lee, “Robot arm kinematics, dynamics, and control,” Computer, vol. 15,no. 12, pp. 62–80, 1982.

[15] L. Tsai e A. Morgan, Solving the Kinematics of the Most General Six-and Five-degree-of-freedom Manipulators by Continuation Methods, ser. Research publi-cation / Research Laboratories, General Motors Corporation, GMR. GeneralMotors Research Laboratories, 1984.

[16] M. Raghaven e B. Roth, “Kinematic analysis of the 6r manipulator of gene-ral geometry,” in The Fifth International Symposium on Robotics Research.Cambridge, MA, USA: MIT Press, 1990, pp. 263–269.

[17] D. Manocha e J. F. Canny, “Real time inverse kinematics for general 6r mani-pulators,” in In Proc. IEEE Intern. Conf. Robotics and Automation, 1992, pp.383–389.

[18] N. Aspragathos e J. Dimitros, “A comparative study of three methods for ro-bot kinematics,” Systems, Man, and Cybernetics, Part B: Cybernetics, IEEETransactions on, vol. 28, no. 2, pp. 135–145, Apr 1998.

[19] J. J. Craig., Introduction to robotics : mechanics and control. Reading, Mass.:Addison-Wesley Pub. Co.,, 1986.

[20] Catalog Academic robot, VE 026A, Denso Robotics, 2011. [Online]. Indirizzo:http://www.vstone.co.jp/products/pdf/VE026A Catalog.pdf

[21] Webpage AX-18A Smart Robotic Arm, CrustCrawler Robotics, 2014. [On-line]. Indirizzo: http://www.crustcrawler.com/products/AX-18F%20Smart%20Robotic%20Arm/

[22] T. G. Zimmerman, J. Lanier, C. Blanchard, S. Bryson, e Y. Harvill, “A handgesture interface device,” SIGCHI Bull., pp. 189–192, 1986.

[23] L. Majeau, J. Borduas, S. Loranger, Y. El-Iraki, J. Lavoie, D. Banville, V. La-tendresse, V. Beland, J. Daniel-Rivest, A. Thiaw, H. Bambara, T. Beausoleil,W. Trottier-Lapointe, e J. Lapointe, “Dataglove for consumer applications,” pp.1–4, 2011.

Bibliografia 85

[24] R. Diankov, Webpage OpenRAVE. [Online]. Indirizzo: http://openrave.org/

[25] ——, “Automated construction of robotic manipulation programs,” Tesidi dottorato, Carnegie Mellon University, Robotics Institute, August 2010.[Online]. Indirizzo: http://www.programmingvision.com/rosen diankov thesis.pdf

[26] Website Collada. [Online]. Indirizzo: https://collada.org/

[27] Webpage OpenRAVE XML documentation. [Online]. Indirizzo: http://openrave.programmingvision.com/wiki/index.php/Format:XML

[28] Website ROS packages by HiveGround, HiveGround Co., Ltd., 2014. [Online].Indirizzo: https://code.google.com/p/hiveground-ros-pkg/

[29] Website ROS. [Online]. Indirizzo: http://www.ros.org/

[30] Website Modelli Robot inclusi in OpenRAVE. [Online]. Indirizzo: https://github.com/rdiankov/collada robots

[31] Website AU-CrustCrawler. [Online]. Indirizzo: https://github.com/au-crustcrawler/

[32] S. M. Platek, J. P. Keenan, e T. K. Shackelford, Evolutionary CognitiveNeuroscience. Reading, Mass.: Cambridge, 2007.

[33] A. Mazzetti, Reti neurali artificiali. Apogeo, 1991.

[34] R. Hecht-Nielsen, “Theory of the backpropagation neural network,” in NeuralNetworks, 1989. IJCNN., International Joint Conference on, 1989, pp. 593–605vol.1.

[35] C. Kozakiewicz, T. Ogiso, e N. Miyake, “Partitioned neural network architec-ture for inverse kinematic calculation of a 6 dof robot manipulator,” in NeuralNetworks, 1991. 1991 IEEE International Joint Conference on, Nov 1991, pp.2001–2006 vol.3.

[36] K. Dash, B. Choudhury, A. Khuntia, e B. Biswal, “A neural network basedinverse kinematic problem,” in Recent Advances in Intelligent ComputationalSystems (RAICS), 2011 IEEE, Sept 2011, pp. 471–476.

[37] A. T. Hasan, A. M. S. Hamouda, N. Ismail, e H. M. A. A. Al-Assadi, “Anadaptive-learning algorithm to solve the inverse kinematics problem of a 6 d.o.fserial robot manipulator.” Advances in Engineering Software, vol. 37, no. 7, pp.432–438, 2006.

86 Bibliografia

[38] A.-V. Duka, “Neural network based inverse kinematics solution for trajectorytracking of a robotic arm,” Procedia Technology, vol. 12, no. 0, pp. 20 – 27, 2014.

[39] B. Karlik e S. Aydin, “An improved approach to the solution of inverse kine-matics problems for robot manipulators,” Engineering Applications of ArtificialIntelligence, vol. 13, pp. 159–164 vol.2, 2000.

[40] S. Tejomurtula e S. C. Kak, “Inverse kinematics in robotics using neuralnetworks.” Inf. Sci., vol. 116, no. 2-4, pp. 147–164, 1999.

[41] S. Yildirim e I. Eski, “A qp artificial neural network inverse kinematic solutionfor accurate robot path control,” Journal of Mechanical Science and Technology,vol. 20, no. 7, pp. 917–928, 2006.

[42] Y. Sari, “Performance evaluation of the various training algorithms and networktopologies in a neural-network-based inverse kinematics solution for robots,”International Journal of Advanced Robotic Systems, 2014.

[43] M. Puheim e L. Madarasz, “Normalization of inputs and outputs of neural net-work based robotic arm controller in role of inverse kinematic model,” in AppliedMachine Intelligence and Informatics (SAMI), 2014 IEEE 12th InternationalSymposium on, Jan 2014, pp. 85–89.

[44] E. Rigoni e A. Lovison, “Automatic sizing of neural networks for function appro-ximation,” in Systems, Man and Cybernetics, 2007. ISIC. IEEE InternationalConference on, Oct 2007, pp. 2005–2010.

[45] R. Koker, T. Cakar, e Y. Sari, “A neural-network committee machine approachto the inverse kinematics problem solution of robotic manipulators,” Engineeringwith Computers, vol. 30, no. 4, pp. 641–649, 2014.

[46] L. Aggarwal, K. Aggarwal, e R. J. Urbanic, “Use of artificial neural networksfor the development of an inverse kinematic solution and visual identification ofsingularity zone(s),” Procedia {CIRP}, vol. 17, no. 0, pp. 812 – 817, 2014.

[47] I. Bonev, Video: Singularities of a six-axis robot, Control and RoboticsLaboratory, 2013. [Online]. Indirizzo: http://coro.etsmtl.ca/blog/?p=107

[48] A. T. Hasan, N. Ismail, A. M. S. Hamouda, I. Aris, M. H. Marhaban, e H. M.A. A. Al-Assadi, “Artificial neural network-based kinematics jacobian solu-tion for serial manipulator passing through singular configurations,” Adv. Eng.Softw., vol. 41, no. 2, 2010.

Bibliografia 87

[49] A. T. Hasan, A. A. M. Isa, e H. M. Al-Assadi, Neural Networks’ BasedInverse Kinematics Solution for Serial Robot Manipulators Passing ThroughSingularities. INTECH Open Access Publisher, 2011.

[50] S. Nissen, Website FANN. [Online]. Indirizzo: http://leenissen.dk/

[51] Website FannTool. [Online]. Indirizzo: https://code.google.com/p/fanntool

[52] Website FannExplorer. [Online]. Indirizzo: http://leenissen.dk/fann/gui.php

[53] FANN, calcolo MSE con funzione di attivazione simmetrica. [Online]. Indirizzo:http://leenissen.dk/fann/forum/viewtopic.php?t=229

[54] Instruction Manual RS303MR/RS304MD, Futaba. [Online]. Indiriz-zo: http://www.futaba.co.jp/en/dbps data/ material /radicon eng/Robot/RS303MR RS304MD EN 112.pdf

[55] R. Doncaster, AVR half duplex software uart, 2014. [Online]. Indirizzo:http://nerdralph.blogspot.it/2014/01/avr-half-duplex-software-uart.html

[56] Instruction Manual AX-18F/AX-18A, Robotis. [Online]. Indirizzo: http://support.robotis.com/en/product/dynamixel/ax series/ax-18f.htm