Documento PDF

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