UNIVERSITA’ DEGLI STUDI DI PADOVA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA MECCATRONICA Tesi di laurea magistrale INDICE DI PRESTAZIONE DIREZIONALE PER MANIPOLATORI PARALLELI RELATORE: Prof. Giovanni Boschetti LAUREANDO: Federico Savegnago MATRICOLA: 1040349 ANNO ACCADEMICO: 2014/2015 Sommario In questo elaborato viene studiato un nuovo indice per valutare le prestazioni cinematiche per i manipolatori paralleli. Questo indice, a differenza dei comuni indici diffusi in robotica, valuta le prestazioni a seconda della direzione di spostamento dell'organo terminale del robot. Il nuovo indice è stato utilizzato per valutare le prestazioni del manipolatore parallelo Adept QuattroTM a quattro assi. Infine, su di esso, sono state realizzate delle prove sperimentali. 1 INDICE SOMMARIO...................................................................................................................1 INTRODUZIONE..........................................................................................................4 CAP 1: I MANIPOLATORI PARALLELI..................................................................5 1.1 Caratteristiche dei manipolatori paralleli.......................................................5 1.2 Vantaggi dei manipolatori paralleli.................................................................7 1.3 Il manipolatore parallelo Adept QuattroTM.....................................................9 1.3.1 Misure dell'Adept QuattroTM....................................................14 1.4 Impieghi industriali......................................................................................15 CAP 2: INDICI CINEMATICI....................................................................................21 2.1 Indici di prestazione......................................................................................21 2.1.1 Manipolabilità......................................................................................22 2.1.2 Indice selettivo di direzione DSI..........................................................22 2.1.3 Nuovo indice........................................................................................24 2.2 Normalizzazione della Jacobiana.................................................................27 2.3 Orientazione dello spostamento...................................................................28 2.4 Descrizione nuovo indice ...........................................................................30 2.5 Soluzioni analitiche.....................................................................................32 2 2.5.1 Prima soluzione analitica............................................................32 2.5.2 Seconda soluzione analitica........................................................32 2.6 Terza soluzione : Programmazione lineare...................................................34 CAP 3: PARTE SPERIMENTALE.............................................................................41 3.1 Prove sperimentali .......................................................................................41 3.2 Strumentazione.............................................................................................42 3.3 Misura delle prestazioni...............................................................................44 3.4 Raccolta dati sperimentali............................................................................50 3.4.1 Misure dei tempi..................................................................................51 3.4.2 misure delle accelerazioni ...................................................................52 3.5 Elaborazione dati.........................................................................................53 3.5.1 Elaborazione dei tempi.......................................................................53 3.5.2 Elaborazione delle accelerazioni........................................................54 3.6 Confronto tra la simulazione e il sperimentale..........................................62 CONCLUSIONI............................................................................................................68 APPENDICE A.............................................................................................................71 3 Introduzione Nel corso di questo lavoro si è sviluppato un indice di prestazione per manipolatori paralleli che tenga conto della direzione di spostamento dell'organo terminale. Per una data configurazione del manipolatore, l'end-effector si muove con velocità diverse a seconda della direzione di spostamento. L'obiettivo di questo indice è quello di andare ad individuare delle zone nello spazio di lavoro dove il manipolatore possa raggiungere le migliori prestazioni in termini di tempo di spostamento dell'organo terminale. Nel primo capitolo c' è un accenno della differenza tra manipolatori seriali e paralleli con i loro vantaggi e svantaggi. Poi c'è una descrizione del manipolatore in questione che è l'Adept QuattroTM ed i vari suoi impieghi industriali. Il secondo capitolo descrive brevemente gli indici di prestazioni passati come la manipolabilità e l'indice selettivo di direzione (DSI) fino ad arrivare al nuovo indice argomento di questa tesi. Si spiega la normalizzazione della matrice Jacobiana e come orientare lo spostamento. Del nuovo indice si illustrano le varie soluzioni analitiche. Nel terzo capitolo ci sono le prove sperimentali. Inizialmente una descrizione della strumentazione con il sistema di acquisizione e poi la raccolta e l' elaborazione e il confronto dei dati. Quest'ultime tre azioni sempre distinte dal tipo di dato cioè tra il tempo e l'accelerazione. Poi abbiamo le conclusioni 4 CAPITOLO 1 1 I manipolatori paralleli Nel seguente capitolo si fa una panoramica generale sui manipolatori ad architettura parallela. Si presentato i vantaggi di tali robot, mettendo in evidenza la loro diffusione nel mondo industriale. Infine, viene descritto l’Adept QuattroTM, il manipolatore parallelo preso in esame. 1.1 Caratteristiche dei manipolatori paralleli Un manipolatore è definito come un insieme di link connessi l’un l’altro tramite coppie cinematiche. Se il primo e l’ultimo link sono connessi si dice che la catena cinematica è chiusa, quindi si parla di manipolatore parallelo (figura 1.1); se il primo e l’ultimo link non sono connessi si dice che la catena cinematica è aperta, quindi si parla di manipolatore seriale (figura 1.2). 5 Figura 1.1 – Esempio di manipolatore parallelo Figura 1.2 – Esempio di manipolatore seria Come si nota dalla figura 1.1, le macchine parallele consistono in una piattaforma fissa, detta base, ed una mobile, detta elemento terminale, connesse tra loro da vari link uguali. Un manipolatore parallelo è quindi una struttura meccanica a catena chiusa in cui l’organo terminale è connesso alla base da almeno due catene cinematiche indipendenti. Questo tipo di manipolatore può essere schematizzato come composto da un basamento a telaio, dove si trovano gli attuatori, collegato ad una piattaforma mobile tramite catene cinematiche dette, appunto,link. A loro volta queste possono essere costituite da membri collegati da coppie cinematiche, che possono anche essere attuate. Le macchine parallele sono spesso chiamate piattaforme o macchine a catena cinematica chiusa, dato che è possibile individuare più circuiti chiusi che connettono tra loro i vari componenti. Tipicamente il numero di arti è uguale al numero di gradi di libertà del meccanismo così come ogni gamba è controllata da un attuatore. Tutti gli attuatori possono essere montati sulla base fissa così da avere meno masse in movimento a differenza dei robot seriali in cui ogni attuatore deve mobilitare le masse 6 dei membri e degli attuatori interposti tra esso ed il terminale. Inoltre, si beneficia di un’elevata capacità di carico poiché il peso può essere suddiviso tra tutti gli attuatori. 1.2 Vantaggi dei manipolatori paralleli I manipolatori ad architettura parallela presentano interessanti caratteristiche che hanno favorito lo sviluppo di questi meccanismi. Suscitano un notevole interesse grazie alle ottime prestazioni e il loro impiego avviene in svariati settori applicativi. Uno tra i primi vantaggi consiste nel poter montare gli attuatori su una base fissa, su cui convergono tutti gli arti, rendendo in questo modo possibile la riduzione delle masse sospese e in movimento: ciò consente di raggiungere velocità molto elevate. I meccanismi sono più leggeri, con prestazioni notevoli per quanto riguarda la velocità e l’accelerazione, quindi più performanti dal punto di vista dinamico. Un secondo pregio è dato dalla rigidezza strutturale che per un’architettura cinematica chiusa è intrinsecamente elevata e ciò si traduce in accuratezza di posizionamento dell’organo terminale. Inoltre, data la ripartizione del carico su più gambe rispetto ai meccanismi a catena aperta, il peso può essere suddiviso tra tutti gli attuatori consentendo, ai meccanismi paralleli, di avere un’elevata capacità di carico. I robot paralleli sono usati come meccanismi di precisione in ambito industriale, medico e meccanico. Essi, però, offrono un minor rapporto tra volume dello spazio di lavoro e volume complessivo della macchina. Infatti, i manipolatori seriali presentano dimensioni a riposo ridotte ed hanno maggiore accessibilità allo spazio di lavoro. 7 Figura 1.3 – Manipolatore antropomorfo Figura 1.4 – Manipolatore parallelo Adept Dalle figure 1.3 e 1.4 si vede come la mobilità del manipolatore seriale possa essere maggiore rispetto a quella offerta dal manipolatore parallelo, riferita all’ingombro a riposo. Riassumendo i vantaggi e gli svantaggi per i manipolatori paralleli, risulta come segue di seguito: Vantaggi della struttura cinematica parallela : - Elevata capacità di carico - Elevata rigidezza - Attuatori posizionabili sul telaio - Basse masse in movimento - Elevate accelerazioni 8 - Ottima accuratezza - Costruzione meccanica semplice e modulare Svantaggi della struttura cinematica parallela: - Difficoltà di progettazione - Spazio di lavoro limitato e dalla geometria complessa - Complessità delle relazioni cinematiche 1.3 Il manipolatore parallelo Adept QuattroTM Adept QuattroTM è l’unico robot al mondo dotato di quattro bracci motorizzati e piastra rotante. I quattro motori permettono il controllo dell’organo terminale del manipolatore lungo tutte le direzioni dello spazio ed anche la rotazione attorno all’asse Z. Nella figura (1.5) si riporta una foto del manipolatore. 9 Figura 1.5 – Manipolatore parallelo Adept QuattroTM Questa soluzione cinematica permette di raggiungere velocità ed accelerazioni elevate, con buoni risultati nell’intero volume di lavoro. Il manipolatore è composto da una struttura fissa a telaio, dodici link e una piattaforma quadrilatera. Il telaio, contenuto all’interno di una struttura in alluminio, è formato da quattro bracci disposti in modo simmetrico. 10 Figura 1.6 – Rappresentazione schematica del manipolatore Adept QuattroTM I quattro bilancieri collegati direttamente al telaio sono liberi di muoversi ognuno su un solo piano, mentre i rimanenti otto link, quattro coppie di bielle che vanno ad unirsi alla piattaforma terminale, possono muoversi nello spazio (figura 1.6). La piattaforma mobile su cui si trova l’organo terminale è di forma quadrata quando non si verifica alcuna rotazione (figura 1.7). 11 Figura 1.7 – Piattaforma rotante del manipolatore Adept QuattroTM Essa è libera di deformarsi e di assumere la configurazione di un parallelogramma avente tutte e quattro le dimensioni uguali, con l’unica condizione che la variazione avvenga su un piano parallelo a quello contenente il telaio. Nella figura 1.8 viene mostrato schematicamente come la piattaforma possa deformarsi, al fine di ottenere una rotazione dell’organo terminale. Figura 1.8 – Esempio di deformazione della piattaforma del manipolatore 12 Data la configurazione simmetrica del robot è possibile individuare quattro identiche catene cinematiche tra il telaio e la piattaforma mobile (figura 1.9). Va fatta una precisazione su tale struttura mobile in quanto, per consentire la rotazione, la posizione dell’organo terminale ha un off-set, lungo la direzione X, rispetto al centro della piattaforma. Questo off-set fa sì che lo spazio di lavoro reale sia leggermente spostato rispetto al centro della struttura a telaio. Figura 1.9 – Schema cinematico del manipolatore 13 1.3.1 Misure dell'Adept QuattroTM Figura 1.10 – Misure Adept Quattro QuattroTM Tab. 1.3.1: Misure manipolatore Values (mm) 265 370 830 80 780 220 180 700 1140 Symbols a b c d e f g h m 14 1.4 Impieghi industriali L’alta velocità e la precisione rendono questo robot perfetto per operazioni di pick-andplace, nel confezionamento o nel trasferimento di prodotti leggeri, come i prodotti alimentari, farmaceutici, cosmetici e paramedicali e in applicazioni di manipolazione e di assemblaggio (figura 1.10). Esso risulta ideale per qualsiasi applicazione dove sia richiesto il massimo livello di flessibilità e velocità. Figura 1.11 – Manipolatore che riordina il prodotto sul nastro 15 È adatto ad essere montato sopra un nastro trasportatore (figura 1.11,1.12 e 1.13), occupando il minimo spazio a terra e risulta essere compatibile con le norme di igiene richieste nella manipolazione dei cibi e dei prodotti medici e farmaceutici, oltre che con gli standard IP. Figura 1.12 – Confezionamento cioccolatini 16 Figura 1.13 – Altro esempio di manipolatore sopra un nastro trasportatore Alcune possibili applicazioni sono: – Confezionamento di prodotti dalle dimensioni ridotte, come: biscotti, dolciumi, snack e cibo fresco o congelato. Questi prodotti vengono posti all’interno di singole confezioni (figura 1.13) che in un secondo momento, a loro volta, possono essere messe all’interno di una varietà di altri pacchetti. 17 Figura 1.14 – Confezionamento di cialde – Produzione di biscotti: la parte superiore di un biscotto viene posizionata sopra lo strato inferiore. Figura 1.15 – Ordinamento di biscotti in colonna 18 – Bilanciamento di una linea: il prodotto è spostato da una corsia ad un’altra in modo che la linea sia bilanciata e l’avanzamento verso l’incartatrice o la macchina per il confezionamento avvenga in modo regolare (figura 1.14). – Assortimento di articoli, come ad esempio i prodotti per la cosmesi, o come nella figura 1.15 dolciumi: sono posizionati individualmente all’interno della confezione nel modo opportuno. – Assemblaggio: questo procedimento può interessare apparecchiature mediche o beni di consumo. Figura 1.16 – Confezionamento di biscotti di forma diversa 19 dispositivi come In alcuni casi appena visti il prodotto, quando raggiunge il manipolatore, è spesso posizionato in modo casuale sopra ad un nastro trasportatore perciò è necessario l’uso di un sistema di visione integrato per la generazione delle coordinate, obbiettivo da raggiungere, rappresentate dal prodotto da prendere. Figura 1.17 – Manipolatore parallelo con sistema di visione 20 CAPITOLO 2: 2 INDICI CINEMATICI La valutazione delle prestazioni cinematiche di un manipolatore e il confronto con altri robot della stessa categoria possono essere eseguiti attraverso degli indici ottenibili dalla matrice Jacobiana. Tali indici, definiti fin dai primi anni di esistenza della robotica, sono riferiti in modo particolare ai manipolatori seriali; non sempre il passaggio ai manipolatori paralleli è immediato perché la matrice che, generalmente, risulta disponibile è la Jacobiana inversa. 2.1 Indici di prestazione Per la progettazione o il controllo di un robot parallelo, è richiesta una valutazione del comportamento cinematico dei link che lo compongono. In altre parole, data una precisa configurazione assunta dal manipolatore, si vuole misurare l’effetto del movimento dei motori sullo spostamento dell’end effector. Gli strumenti più noti e impiegati per considerazioni di questo tipo sono gli indici cinematici. Tra i molti definiti in letteratura, quelli che andrò ad illustrare sono la manipolabilità, il DSI fino ad arrivare all'indice sviluppato in questa tesi. 21 2.1.1 Manipolabilità L’indice di manipolabilità, definito per le macchine seriali da Yoshikawa come: μ=√ [ J ][ J ]T (2.1 quantifica la capacità di trasmissione della velocità dai motori all’organo terminale (sensitività). Nel caso di meccanismi non ridondanti, questo indice può essere calcolato semplicemente come il modulo del determinante di J. Valori dell’indice prossimi allo zero o troppo elevati individuano zone in cui il manipolatore incontra una certa difficoltà a lavorare (tipicamente corrispondono a configurazioni vicine alla frontiera dello spazio di lavoro). Come espresso nel capitolo precedente, per i manipolatori paralleli la matrice ricavabile in modo immediato è la Jacobiana inversa. Se indichiamo con λi gli autovalori di una generica matrice quadrata, gli autovalori della sua inversa saranno 1/λi. Ricordando che il determinante è uguale al prodotto degli autovalori, si può pervenire a una definizione dell’indice di manipolabilità più adatta all’analisi di manipolatori paralleli : μ= 1 √[ J ] −T [ J ]−1 (2.2 dove si è sfruttato il fatto che l’inverso di un prodotto di matrici è uguale al prodotto con ordine scambiato delle matrici di partenza invertite. 22 2.1.2 L’indice selettivo di direzione (DSI) L’indice di manipolabilità fornisce una stima sulla prestazione del manipolatore e sulla capacità di traslazione o di rotazione di un robot. L’indice selettivo di direzione DSI ([2],[3]) fornisce una valutazione separata delle capacità di traslazione lungo i tre assi fondamentali. Quest’ultimo indice è ricavato, al pari dell’indice di manipolabilità, dalla matrice Jacobiana della cinematica, come viene spiegato di seguito. Si possono trovare risultati interessanti attraverso l'indice di manipolabilità quando le traslazioni sono valutate separatamente dalle rotazioni. Partendo da questa assunzione, la matrice Jacobiana è stato suddivisa in due parti, vale a dire JT e JR, dove JT fa riferimento solo alle traslazioni mentre JR si riferisce alle rotazioni [3]. Estendendo tale ragionamento, si è dimostrato che è utile suddividere ulteriormente la matrice delle traslazioni, al fine di analizzare il comportamento di un robot lungo una direzione specifica [3]. L'indice selettivo si ottiene come la manipolabilità, considerando, però, solo delle sottomatrici dello Jacobiano. Chiamiamo le sottomatrici dello Jacobiano J x, Jy e Jz rispettivamente per le direzioni X, Y e Z. Così si possono identificare gli indici di direzione selettivi per ogni direzione: μx= 1 √[ J −T x ] [ J x ]−1 23 (2.3 μ y= μz = 1 √[ J (2.4 −T y ] [ J y ]−1 1 √[ J (2.5 −T z ] [ J z ]−1 2.1.3 Nuovo indice Considerando di possedere già la matrice Jacobiana inversa J −1 posso scrivere la seguente relazione: { θ˙ }=[J ]−1 { x˙ } (2.6 in cui θ˙ sono le velocità delle coordinate libere cioè dei motori e x˙ sono le velocità dell'organo terminale nelle direzioni x,y,z e ϕ. Quest'ultima è la rotazione dell'organo terminale. [ ] [] θ˙1 θ˙ { θ˙ }= 2 θ˙3 θ˙4 x˙ { x˙ }= y˙ z˙ ϕ˙ La matrice Jacobiana la posso rappresentare come segue: 24 (2.7 [ J 11 J 12 J J 22 [ J ]= 21 J 31 J 32 J 41 J 42 J 13 J 23 J 33 J 43 J 14 J 24 J 34 J 44 ] (2.8 La Jacobiana inversa [ J ]−1 la si rappresenta invece come: [ K 11 K [ J ]−1=[ K ]= 21 K 31 K 41 K 12 K 22 K 32 K 42 K 13 K 23 K 33 K 43 K 14 K 24 K 34 K 44 ] (1) in cui le prime tre colonne sono per gli spostamenti lungo x,y e z invece l'ultima colonna riguarda la rotazione dell'organo terminale. La matrice Jacobiana inversa la possiamo riscrivere in questo modo: [ K ]=[ K t K r] (2.9 in cui: [ K 11 K 12 K 13 K K 22 K 23 [ K t ]=[ K x∣K y∣K z ] = 21 K 31 K 32 K 33 K 11 K 12 K 13 ] Dove Kt interessa gli spostamenti e Kr le rotazioni. Di conseguenza: 25 [] K 14 K [ K r ]=[ K ϕ ]= 24 K 34 K 44 (2.10 [] x { x˙ }= ˙ t (2.11 x˙ r in cui : [] x˙ x˙ t = y˙ z˙ x˙r =[ ϕ˙ ] (2.12 Sostituendo nella (2.6) otteniamo: [] { θ˙ }=[ K t K r ] x˙ t x˙ r (2) 2.2 Normalizzazione della matrice Jacobiana Un secondo problema legato alla definizione dell’indice di manipolabilità è la presenza di disomogeneità tra le unità di misura dei termini che compongono la matrice Jacobiana. È utile ricorrere a una normalizzazione dello Jacobiano. Questa soluzione può essere facilmente applicata ai robot seriali pesando J con lunghezze caratteristiche, mentre, per i robot paralleli il discorso è più complicato. Se, però, tutti i giunti che collegano i motori ai link attivi sono rotoidali, si può legare la velocità di traslazione alla velocità tangenziale delle manovelle, invece che a quella angolare, ottenendo, quindi, un indice di manipolabilità adimensionale. Per ottenere quanto detto, si moltiplica la matrice JT inversa per uno scalare pari alla lunghezza b della manovella stessa. (Nelle formule seguenti, le matrici normalizzate saranno indicate dal pedice D.) 26 In formule: [ D] {θ˙ }=[ D][ J t ]−1 { x˙ }=[ D][ K t ] { x˙ } (2.13 dove : [ ] b [ D]= 0 0 0 0 b 0 0 0 0 b 0 0 0 0 b (2.14 e chiamando: −1 −1 [ J Dt ] =[ D][ J t ] equivalentemente : (2.15 [ K Dt ]=[ D][ K t ] Dove: {θ˙D }=[ D] {θ˙ } (2.16 {θ˙D }=[ J Dt ]−1 { x˙ t }=[ K Dt ] { x˙ t } (2.17 il tutto si riscrive: 27 2.3 Orientazione dello spostamento per capire le prestazioni a seconda della direzione. Nell'analisi cinematica di velocità la matrice Jacobiana relaziona le velocità delle variabili di giunto alle velocità dell'end-effector lungo gli assi del sistema di riferimento assoluto. Per valutare traslazioni dell'end-effector lungo direzioni diverse da quelle del sistema di riferimento assoluto si deve considerare una matrice di rotazione R. Sia R la matrice che ruota il sistema di riferimento assoluto in maniera tale da ottenere un sistema di riferimento dove l'asse x coincide con la direzione lungo la quale si vogliono valutare le prestazioni del manipolatore. Se il manipolatore si muove nel piano la matrice R è data da un' unica rotazione, se invece lo spazio operazionale del robot è tridimensionale la matrice R è funzione di due rotazioni lungo assi indipendenti. 28 Fig. 2.1 – Rappresentazione schematica del sistema di riferimento globale e di un sistema di riferimento ruotato con l'asse X R parallelo alla direzione R. Anche in questo caso si lavora solo sulle prime tre colonne della Jacobiana inversa cioè su [ J t ]−1 o equivalentemente [ K t ] . Partendo dalla (2.16) e considerando : { x˙ t }=[ R] { x˙R } (2.18 {θ˙D }=[ J Dt ]−1 [ R] { x˙R }=[K Dt ][ R] { x˙R } (2.19 Allora: 29 2.4 Descrizione nuovo indice Il nuovo indice direzionale permette di valutare le prestazioni di un manipolatore parallelo lungo la direzione d'interesse. Partendo dalla scomposizione della matrice Jacobiana, e valutando per una data configurazione i limiti di velocità in una certa direzione, si dovrebbe ricavare un indice maggiormente accurato rispetto al sopracitato DSI. Considerando il nostro sistema con Jacobiano diretto : { x˙ }=[ J ] {θ˙ } (2.20 Riscrivendolo per esteso diventa: {}[ J 11 x˙ y˙ = J 21 z˙ J 31 ϕ˙ J 41 J 12 J 22 J 32 J 42 J 13 J 23 J 33 J 43 J 14 J 24 J 34 J 44 ]{ } θ˙1 θ2 θ3 θ4 Per l'omogeneità delle unità di misura modifico la matrice Jacobiana come segue: 30 (2.21 [ ]{ } [ J 11 b x˙ J y˙ = 21 b z˙ J 31 ϕ˙ b J 41 {} J 12 b J 22 b J 32 b J 42 J 13 b J 23 b J 33 b J 43 J 14 b J 24 b J 34 b J 44 θ˙1 J 11 ' θ2 J ' = 21 θ3 J 31 ' θ4 J 41 J 12 ' J 22 ' J 32 ' J 42 J 13 ' J 23 ' J 33 ' J 43 J 14 ' J 24 ' J 34 ' J 44 ]{ } θ˙1 θ2 θ3 θ4 (2.22 Il nuovo indice vuole calcolare il limite massimo di velocità lungo una certa direzione. Per calcolare questo limite si deve determinare il vettore delle velocità delle coordinate libere in maniera tale da massimizzare la componente di velocità lungo tale direzione, e annullare la componente di velocità lungo le altre direzioni. Ora scompongo in un sistema: { x˙ = J 11 ' θ˙1 +J 12 ' θ˙2+J 13 ' θ˙3+ J 14 ' θ˙4 y˙ = J 21 ' θ˙1+ J 22 ' θ˙2+ J 23 ' θ˙3+J 24 ' θ˙4 z˙ =J 31 ' θ˙1+J 32 ' θ˙2+ J 33 ' θ˙3+J 34 ' θ˙4 ˙ J 41 θ˙1+ J 42 θ˙2+ J 43 θ˙3+ J 44 θ˙4 ϕ= 2.23) Se voglio applicare l'indice devo massimizzare la direzione prescelta ( lungo x ) e annullare le altre componenti di velocità. Quindi devo imporre le seguenti condizioni: { x˙ = J 11 ' θ˙1 +J 12 ' θ˙2+J 13 ' θ˙3+ J 14 ' θ˙4=MAX y˙ = J 21 ' θ˙1+ J 22 ' θ˙2+ J 23 ' θ˙3+J 24 ' θ˙4 =0 z˙ =J 31 ' θ˙1+J 32 ' θ˙2+ J 33 ' θ˙3+J 34 ' θ˙4=0 ˙ J 41 θ˙1+ J 42 θ˙2+ J 43 θ˙3+ J 44 θ˙4=0 ϕ= (2.24 Per poter trovare una soluzione ho trovato tre possibile soluzioni di cui due analitiche e 31 una utilizzando la programmazione lineare. 2.5 SOLUZIONI ANALITICHE 2.5.1 Prima soluzione analitica Entrambe le soluzioni analitiche hanno lo stesso esito. La prima soluzione è quella di svolgere il sistema (2.24) per sostituzioni e siccome abbiamo cinque incognite con quattro equazioni alla fine troviamo quattro risultati di x˙ in funzione di θ˙1 , θ˙ 2 , θ˙3 e θ˙4 . Quindi avrò x˙ ( θ˙2) , x˙ ( θ˙1) , x˙ ( θ˙3) e x˙ ( θ˙4) . 2.5.2 Seconda soluzione analitica La seconda soluzione analitica è quella di pensare al sistema con la matrice Jacobiana inversa che chiamerò K. { θ˙ }=[K ] { x˙ } (2.25 scritto per esteso diventa: {}[ θ˙1 K 11 θ2 K = 21 θ3 K 31 θ4 K 41 K 12 K 22 K 32 K 42 K 13 K 23 K 33 K 43 ]{ } K 14 x˙ K 24 ˙y K 34 ˙z K 44 ϕ˙ (2.26 Per l'omogeneità delle unità di misura modifico la matrice Jacobiana inversa K come 32 segue: {}[ θ˙1 K 11∗br θ2 K ∗br = 21 θ3 K 31∗br θ4 K 41∗br = [ K 11 ' K 21 ' K 31 ' K 41 ' K 12∗br K 22∗br K 32∗br K 42∗br K 12 ' K 22 ' K 32 ' K 42 ' K 13∗br K 23∗br K 33∗br K 43∗br K 13 ' K 23 ' K 33 ' K 43 ' ]{ } K 14 x˙ K 24 ˙y K 34 ˙z K 44 ϕ˙ ]{ } = (2.27 K 14 x˙ K 24 y˙ K 34 z˙ K 44 ϕ˙ Sotto forma di sistema: { θ˙1= K 11 ' x˙ + K 12 ' θ˙2=K 21 ' x˙ +K 22 ' θ˙3=K 31 ' x˙ +K 32 ' θ˙4=K 41 ' x˙ +K 42 ' con y˙ +K 13 ' z˙ +K 14 ϕ˙ y˙ +K 23 ' z˙ + K 24 ϕ˙ y˙ +K 33 ' z˙ +K 34 ϕ˙ y˙ +K 43 ' z˙ +K 44 ϕ˙ ˙ y˙ = z˙ =ϕ=0 il sistema si semplifica in: 33 (2.28 { { x˙ ≤ { θ˙1=K 11 ' x˙ θ˙2=K 21 ' x˙ → θ˙3=K 31 ' x˙ θ˙4=K 41 ' x˙ x˙ ≤ θ˙1 (K 11 ' ) θ˙ 2 (K 21 ' ) θ˙ x˙ ≤ 3 (K 31 ' ) θ˙ 4 x˙ ≤ ( K 41 ' ) x˙ ≤ x˙ ≤ → trovando anche questa volta quattro valori di ˙ θ max (K 11 ' ) ˙ θ max (K 21 ' ) θ˙ x˙ ≤ max (K 31 ' ) θ˙ x˙ ≤ max ( K 41 ' ) (2.29 x˙ che ovviamente combaceranno con quelli della prima soluzione analitica. Di questi valori andremo a prendere il più piccolo in modo da soddisfare il sistema (2.29) considerando una θ max comune ad ogni motore. Il programma si trova nell'appendice A. 2.6 Terza soluzione: Programmazione lineare Un problema di programmazione lineare è un problema di minimizzazione (o massimizzazione) di una funzione lineare soggetta a vincoli lineari (equazioni o disequazioni). La forma esatta di questi vincoli può variare da un problema all'altro ma qualsiasi programma lineare si può riportare alla seguente forma standard: 34 min (max) c 1 x1+c 2 x 2+........ c n x n { b 11 x 1+b 12 x 2+........+b1n x n =a 1 b21 x 1+b 22 x 2+........+b 2n x n=a 2 ........ bm1 x 1+b m2 x 2 +........+b mn x n=a m x1≥0, x 2≥0,... , x n≥0 (2.30 I cui: – al prima riga è la funzione obiettivo FO – ai i=1...m termini noti – xi i=1...n termini decisionali – ci i=1...n coefficienti di costo – bij coefficienti del sistema – le equazioni comprese nella parentesi sono dette vincoli Con la notazione vettoriale la si può scrivere più compatta: T min (max) c x Bx=a x⩾0 { Dove: – B è una matrice mxn – x è un vettore di n elementi – a è un vettore di m elementi – c è un vettore di n elementi 35 (2.31 Per quanto riguarda i vincoli possono essere molteplici come { Bx⩽a x ⩾0 min (max) c T x oppure Bx<a , Bx>a , Bx≥a.... oppure x<a , x>a , x≤a , x min ≤x ≤x max .... (2.32 La programmazione lineare quindi tramite un apposito algoritmo provvede alla risoluzione di problemi di ottimizzazione lineare formulati in maniera tale da potersi ricondurre alla forma standard (2.3). Tornando a noi partiamo dal sistema (2.2) togliendo l'ultima riga che è quella riguardante la rotazione dell'organo terminale. Operando in questo modo è come se non imponessimo rotazione nulla durante lo spostamento, anche se l'inizio e la fine dello spostamento hanno rotazione nulla. (Questo possiamo applicarlo ad esempio con una piastra fissa come organo terminale in modo che non possa ruotare) { x˙ = J 11 ' θ˙1 +J 12 ' θ˙2+J 13 ' θ˙3+ J 14 ' θ˙4=MAX y˙ = J 21 ' θ˙1 +J 22 ' θ˙2+ J 23 ' θ˙3+J 24 ' θ˙4 =0 z˙ =J 31 ' θ˙1+J 32 ' θ˙2+ J 33 ' θ˙3+J 34 ' θ˙4=0 36 (2.33 Traducendo questo problema come un problema di programmazione lineare possiamo dire che la prima riga è la funzione obiettivo (FO). Quindi: J 11 ' J ' c= 12 J 13 ' J 14 ' [] (2.34 [] (2.35 θ˙1 θ˙ x= 2 θ˙3 θ˙4 [ B= J 21 ' J 31 ' J 22 ' J 32 ' J 23 ' J 33 ' [] a= 0 0 J 24 ' J 34 ' ] (3.36 (2.37 Tenendo conto della notazione sopra il problema di programmazione lineare che ho usato per questo specifico caso è stato: 37 min (max) c T x Bx=a x min ≤x≤x max { (2.38 ˙ ) sono i limiti di velocità che possono assumere le In cui xmin e xmax ( θ ˙min e θ max coordinate libere. Per implementare il problema su calcolatore con matlab ho usato la funzione”linprog” il cui codice lo si trova nell'appendice A. Figura 2.1– Grafico simulazione usando progLin senza vincolo sulla rotazione(z=-800mm) Tutto il ragionamento fatto precedentemente lo si può applicare a tutte e quattro le equazioni: 38 { x˙ = J 11 ' θ˙1 +J 12 ' θ˙2+J 13 ' θ˙3+ J 14 ' θ˙4=MAX y˙ =J 21 ' θ˙1+ J 22 ' θ˙2+ J 23 ' θ˙3 +J 24 ' θ˙4 =0 z˙ =J 31 ' θ˙1+J 32 ' θ˙2+ J 33 ' θ˙3 +J 34 ' θ˙4=0 ˙ J 41 θ˙1+ J 42 θ˙2+ J 43 θ˙3+ J 44 θ˙4=0 ϕ= (2.39 In questo modo invece, imponiamo al robot rotazione nulla. Gli elementi che compongono il problema di programmazione lineare in questo caso diventano: [ J 21 ' B= J 31 ' J 41 J 22 ' J 32 ' J 42 J 23 ' J 33 ' J 43 J 24 ' J 34 ' J 44 ] [] 0 a= 0 0 (2.40 (2.41 Le (2.35) e (2.36) restano uguali. Il programma lo si può vedere nell'appendice A. 39 Figura 2.2– Grafico simulazione usando progLin con il vincolo sulla rotazione(z=-800mm) La seconda equazione analitica descritta in (2.6.2) da' lo stesso risultato della programmazione lineare con il vincolo sulla rotazione dell'organo terminale. 40 CAPITOLO 3 3 Parte sperimentale In questo capitolo si descrive il lavoro sperimentale, eseguito in laboratorio, mosso dall'obiettivo di verificare l'effettiva utilità degli indici definiti nel capitolo precedente in termini di predizione delle prestazioni del manipolatore. Si descrivono pertanto le modalità di acquisizione dei dati sperimentali, la loro organizzazione e la loro rappresentazione. Al termine del capitolo si effettua un confronto tra i risultati sperimentali e i risultati teorici. 3.1 Prove sperimentali Al fine di verificare la validità degli indici definiti nel capitolo precedente si sono effettuate delle prove sperimentali sul manipolatore parallelo Adept Quattro s650HTM. Obiettivo dell'esperimento consiste nel verificare una corrispondenza tra la mappatura dello spazio di lavoro suddiviso per zone sulla base del valore ottenuto dal calcolo degli indici e la mappatura dello spazio di lavoro tracciata sulla base delle prestazioni effettivamente misurate. Per prestazioni del manipolatore, in questo lavoro, si intende: – l'intervallo di tempo che ci impiega l'organo terminale ad effettuare un determinato movimento: il manipolatore dispone di prestazioni migliori nelle zone dello spazio di lavoro dove, a parità di movimento eseguito, impiega un 41 tempo minore nello spostamento del suo organo terminale. – le misure di velocità acquisite tramite accelerometro: il manipolatore dispone di prestazioni migliori nelle zone dello spazio di lavoro dove, a parità di movimento eseguito, si muove più velocemente. 3.2 strumentazione L'analisi sperimentale è stata eseguita sul manipolatore Adept Quattro s650HTM. Il manipolatore è stato programmato utilizzando il linguaggio di programmazione proprio dei robot di marchio Adept, ossia Adept V+. Per misurare la velocità dell'end-effector è stato utilizzato un accelerometro MEMS. Fig. 3.1- Accelerometro sull'organo terminale. 42 L'accelerometro misura le accelerazioni per spostamenti lungo la direzione normale rispetto al piano su cui è vincolato. La Fig. 3.1 riporta come è stato montato l'accelerometro sull'end-effector. Per attaccarlo si è usata la cera d'api e per sicurezza si è fatto anche un giro di scotch carta come si vede in foto. Quindi le prove effettuate sono state eseguite lungo la direzione normale al piano su cui è vincolato l'accelerometro. Il segnale in uscita dall'accelerometro è stato amplificato da un sistema di acquisizione dati (DAQ). Il sistema utilizzato è dell' HBM, modello MGC AB12 (Fig. 3.2). Questo sistema consente di acquisire ed amplificare il segnale, inoltre permette anche di eseguire altre operazioni sul segnale acquisito, quali operazioni di filtraggio, di integrazione numerica. Figura 3.2- DAQ MGC AB12 43 3.3 Misura delle prestazioni Per misurare le prestazioni del manipolatore nell'intero spazio di lavoro e' necessario scegliere una strategia di rilevamento informazioni impiegati per effettuare lo spostamento. Le scelte da effettuare in fase di definizione di questa strategia si basano principalmente su tre punti: 1. localizzazione delle misure nello spazio di lavoro; 2. percorso da far seguire all'organo terminale; 3. caratteristiche del movimento da misurare. Maggiori saranno i punti ai quali vengono eseguiti i movimenti da misurare e meno approssimati saranno i risultati dell'interpolazione che permette di mappare l'intero spazio di lavoro. Di contro, chiaramente, risulta che al crescere delle misure aumenta anche il tempo di rilevamento. Va quindi effettuata una scelta di compromesso che, oltre a tenere conto delle esigenze appena descritte, deve considerare che una buona interpolazione dipende anche dal grado di dispersione di questi punti all'interno dello spazio di lavoro. Una cosa molto importante è che i punti dello spazio di lavoro, scelti per ricavare informazioni di prestazione, devono essere gli stessi dei punti analizzati nella prova simulata in modo che alla fine si riescano a confrontare dei grafici tra simulata e sperimentale coerenti. Come si può notare nella figura 3.3, lo spazio di lavoro e costituito da un cilindro che termina, dal lato della base inferiore, con un tronco di cono. Le misure del volume sono descritte in figura 3.4 44 Fig. 3.3 - Spazio di lavoro di Adept Quattro s650HTM 45 Fig. 3.4 - Misure dello spazio di lavoro Si e' deciso quindi di intersecare il volume con nove piani perpendicolari all'asse z che distano uno dall'altro di 50 millimetri. Il piano più alto viene posto ad altezza -800 millimetri rispetto all'asse z del sistema di riferimento assoluto; di conseguenza cinque di questi piani attraverseranno la zona dello spazio di lavoro a forma cilindrica mentre i rimanenti quattro intersecheranno la zona sottostante a forma di tronco di cono. In ciascuno di questi piani si costruiscono dodici circonferenze aventi tutte lo stesso centro CR che è il punto che permette al centro di simmetria della piattaforma mobile di essere allineato verticalmente con l'origine del sistema di riferimento assoluto. CR (0.03075 ; 0) [ m] 46 Le circonferenze più interne, in ogni piano, avranno un raggio pari alla somma dell'ascissa, xCR, del centro CR e della distanza radiale, r tra una circonferenza e la successiva. Nei piani che attraversano il volume cilindrico la distanza radiale tra due circonferenze successive è pari a 48 millimetri. Tale distanza radiale, per i piani che intersecano il tronco di cono, decresce di 6.25 millimetri ogni qualvolta che si scende di piano. In tabella 3.1 si può osservare il valore della distanza radiale tra due circonferenze successive per ogni piano analizzato. Tab. 3.1: Distanza radiale tra due circonferenze successive nei piani analizzati z -800 [mm] -850 [mm] -900 [mm] -950 [mm] -1000 [mm] -1050 [mm] -1100 [mm] -1150 [mm] -1200 [mm] Δr(z) 48 [mm] 48 [mm] 48 [mm] 48 [mm] 48 [mm] 41.75 [mm] 35.5 [mm] 29.25 [mm] 23 [mm] Ciascuna di queste circonferenze viene suddivisa in trentasei archi, agli estremi di ciascuno di questi archi si individuano i punti attorno al quale l'organo terminale effettuerà il movimento unidirezionale lungo i tre assi principali. Per ogni circonferenza vengono quindi effettuate 432 misurazioni che corrispondono ai 432 punti identificati in ogni 47 piano. La disposizione dei punti per ogni piano si può osservare nelle figure 3.5, dove si osserva la dispersione dei punti nei piani che intersecano la zona cilindrica. Le dispersione dei punti nella zona conica è quasi uguale solo che ogni volta si diminuisce il raggio a mano mano che si scende. La decisione di disporre i punti di rilevamento delle misure in questo modo suggerisce, per una questione di semplicità, di descrivere la posizione di ogni punto nello spazio per mezzo di un sistema di riferimenti a coordinate cilindriche piuttosto che attraverso un sistema di riferimento cartesiano. Ciascun punto viene quindi caratterizzato da tre coordinate: una distanza che identica la sua distanza dall'asse z, un angolo che è nullo se il punto appartiene al semipiano delle x positive ed è retto se appartiene al semipiano delle y positive, e dall'altezza z. Il manipolatore lavora pero' in coordinate cartesiane per Fig. 3.5 - Dispersione delle misure dello spazio di lavoro: piani -800 mmz-1000 mm 48 cui si scrivono di seguito le equazioni per passare da un sistema di riferimento all'altro: { x= x CR+cos(α) y=ρsin (α) z =z (3.1 Il percorso effettuato dall'organo terminale in fase di misurazione inizia dal piano posto a -800 mm e va fino a -1200 mm, in tutto sono 9 piani. Un piano per volta va dal grado 0 fino al grado 360 in 36 step. Per ogni grado esegue 12 misurazioni che sono i 12 cerchi ij cui è suddiviso il piano. Spostamenti con ampiezze troppo elevate andrebbero a valutare le prestazioni in posizioni troppo distanti dai punti di indagine. Va pero' detto che l'ampiezza delle traslazioni deve essere sufficientemente elevata da permettere una rilevazione significativa dei tempi di spostamento, in caso contrario la differenza tra le misure nelle diverse zone dello spazio di lavoro rischia di non essere apprezzabile. Si e' quindi deciso di effettuare movimenti di semi ampiezza pari a trenta, cinquanta e settanta millimetri. In riferimento alla figura 3.6 sia C il punto di indagine, nel corso della misurazione del tempo di traslazione, l'organo terminale si posizionerà in corrispondenza del punto R facendo partire un timer. L'organo terminale si sposterà quindi nel punto L per poi tornare nel punto R. Questo movimento viene ripetuto per cinque volte e una volta che l'organo terminale torna definitivamente nel punto R il timer viene fermato. La misura di tempo viene cosi registrata. 49 Fig. 3.6 - Moto traslatorio attorno al punto di indagine E' fondamentale che nel corso del movimento l'organo terminale segua la traiettoria rettilinea che e' appena stata definita andando a raggiungere, nel corso delle cinque iterazioni, precisamente i punti L e R. Per questo, per permettere questa traslazione all'organo terminale, viene disabilitata la funzione “continuous path” in occasione di questo movimento. Si riporta in appendice il codice del programma “motions” scritto con il linguaggio proprietario di Adept, V+, che riporta le istruzioni fornite al manipolatore per effettuare le misure dei tempi. Il programma in V+ lo si può vedere nell'appendice A. 3.4 Raccolta dei dati sperimentali Presa la decisione su come andare a raccogliere le misure sull'intero spazio di lavoro va deciso come raccogliere e organizzare questi dati. Alla fine andremo a raccogliere due tipi di informazione per ricavare la prestazione di velocità del robot: – il tempo che impiega a fare i cinque movimenti. 50 – la misura di accelerazione. 3.4.1 Misure di tempo Ogni misurazione e' costituita da 3888 dati temporali ripartiti sui nove piani di indagine. Si e' deciso quindi di andare a inserire questi dati in nove matrici differenti ognuna contenente i dati relativi al piano di indagine corrispondente. Ogni matrice è contenuta in un file “.txt” relativo allo specifico piano. Ciascuna di queste matrici è composta da trentasei righe, che corrispondono ai valori angolari che possono assumere le fasi dei punti di indagine, e da dodici colonne, che rappresentano i valori delle possibili distanze radiali che possono assumere i punti di indagine. Sia quindi tij il valore temporale generico misurato e sia posto nell' i-esima riga e nella j-esima colonna della matrice appena descritta. E' possibile risalire alla posizione del punto attorno al quale e' stata effettuata la misura attraverso le seguenti relazioni: ρ=Δ r (z )∗ j α=10 ̊∗(i−1) In 4.9 e' possibile osservare la forma di una matrice relativa a uno dei piano che intersecano la zona dello spazio di lavoro a forma cilindrica. Si riporta in appendice il codice del programma “write” che permette di registrare i tempi misurati nelle matrici appena definite. 51 (3.2 Fig. 3.7 - Matrice per la raccolta dei dati sperimentali 3.4.2 Misure di accelerazione La misura dell'accelerazione ha lo scopo di ricavarne poi una media della velocità per capire, come per i tempi, dove lavorerà meglio il manipolatore. Alla fine dell'acquisizione avrò un file contenente un vettore che rappresenta l'intero segnale di accelerazione di un piano. 52 Di un solo piano per facilitare la sua elaborazione e soprattutto per motivi di pesantezza del file che ovviamente, quest'ultima, è proporzionale al tempo impiegato per l'acquisizione. 3.5 Elaborazione dati Questo paragrafo come quello precedente si divide tra i dati di tempo e quelli di accelerazione perché hanno due elaborazioni completamente diverse. Questo è dovuto dalla differenza di dati che abbiamo rilevato. 3.5.1 Elaborazione tempi Una volta registrati i dati misurati e organizzati nelle matrici precedentemente definite risulta necessario riuscire a darne una rappresentazione in modo tale da interpretarli e ricavarne informazioni utili. A tal proposito si e' deciso di raffigurare ogni misurazione, caratterizzata da una determinata direzione dello spostamento misurato, con la rappresentazione bidimensionale di ognuno dei nove piani che la costituiscono. Per ogni piano misurato, a partire dai valori dei tempi misurati nei diversi punti del piano stesso, si effettua un'interpolazione spaziale tramite calcolatore che permette di creare dei diagrammi a due dimensioni in cui vengono evidenziate delle curve di livello. Tali curve permettono di identificare delle aree, all'interno del piano analizzato, dove si stima che le misure producano il medesimo risultato. Ciò permette di andare ad identificare in quali aree del piano, dal punto di vista sperimentale, il manipolatore ottiene le sue migliori prestazioni e in quali aree del piano, di contro, non risulta sufficientemente performante. 53 Si ricorda che il valore degli intervalli di tempo ottenuti dalle misurazioni sono inversamente proporzionali alle prestazioni del manipolatore. Per questo motivo all'origine dei dati per la costruzione dei diagrammi vengono presi gli inversi dei valori misurati. 3.5.2 Elaborazione delle accelerazioni Con il vettore di accelerazione io devo trovare una media della velocità. Per trovare la media della velocità ho operato in tre modi: 1) Facendo la media dei picchi di accelerazione. 2) Facendo la media del segnale di velocità che usciva direttamente dal sistema di acquisizione. 3) Facendo la media del segnale di velocità che ho ottenuto integrando l'accelerazione. 1) Picchi di accelerazione Prima di tutto ho filtrato il segnale con la funzione “filter” di “matlab” come si vede nel file 'analisi_acc' in appendice. Ho diviso il segnale in 36 vettori ognuno dei quali contenente tutti i movimenti di un singolo angolo riferito ad un singolo piano studiato (Fig 3.8). 54 Fig 3.8 – Vettore riferito ad un singolo angolo di un piano I 36 vettori in particolari contengono 12x5 cicli di movimento. Ogni singolo vettore dei 36 è stato diviso a sua volta in 12 in modo da avere un vettore per ogni punto punto dello spazio di lavoro analizzato con una funzione chiamata 'crea_finestra_acc' (Fig 3.9) . 55 Fig 3.9 – Vettore riferito ad un singolo punto di un piano In questo modo ho potuto eseguire la media della velocità facendo: ( piccomax− piccomin ) 2 56 (3.3 Fig 3.9 – Media di velocità con i picchi di accelerazione (z=-800 mm) con movimento di 5cm Fig 3.10 – Media di velocità con i picchi di accelerazione (z=-800 mm) con movimento di 7cm 2) Media direttamente della velocità Dal sistema di acquisizione usciva direttamente un segnale di velocità. 57 Ne ho tolto la media ed ho, come quello di accelerazione, diviso in 36 vettori contenenti per ognuno tutti i movimenti di un singolo angolo riferito ad un singolo piano. Poi per ogni singolo vettore dei 36 ho trovato, con un'apposita funzione chiamata “find_peak” ( appendice), tutti i picchi che in tutto dovevano essere 120 per ogni vettore. Quindi erano 10 picchi, 5 positivi e cinque negativi, per ogni punto dello spazio di lavoro. A questo punto ho potuto fare la media dei picchi. Fig 3.11 – Media della velocità (z=-800 mm) con movimento di 5cm 58 Fig 3.12 – Media della velocità (z=-800 mm) con movimento di 7cm 3) Media di velocità integrata dall'accelerazione Per esser sicuro che il grafico ottenuto dalla velocità data direttamente dal sistema di acquisizione fosse esatto, ho integrato il segnale di accelerazione per ottenere la velocità. Fig 3.13 – Velocità in uscita dal sistema di acquisizione. 59 Fig 3.14 – Velocità integrata dall'accelerazione. Vedendo l'irregolarità della forma del segnale ho dovuto cambiare i programmi precedenti perché contavano che il segnale fosse all'incirca a media nulla. Ho sfruttato il fatto che il segnale di velocità essendo l'integrale dell'accelerazione doveva avere gli stessi indici per quanto riguardava l'inizio e la fine del movimento nel singolo punto dello spazio di lavoro. Cosi, ho modificato le funzioni “crea_finestra” e “crea_finestra_acc” in modo che mi restituissero anche gli indici rispetto al vettore originale in modo che poi potessi usarli per trovare i vettori nell'ultimo segnale integrato. Una volta trovati i vettori ho potuto trovare i picchi e farne la media. I grafici erano coerenti con quelli trovati con il vettore di velocità preso direttamente dal sistema di acquisizione come si vede confrontando i grafici (3.15) e (3.16). L'unica cosa è che il grafico (3.16) cioè quello con la velocità ricavata dall'integrazione dell'accelerazione ha delle strisce che molto probabilmente sono dovute alla deriva. 60 Fig 3.15 – Media della velocità (z=-900 mm) con movimento di 5cm Fig 3.16 – Media della velocità integrata (z=-900 mm) con movimento di 5cm 61 3.6 Confronti tra la simulazione e il sperimentale Ora posso confrontare i grafici ottenuti dalla prova simulata con quelli della prova sperimentale. Nei grafici seguenti ho analizzato i piani z= -1000, -950 e -900 mm confrontati con la media di velocità ricavata dai picchi di accelerazione e con la media della velocità presa direttamente dal sistema di acquisizione. Si nota in tutti i piani che c'è abbastanza somiglianza tra le zone indicate più performanti dai grafici simulati da quelli sperimentali. Soprattutto si nota che il picco di velocità, cioè dove il manipolatore si muove più velocemente, combacia circa in tutti i grafici. Ragionando al contrario si nota che le zone meno performanti cioè quelle di colore azzurro blu coincidono. Qui di seguito riporto alcuni dei piani che ho confrontato. 62 Iniziamo con il piano z=-1000 mm: Fig 3.17 – Media della velocità (z=-1000 mm) con movimento di 7cm Fig 3.19 – Media di velocità con i picchi di accelerazione (z=-1000 mm) con movimento di 7cm 63 Fig 3.18 – Grafico simulato (z=-1000 mm) Piano z = -950 : Fig 3.19 – Media della velocità (z=-950 mm) con movimento di 7cm 64 Fig 3.20 – Media di velocità con i picchi di accelerazione (z=-950 mm) con movimento di 7cm Fig 3.21 – Grafico simulato (z=-950 mm) 65 Piano z = -900 : Fig 3.19 – Media della velocità (z=-900 mm) con movimento di 5cm Fig 3.19 – Media di velocità con i picchi di accelerazione (z=-900 mm) con movimento di 5cm 66 Fig 3.20 – Grafico simulato (z=-900 mm) 67 Conclusioni L' indice studiato dà dei buoni risultati perché indica le zone dello spazio di lavoro del manipolatore parallelo in cui lavora in modo migliore. Come indica le zone con prestazioni più elevate, indica anche le zone in cui il robot lavora con prestazioni più scadenti. Risultato molto importante è che individua con precisione il nucleo in cui lavora più velocemente. Cosa negativa è che dà risultati buoni e non ottimi come per i robot a cavo e robot seriali in cui le prove sperimentali e simulati combaciavano alla perfezione. 68 BIBLIOGRAFIA [1] R. R. A. T. G. Boschetti, «Optimal robot positioning using task-dependent and direction-selective performance indexes: General definitions and application to a parallel robot,» Robotics and Computer, vol. 29, pp. 431-443, 2013. [2] R. R. A. T. G. Boschetti, «Parallel Robot Translational Performance Evaluation through Direction-Selective Index (DSI),» Journal of Robotics, vol. 2011, n. 129506, p. 14, 2011. [3] Lorenzo Lazzari, <<Sviluppo di un indice dinamico PER LA PREVISIONE DEL COMPORTAMENTO DI MANIPOLATORI PARALLELLI >> 2011-2012 [4] A. T. G. Boschetti, «Performance evaluation for cable direct driven robot,» in Conference on Engineering Systems Design and Analysis, Copenaghen, 2014. 69 70 Appendica A Di seguito ci sono i programmi V+ per comandare il manipolatore parallelo: Programma per muovere il robot: .PROGRAM fede3() ; spazio di lavoro completo antiorario ang = 10 ; incremento angolare incr = 48 ; incremento raggio 10 48 ; Semiampiezze movimenti unidirezionali di = 30 ; x dj = 0 ; y dk = 0 ; z ; centro indagine x0 = 30.75 y0 = 0 z0 = -800 ; Coordinate punto di partenza x1 = incr+x0 y1 = 0 ATTACH () SPEED 100 MONITOR SPEED 100 ALWAYS ACCEL (0) 100, 100 CPOFF ALWAYS 71 ;SPEED 2 MOVE TRANS(x1,y1,z0,0,180,180) BREAK DELAY 0.2 FOR k = 1 TO 9 IF k > 5 THEN incr = incr-6.25 ; -6.25 END TYPE "-----", k ; stampa a video FOR i = 1 TO 36 ;36 TYPE " ", i FOR j = 1 TO 12 ;12 x = (incr*(j))*COS(ang*(i-1))+x0 y = (incr*(j))*SIN(ang*(i-1))+y0 z = z0-50*(k-1) MOVE TRANS(x-di,y-dj,z-dk,0,180,180) SPEED 100 BREAK tempo = TIMER(0) FOR k1 = 1 TO 5 MOVE TRANS(x+di,y+dj,z+dk,0,180,180) MOVE TRANS(x-di,y-dj,z-dk,0,180,180) END matrix[i,j] = TIMER(0)-tempo 72 ;SPEED 2 TYPE matrix[i,j] ; stampa a video ;DELAY 0.1 END END ; TYPE TIMER( 1 ) CALL write() END DETACH () .END Programma per salvare i tempi su file '.txt': .PROGRAM write() ATTACH (dlun, 4) "DISK" ; Attach the di sk i n t e r f a c e CASE k OF VALUE 1: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_800.txt " VALUE 2: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_850.txt" VALUE 3: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_900.txt" VALUE 4: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_950.txt " VALUE 5: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_1000.txt " VALUE 6: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_1050.txt " 73 VALUE 7: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_1100.txt " VALUE 8: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_1150.txt " VALUE 9: FOPENW (dlun) "D:\PROGRAM\FEDERICO\xL_1200.txt " END FOR i = 1 TO 36 $lines[i] = "" FOR j = 1 TO 12 $lines[i] = $lines[i]+$ENCODE(matrix[i,j])+" " END $lines[i] = $lines[i]+";" END FOR i = 1 TO LAST($lines[]) ; Loop for all t WRITE (dlun) $lines[i] ; to be written END FCLOSE (dlun) ; Close the file DE DETACH (dlun) ; .END Qui ci sono i programmi matlab che ho usato per trovare il nuovo indice: Programmazione lineare senza vincolo sulla rotazione dell'organo terminale: close all clear %% Inizializzo tutte le variabili 74 a_init % richiamo la funzione inizializzazione [X,Y,Z] = meshgrid(-0.6:0.01:0.6,-0.6:0.01:0.6,-1.2:0.01:-0.8); XX=zeros(36,12,9); YY=zeros(36,12,9); ZZ=zeros(36,12,9); G=zeros(36,12,9); decr_rad = 0.048; incr_ang = pi/18;%10; z_s=-0.8; theta=0; %cicli for per trovvare i punti dello spazio di lavoro for kk=1:9 if kk>5 decr_rad=decr_rad-0.00625; end for ii=1:36 for jj=1:12 XX(ii,jj,kk)= (jj)*decr_rad*cos(incr_ang*(ii-1))+0.03075; YY(ii,jj,kk)= (jj)*decr_rad*sin(incr_ang*(ii-1)); ZZ(ii,jj,kk)= z_s-(0.05*(kk-1)); x = XX(ii,jj,kk); y = YY(ii,jj,kk); z = ZZ(ii,jj,kk); % per passare i valori a b_pos b_pos; if (norm(P(1,:)-B(1,:))<bil+bie) && (norm(P(2,:)B(2,:))<bil+bie) && (norm(P(3,:)-B(3,:))<bil+bie) && (norm(P(4,:)B(4,:))<bil+bie) c_vel; % metodo con pseudoinversa %%{ K1=bie*invJ(:,1:3); % matrice per fare la pseudoinversa senza vincolo sulla rotazione J3=(K1'*K1)\K1'; % pseudoinversa 75 %} f = [J3(1,1); J3(1,2); J3(1,3); J3(1,4)] ; prima riga J Aeq = [J3(2,1) J3(2,2) J3(2,3) J3(2,4) seconda e terza riga di J J3(3,1) J3(3,2) J3(3,3) J3(3,4)]; beq=[0 ;0]; LB=[-1;-1;-1;-1]; UB=[1,1,1,1]; options = optimset('Display','none'); non avere scritte a video x = linprog(f,[],[],Aeq,beq,LB,UB,[],options); G(ii,jj,kk) = abs(f'*x); else end end G(ii,jj,kk) = NaN; end end GF = griddata(XX,YY,ZZ,G,X,Y,Z,'linear'); max(max(max(GF))) min(min(min(GF))) %plotto il 3D figure (1); contourslice (X,Y,Z,GF,[],0,-1.2:0.05:-0.8,0.3:0.02:1.2); colorbar; view([-15,15]); xlabel('X[m]');ylabel('Y[m]');zlabel('Z[m]'); grid on; axis equal; %plotto un singolo piano figure (2); contourslice (X,Y,Z,GF,[],[],-0.95,0.15:0.02:1.37); colorbar; view([0,90]); title('linProg3 ') xlabel('X[m]');ylabel('Y[m]');zlabel('Z[m]'); grid on; axis equal; 76 % f % Aeq % per Programmazione lineare con il vincolo sulla rotazione dell'organo terminale: close all clear %% Inizializzo tutte le variabili a_init % richiamo la funzione inizializzazione [X,Y,Z] = meshgrid(-0.6:0.01:0.6,-0.6:0.01:0.6,-1.2:0.01:-0.8); XX=zeros(36,12,9); YY=zeros(36,12,9); ZZ=zeros(36,12,9); G=zeros(36,12,9); decr_rad = 0.048; incr_ang = pi/18; z_s=-0.8; theta=0; %% Cicli for per i punti dello spazio di lavoro: for kk=1:9 if kk>5 decr_rad=decr_rad-0.00625; end for ii=1:36 for jj=1:12 XX(ii,jj,kk)= (jj)*decr_rad*cos(incr_ang*(ii-1))+0.03075; YY(ii,jj,kk)= (jj)*decr_rad*sin(incr_ang*(ii-1)); ZZ(ii,jj,kk)= z_s-(0.05*(kk-1)); x = XX(ii,jj,kk); y = YY(ii,jj,kk); z = ZZ(ii,jj,kk); % per passare i valori a b_pos b_pos; if (norm(P(1,:)-B(1,:))<bil+bie) && (norm(P(2,:)B(2,:))<bil+bie) && (norm(P(3,:)-B(3,:))<bil+bie) && (norm(P(4,:)B(4,:))<bil+bie) 77 c_vel; K=[invJ(:,1:3)*bie invJ(:,4)]; J4=K'/(K*K'); % pseudoinversa J41=(K'*K)\K'; % pseudoinversa f = [J4(1,1); J4(1,2); J4(1,3); Aeq = [J4(2,1) J4(2,2) J4(2,3) seconda e terza riga di J J4(3,1) J4(3,2) J4(3,3) J4(4,1) J4(4,2) J4(4,3) J4(1,4)] ; J4(2,4) % f prima riga J % Aeq J4(3,4) J4(4,4)]; beq=[0;0;0]; LB=[-1;-1;-1;-1]; UB=[1,1,1,1]; options = optimset('Display','none'); non avere scritte a video x = linprog(f,[],[],Aeq,beq,LB,UB,[],options); % per G(ii,jj,kk) = abs(f'*x); else G(ii,jj,kk) = NaN; end end end end GF = griddata(XX,YY,ZZ,G,X,Y,Z,'linear'); max(max(max(GF))) min(min(min(GF))) %plotto il 3D figure (1); contourslice (X,Y,Z,GF,[],0,-1.2:0.05:-0.8,0.2:0.02: 1.21); % 0.2:0.02: 1.21 per J41 modificando con bie su c_vel colorbar; % 0.1:0.01: 0.85 per J4 modificando con bie su c_vel view([-15,15]); xlabel('X[m]');ylabel('Y[m]');zlabel('Z[m]'); grid on; axis equal; 78 %plotto un singolo piano figure (2); contourslice (X,Y,Z,GF,[],[],-1,0.2:0.004: 1.21); colorbar; view([0,90]); xlabel('X[m]');ylabel('Y[m]');zlabel('Z[m]'); grid on; axis equal; Programma usando il metodo descritto in (2.6.2): close all clear %% Inizializzo tutte le variabili a_init % richiamo la funzione inizializzazione [X,Y,Z] = meshgrid(-0.6:0.01:0.6,-0.6:0.01:0.6,-1.2:0.01:-0.8); XX=zeros(36,12,9); YY=zeros(36,12,9); ZZ=zeros(36,12,9); G=zeros(36,12,9); decr_rad = 0.048; incr_ang = pi/18;%10; z_s=-0.8; theta=0; %% Cicli for: for kk=1:9 if kk>5 decr_rad=decr_rad-0.00625; end for ii=1:36 for jj=1:12 XX(ii,jj,kk)= (jj)*decr_rad*cos(incr_ang*(ii-1))+0.03075; YY(ii,jj,kk)= (jj)*decr_rad*sin(incr_ang*(ii-1)); ZZ(ii,jj,kk)= z_s-(0.05*(kk-1)); x = XX(ii,jj,kk); y = YY(ii,jj,kk); z = ZZ(ii,jj,kk); 79 % per passare i valori a b_pos b_pos; %controllo if (norm(P(1,:)-B(1,:))<bil+bie) && (norm(P(2,:)B(2,:))<bil+bie) && (norm(P(3,:)-B(3,:))<bil+bie) && (norm(P(4,:)B(4,:))<bil+bie) c_vel; prima_colonna=invJ(:,1); xpunto_invJ=abs(1/prima_colonna(1,1)); for i=2:4 if xpunto_invJ > abs(1/prima_colonna(i,1)) xpunto_invJ=abs(1/prima_colonna(i,1)); end end G(ii,jj,kk) = xpunto_invJ; else end end G(ii,jj,kk) = NaN; end end GF = griddata(XX,YY,ZZ,G,X,Y,Z,'linear'); max(max(max(GF))) min(min(min(GF))) % plotto 3D figure (1); contourslice (X,Y,Z,GF,[],0,-1.2:0.05:-0.8,0.17:0.01:1); colorbar; view([-15,15]); xlabel('X[m]');ylabel('Y[m]');zlabel('Z[m]'); grid on; axis equal; %plotto singolo piano figure (2); 80 contourslice (X,Y,Z,GF,[],[],-0.9,0.17:0.01:1); colorbar; view([0,90]); title('simulataMin X (Z=-0.9m) ') xlabel('X[m]');ylabel('Y[m]');zlabel('Z[m]'); grid on; axis equal; 81
© Copyright 2025 ExpyDoc