+ All Categories
Home > Documents > Robotica Progetti & Analisi dello SCORBOT

Robotica Progetti & Analisi dello SCORBOT

Date post: 06-Jun-2015
Category:
Upload: emanuele
View: 846 times
Download: 3 times
Share this document with a friend
48
Introduzione Vorremmo introdurre questa relazione partendo da una considerazione che riteniamo dal nostro modesto punto di vista essere molto importante. Constatando quella che oggi è l’offerta formativa delle università italiane, non sempre rivolta in modo del tutto accurato alla formazione professionale degli studenti ma più in generale a una formazione più superficiale, spesso vista solamente come fine a se stessa, o al massimo come preparazione rivolta solamente al conseguimento degli esami; vogliamo ringraziare il professore Luca Zaccarian per aver organizzato uno dei pochi corsi della nostra università che anche se purtroppo di breve durata guarda quella che è l’attività lavorativa di un ingegnere. Tale corso pone lo studente in un contesto lavorativo di gruppo capace di fargli acquisire le qualità di relazione con gli altri e di organizzazione del lavoro che in generale non sono intrinseche nel carattere di ognuno di noi. Ci auguriamo quindi che questo corso sia di esempio ad altri docenti e che essi si adoperino per attivarne di simili. 1
Transcript
Page 1: Robotica Progetti & Analisi dello SCORBOT

Introduzione

Vorremmo introdurre questa relazione partendo da una considerazione che riteniamo

dal nostro modesto punto di vista essere molto importante.

Constatando quella che oggi è l’offerta formativa delle università italiane, non

sempre rivolta in modo del tutto accurato alla formazione professionale degli studenti

ma più in generale a una formazione più superficiale, spesso vista solamente come

fine a se stessa, o al massimo come preparazione rivolta solamente al conseguimento

degli esami; vogliamo ringraziare il professore Luca Zaccarian per aver organizzato

uno dei pochi corsi della nostra università che anche se purtroppo di breve durata

guarda quella che è l’attività lavorativa di un ingegnere.

Tale corso pone lo studente in un contesto lavorativo di gruppo capace di fargli

acquisire le qualità di relazione con gli altri e di organizzazione del lavoro che in

generale non sono intrinseche nel carattere di ognuno di noi.

Ci auguriamo quindi che questo corso sia di esempio ad altri docenti e che essi si

adoperino per attivarne di simili.

Tali considerazione non hanno alcuna pretesa di essere prese in considerazione dal

docente o da chiunque leggerà questa relazione e non vogliono avere alcuna valenza

critica nei confronti di nessuno. Vogliono invece comunicare che spesso non servono

grandi riforme universitarie che stravolgano i sistemi delle nostre università ma,

partendo da un buon lavoro dei docenti, dall’incentivazione di quelli meritevoli e

dalla volontà degli studenti che spesso non manca, si possono ottenere buoni risultati

che possono essere di grande aiuto alla collettività.

Lo scopo di questa relazione è quello di riassumere le varie fasi che ci hanno portato

ad affrontare l’esperienza del laboratorio e alla realizzazione della dimostrazione

finale.

Oltre ad illustrare gli aspetti pratici, verranno presi in considerazione anche alcuni di

quelli teorici che ci hanno guidato nel portare a termine l’esperienza di laboratorio.

1

Page 2: Robotica Progetti & Analisi dello SCORBOT

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.

Fig. 1 Schema a blocchi del sistema PC-Power Unit-Scorbot

Power Unit

SC

OR

BO

T

V

Data bus Power signal

2

Page 3: Robotica Progetti & Analisi dello SCORBOT

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

Page 4: Robotica Progetti & Analisi dello SCORBOT

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.

1.2 Link e giunti.

Un generico manipolatore meccanico può essere visto come una sequenza di

segmenti rigidi chiamati link connessi da giunti.

I link sono dei segmenti rigidi che collegano due giunti, invece i giunti sono delle

strutture meccaniche che consentono uno spostamento relativo fra i due link adiacenti

connessi al giunto stesso.

L’asse di giunto si definisce come l’asse di rotazione o traslazione individuato dal

movimento del giunto.

I giunti possono essere divisi in due categorie: giunti rotazionali che consentono un

movimento di tipo rotativo intorno all’ asse del giunto stesso e prismatici anche detti

lineari e che consentono un movimento di tipo traslatorio dei link adiacenti.

4

Page 5: Robotica Progetti & Analisi dello SCORBOT

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.

Fig. 2 Parametri di giunto e parametri di link

5

Link i-1Link i

Page 6: Robotica Progetti & Analisi dello SCORBOT

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.

1.3 Determinazione dei parametri del robot

Per determinare i parametri dello SCORBOT ci serviamo di semplici attrezzi da

misura e più in particolare: di un metro, un goniometro a pendolo, di una livella e di

un filo a piombo di quelli utilizzati normalmente in edilizia.

Fissati i sistemi di riferimento tramite la procedura definita da Denavit e Hartenberg

come in figura 2 si vanno a determinare i parametri lineari del robot (di e ai) che

vengono riportati nella seguente tabella:

6

Page 7: Robotica Progetti & Analisi dello SCORBOT

Link/giunto di (mm) Ai (mm)

1 352 18

2 0 223

3 0 223

4 0 0

5 141 0

Tab.1 Parametri di giunto dello SCORBOT V

1.4 Conversione da angoli a passi encoder.

Come accennato in precedenza è importante stabilire una relazione univoca tra

variazione della posizione angolare degli alberi dei motori e numero di impulsi degli

encoder fissati su di essi .

E’ necessario quindi individuare dei coefficienti tali da soddisfare la relazione

(1.1.3).

(1.1.3)

Tali sono diversi dall’unità in quanto all’albero vengono applicati dei

motoriduttori necessari ad abbassare la velocità di rotazione dei motori, in modo tale

che la velocità con cui si muovono i link sia minore di quella con la quale ruotano i

motori stessi.

Tali riduttori fanno si che la rotazione e quindi la posizione angolare dell’albero a

valle del “carico” sia diversa da quella misurata dagli encoder.

7

Page 8: Robotica Progetti & Analisi dello SCORBOT

Per il calcolo del coefficiente dell’encoder del motore di base, sono state

considerate le proiezioni di più punti dell’effettore sul piano di lavoro, e per mezzo

delle regole trigonometriche sono stati calcolati gli angoli di base.

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

Tab.2 Fattori di conversione da angoli a passi encoder.

8

Page 9: Robotica Progetti & Analisi dello SCORBOT

Capitolo 2

Rappresentazione di Denavit-Hartenberg

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.

Tale rappresentazione consiste in una matrice di trasformazione omogenea

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 è

possibile ricavare la matrice omogenea che lega le coordinate di effettore a

quelle di base tramite la relazione (2.1.1) riportata di seguito:

(2.1.1)

Dove e sono i vettori contenenti le coordinate di un generico punto riferite

rispettivamente al sistema di riferimento inerziale e a quello di effettore e è data

dalla relazione (2.1.2):

(2.1.2)

Dove la generica matrice è quella associata alla trasformazione di coordinate

dal sistema di riferimento della coppia giunto-link (i-1)-esima al sistema di

riferimento della coppia giunto-link i-esima.

9

Page 10: Robotica Progetti & Analisi dello SCORBOT

2.2 Scelta dei riferimenti

Per il posizionamento degli assi cartesiani associati al sistema, si ricorre alla

convenzione di Denavit-Hartenberg, secondo la quale gli assi sono presi come

mostrato nella Error: Reference source not found.

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;

10

Page 11: Robotica Progetti & Analisi dello SCORBOT

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:

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;

11

Page 12: Robotica Progetti & Analisi dello SCORBOT

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;

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

Figura 4 Tabella di Denavit-Hartenberg.

In formule matematiche e utilizzando le matrici di trasformazione in coordinate

omogenee ciò si traduce nelle relazioni:

(2.2.1)

12

Page 13: Robotica Progetti & Analisi dello SCORBOT

(2.2.2)

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

Fig. 5 Sistemi di riferimento dello SCORBOT V

13

Page 14: Robotica Progetti & Analisi dello SCORBOT

2.4 Compilazione della tabella di Denavit-Hartenberg

Definiti i sistemi di riferimento dello SCORBOT, e individuati i parametri di giunto e

quelli di link, è possibile realizzare la tabella di Denavit e Hartenberg riportata di

seguito.

Parametri

Link/Giunto Di Ji ai ai Matrice

associata

1 D1 J1 a1 -p/2

2 0 J2 a2 0

3 0 J3 a3 0

4 0 J4 0 p/2

5 D5 J5 0 0

Tab. 3 Parametri dello SCORBOT V

14

Page 15: Robotica Progetti & Analisi dello SCORBOT

Capitolo 3

Differenza tra angoli di Denavit e Hartenberg e angoli

considerati per gli spostamenti.

3.1 Introduzione

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.

3.2 Convenzioni adottate

Si è scelto di riferire gli angoli alla posizione riportata in figura 6.

Figura 6: posizione a cui vengono riferiti gli angoli per la movimentazione

15

Page 16: Robotica Progetti & Analisi dello SCORBOT

E’ da tenere inoltre conto che nella movimentazione del robot la variazione di un

angolo non è indipendente dalla variazione degli altri.

Considerando questo aspetto e quello della scelta di riferire gli angoli alla posizione

riportata in figura 6 si trovano le seguenti relazioni:

(3.2.1)

Per quanto riguarda gli angoli e non si hanno particolari relazioni in

quanto vengono riferiti alla convenzione di Denavit e Hartenberg e inoltre sono

indipendenti dagli altri angoli.

3.3 Angoli di pitch e roll

Un’altra problematica di cui si è dovuto tener conto è stata quella relativa alla

relazione tra angoli di pitch e roll e la loro misura da parte degli encoder.

Questo problema sorge dal fatto che i movimenti di pitch e di roll vengono effettuati

tramite un differenziale (figura 7) ovvero un meccanismo costituito da tre ingranaggi,

due laterali detti pignoni e rotazionati da due motori indipendenti e uno centrale detto

satellite che si muove sotto l’effetto della rotazione dei due pignoni.

Figura 7: differenziale

16

Page 17: Robotica Progetti & Analisi dello SCORBOT

Tramite questo meccanismo è possibile effettuare i movimenti di roll facendo ruotare

i due motori nello stesso verso, ovvero applicandogli una tensione dello stesso segno.

I movimenti di pitch vengono effettuati facendo ruotare i due motori in verso

opposto, ovvero alimentandoli con tensioni di segno opposto.

Questo meccanismo rende necessario stabilire due relazioni tra gli angoli di pitch e

roll e i passi degli encoder accoppiati ai motori che muovono i pignoni.

Tali relazioni riportate di seguito sono state trovate facendo effettuare all’effettore

diversi movimenti e misurandone gli angoli relativi.

(3.2.1)

(3.2.2)

17

Page 18: Robotica Progetti & Analisi dello SCORBOT

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.

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:

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

ricavare le matrici che compongono la matrice di trasformazione riportata

nella relazione (2.1.2).

Per completezza vengono riportate di seguito le matrici (con ).

(4.2.1)

18

Page 19: Robotica Progetti & Analisi dello SCORBOT

(4.2.2)

(4.2.3)

(4.2.4)

(4.2.5)

19

Page 20: Robotica Progetti & Analisi dello SCORBOT

Capitolo 5

Implementazione software della cinematica diretta.

Si riporta di seguito l’implementazione software utilizzata per realizzare la

cinematica doretta 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 gli angoli di Denavit e Hartenberg.

In primo luogo viene presentata la funzione “cinematica_diretta”.

void cinematica_diretta(double angolo_di_DH[], double ce[],double phi)

{

double pwx=0;

double pwy=0;

double pwz=0;

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(angolo_di_DH[1])+a1);

pwy=sin(angolo_di_DH[0])*(a3*cos(angolo_di_DH[1]+angolo_di_DH[2])

+a2*cos(angolo_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

Page 21: Robotica Progetti & Analisi dello SCORBOT

Viene riportata di seguito l’implementazione dei controlli.

Il primo controllo consente di evitare la situazione riportata in figura 8, ovvero

quella in cui l’effettore collide con il piano di lavoro,

Figura 8: posizione non consentita

e viene implementato con la seguente procedura software :

if(controllo[1]<=0 && controllo[2]<=-90 && controllo[3]<=-80)

{cprintf("posizione pericolsa");

break;

}

Dove , , .

Il secondo controllo evita la situazione riportata in figura 9, ovvero quella in

cui l’effettore collide con la base e viene implementato nel seguente modo:

if(controllo[1]<=0 && controllo[2]<=-90 && controllo[3]<=-80)

{cprintf("posizione pericolsa");

break;

}

21

Page 22: Robotica Progetti & Analisi dello SCORBOT

Figura 9: posizione non consentita

22

Page 23: Robotica Progetti & Analisi dello SCORBOT

Capitolo 6

Cinematica inversa

6.1 Introduzione

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.

6.2 Calcolo della cinematica inversa

Il calcolo della cinematica inversa viene effettuato in due fasi, in una prima fase

viene posizionato il robot in un punto qualsiasi nello spazio di lavoro e vengono

calcolate le coordinate dell’origine della terna di effettore in funzione degli angoli di

Denavit e Hartenberg .

Tali coordinate vengono definite dalla relazione (6.2.1) espressa di seguito:

(6.2.1)

23

Page 24: Robotica Progetti & Analisi dello SCORBOT

Con .

Come si può notare dalla figura 8 l’ angolo è banalmente calcolabile tramite la

relazione (6.2.2):

(6.2.2)

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 S 4 altro non è che:

(6.2.3)

24

Page 25: Robotica Progetti & Analisi dello SCORBOT

Stabilito chi è tale segmento si possono individuare i segmenti S 1 S 2 ed S 3 che

sono:

(6.2.4)

(6.2.5)

(6.2.6)

A questo punto è possibile calcolare il vettore che è:

Ovvero:

(6.2.7)

Dove il vettore è il vettore che rappresenta le coordinate di

effettore rispetto alla terna di riferimento di base, è la lunghezza del link n° 5

come si può notare dalla figura 10 F è l’orientamento dell’effettore riferito al piano

orizzontale e funzione degli angoli 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.

25

Page 26: Robotica Progetti & Analisi dello SCORBOT

(6.2.8)

A questo punto eguagliando le relazioni (6.2.1) e (6.2.7):

(6.2.9)

Considerando anche la relazione (6.2.8), si ottengono quattro equazioni con tre

incognite che sono:

(6.2.10)

Da queste relazioni, e considerando noto, è possibile tramite operazioni algebriche

e trigonometriche ricavare e tramite la funzione

, è possibile ricavare i con in funzione delle

coordinate di effettore espresse rispetto il sistema di riferimento inerziale, e

all’orientamento della terna di effettore.

In particolare è esprimibile in funzione di e semplicemente come:

(6.2.11)

Per quanto riguarda , dal sistema di equazioni (6.2.10) si ha:

26

Page 27: Robotica Progetti & Analisi dello SCORBOT

(6.2.12)

(6.2.13)

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:

(6.2.14)

Per quanto riguarda invece si ha:

(6.2.15)

(6.2.16)

Da cui:

(6.2.17)

Le costanti sono i parametri di link riportati nella tabella n°3 invece a,b,c

provengono dal sistema (6.2.10) e sono:

(6.2.18)

27

Page 28: Robotica Progetti & Analisi dello SCORBOT

(6.2.19)

(6.2.20)

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.

28

Page 29: Robotica Progetti & Analisi dello SCORBOT

Capitolo 7

Implementazione software della cinematica inversa.

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

void cinematica_inversa (double coord_eff[], double angoli_Denavit[], double

phi1, double roll)

{

double xe=0;

double ye=0;

double ze=0;

double c3=0;

double c2=0;

double s3=0;

double s2=0;

double a=0;

double b=0;

double c=0;

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

29

Page 30: Robotica Progetti & Analisi dello SCORBOT

if(c3>1||c3<-1)

{ clrscr();

textcolor(RED+BLINK);

cprintf("errore nel dominio di cos(theta3)");

getch();

clrscr();

}

s3=sqrt(1-(c3*c3)); // sto prendendo gomito alto

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

Page 31: Robotica Progetti & Analisi dello SCORBOT

Il controllo riportato di seguito è necessario per evitare le situazioni riportate in figura

6 e 7 che vengono distinte a seconda che F sia compreso tra 0° e -90° (come figura 8)

o tra -90° e -180° (come figura 9).

if(ze>0.5)

{

if((phi<=-90) && (xe>ye))

{

if(xe<14)

{

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();

}

}

31

Page 32: Robotica Progetti & Analisi dello SCORBOT

Else

{

printf("\n\rnon ok per ze");

getch();

}

32

Page 33: Robotica Progetti & Analisi dello SCORBOT

Capitolo 8

Comando del robot da file

8.1 Pseudolinguaggio

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.

33

Page 34: Robotica Progetti & Analisi dello SCORBOT

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.

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

34

Page 35: Robotica Progetti & Analisi dello SCORBOT

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.

35


Recommended