Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La...

12
Definizioni Un robot è un manipolatore multifunzionale riprogrammabile, comandato automaticamente. Deve avere tre o più assi. Può essere fisso oppure spostarsi su un carrello o rotaia. Un robot mobile è un sistema in grado di spostarsi in ambienti più o meno strutturati tramite vari apparati di locomozione (ruote o zampe). Di solito questi robot sono dotati di sensori che permettono di esplorare l'ambiente. Un robot manipolatore è una catena cinematica sequenziale aperta composta da corpi rigidi (link) uniti da giunti (senza diramazioni e con un'estremità libera) Sottosistemi Meccanica Principale fonte di distinzione tra un robot e un computer. Comprende il braccio, la mano, le ruote, ecc. Azionamenti (attuatori) Esistono due tipi di attuatori. Tradizionali: elevata rigidità all'interfaccia col carico (per permettere la precisione del movimento) pro: precisione, stabilità, larghezza di banda del “controllo in posizione” contro: ingranaggi ingombranti, problemi di attrito, inerzia additiva, rumore (rovinano la precisione del movimento). Per risolvere sono stati inventati i motori direct drive, senza ingranaggi di riduzione ma con una scarsa densità di forza (difficile sollevare pesi) Nuovi: elastici, leggeri, alti rapporti forza/massa, potenza/massa (una persona solleva più del 10% / 20% del proprio peso. Un robot tradizionalmente può sollevare solo piccole percentuali del proprio peso). Es: attuatori di McKibben, con le proprietà dei muscoli reali, che tuttavia richiedono aria compressa. Controllo Riceve input nello spazio cartesiano e li converte nello spazio dei giunti. Talvolta tuttavia (soprattutto per robot industriali) la conversione può essere fatta dal sottosistema di programmazione. In tal caso il controllore Può attuare controllo in posizione (per precisione anche inferiore al millimetro, utile in ambienti controllati) o controllo in forza (maggior adattamento all'ambiente, ma richiede molti più sensori e controlli e maggior capacità di elaborazione. Spesso si usano euristiche). E' fisicamente a bordo del robot. Processo Non è propriamente parte del robot: è la parte di ambiente esterno che interagisce direttamente con il robot Sensori Permettono di misurare i parametri del robot, trovare oggetti, rilevare collisioni, monitorare le interazioni con l'ambiente, ispezionare il risultato del processo. Spesso servono elaborazioni complesse per estrarre informazioni dai dati (es: elaborazione e riconoscimento delle immagini). I sensori possono agire a vari livelli (in ordine decrescente di complessità): percettivo (stato del mondo, conseguenza delle azioni) del modello (formazione del modello geometrico, fusione sensoriale) della misura (conversione del segnale) fisico (trasduttore) Pianificazione e programmazione Relativa ai percorsi da seguire o alle azioni da svolgere. Se effettuata ad alto livello, permette di vedere il robot come agente (fisico) che usa i sensori per costruire un modello dell'ambiente e poi costruisce piani, cioè sequenze di azioni motorie e percettive per raggiungere uno scopo. Il sistema di programmazione in genere risiede su un computer esterno. Solo il programma viene caricato sul 1 http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY-NC-SA 2.5 IT Copyright © 2007 -  Michele Tartara

Transcript of Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La...

Page 1: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

DefinizioniUn robot è un manipolatore multifunzionale riprogrammabile, comandato automaticamente.Deve avere tre o più assi. Può essere fisso oppure spostarsi su un carrello o rotaia.Un robot mobile è un sistema in grado di spostarsi in ambienti più o meno strutturati tramite vari apparati di locomozione (ruote o zampe). Di solito questi robot sono dotati di sensori che permettono di esplorare l'ambiente.Un robot manipolatore è una catena cinematica sequenziale aperta composta da corpi rigidi (link) uniti da giunti (senza diramazioni e con un'estremità libera)

Sottosistemi● Meccanica

Principale fonte di distinzione tra un robot e un computer. Comprende il braccio, la mano, le ruote, ecc.

● Azionamenti (attuatori)Esistono due tipi di attuatori.

○ Tradizionali: elevata rigidità all'interfaccia col carico (per permettere la precisione del movimento)

pro: precisione, stabilità, larghezza di banda del “controllo in posizione”

contro: ingranaggi ingombranti, problemi di attrito, inerzia additiva, rumore (rovinano la precisione del movimento). Per risolvere sono stati inventati i motori direct drive, senza ingranaggi di riduzione ma con una scarsa densità di forza (difficile sollevare pesi)

○ Nuovi: elastici, leggeri, alti rapporti forza/massa, potenza/massa (una persona solleva più del 10% / 20% del proprio peso. Un robot tradizionalmente può sollevare solo piccole percentuali del proprio peso). Es: attuatori di McKibben, con le proprietà dei muscoli reali, che tuttavia richiedono aria compressa.

● ControlloRiceve input nello spazio cartesiano e li converte nello spazio dei giunti. Talvolta tuttavia (soprattutto per robot industriali) la conversione può essere fatta dal sottosistema di programmazione. In tal caso il controllore

Può attuare controllo in posizione (per precisione anche inferiore al millimetro, utile in ambienti controllati) o controllo in forza (maggior adattamento all'ambiente, ma richiede molti più sensori e controlli e maggior capacità di elaborazione. Spesso si usano euristiche). E' fisicamente a bordo del robot.

● ProcessoNon è propriamente parte del robot: è la parte di ambiente esterno che interagisce direttamente con il robot

● SensoriPermettono di misurare i parametri del robot, trovare oggetti, rilevare collisioni, monitorare le interazioni con l'ambiente, ispezionare il risultato del processo. Spesso servono elaborazioni complesse per estrarre informazioni dai dati (es: elaborazione e riconoscimento delle immagini).I sensori possono agire a vari livelli (in ordine decrescente di complessità):

○ percettivo (stato del mondo, conseguenza delle azioni)

○ del modello (formazione del modello geometrico, fusione sensoriale)

○ della misura (conversione del segnale)

○ fisico (trasduttore)

● Pianificazione e programmazioneRelativa ai percorsi da seguire o alle azioni da svolgere. Se effettuata ad alto livello, permette di vedere il robot come agente (fisico) che usa i sensori per costruire un modello dell'ambiente e poi costruisce piani, cioè sequenze di azioni motorie e percettive per raggiungere uno scopo.Il sistema di programmazione in genere risiede su un computer esterno. Solo il programma viene caricato sul

1

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 2: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

controllore (a bordo del robot).La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata” con nuove forme di interazione tramite l'uso di esempi (imitazione), interfacce grafiche, linguaggio parlato.

MobilitàOgni corpo rigido ha 3 gradi di mobilità nel piano x ,y , , 6 nello spazio x ,y , z , , , (tre traslatori e tre rotatori).

Numero di gradi di libertà nello spazio per una catena di N link: 6N−#vincoli

Per raggiungere ogni punto dello spazio sono necessari almeno 3 gradi di libertà. Per raggiungere ogni punto con un orientamento qualsiasi ne servono 6 (spesso, 3 nel braccio e 3 nel polso).

Se si hanno più di 6 gradi di libertà, essi vengono usati per migliorare le prestazioni in condizioni particolarmente difficili.

Spazio di lavoro: insieme dei punti dello spazio che il robot può raggiungere con la mano.

Spazio raggiungibile: dove la mano può essere posta con almeno un orientamento

Spazio di destrezza: dove la mano può essere posta con qualsiasi orientamento

GiuntiPossono essere di rotazione (R – detti sferici) o di traslazione (T – detti prismatici).

E' possibile individuare vari tipi di robot in relazione alla tipologia dei giunti

Cartesiano (TTT)3 giunti prismatici ortogonali. Lo spazio di lavoro è un parallelepipedo.

Cilindrico (RTT)R e poi due T ortogonali. Lo spazio di lavoro è un cilindro. Minor libertà di movimento (lo spazio di lavoro lungo l'asse è ostruito dal robot stesso), minor costo di realizzazione dei giunti.

Sferico o polare(RRT) – Stanford armHa due giunti di rotazione perpendicolari e poi un giunto prismatico. Lo spazio di lavoro è una semisfera. Spesso usato in operazioni di saldatura: può lavorare facilmente con la mano orientata verso l'esterno.

Articolato (RRR) - PumaLo spazio di lavoro è una parte di una semisfera. E' detto antropomorfo perchè simile al braccio umano. Il primo giunto è perpendicoloare agli altri due, che sono paralleli fra loro. La presenza di sole rotazioni rende il robot meno costoso e più agile, ma la trasformazione tra lo spazio di attuazione e quello reale risulta più complessa.

SCARA (RRTR)Tre giunti di rotazione paralleli e un giunto di traslazione rivolto verso il basso. Molto usato per le operazioni di assemblaggio (grazie alla discesa verticale).

LinkSono i collegamenti tra due giunti. A seconda di come sono disposti gli assi dei giunti, i link si dividono in paralleli e ortogonali.

2

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 3: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

RotazioniVengono rappresentate con tre angoli detti Roll (rollio), Pitch (beccheggio) e Yaw (imbardata).

E' possibile esprimere ogni orientamento nello spazio attraverso tre rotazioni che avvengono attorno agli assi A1 ,A2 , A3 , purchè A1≠A2 e A2≠A3 .

Le terne di assi più usate sono: zxz oppure zyz (nel sistema mobile) e xyz (nel sistema fisso).

Gli angoli di tali rotazioni vengono detti angoli di Eulero.

ManoPuò essere semplice (a pinza) o complessa (umana).

Problemi delle mani a pinza: garantire tenuta della presa, garantire che l'oggetto sia bloccato nella mano, non perdere il riferimento della posizione dell'oggetto.

Problemi della mano umana: diverse prese possibili, importanza dei sensori.

Sistemi di riferimento e coordinate omogenee

Coordinate omogenee: indichiamo le coordinate cartesiane di un punto P tramite il vettore p=[XYZ ] . Si definiscono

coordinate omogenee una quaterna di numeri x , y ,z ,w tali che X=xw

, Y= yw

, Z= zw

. Si può quindi

definire un vettore di coordinate omogenee p=[xyzw] .

Traslazione

Una traslazione è indicata dal vettore P=[abc1] . Una matrice di traslazione è una matrice H così definita:

H⋅[xyz1]=[

xaybzc1

] . Quindi H=[1 0 0 a0 1 0 b0 0 1 c0 0 0 1

]=Trasl a,b ,c RotazioneSi considera il caso di rotazione di un angolo attorno all'asse z. Preso un punto P=xp , yp si vuole ottenere,

ruotandolo, un punto Q=xq , yq .

In coordinate polari: da xp=cos yp=sin a xq=cos yq=sin

Applicando le formule trigonometriche di somma si ottiengono xq e yq espressi in funzione di xp e yp :

xq=coscos−sinsin=xpcos−ypsin

3

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 4: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

yq=sincoscossin=xpsinypcos

da cui deriva: H=Rot z ,=[cos −sin 0 0sin cos 0 0

0 0 1 00 0 0 1

]Analogamente: H=Rot x ,=[

1 0 0 00 cos −sin 00 sin cos 00 0 0 1

] e H=Rot y ,=[cos 0 sin 0

0 1 0 0−sin 0 cos 0

0 0 0 1]

Quindi, in generale, la rotazione attorno a un asse qualsiasi è: H=[nx ox ax 0ny oy ay 0nz oz az 00 0 0 1

]Detti i=[

nx

ny

nz] j=[

ox

oy

oz] k=[

ax

ay

az] una matrice R=[ i j k ] è una matrice di rotazione se

iT× j=0jT×k=0kT×i=0

e iT×i=1jT× j=1kT

×k=1

Rototraslazione

H=[nx ox ax Px

ny oy ay Py

nz oz az Pz

0 0 0 1]

Cinematica

Abbreviazioni utilizzate di seguito: S=sin

C=cos

Cinematica: legame fra le variabili generalizzate indipendenti q (variabili dei giunti) e le variabili cartesiane xCinematica diretta: passaggio dalle variabili di giunto alle variabili cartesiane. Ammette sempre una e una sola soluzione, che viene ottenuta mediante il calcolo della matrice  T . Può presentare indeterminatezza sul segno per le componenti dell'orientamento .  Per risolvere questa indeterminatezza si utilizza, invece della 

funzione arctan la funzione atan2, definita come:  atan2 y , x ={0°≤≤90° per x e y90°≤≤180 ° per −x e y−180°≤≤−90° per −x e −y−90°≤≤0° per x e −y

Definita la matrice T della mano come T=[xi yi zi pi

0 0 0 1 ] :

4

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 5: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

● xi è il vettore della normale alla mano● yi è il vettore di apertura della mano● zi è il vettore di avvicinamento della mano● pi è il vettore di posizione della mano

Cinematica inversa: passaggio dalle variabili cartesiane alle variabili di giunto. Non è detto che ammetta soluzioni: il goal potrebbe essere fuori dallo spazio di lavoro. Oppure, ci potrebbero essere soluzioni multiple (il numero dipende dal numero di parametri di Denavit­Hartenberg diversi da 0). La molteplicità delle soluzioni può essere sfruttata per evitare ostacoli.Per trovare le soluzioni si può:

● (metodo generale) eguagliare la matrice T della mano con la sua espressione simbolicasi ottengono 6 equazioni trascendenti in 6 incognite. La soluzione di questo sistema non è banale. Esistono delle formulazioni ad hoc che cercano di ridurre il problema a sottoproblemi più semplici.

● Soluzioni iterativemetodo basato su approssimazioni successive che permette di trovare soluzioni approssimate (con errore indefinito in tempi definiti oppure con errore definito in tempi indefiniti)

● Soluzioni in forma chiusa (i cui risultati sono espressi da formule esatte: sono il metodo preferibile, ma non sempre esistono. Ci sono diversi metodi per ottenerle:○ Metodo di Pieper: applicabile se sono verificate determinate condizioni:

■ il robot deve avere 3 giunti di rotazione consecutivi con gli assi che si intersecano in un punto (la costruzione dei polsi è fatta in questo modo)

■ il robot deve avere 3 giunti di rotazione consecutivi con gli assi paralleli (condizione sfruttata dal robot SCARA)

Se vale una di queste condizioni, esiste la soluzione al problema cinematico inverso in forma chiusa, che si riduce alla soluzione di una equazione di 4° grado in una sola incognita e di un sistema in forma chiusa.

○ Metodo di Paul: trova la soluzione mediante premoltiplicazioni o postmoltiplicazioni con matrici 4x4. Non garantisce di trovare una soluzione. Procedimento:1. Uguagliare la matrice di trasformazione generale (espressa in termini di variabili cartesiane) alla 

matrice T del manipolatore (espressa in termini di variabili di giunto)2. Cercare nella seconda matrice:

● Elementi che contengono una sola variabile di giunto● Coppie di elementi che diano un'espressione in una sola variabile quando divisi fra loro● Elementi o combinazioni di elementi semplificabili usando identità trigonometriche

sin±=sincos±cossin

cos±=coscos∓sinsin

3. Identificati tali elementi, li si eguaglia ai corrispondenti della matrice in variabili cartesiane. Si ottiene un'equazione la cui soluzione permette di trovare il legame tra una variabile di giunto ed elementi della matrice di trasformazione generale.

4. Al passo 2 non si trovano elementi, si premoltiplicano entrambi i membri dell'equazione matriciale per l'inversa della matrice A del primo link, o si postmoltiplicano per l'inversa della matrice A dell'ultimo link, poi si riparte dal punto 2. L'operazione può essere ripetuta per ogni link.

○ Altri metodi: basati su algebra elicoidale, matrici doppie, quaternioni, ecc...

5

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 6: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

Dinamica: studia le equazioni che caratterizzano il moto dei robot. Ci serve quando non siamo interessati solo alle posizioni iniziali e finali, ma anche alle caratteristiche del moto stesso.Calcolo delle traiettorie: metodo per determinare e fornire al controllore del robot l'insieme dei punti per spostarsi da un punto all'altro con opportune velocità e accelerazioni.

La cinematica diretta e inversa sono necessarie perchè il controllore lavora nello spazio dei giunti, mentre il sistema di pianificazione (e, in generale, gli esseri umani) nello spazio del task (cartesiano). E' quindi necessario applicare trasformazioni tra i due tipi di variabili.

Esempio di cinematica diretta per un robot RR planare

x=l1cos 1l2cos12y=l1sin 1l2sin12

Cinematica inversa:Si usa la regola del coseno:  x2

y2=l1

2l2

22⋅l1⋅l2⋅C2 quindi 

C2=x2

y2−l1

2−l2

2

2⋅l1⋅l2⇒ 2=arccos[ x

2y2

−l12−l2

2

2⋅l1⋅l2 ]1=tan−1 yx −tan−1 l2⋅S2

l1l2⋅C2

Composizione di trasformazioni di sistemi di riferimentoh, i, k sono sistemi di riferimento. In apice, è indicato il sistema rispetto a cui è descritta la trasformazione, in pedice i sistemi da cui si parte e in cui si arriva.

Per comporre le trasformazioni:

Hh,ih=Hk , i

h⋅Hh,k

h Premoltiplicazione. Per matrici espresse rispetto allo stesso sistema di riferimento

Hh,ih=Hh,k

h⋅Hk ,i

k Postmoltiplicazione. Per matrici espresse rispetto al relativo s.d.r di partenza.

Per trovare le matrici mancanti a partire da quelle note:

Hk ,ik=[Hh ,k

h ]−1⋅Hk ,i

h⋅Hh,k

h

Hk ,ih=Hh, k

h⋅Hk ,i

k⋅[Hh ,k

h ]−1

Denavit-HartenbergConvenzione utilizzata per poter calcolare più agevolmente la cinematica diretta e inversa, senza dover utilizzare metodi ad-hoc per ogni robot.

Parametri

i : angolo fra l'asse x i−1 e x i attorno a zi−1

d i : distanza fra x i−1 e x i misurata lungo la direzione di zi−1

ai : lunghezza del link: distanza fra zi−1 e zi lungo l'asse xi

i : angolo fra gli assi zi−1 e zi intorno a xi

6

1

2

l1 l2y

x

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 7: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

Definire i sistemi di riferimento1) Il sistema di riferimento X0Y0Z0 è posto alla base della catena cinematica del robot.

2) Per ogni giunto:

1. L'asse z del sistema di riferimento del giunto è parallelo all'asse del giunto. L'origine del sistema di riferimento è all'intersezione tra Zi e Zi-1 oppure nel punto di intersezione del segmento di minima distanza tra gli assi (se sghembi) e Zi.

2. L'asse x è sulla direzione del segmento di minima distanza (se gli assi sono sghembi) oppure o in direzione x i=z i−1×z i oppure orientato verso la mano del robot (in posizione di riposo).

3. L'asse y è determinato secondo una terna destrorsa (regola della mano destra) a partire dagli altri due.

Matrici di Denavit-Hartenberg

Giunto di rotazione: Ai−1, ii−1 =

C i −C iSi S iSi aiC iSi C iC i −SiCi aiS i0 Si Ci d i

0 0 0 1

Giunto di traslazione ai=0 : Ai−1, ii−1

=C i −C iSi S iSi 0Si CiC i −SiCi 00 Si Ci di

0 0 0 1

La matrice T rappresenta la trasformazione che permette di passare dal sistema di riferimento della base della catena cinematica al sistema di riferimento dell'n-esimo link (l'ultimo) della catena e viceversa. Lo scopo è, dato un punto nel sistema mobile, ottenerlo nel sistema fisso.

T=A0,n0

=A0,10⋅A1,2

1⋅⋅An−1,n

n−1

T può anche essere vista come una sottomatrice di rotazione Ri unita ad un vettore di traslazione pi :

T=[Ri p i

0 1 ]ProgrammazioneAccuratezza: differenza tra la posizione cartesiana comandata e quella effettivamente raggiunta al termine del moto. E' tanto più importante quanto più piccole sono le tolleranze.Influiscono sull'accuratezza fattori ambientali (temperatura, umidità), parametri cinematici (lunghezza dei link), parametri dinamici (cedevolezza della struttura, attrito), problemi di misura (risoluzione e non linearità di encoders o resolvers), problemi di calcolo (arrotondamenti), aspetti dell'applicazione (errori nell'installazione e nella definizione dei riferimenti).

Ripetibilità: variabilità della posizione raggiunta mandando ciclo dopo ciclo lo stesso comando al controllore. Importante quando il robot è programmato sul campo. In questo caso si lavora in variabili di giunto. E' più facile costruire robot ripetibili che accurati. Dipende dall'accuratezza del modello cinematico.

Risoluzione spaziale: la distanza minima che può essere rilevata o comandata. Dipende dalla risoluzione dei sensori interni.

Tutte le caratteristiche indicate in precedenza, dipendono dall'accuratezza del modello cinematico inverso.

Massimo payload: massimo peso che può essere trasportato dal robot a velocità ridotta mantenendo la precisione. Il nominal payload invece è misurato alla velocità massima mantenendo la precisione. All'interno del payload deve essere considerato anche il peso della mano, che per il costruttore del robot è un “optional” in quanto allo stesso robot possono essere attaccate mani differenti a seconda dei compiti da affrontare.

7

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 8: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

Massima velocità: la velocità massima a cui si può muovere l'estremità del robot completamente esteso.

Tempo di ciclo: tempo necessario ad eseguire il ciclo standard di pick and place di 12 inches.

Gestione traiettorieStop-to-stop: viene svolta in anello aperto tramite attuatori pneumatici che si spostano da un'estremità all'altra del loro possibile movimento. Non richiede calcoli real-time. La programmazione si ha a livello fisico, muovendo i fine corsa. La versatilità è limitata. Usata quasi esclusivamente per compiti di pick and place.

Point-to-point: definita sul campo: si posiziona il robot manualmente in posizione 1, si memorizzano i valori dei giunti, si sposta manualmente il braccio in posizione 2 e si salvano i valori dei giunti, ecc ecc. In fase di esecuzione, la traiettoria viene definita per interpolazione. Richiede poca memoria. Usata quasi esclusivamente per compiti di pick and place.

Traiettoria controllata: possibilità di specificare le caratteristiche della traiettoria da seguire e di integrare sensori per evitare ostacoli e risolvere altri problemi che possono presentarsi durante l'esecuzione. Gli algoritmi sono molto complessi e lo è quindi anche il controllore. Al momento attuale, non è possibile realizzarla ottenendo tutti i vantaggi descritti. Utile per assemblaggio, saldatura, ecc.

Traiettoria continua: la programmazione viene eseguita spostando manualmente il robot in tutte le posizioni che deve raggiungere. Nel frattempo, le posizioni che i giunti vengono ad assumere viene memorizzata con un campionamento sufficientemente fitto. Rieseguire i movimenti risulta quindi semplice, in quanto si riduce ad una sequenza di spostamenti point-to-point, ma con punti molto fitti. Non servono quindi funzioni di calcolo della traiettoria o della cinematica inversa. Richiede molta memoria. E' possibile solo la programmazione sul campo. Usi simili alla traiettoria controllata. Utile anche per verniciatura.

ProblematicheRagioni che rendono problematica la programmazione di robot e particolarmente lungo il testing:

● Le azioni non sono reversibili (in genere)

● E' difficile individuare le cause degli errori (soprattutto se dipendono da fenomeni esterni)

● Le situazioni sono difficilmente ripetibili (è difficile riprodurre la combinazione di eventi che ha portato ad un errore)

E' importante che i linguaggi di programmazione possano gestire processi concorrenti, perchè sono tipici della produzione industriale.

Costrutti appositi devono semplificare la gestione delle operazioni nello spazio.

Esistono molti linguaggi di programmazione per i robot. Non c'è un vero e proprio standard. Molti derivano da BASIC o Pascal. Tuttavia, quasi tutti i robot mettono a disposizione delle librerie che consentono di richiamare i loro comandi dall'interno di programmi in linguaggio C (approccio molto usato per la ricerca).

Livelli di astrazione dei linguaggi di programmazione dei robot● Livello del task: permette di definire il compito da svolgere tramite il linguaggio naturale. Il robot deve

comprendere tale linguaggio ed essere in grado di preparare un piano di azioni da eseguire per portare a termine il task.

● Livello degli oggetti: modellizza in modo più accurato gli oggetti con cui il robot deve interagire.

● Livello del manipolatore: si danno comandi precisi al manipolatore, indicandogli quali azioni compiere (livello del

8

2

3

4

5

61

12 inches

1 in

ch

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 9: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

linguaggio AL)

● Livello dei giunti: il controllo è svolto a livello della posizione del singolo giunto. Non sono accettate nemmeno le variabile cartesiane o le traiettorie.

Il linguaggio ARM-BASICSviluppato nel 1980 per il robot didattico Minimover (5gld, bassa precisione, piccole dimensioni).

Ricalca interamente il linguaggio BASIC, a cui sono state aggiunte solo le istruzioni per il controllo del robot.

● STEP D, J1, J2, ..., J6

Muove i giunti specificando il numero di passi da far compiere a ogni motore. J1, ..., J5 sono i giunti del braccio. J6 è l'apertura della mano. D è la velocità con cui deve avvenire il movimento tra un passo e il succesivo.

Tutti i giunti iniziano e terminano il movimento assieme (la traiettoria è calcolata per interpolazione lineare nello spazio dei giunti).

● CLOSE D

Chiude la mano. D è un ritardo opzionale.

● SET D

Impone il controllo manuale del robot (possibile tramite tastiera oppure teach mode). D è un ritardo opzionale.

● RESET D

Azzeramento del robot. Il robot ritorna al movimento automatico.

● READ V1, V2, ..., V6

Legge le posizioni attuali dei giunti e le memorizza nelle variabili V1, ..., V6.

● ARM N

Nel caso ci siano più robot collegati, seleziona quello da controllare indicando la porta a cui è collegato. N=(0,1).

NotePur non prevedendo comandi per interagire nello spazio cartesiano, è possibile implementarle a mano come funzioni BASIC. ARM-BASIC è fortemente robot-dependent.

Il linguaggio ALCreato per la programmazione dello Stanford Arm. Permette di controllare anche robot diversi (PUMA) quindi è abbastanza robot-independent. La sintassi deriva da Algol.

Esistono delle unità di misura predefinite: sec, ounces, deg, inches, ecc.

Dichiarazione di variabili:

TIPOVARIABILE VAR1, VAR2, ..., VARN;

Scalari (SCALAR): indicano numeri. Possono esseregli assegnate delle dimensioni (DISTANCE, VELOCITY, ANGULAR_VELOCITY, TORQUE). In tal caso la dichiarazione è del tipo: DISTANCE SCALAR DS1;

Assegnamento: VAR1 ← Valore;

Vettori (VECTOR): servono a gestire coordinate spaziali in tre dimensioni. Sono possibili le operazioni: somma, sottrazione, prodotto scalare, prodotto vettoriale. Anche al tipo vettore è possibile associare una dimensione.

Assegnamento: VAR1 ← VECTOR(2,5,3);

V1⋅V2=prodotto scalare ∣V∣=modulo del vettore

9

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 10: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

Esistono vettori predefiniti:

xhatVECTOR1,0,0 ; Versore dell'asse xyhatVECTOR0,1,0 ; Versore dell'asse yzhatVECTOR0,0,1 ; Versore dell'asse znilvectVECTOR0,0,0 ; Origine

Rotazioni (ROT): esprimono una rotazione intorno ad un asse.

Assegnamento: R1 ← ROT(xhat, 90*deg);

V ← AXIS(R); Restituisce l'asse di rotazione di R

a ← |R|; Restituisce l'angolo di rotazione di R

E' predefinita la rotazione nulla: nilrot ← ROT(zhat,0*deg);

Frame (FRAME): Serve a specificare una posizione e un orientamento nello spazio rispetto a un sistema base.

Assegnamento: F1 ← FRAME(ROT(zhat, 90*deg), 2*xhat*inches);

La definizione è data rispetto al sistema di riferimento predefinito station.

Funzioni definite per i frame:

ORIENT(F) Restituisce l'orientamento di F

POS (F) Restituisce la posizione di F

V1 ← V WRT F; WRT costruisce un vettore V1 in station con lo stesso orientamento di V in F

Frame predefiniti:

station Sistema di riferimento della base (assoluto)

barm, yarm, ... Sistema di riferimento del braccio del robot. AL può gestire più bracci.

bpark, ypark, ... Posizioni di parcheggio dei vari bracci.

Trasformazioni (TRANS): rappresenta la trasformazione di un vettore o frame da un sistema di riferimento all'altro. Si possono comporre fra loro moltiplicandole. La trasformazione più a destra nell'espressione è la prima ad essere eseguita, perchè tutte le trasformazioni sono espresse rispetto al sistema di riferimento assoluto (quindi si premoltiplica). Come le frame, le trasformazioni hanno un componente di rotazione (rispetto all'origine del sistema) e uno di traslazione (rispetto a station). La traslazione viene eseguita prima della rotazione.

Assegnamento (uguale a FRAME): F1 ← TRANS(ROT(zhat, 90*deg), 2*xhat*inches);

Funzioni definite per le trasformazioni:

T2 ← F1→F2; Date due frame F1 e F2 l'operatore → restituisce la trasformazione che permette di passare da F1 a F2

T3 ← INV(T2); Restituisce la trasformazione inversa di T2

Struttura dei blocchi: ogni programma è organizzato in una serie di blocchi, racchiusi tra BEGIN e END. I blocchi possono essere innestati e contenere dichiarazioni di variabili locali.

Movimento del braccio:

MOVE <braccio> TO <posizione> [WITH APPROACH=appr] [WITH DEPARTURE=depr] [VIA <punto_di_via> {,<punto_di_via>}*] [DIRECTLY];

<braccio>: identificativo del braccio da muovere (barm, yarm). E' un sistema di riferimento posizionato tra le dita della mano, con l'asse Z diretto nella direzione di approccio.

<posizione>: frame in cui verrà spostato il sistema di riferimento della mano. Se si desidera prendere un oggetto, <posizione> deve essere la posizione di grasp, non quella in cui l'oggetto si trova.

<punto_di_via>: punto da cui bisogna passare durante il movimento (indicato nel sistema assoluto).

Il simbolo (grinch) identifica la posizione attuale del braccio.

10

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 11: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

appr e depr indicano punti da cui il braccio deve passare, rispettivamente, avvicinandosi al target e allontanandosi dalla posizione di start. Possono essere frame, vettori di avvicinamento, o scalari (lungo l'asse Z).

DIRECTLY impone al braccio di andare direttamente al punto indicato. Se non è utilizzato, la traiettoria viene calcolata passando attraverso un punto di approach e uno di deproach predefiniti.

Uso delle dita:

OPEN <hand> TO <scalar_exp>

CLOSE <hand> TO <scalar_exp>

CENTER <arm>

OPEN e CLOSE permettono di aprire e chiudere la mano di una quantità determinata da uno scalare.

CENTER sfrutta dei sensori sulle dita per fare in modo che la mano si chiuda esattamente attorno all'oggetto senza spostarlo (se un dito lo tocca prima dell'altro), ma muovendo invece il braccio per centrare la presa.

Modellizzazione di oggetti mediante affixment:

quando bisogna definire una relazione tra due oggetti (ad es, due facce di un cubo) si usa il comando:

AFFIX <sis_rif1> TO <sis_rif2> [AT TRANS (...)] {RIGIDLY | NON RIGIDLY};

<sis_rif1> e <sis_rif2> sono due frame. Quando uno viene spostato, anche l'altro viene aggiornato di conseguenza, finche la AFFIX rimane valida.

Se il secondo sistema di riferimento è stato dichiarato ma non definito, è possibile darne direttamente la definizione relativamente al primo con la clausola AT.

Per annullare una AFFIX si usa:

UNFIX <sis_rif1> FROM <sis_rif2>;

Controllo in forza:

Per controllare le forze applicate dal robot si può utilizzare il costrutto monitor:

ON <condizione> DO <azione>;

aggiunto al termine di un'istruzione MOVE.

Come condizioni, sono possibili misurare sei grandezze: tre forze lungo gli assi (FORCE(<asse>)) e tre momenti (TORQUE(<asse>)).

Un'azione possibile è STOP barm;

E' anche possibile introdurre una clausola WITH {FORCE|TORQUE} (<vettore>) =<intesità> al termine dell'istruzione MOVE.

Parallelismo e sincronizzazione:

Per eseguire più istruzioni in contemporanea si può usare il costrutto COBEGIN:

COBEGIN BEGIN <istruzioni>END [BEGIN <istruzioni>END]+ COEND

Ogni blocco BEGIN-END è un processo svolto in parallelo agli altri.

E' possibile sincronizzare tali blocchi dichiarando un evento:

EVENT <nomeevento>;

e poi mettendo un processo in attesa di tale evento

WAIT <nomeevento>;

oppure facendo emettere da un processo il segnale che un evento si è verificato

SIGNAL <nomeevento>;

Utilizzo di strumenti:

E possibile far utilizzare al robot degli strumenti esterni tramite l'istruzione:

11

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara

Page 12: Definizioni - Appunti IngInfwindizio.altervista.org/appunti/sections/Download/Laurea... · La programmazione di un robot può essere svolta con appositi linguaggi, oppure “superata”

OPERATE <device> {WITH <setting>}+

<device> è il nome dello strumento da utilizzare. Generalmente, prima del suo uso, dovrà essere preso con la mano (ed eventualmente unito ad essa con un AFFIX).

<setting> è la definizione di qualche caratteristica d'uso dello strumento. Ad esempio, per un cacciavite si potrebbero utilizzare:

WITH VELOCITY=200*rpm

WITH DURATION=3*sec

Strutture di controllo di flusso:

IF <condizione> THEN <statement> ELSE <statement>;

FOR <svar> <- <sexp> STEP <sexp> UNTIL <sexp> DO <statement>;

WHILE <condizione> DO <statement>;

DO <statement> UNTIL <condizione>;

Procedure:

<type> PROCEDURE <nome> (<lista_parametri>);

<body>;

Se si deve restituire un valore, all'interno della procedura si usa:

RETURN (<value>);

Rilevamento posizioni di grasp (usando POINTY):

Per rilevare la posizione:

<var> <- INPUT <arm>

oppure

<var> <- INPUT <pointer>

Calibrazione del puntatore:

Si punta il braccio ad un riferimento noto, detto fiducial:

fiducial <- INPUT barm;

Si fissa il puntatore nella mano, poi:

pointer <- fiducial;

AFFIX pointer TO barm RIGIDLY;

12

http://www.windizio.altervista.org/appunti/ File distribuito con licenza Creative Commons BY­NC­SA 2.5 ITCopyright © 2007 ­  Michele Tartara