Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
La prima parte della relazione mette in luce gli aspetti che ci consentono di ricavare
tutti i parametri del robot al fine di poterli utilizzare nella risoluzione della cinematica
diretta ed inversa. La seconda parte invece riguarda la descrizione della
dimostrazione e tutti gli aspetti legati alla programmazione in linguaggio C.
Il robot che verrà considerato è lo SCORBOT III che come vedremo più in dettaglio
in seguito è un robot a cinque gradi di libertà, pilotato da dei motori in CC
opportunamente interfacciati con un calcolatore tramite software dedicato e hardware
di diverso tipo.
Anche se in generale il sistema è abbastanza complicato il computer lo gestisce come
un insieme di più motori da movimentare, sui quali effettua delle acquisizioni di
informazioni (posizione angolare) tramite degli encoder di cui si parlerà più in
dettaglio nel seguito della trattazione.
Per avere una visione generale si ricorre al seguente schema che non ha alcuna
pretesa di voler dare una rappresentazione esaustiva del sistema calcolatore-
interfaccia-robot. SCORBOT V
2
Come si può vedere dalla figura 1 esiste una differenza sostanziale tra i segnali che
vanno dal PC alla PU che sono segnali che vanno a pilotare l’elettronica di potenza
contenuta all’interno della PU e i segnali che vanno da quest’ultima al robot che sono
dei segnali di potenza e vanno direttamente a pilotare i motori.
E’ da notare che comunque esistono dei segnali che attraversando la PU vanno dallo
scorbot verso il PC, che sono i segnali provenienti dagli encoder fissati sull’albero di
ogni motore e servono per conoscere la posizione angolare dei motori istante per
istante.
3
Capitolo 1
Parametri del robot e loro determinazione
1.1Introduzione
Per definire i parametri di un robot è importante in primo luogo fornire una breve
presentazione di questi ultimi in modo tale da comprendere in maniera più
approfondita quali sono le problematiche da affrontare.
Inoltre è necessario tener conto che oltre alla determinazione dei parametri di giunto e
di link, si ha la necessità di stabilire la relazione tra variazione della posizione
angolare del motore e variazione dei passi encoder corrispondente.
4
Ogni coppia giunto link rappresenta un grado di libertà del manipolatore, quindi un
manipolatore a N gradi di libertà ha N coppie giunto-link con il link 0 ancorato alla
base di appoggio del robot e non considerato parte del robot.
Ad ogni link vengono associati due parametri ai e ai detti appunto parametri di link,
il parametro ai chiamato lunghezza di giunto rappresenta la distanza più breve
misurata lungo la normale comune tra gli assi dei giunti i e i+1 e ai detto angolo di
twist che è l’angolo compreso tra gli assi dei giunti su un piano perpendicolare ad ai.
Allo stesso modo ad ogni giunto vengono associati i parametri di giunto di e Ji detti
rispettivamente distanza e angolo di giunto. La distanza di rappresenta la distanza
misurata lungo l’asse del giunto fra la normale proveniente dall’asse del giunto i-1 e
la normale che va al giunto i+1. L’angolo Ji è l’angolo formato dalle due normali,
misurato su un piano ortogonale all’asse del giunto.Tali parametri possono essere
visualizzati nella fig.2.
Link i-1
Link i
5
Stabiliti per ogni coppia giunto-link i quattro parametri sopra elencati e una
convenzione di segno per ognuno di essi è possibile determinare la configurazione
cinematica del robot.
Per ricavare tali parametri è necessario associare ad ogni coppia giunto-link un
sistema di riferimento opportunamente scelto in una moltitudine di possibili
soluzioni.
Definiti i sistemi di riferimento di ogni coppia giunto-link e i parametri ai, ai, di, e Ji
sarà possibile rappresentare le coordinate di effettore o di un generico sistema di
riferimento associato alla i-esima coppia giunto-link rispetto a un sistema di
riferimento inerziale che come vedremo in dettaglio più avanti è il sistema di
riferimento di base.
6
Link/giunto di (mm) Ai (mm)
1 352 18
2 0 223
3 0 223
4 0 0
5 141 0
7
Per quanto riguarda le costanti dei encoder associati agli altri motori (gomito, spalla,
pitch e roll), tramite l’utilizzo di una livella sono state identificate posizioni dei
motori a 0°, 45° e 90° e valutati i passi eseguiti dagli encoder.
Nella tabella 2 sono riportati i dati ottenuti dalle misure:
Motore 1 K1 0.046554
Motore 2 K2 0.059135
Motore 3 K3 0.059371
Pitch K4 0.242677
Roll K5 0.229088
Capitolo 2
Rappresentazione di Denavit-Hartenberg
8
2.1 Introduzione
Tramite le linee guida date dalla rappresentazione di Denavit e Hartenberg è possibile
stabilire in modo sistematico un sistema di coordinate per ogni link di un sistema
articolato come il nostro robot.
Definiti i vari sistemi di riferimento è possibile ricavare la rappresentazione di
Denavit – Hartenberg.
i 1
Tale rappresentazione consiste in una matrice di trasformazione omogenea Ti M 44
che rappresenta il sistema di coordinate del link i rispetto al riferimento del link
precedente i-1. Pertanto, individuate tutte le matrici di trasformazione intermedie è
p 0 Te pe (2.1.1)
0
Dove p0 e pe sono i vettori contenenti le coordinate di un generico punto riferite
9
Figura 3. Convenzione di Denavit-Hartenberg .
In particolare:
• Zi giacente lungo l’asse del giunto i+1;
• Oi sull’asse Zi con l’intersezione dell’asse Zi con la normale comune agli assi
Zi–1 e Zi ;
• O’i sull’asse Zi–1 con l’intersezione dell’asse Zi con la normale comune agli assi
Zi–1 e Zi;
• Xi diretto lungo la normale comune agli assi Zi–1 e Zi con verso positivo dal
giunto i al giunto i+1;
• Yi si ricava dalle precedenti seguendo la regola della mano destra;
Si può notare che in un certo numero di situazioni, la procedura appena descritta non
dà indicazioni precise sul posizionamento dei sistemi di riferimento.
In particolare, ciò accade nei seguenti casi:
10
Con riferimento alla terna 0 , per la quale la sola direzione dell’asse Z0 risulta
specificata: si possono quindi scegliere arbitrariamente O0 ed X0
Con riferimento alla terna n, cioè quella relativa all’effettore, per la quale il solo asse
Xn risulta soggetto a vincolo (deve essere normale all’asse Zn-1): infatti non vi è giunto
n+1 per cui non è definito Zn e lo si può scegliere arbitrariamente
Quando due assi consecutivi sono paralleli, in quanto la normale comune tra di essi
non è univocamente definita
Quando due assi consecutivi si intersecano, in quanto il verso di Xi è arbitrario
Quando il giunto i è prismatico, nel qual caso la sola direzione dell’asse Zi–1 è
determinata.
Una volta posizionati tutti i sistemi di riferimento, è possibile ricavare i parametri di
link e di giunto.
• ai è definito come la distanza tra Oi e O’i;
• αi è l'angolo intorno l’asse Xi tra gli assi dei giunti Zi–1 e Zi valutato positivo in
senso antiorario;
• di è la coordinata di O’i su Zi–1;
• θi è l’angolo intorno all’asse Zi–1 tra l’asse Xi–1 e Xi valutato positivo in senso
antiorario;
Da qui è possibile individuare le variabili di giunto
θi se il giunto è rotoidale
di se il giunto è prismatico;
Dopo aver individuato i vari parametri del sistema si può facilmente
individuare la serie di trasformazioni che correla il sistema i-esimo con quello (i–1)-
esimo. In particolare si effettueranno le seguenti operazioni:
1. traslare lungo l’asse Zi–1 di una lunghezza pari a di per portare l'origine Oi sul
punto di intersezione tra il segmento ai e l'asse Zi–1;
2. ruotare intorno all'asse Zi–1 di un angolo θi per allineare l’asse Xi con il
segmento ai;
11
3. traslare lungo l’asse Xi di una lunghezza pari ad ai per portare Oi nella
posizione originaria;
4. ruotare intorno all’asse Xi di un angolo pari ad αi per portare l’asse Zi nella
posizione originaria.
Per facilitare l’individuazione dei vari parametri di giunto del sistema, si
preferisce utilizzare una tabella detta appunto Tabella di Denavit-Hartenberg in cui ad
ogni coppia link-giunto corrisponde una riga che mostra i parametri relativi a quella
coppia (ai αi di θi).
12
2.3 Sistemi di riferimento dello SCORBOT-ER V
In questa sezione si andranno a stabilire i sistemi di riferimento per lo SCORBOT in
accordo con le convenzioni di Denavit e Hartenberg viste nella sezione 2.2.
Seguendo tali regole, è possibile individuare i vari sistemi di riferimento
rappresentato in figura 5
13
Parametri
Link/Giunt Di Ji ai ai Matrice
o associata
1 D1 J1 a1 -p/2 0T
1
2 0 J2 a2 0 1T
2
3 0 J3 a3 0 2T
3
4 0 J4 0 p/2 3T
4
5 D5 J5 0 0 4T
e
Capitolo 3
Differenza tra angoli di Denavit e Hartenberg e angoli
considerati per gli spostamenti.
3.1 Introduzione
14
Come accennato nella precedente sezione una situazione che si è dovuta risolvere è
stata quella derivante dalla scelta di riferire tutti gli angoli necessari per spostare il
robot a una configurazione del robot a nostro avviso ritenuta più semplice.
15
Per quanto riguarda gli angoli 1 e 5 roll non si hanno particolari relazioni in
quanto vengono riferiti alla convenzione di Denavit e Hartenberg e inoltre sono
indipendenti dagli altri angoli.
Figura 7: differenziale
16
Passi Passi
• (encoder 4) (encoder3) (3.2.1)
4 pitch 2 K
4
Passi Passi
• (encoder 4) (encoder3) (3.2.2)
5 roll 2 K
5
Capitolo 4
Cinematica diretta
4.1 Introduzione
Misurati i parametri del robot è possibile ricavare la tabella di Denavit-Hartenberg e
procedere alla determinazione della cinematica diretta.
17
4.2 Cinematica diretta dello SCORBOT
La cinematica diretta consente di esprimere le coordinate di un punto rispetto alla
terna inerziale di base in funzione delle coordinate dello stesso punto riferite alla
terna di riferimento di effettore e delle variabili di giunto e di link, tramite la
relazione (2.1.1) introdotta nella sezione 2.1 e di seguito riportata:
p 0 Te pe
0
A partire dai sistemi di riferimento fissati sul robot come in figura 5 e dalla tabella n°
3, che riporta i parametri di giunto e i parametri di link dello Scorbot V è possibile
cos
1 0 sin 1 a1 cos 1
0
T1
sin 1 0 cos 1 a1sin 1
(4.2.1)
0 1 0 0
0 0 0 1
cos
2 sin( 2 ) 0 a2 cos 2
T2
1
sin 2 cos( 2 ) 0 a2 sin 2
(4.2.2)
0 0 1 0
0 0 0 1
cos
3 sin(3 ) 0 a3 cos 3
2
T3
sin 3 cos(3 ) 0 a3sin 3
(4.2.3)
0 0 1 0
0 0 0 1
18
cos
4 0 sin( 4 ) 0
T4
3
sin 4 0 cos( 4 ) 0
(4.2.4)
0 1 0 0
0 0 0 1
cos
5 sin(5 ) 0 0
T5
4
sin 5 cos(5 ) 0 0
(4.2.5)
0 0 1 d5
0 0 0 1
Capitolo 5
Implementazione software della cinematica diretta.
phi=conversione_in_radianti(phi);
angolo_di_DH[0]=conversione_in_radianti(angolo_di_DH[0]);
angolo_di_DH[1]=conversione_in_radianti(angolo_di_DH[1]);
angolo_di_DH[2]=conversione_in_radianti(angolo_di_DH[2]);
angolo_di_DH[3]=conversione_in_radianti(angolo_di_DH[3]);
angolo_di_DH[3]=conversione_in_radianti(angolo_di_DH[4]);
pwx=cos(angolo_di_DH[0])*(a3*cos(angolo_di_DH[1]+angolo_di_DH[2])+a2*cos(angol
o_di_DH[1])+a1);
pwy=sin(angolo_di_DH[0])*(a3*cos(angolo_di_DH[1]+angolo_di_DH[2])+a2*cos(angol
o_di_DH[1])+a1);
pwz=-a3*sin(angolo_di_DH[1]+angolo_di_DH[2])-a2*sin(angolo_di_DH[1])+d1;
ce[0]=pwx+d5*cos(phi)*cos(angolo_di_DH[0]);
ce[1]=pwy+d5*cos(phi)*sin(angolo_di_DH[0]);
ce[2]=pwz+d5*sin(phi);
20
Figura 8: posizione non consentita
break;
}
break;
}
21
Figura 9: posizione non consentita
Capitolo 6
Cinematica inversa
6.1 Introduzione
22
Tramite la cinematica inversa è possibile esprimere gli angoli di giunto in funzione
delle coordinate di effettore.
In tal modo sarà possibile implementare delle procedure software che consentono di
calcolare i vari angoli di giunto in funzione della posizione e dell’orientamento della
terna di effettore, in modo tale da portare l’effettore in un qualsiasi punto dello spazio
operativo.
Pwx 0
Pwy 0
0 T
3 0 (6.2.1)
Pwz
1
1
Con 0T3 0 T1 1 T2 2 T3 .
23
Figura 10: rappresentazione del robot per il calcolo della cinematica inversa.
Nella seconda fase il vettore di coordinate espresso nella relazione (6.2.1) viene
calcolato tramite delle considerazioni di tipo geometrico sulla figura 10 nel seguente
modo:
• Il segmento indicato in figura 10 come S4 altro non è che:
S d cos() (6.2.3)
4 5
Stabilito chi è tale segmento si possono individuare i segmenti S1 S2 ed S3 che
sono:
24
T
A questo punto è possibile calcolare il vettore Pwx Pwy
Pwz 1 che è:
Pwx
X e S1
Pwy Y S
e 2
Pwz Ze S3
1 1
Ovvero:
Pwx cos(sin( )
Xe 1
Pwy Y cos( ) cos( )
e d 1 (6.2.7)
5
Pwz Ze sin()
1
1
1
T
Dove il vettore Xe Ye Ze 1 è il vettore che rappresenta le coordinate di
orizzontale e funzione degli angoli 2 ,3,4 come si evince pure dalla relazione
(6.2.8).
E’ da notare che tutti questi parametri sono noti in quanto essi rappresentano o la
posizione desiderata per l’effettore rispetto alla terna di riferimento inerziale, oppure
parametri del robot già misurati.
(6.2.8)
4 3 2 2
25
cos(sin( )
0 Xe 1
0T 0 Ye cos() cos( )
d 1 (6.2.9)
3 0 Ze 5
sin()
1 1
1
(6.2.10)
Da queste relazioni, e considerando 1 noto, è possibile tramite operazioni algebriche
(6.2.11)
4 2 3 2
Per quanto riguarda 2 ,3 , dal sistema di equazioni (6.2.10) si ha:
a2 c2 a 2 a 2
cos( ) 3 2 (6.2.12)
3 2 a a
2 3
26
si tenga presente che nell’implementazione software la relazione 6.2.13 è stata
considerata con il segno positivo per movimentare il robot con il gomito alto, al fine
di ottenere uno spazio di lavoro più ampio.
Dalla relazione 6.2.13 si ottiene:
arctan 2[sin(3 ),cos(3 )] (6.2.14)
3
b a cos( ) b a a sin( ) c
cos( ) 3 3 2 3 3
2 a 2 cos2 ( ) 2 a a cos( ) a 2 a 2 sin 2 ( ) (6.2.15)
3 3 3 2 3 2 3 3
a sin( ) b c a cos( ) c a
sin( ) 3 3 3 3 2
2 (6.2.16)
(a cos( ))2 2 a a cos( ) (a sin( ))2 a 2
3 3 3 2 3 3 3 2
Da cui:
arctan 2[sin( ),cos( )] (6.2.17)
2 2 2
Le costanti a1, a2 , a3 sono i parametri di link riportati nella tabella n°3 invece a,b,c
provengono dal sistema (6.2.10) e sono:
c ze d sin() (6.2.20)
5
27
Definita la cinematica inversa, nel prossimo capitolo si illustreranno i problemi
derivanti dal fatto che gli angoli di Denavit e Hartenberg non coincidono con gli
angoli che verranno imposti nella movimentazione dal software che verrà utilizzato.
Capitolo 7
Implementazione software della cinematica inversa.
28
Si riporta di seguito l’implementazione software utilizzata per realizzare la
cinematica inversa dello SCORBOT-ER V, evidenziando in particolare i controlli che
vengono effettuati in modo da rendere il più possibile sicura la movimentazione del
robot nel caso in cui vengano inseriti dall’utente le coordinate di effettore.
Viene riportata prima di tutto la funzione “cinematica_inversa”.
xe=coord_eff[0];
ye=coord_eff[1];
ze=coord_eff[2];
phi1=conversione_in_radianti(phi1);
angoli_Denavit[0]=atan2(ye,xe);
a=(xe-(d5*cos(phi1)+a1)*cos(angoli_Denavit[0]))/(cos(angoli_Denavit[0]));
b=(ye-(d5*cos(phi1)+a1)*sin(angoli_Denavit[0]))/(sin(angoli_Denavit[0]));
c=ze-d1-d5*sin(phi1);
c3=((a*a)+(c*c)-(a3*a3)-(a2*a2))/(2*a2*a3);
if(c3>1||c3<-1)
{ clrscr();
textcolor(RED+BLINK);
cprintf("errore nel dominio di cos(theta3)");
getch();
clrscr();
29
}
angoli_Denavit[2]=atan2(s3,c3);
c2= (b*a3*c3+b*a2-a3*s3*c)/(a3*a3+2*a3*c3*a2+a2*a2);
if(c2>1||c2<-1)
{
clrscr();
textcolor(RED+BLINK);
cprintf("errore nel dominio di cos(theta2)");
getch();
clrscr();
}
s2= -(a3*s3*b+c*a3*c3+c*a2)/(a3*a3+2*a3*c3*a2+a2*a2);
if(s2>1||s2<-1)
{
clrscr();
textcolor(RED+BLINK);
cprintf("errore nel dominio di sin(theta2)");
getch();
clrscr();
}
angoli_Denavit[1]=atan2(s2,c2);
angoli_Denavit[3]=phi1+angoli_Denavit[1]+angoli_Denavit[2]+M_PI_2;
angoli_Denavit[4]=conversione_in_radianti(roll);
30
{
printf("\n\rnon ok xe");
getch();
}
Else
{
printf("\n\r ok per xe");
getch();
}
}
if((phi<=-90) && (xe<=ye))
{
if(ye<14)
{
printf("\n\rnon ok per ye")
getch();
}
else
{printf("\n\r ok per ye");
getch();
}
}
if((phi>-88) &&((sqrt(xe*xe+ye*ye)-(d5*cos(phi))-4)<13))
{
printf("\n\rnon ok sqrt ");
getch();
}
else
{
printf("\n\r ok sqrt ");
getch();
}
}
Else
{
printf("\n\rnon ok per ze");
getch();
}
31
Capitolo 8
Comando del robot da file
8.1 Pseudolinguaggio
32
Nei paragrafi precedenti è stato illustrato il modo in cui a partire dalla scelta e dal
posizionamento dei sistemi di riferimento del robot, si è arrivati prima
all’implementazione della cinematica diretta e poi di quella inversa.
Queste hanno rappresentato il punto di partenza per realizzare l’automatizzazione del
robot, ossia il suo asservimento mediante la lettura di un file contenente un certo
numero di istruzioni e di funzioni.
Nel nostro caso si è scelto di implementare sei funzioni riconoscibili dal robot e
identificati con le seguenti sigle:
1. Muoviti
2. Diretta
3. DDH
4. Pausa
5. Pinza
6. Home
7. Fine
La funzione ”muoviti” consente all’utente di specificare la posizione dell’effettore
rispetto al sistema di riferimento inerziale e il suo orientamento facendo
riferimento all’implementazione della cinematica inversa.
Tramite la funzione “diretta” è permesso all’utente di specificare gli angoli di
giunto rispetto alla convenzione specificata nella sezione 3.2.
Per permettere la movimentazione del robot in base agli angoli di Denavit e
Hartenberg è stata realizzata la funzione DDH.
Nell’automatizzazione del robot è sempre necessario tener conto delle varie
temporizzazioni tra i movimenti originati dal file, per risolvere tale problema è
stata introdotta la funzione “Pausa” che in particolare tiene conto anche delle
temporizzazioni opportune che devono essere realizzate nell’esecuzione del
movimento di roll e di pitch.
33
Per i movimenti di apertura e chiusura della pinza è stata utilizzata la funzione
“Pinza”.
Molto utile per risparmiare tempo è la funzione “Home” la quale permette di
riportare il robot in una posizione molto vicina a quella di home in modo tale che
in movimentazioni future il robot si trovi in una posizione “predisposta” alla
home.
Concludendo si è deciso di implementare una funzione di controllo che ci
restituisse sia la lettura del file sia la sua esatta conclusione: tale funzione è quella
di “Fine”.
Per una più chiara comprensione di come realizzare il file di movimentazione
automatica si riporta di seguito un esempio.
Muoviti *23.75*37.866*-12.4*3.6*0
Pausa *2
Muoviti *-0.59*34.09*25*-90.3*1.1
Pausa *2
Muoviti *-0.59*34.09*14.4*-90.3*1.1
Pausa *2
Pinza *c
Pausa *2
Muoviti *-0.59*34.09*45*-90.3*1.1
Pausa *2
Muoviti *32.38*9.88*15.37*-95*1.8
Pausa *2
Pinza *o
Pausa *1
Home
Fine
Si noti che per una corretta lettura dei parametri delle funzioni sia necessario
inserire dopo la sigla della funzione stessa il simbolo ‘*’, fatto eccezione per la
funzione di Home e di Fine.
34
35