Sei sulla pagina 1di 11

Progetto di Laboratorio di Robotica

Università Della Calabria

DIPARTIMENTO DI MECCANICA

A.A 2009/2010

STUDIO DELLA CINEMATICA DIRETTA E INVERSA DI UN MANIPOLATORE E


SIMULAZIONE DEL SUO COMPORTAMENTO TRAMITE L'AUSILIO DI
MATLAB

GRUPPO 4

Baldascino Vittorio
Borrelli Alfredo
Caldarelli Luca
Milanese Rosario
Zecca Andrea
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

Cinematica diretta ed inversa di un manipolatore a 4 gradi di libertà

Il manipolatore in analisi è di tipo planare a quattro gradi di libertà come evidenzia la


figura sotto riportata. In particolare, è costituito da 2 giunti prismatici, 2 rotoidali e 4
bracci di cui 3 di lunghezza fissa e uno di lunghezza variabile grazie alla presenza del
giunto prismatico che ne controlla l'estensione.

FIGURA 1

Il giunto prismatico in figura 1 posizionato sullo zero permette una traslazione


sull'asse x verso destra con una corsa  che varia da 0 a 40. Ad esso è fissato
rigidamente il primo link di lunghezza  (pari a 10) che reca all'estremità opposta un
giunto rotoidale che permette un'inclinazione del link successivo. Tali giunti hanno
dei limiti costruttivi che fissano la rotazione tra -π/2 e π/2. Collegato al link 
tramite questo giunto vi è un secondo link di lunghezza  (pari a 10), che collega la
parte bassa del robot a quella a cui è collegato l'endeffector tramite un braccio
estensibile regolato da un terzo grado di libertà assegnato al secondo giunto
prismatico  avente le stesse limitazioni di corsa del primo ( un minimo di 0 ed un
massimo di 40).
Gruppo 4
1
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

Tale limitazione permette una sovrapposizione totale del giunto prismatico  con il
successivo giunto rotoidale, nel caso in cui la corsa di  risulti essere nulla.
Infine, l'endeffector è connesso alla struttura sopra descritta mediante l'ultimo giunto
rotoidale appena citato al link di lunghezza  (pari a 15).
Obiettivo del lavoro è quello di determinare i parametri di giunto, a partire dalle
coordinate del punto in cui deve trovarsi l'endeffector e dall'angolazione da esso
assunta. Come ausilio per l'elaborazione dei dati, è stato utilizzato il software
MATLAB che ci ha permesso anche una simulazione grafica del funzionamento del
manipolatore.
Per prima cosa analizziamo la cinematica diretta, grazie alla quale, a partire dalla
conoscenza dei parametri di giunto e dei collegamenti, è possibile determinare le
matrici di rototraslazione indispensabili per il plottaggio delle coordinate dei singoli
giunti. Come visibile dalla figura 2, sono state posizionate delle terne di riferimento
su ogni giunto, tenendo conto di una convenzione prefissata, secondo la quale
bisogna collocare l'asse z lungo l'asse di rotazione del giunto rotoidale e lungo la
direzione di scorrimento del giunto prismatico. Utilizzando la regola della mano
destra, di conseguenza, vengono determinate versi e direzioni degli altri due assi della
terna levogira.

Figura 2

Gruppo 4
2
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

É stato preferito come asse di riferimento, cioè ad angolazione nulla, l'asse


coincidente con la verticale (ossia l'asse y della terna base, successivamente introdotta)
anziché l'asse x, solitamente scelto, per motivi pratici. Il verso positivo degli angoli è
quello antiorario come da normale convenzione.

Figura 3

É da notare che la somma degli angoli θ1 e θ2 risulta essere pari a ϕ, che rappresenta
l'angolo d'inclinazione dell'endeffector.
Per determinare le matrici di rototraslazione si è effettuato un cambiamento di
riferimento, a partire dalla terna fissata sul primo prismatico fino a risalire alla terna
dell' endeffector. Da notare che la terna presente sul primo giunto, indicata con il
pedice 0, non è vincolata ad esso ma si trova fissata sul punto 0 dell' area di disegno
di MATLAB.
Illustriamo nel dettaglio le operazioni da svolgere per passare dalla terna 0 a quella 1
e dalla terna 1 alla 2. Le altre operazioni saranno effettuate analogamente e quindi
riporteremo soltanto il procedimento matematico e le soluzioni raggiunte.

Gruppo 4
3
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

Per far coincidere la terna 0 a quella 1 è necessario traslarla di  in direzione x e di


 in direzione z. Dopo che le due origini coincidono nello stesso punto, si effettua
una rotazione intorno all'asse x di -π/2 non effettuando nessuna traslazione. Dunque,
per determinare la  basta moltiplicare le due matrici come di seguito riportato.

1 0 0  1 0 0 0

= 0 1 0 0  0 0 1 0
0 0 1  0 −1 0 0
0 0 0 1 0 0 0 1

Per continuare nell'operazione, è necessario far sovrapporre la terna 1 al sistema di


riferimento 2, che ha l'asse z coincidente con la direzione di traslazione del secondo
giunto prismatico di corsa  .
Il primo passaggio consiste nella rotazione di θ1 intorno all'asse z. Successivamente,
trasliamo la terna 1 di  lungo il suo asse x in modo da sovrapporre le due origini.
Terzo passaggio è quello di ruotare intorno a y di π/2 in senso antiorario. Così
facendo le due terne avranno in comune l'asse z. Per farle coincidere del tutto,
effettuiamo l'ultima rotazione intorno a tale asse di π/2 che porta le due terne ad
essere perfettamente coincidenti. Otteniamo così la matrice  :

 − 0 0 1 0 0  0 0 1 0 0 −1 0 0
A =   0 0 0 1 0 0  0 1 0 0  1 0 0 0
0 0 1 0 0 0 1 0 −1 0 0 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1

Senza riportare i passaggi logici in quanto banali e ripetitivi, di seguito diamo le


ultime due matrici, ossia  e  :

1 0 0 0 1 0 0 0 0 1 0 0
A = 0 1 0 0  0 0 1 0 −1 0 0 0
0 0 1  0 −1 0 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1

Gruppo 4
4
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

 − 0 0 1 0 0 
A =   0 0 0 1 0 0
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1

Una volta determinate le matrici sopra riportate, basta effettuare una moltiplicazione
per ottenere le matrici che riferiscono le coordinate dei vari giunti a quella centrata
nel punto (0,0) che per noi è il sistema di riferimento (Z0, X0).

• A
= A
∗ A
• A
= A
∗ A
• A
= A
∗ A

Poiché la terna di riferimento con cui disegna MATLAB è quella comune (X,Y,Z)

0 0 1 0
bisogna effettuare un'altra rotazione con la matrice B di seguito riportata.

! = 1 0 0 0
0 1 0 0
0 0 0 1

Ora basta estrarre dalle matrici con il pedice 0 l'ultima colonna ed avremo a
disposizione le coordinate dei giunti nonché dell' endeffector, che passate alla
funzione plot del programma, restituisce graficamente la configurazione del
manipolatore congiungendo i singoli punti con dei segmenti.
Nel nostro caso il foglio di lavoro che contiene tale funzione è progetto in cui è
salvata la funzione che, ricevendo in ingresso le variabili di giunto e le lunghezze dei
link, non restituisce nulla se non il grafico della configurazione del robot.

Calcolo della cinematica inversa del manipolatore.

A questo punto non ci resta che determinare i parametri da dare in ingresso alla
funzione che disegna la configurazione del robot; per fare ciò abbiamo bisogno del

Gruppo 4
5
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

calcolo della cinematica inversa che dovrà ricevere in ingresso le coordinate di arrivo
dell'endeffector restituendo i parametri di giunto da assegnare al manipolatore.
Per il calcolo della cinematica inversa impostiamo un sistema di 3 equazioni in 4
incognite (d1,d2,θ1,θ2) che matematicamente fornisce infinite soluzioni. Per poter
trovare la corretta configurazione del manipolatore, si tiene conto del fatto che esso
risulta essere ridondante, ossia permette di raggiungere, all’interno dello spazio
destro di lavoro, lo stesso punto tramite più configurazioni a parità di inclinazione ϕ.
Approcciando il problema inizialmente dal punto di vista geometrico possiamo

&' =  −  sin θ −   −  sin ( +  )


scrivere il seguente sistema:

%
#
/'0  +   +  +  cos ( +  ) 4
$
#
"3 =  + 
(Il segno meno nella prima equazione deriva dalla nostra particolare convenzione
per gli angoli che hanno lo zero sull'asse y).
Da ciò si capisce che per poter risolvere in maniera finita il sistema è necessario
fissare come parametro una delle quattro variabili, al fine di ottenere le altre dal
sistema stesso. Poiché non sarebbe corretto eliminare in questo modo una variabile di
giunto, che aggiunge un grado di libertà al manipolatore, si è deciso, in prima
approssimazione, di fissare  in modo da risolvere in forma chiusa il sistema.
Le altre variabili risultano pertanto calcolabili mediante le seguenti relazioni:

% = 5(&' +  3 −  ) + (/' −  3 −  ) − 


 

#
#
(− 3 − &' +  )⁄( +  ) 4
 = 676
$ 51 − [(− 3 − &' +  )⁄( +  )]
#
#
"  = 3 − 

Gruppo 4
6
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

Dunque sfruttando le potenzialità di MATLAB, è stato possibile tener conto anche


della variabile di giunto  che inizialmente era stata fissata arbitrariamente.
In particolare, come si può vedere nel file CinInv (funzione che calcola la cinematica
inversa del nostro robot), facciamo variare il valore di  a passi 0,5 da un minimo di
0 ad un massimo di 40 che rappresentano i nostri limiti costruttivi. Così facendo il
software calcolerà gli altri parametri di giunto, se tutti i vincoli costruttivi verranno
rispettati allora la funzione darà in uscita i parametri calcolati con quel valore di  ,
altrimenti itererà il processo incrementando  di 0,5 di volta in volta fino a quando
non troverà un insieme di valori che rispettano i vincoli di progetto. Nel caso in cui
ciò non accada, il programma stamperà su schermo un messaggio che informa
l’utente di aver scelto un punto ed un’inclinazione dell’endeffector non ottenibili
mediante questo manipolatore.
Più in dettaglio, la funzione CinInv riceve in ingresso i parametri ( ,  ,  , &' , /' , 3)
e restituisce, alla fine della procedura sopra descritta, un vettore riga PAR che
contiene i quattro parametri di giunto, nel caso in cui la soluzione sia verificata e
compatibile con i vincoli, altrimenti sarà riempito con valori nulli.
Tali parametri verranno di seguito inviati alla cinematica diretta (file progetto) per
mezzo del vettore PAR. Difatti, tale funzione riceve in ingresso (PAR, ,  ,  , &' , /' )
ed utilizzando le matrici di rototraslazione (descritte ad inizio di questa relazione), si
calcola le coordinate dei vari giunti, comprese quelle dell’endeffector. Infine,
confronta le coordinate dell’endeffector da esso ottenute con quelle fornite dall’utente:
se coincidono plotta graficamente il manipolatore; altrimenti stampa “fuori” nel
Command Window. Tale confronto è necessario poiché, nel caso in cui l’utente
fornisce un punto non raggiungibile dal manipolatore, il software può comunque
fornire una soluzione apparentemente accettabile che però non rispetta i vincoli
progettuali. Così facendo, si evita tale inconveniente e si forniscono solo soluzioni
realmente accettabili, vincolate dal fatto che i giunti rotoidali possono ruotare con un
angolo compreso tra [-π/2 ; π/2],  può traslare tra (0;40) e  può estendersi (0;40).

Gruppo 4
7
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

Ultimo elemento, necessario per poter correlare quanto fatto finora, è la scrittura del
main (da noi chiamato esecution), al quale verranno fornite le coordinate che si
vogliono raggiungere: l’angolazione richiesta, nonché le lunghezze dei link (qui
considerati parametri fissi di progetto, ma comunque adattabili alla situazione che si
preferisce). In tal modo si otterrà il plottaggio di una singola configurazione.
Per poter dare l’idea del manipolatore in azione, è stata creata una matrice di due
righe e dieci colonne (volendo se ne possono aggiungere delle altre) nella quale
vengono inserite coppie di coordinate raggiungibili dall’endeffector del manipolatore
che, passate al programma, vengono disegnate di volta in volta con un intervallo di
0,25 secondi, dando così l’impressione visiva del manipolatore in movimento.
La matrice contiene soltanto le coordinate da raggiungere mentre non considera
variabile l'angolazione dell'endeffector che, invece, avrà un inclinazione fissa
impostabile tramite il valore attribuito a ϕ.

Valutazione dello spazio di lavoro del manipolatore

La valutazione dello spazio di lavoro per un robot è qualcosa di particolarmente


complesso in quanto fa riferimento a parametri variabili.
In generale si distinguono due tipi di spazi di lavoro chiamati destro e non destro. Per
quanto riguarda lo spazio di lavoro destro si può dire che è l'insieme di quei punti che
il manipolatore può raggiungere con almeno due diverse angolazioni del suo
endeffector e quindi può, in linea teorica, effettuarvi delle operazioni. Lo spazio di
lavoro non destro, al contrario, è l'insieme di quei punti che il manipolatore riesce a
raggiungere con una sola configurazione essendo dunque impossibilitato a lavorare in
quella parte di spazio. Ovviamente nell'utilizzo di un robot la determinazione dello
spazio di lavoro destro è fondamentale perché ne permette il suo utilizzo nel rispetto
dei vincoli costruttivi del robot stesso.
Nel nostro caso abbiamo a che fare con un manipolatore a 4 gradi di libertà planare
che, dunque, ha uno spazio di lavoro limitato alle due dimensioni. Una valutazione

Gruppo 4
8
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

precisa e corretta dello spazio di lavoro destro potrebbe essere effettuata tramite
software (anche MATLAB). L'operazione ciclica da effettuare sarebbe quella di far
controllare al programma tutti i punti nell'intorno del nostro manipolatore. Se un
punto è raggiungibile con un solo valore di ϕ allora verrà segnato in rosso, altrimenti
verrà lasciato in bianco. Alla fine di questa operazione si otterrebbe una mappatura di
tutte le coordinate raggiungibili dal nostro robot circondate da una corona in rosso
che evidenzia i punti non destri in cui non possiamo effettuare operazioni complesse
con l'endeffector. Tale operazione non è stata effettuata praticamente, in questo caso,
per la relativa semplicità della valutazione dello spazio di lavoro tramite semplice
considerazioni geometriche che ci hanno permesso di farne una valutazione di
massima. I risultati sono stati riportati nella figura 4 riportata
qui di seguito in cui la parte in arancione, come da leggenda, indica i punti dello
spazio non raggiungibili; la parte bianca (interna alle curve che delimitano lo spazio
di lavoro) rappresenta i punti di lavoro che il manipolatore, mediante opportuna
configurazione (angolazione e traslazione dei giunti prismatici) fornita anche da
MATLAB, riesce a raggiungere ; il resto all'esterno di tutto sono i punti che il
manipolatore non può in alcun modo raggiungere.

FIGURA 4

Gruppo 4
9
Dipartimento di Meccanica AA 2009/10 Laboratorio di Robotica

In conclusione, determinati questi parametri di giunto per raggiungere delle posizioni


volute, possiamo affermare che il lavoro fin qui analizzato è fondamentale nel
funzionamento pratico dei robot. Il problema principale, infatti, dopo aver calcolato
le angolazioni e gli scorrimenti dei giunti prismatici e rotoidali è soltanto quello di
passarli a microcontrollori che collegati ad encoder e step-motor riescono a
controllare il movimento del manipolatore permettendogli di raggiungere le
configurazioni desiderate. Eventuali problemi di natura costruttiva obbligano, in un
secondo momento, di effettuare una sorta di correzione delle coordinate raggiunte.
Infatti gli errori nella costruzione in officina dei link devono essere prese in
considerazione così da effettuare delle correzioni dei parametri di giunto calcolati con
le misure dei link ideali.

Questa operazione può essere implementata con semplici considerazioni anche a


partire dai file di MATLAB da noi scritti con l'aggiunta di altre semplici
considerazioni.

Gruppo 4
10