Comau industrial robot - LaDiSpe

Transcript

Comau industrial robot - LaDiSpe
Comau Smart NS 12-1.85: una breve introduzione
Ivan Lazzero
1
Introduzione
Il presente mini-manuale ha lo scopo di introdurre lo studente ad un primo utilizzo
del Robot industriale Smart NS 12-1.85 presente presso il Ladispe - sez. Automatica del Politecnico di Torino. Il secondo capitolo, dopo una descrizione generale
del sistema, contiene una analisi più dettagliata delle parti. Nel terzo capitolo sarà
descritto il linguaggio di programmazione utilizzato dal controllore. Si precisa che
in questo contesto, anche se di notevole importanza, le problematiche relative alla
sicurezza non verranno trattate.
Figura 1: Comau NS 12-1.85
1
2
Descrizione del sistema
Il robot Smart NS 12, costruito dalla Comau S.p.A., è un robot destinato a scopi
tipicamente industriali. Il suo utilizzo è specifico per lavorazioni in celle industriali,
linee di montaggio, etc. Dalla Comau esso viene fornito pronto all’uso, ovvero
completo del controllore esterno C4G. Tale controllore contiene gli azionamenti
elettrici, l’hardware e il software necessario alla programmazione e movimentazione
del robot, il Teach Pendant Wifi (d’ora in poi WiTP), ovvero l’interfaccia con
l’utente, e ovviamente l’algoritmo di controllo (di posizione) del robot. Il WiTP
permette di impostare le variabili di sistema, di creare, visualizzare e debuggare
programmi, di visualizzare gli output del robot (misurati da appositi sensori) e in
generale di effettuare ogni tipo di operazione prevista per il robot. Vi è inoltre
la possibilità di collegare il controllore ad un PC, tramite collegamento ethernet.
In tal modo il computer acquisisce (quasi) tutte le funzionalità del WiTP, con il
vantaggio di avere una tastiera e uno schermo più comodi da usare!
2.1
Il robot
Si tratta di un robot antropomorfo a 6 gradi di libertà. I sei giunti, tutti rotoidali,
possono essere divisi in due gruppi: i primi tre rappresentano la spalla, i secondi
tre il polso. Alla flangia, ovvero la parte terminale del braccio, può essere attaccato
qualunque attrezzo per i vari tipi di lavorazione. In questo caso, a scopo puramente
didattico, è stato attaccato un sistema di riferimento, su cui si ritornerà in seguito.
Il fissaggio a terra è realizzato mediante una piastra in acciaio fissata munita di
tasselli oppure è disponibile un gruppo opzionale composto da una piastra fissata
al robot tramite viti e da quattro piastre sottostanti ancorate a terra tramite
tasselli che vengono saldati alla piastra stessa. La piastra consente il livellamento
del robot tramite quattro viti. La base del robot è fissa e su essa ruota attorno
all’asse verticale (asse 1), la colonna che porta il motoriduttore dell’asse 2. Un
braccio collega l’asse 2 all’avambraccio ed include i motoriduttori degli assi 3-4-5-6;
all’estremità dell’avambraccio si trova il polso. Gli assi dei robot sono dotati di fine
corsa software (programmabili) e meccanici ammortizzati in fornitura standard.
2.2
Il controllore
Come già accennato, l’algoritmo di controllo realizza un controllo di posizione.
Questo vuol dire che non sarà possibile avere un’interazione o contatto del robot
con l’ambiente, ma solo un posizionamento della punta operativa nello spazio libero. Il compito dell’utente sarà quindi quello di fornire in qualche modo i punti finali
per ogni movimento. Sul controllore è installato il software, creato appositamente dal costruttore, per permettere la creazione dei vari programmi di movimento.
2
Il linguaggio di programmazione, il PDL2, è simile al Pascal, con, ovviamente,
opportune modifiche. Nel prossimo capitolo sarà descritto tale linguaggio. In generale è possibile creare, debuggare ed eseguire un programma PDL2 direttamente
sul WiTP, anche se tale operazione risulta molto laboriosa, data la limitatezza
della tastiera. Utilizzando invece il collegamento ethernet con un PC, tale lavoro
si semplifica molto, avendo l’utente disponibili gli stessi tool presenti sul WiTP. È
possibile inoltre creare un programma direttamente sul PC, con un normale editor di testo, e scaricarlo in seguito sul controllore, sempre tramite collegamento
ethernet, per poi compilarlo ed eseguirlo. È possibile anche editare un programma e compilarlo direttamente sul PC, utilizzando l’apposito software WinC4G, e
scaricare solo il file eseguibile. C’è da notare che nella creazione di un programma direttamente sul controllore, l’editor fornisce una correzione della sintassi linea
per linea, in modo da avere un programma sintatticamente corretto, ancora prima
di compilarlo. Il pannello del controllore presenta gli interruttori indicati in fig.
2. In particolare il selettore modale (E) consente di operare in diverse modalità,
selezionabili tramite l’apposita chiave, tra cui:
• La posizione PROG è utilizzata per la programmazione del robot, ovvero per
movimenti manuali, creazione dei programmi di movimento e debug. Ogni
movimento in questa modalità avviene a velocità ridotta.
• La posizione AUTO LOCAL è utilizzata per l’esecuzione in automatico
di programmi funzionanti, con possibilità di debug e piccole modifiche del
programma.
2.3
WiTP
Tasto COORD seleziona il sistema di riferimento:
JOINT modalità giunti. I tasti risultano associati a ciascuno degli assi del
braccio selezionato; gli assi ausiliari, eventualmente presenti, seguono
quelli del braccio. La pressione di uno dei tasti determina lo spostamento del corrispondente asse nella direzione positiva o negativa secondo le
direzioni indicate dalle targhette poste sul braccio.
UFRAME modalità di spostamento lineare secondo la terna di riferimento
x, y, z dell’utente (ad esempio la terna che descrive il pezzo in lavorazione). I primi tre tasti consentono spostamenti di tipo lineare nella
direzione dei tre assi del sistema di riferimento utente (definito dalla
variabile $UFRAME); i successivi tre tasti consentono rotazioni dell’attrezzo intorno agli stessi assi mantenendo invariata la posizione della
punta operativa (Tool Center Point - TCP).
3
Figura 2: Controllore C4G
BASE modalità di spostamento lineare secondo la terna di riferimento x,
y, z del mondo (la terna di riferimento dell’officina). I primi tre tasti
consentono spostamenti di tipo lineare nella direzione dei tre assi del
sistema di riferimento mondo; i successivi tre tasti consentono rotazioni
dell’attrezzo intorno agli stessi assi mantenendo invariata la posizione
del TCP. Si ricordi che la terna mondo non è definita direttamente
da alcuna variabile di sistema; infatti è la base del robot che viene
rappresentata rispetto al mondo mediante la variabile $BASE.
TOOL modalità di spostamento lineare secondo la terna di riferimento x, y,
z dell’utensile (o terna TCP). I primi tre tasti consentono spostamenti di
tipo lineare nella direzione dei tre assi del sistema di riferimento dell’u4
Figura 3: Vista anteriore del controllore WiTP
tensile (definito dalla variabile $TOOL); i successivi tre tasti consentono
rotazioni dell’attrezzo intorno agli stessi assi mantenendo invariata la
posizione del TCP (punto di lavoro dell’utensile).
Tasti +% e -% servono per modificare l’OVERRIDE ovverosia per modulare
percentualmente la velocità del braccio. Combinati con il tasto SHIFT, permettono di ottenere i seguenti valori: SHIFT -% → 25% SHIFT +% →
100%
Tasto START (verde) in stato PROGR consente l’esecuzione del movimento
(da ambiente di editing/debug o da comando Execute) per tutto il tempo
in cui viene mantenuto premuto. In stato LOCAL avvia i programmi di
movimento che si trovano nello stato READY, cioè in attesa di questo tasto.
Tasto HOLD (giallo) la pressione di questo tasto arresta tutti i programmi
HOLDable ed il movimento per tutti i bracci. Alla successiva pressione,
lo stato di HOLD viene rimosso.
5
Figura 4: Vista posteriore del controllore WiTP
Tasto di abilitazione Il pulsante di destra ed il pulsante di sinistra funzionano
in modo assolutamente identico. Lo scopo è quello di avere un pulsante di
Enabling Device per gli operatori destri ed uno per gli operatori mancini.
Ognuno di essi è un dispositivo di sicurezza a tre posizioni che deve essere tenuto premuto nella posizione intermedia, per permettere movimenti in
automatico o in manuale, quando il sistema è in stato di Programmazione.
Quando questo pulsante è premuto i motori sono attivati automaticamente
(DRIVE ON)
Il tipo di funzionamento, per ognuno di essi è il seguente:
1. rilasciato - DRIVE OFF
2. pressione intermedia - DRIVE ON
3. pressione a fondo - DRIVE OFF (antipanico)
La pressione contemporanea di questi due pulsanti è considerata un errore
da parte del sistema, quindi è necessario utilizzarne uno solo per volta.
6
Figura 5: Schema di pressione dei tasti di abilitazione
3
Programma WinC4G
Il programma WinC4G è l’interfaccia stile Windows su PC verso l’Unità di Controllo. Il programma fornito di serie con l’Unità di Controllo è la versione base.
Il collegamento tra il PC e il controllore avviene tramite una connessione TCP
su ethernet.
Raggruppa al suo interno una serie di funzionalità quali:
• La visualizzazione dei files presenti sul Robot
• La possibilità di tradurli ed editarli
• La ricerca e la visualizzazione degli errori
• La possibilità di aprire una finestra “Terminale” per inoltrare comandi direttamente all’Unità di Controllo
• La trasformazione di programmi già esistenti in funzione di nuovi punti di
riferimento.
7
4
Il linguaggio PDL2
Per creare nuovi programmi con il WiTP è necessario eseguire i seguenti passaggi:
1. Controllare che il selettore sul C4G sia sulla modalità manuale PROG
2. Selezionare la finestra Prog (L3)(tastiera virtuale sulla sinistra dello schermo
del WiTP)
3. Selezionare il menù Prog (F1) → Crea
4. Inserire il nome del programma e premere ok
5. Selezionare tramite le frecce il programma creato e premendo il tasto blu
ENTER portare il manipolatore nella posa di interesse
6. Premere il tasto REC: compare cosı̀ l’istruzione di MOVE TO posxxxx nella
finestra di editor del programma nome programma.cod. I dati della posa vengono registrati nel file nome programma.var associato al programma
nome programma.cod che state editando.
E’ possibile impostare il tipo di movimento che si vuole registrare effettuando
le seguenti operazioni:
(a) premere Selezione (F4)
(b) Selezionare Impostazioni tasto REC
(c) Utilizzare le frecce per scorrere tra e nei menù a tendina che compaiono
(d) Premere OK
7. Continuare fino alla fine del programma.
8. Per salvare premere il tasto Prog → Salva
9. Impostare il selettore del C4G su AUTO LOCAL
10. Premere Drive ON(R5)
11. Selezionare la finestra Prog (L3)
12. Selezionare il programma creato
13. Premere Esecuzione(F2) → Attiva
14. Premere START
8
ATTENZIONE!!!!!
Se il programma funziona, esso può essere eseguito ad una qualunque velocità.
Prima bisogna essere sicuri che funzioni correttamente, per cui si consiglia di ridurre la velocità di esecuzione a circa il 20% della velocità massima almeno per la
prima volta. La regolazione della velocità avviene con i tasti “+% -%” osservando
il valore modificato sulla barra di stato, in alto sullo schermo.
4.1
I sistemi di riferimento
Prima di passare a descrivere la struttura di un programma, occorre soffermarsi
sui vettori ed i sistemi di riferimento utilizzati dal PDL2. Un vettore nello spazio
dei giunti rappresenta ovviamente le posizioni angolari di ciascuno dei 6 giunti. I
sistemi di riferimento cartesiani sono invece 3. Il primo, indicato con $BASE è il
sistema di riferimento fisso alla base del robot. Il secondo, indicato con $TOOL,
coincide con l’attrezzo alla punta. Poiché l’attrezzo può cambiare, anche la variabile $TOOL può essere modificata di conseguenza. Il terzo, indicato con $UFRAME,
è il sistema di riferimento del piano di lavorazione. Per default coincide con $BASE, ma può essere spostato a piacimento. Il sistema $TOOL è specificato rispetto
al sistema di riferimento del braccio 6, ovvero rispetto alla flangia del robot, mentre il sistema di riferimento $UFRAME è specificato rispetto a $BASE. Come
detto in precedenza, l’attrezzo attualmente montato sulla flangia è un sistema di
riferimento ed è quindi “ragionevole” assegnare alla variabile $TOOL proprio tale
sistema di riferimento. La variabile $TOOL dovrà contenere la posizione (x, y, z)
dell’origine del sistema di riferimento e la terna di angoli di Eulero (z - y - z) che
ne definiscono l’orientamento rispetto al sistema di riferimento del braccio 6.
L’immagine 6 è la rappresentazione grafica, presente sul manuale Comau del
robot, dei tre sistemi di riferimento: Il sistema di riferimento indicato col numero
5 è il riferimento $BASE; esso è per convenzione centrato all’ancoraggio del pavimento e l’asse Z è l’asse di rotazione del primo giunto. Il sistema di riferimento
6 è il sistema di riferimento del mondo e coincide per definizione con il sistema
$BASE. Il sistema di riferimento 4 è $UFRAME ed è il sistema di riferimento del
piano di lavoro. Il sistema di riferimento 1 è il riferimento alla flangia solidale con
l’ultimo braccio del robot e presenta l’asse Z uscente dalla flangia, diretto lungo
l’ase di rotazione dell’ultimo giunto, secondo quanto previsto dalle convenzioni di
Denavit-Hartenberg. Infine il sistema di riferimento 2 è il sistema di riferimento
alla punta operativa e rappresenta quindi $TOOL; l’asse Z per questo sistema di
riferimento è diretto lungo la direzione di approccio della punta.
9
Figura 6: Terne di riferimento
5
Il programma
La struttura generale di un programma PDL2 è la seguente:
PROGRAM prog_name
< dichiarazione variabili >
BEGIN < CYCLE >
< corpo del programma >
END
Listing 1: Struttura di un programma PDL
< dichiarazione variabili > contiene la dichiarazione delle variabili secondo la
seguente sintassi:
VAR var_name : < identificatore >
dove il campo identificatore può essere uno fra:
• INTEGER: numero intero
• REAL : numero reale
• BOOLEAN : variabile booleana
10
• POSITION : variabile di posizione cartesiana
• JOINTPOS : variabile di posizione giunto
• ecc...
NOTA: Le variabili POSITION sono variabili di posizione cartesiana espresse
nel sistema di riferimento $UFRAME. È bene quindi definire tale sistema di riferimento quando si intende utilizzare questo tipo di variabili. Se non è definito verrà
utilizzato quello presente in memoria. Una variabile POSITION contiene quindi
la posizione cartesiana (x, y, z) e la terna di angoli di Eulero (z - y - z) che ne
definiscono l’orientamento, rispetto al sistema di riferimento $UFRAME.
L’opzione CYCLE di BEGIN, se presente, indica che il programma dovrà essere
eseguito ciclicamente.
Nel corpo del programma sono presenti, oltre alle varie inizializzazioni e settaggi
di variabili, le funzioni per il movimento del robot. La funzione principale per il
movimento è la MOVE.
5.0.1
La funzione MOVE
Poiché è possibile eseguire solo movimenti di tipo punto-punto, per ogni movimento, e quindi per ogni MOVE, occorre specificare sempre il punto di arrivo e il tipo
di traiettoria da seguire per raggiungere tale punto.
È inoltre possibile specificare la traiettoria da seguire durante il movimento.
In generale la sintassi per il comando MOVE è la seguente:
MOVE < traiettoria > < destinazione > < opzioni >
Esistono tre tipi di traiettorie:
• JOINT Il movimento dei giunti è coordinato, ovvero tutti i giunti iniziano e
terminano il loro movimento contemporaneamente. Questo implica che non
è controllato il movimento del TOOL ma quello dei giunti. Il TOOL quindi
seguirà una traiettoria non prevedibile, sebbene ripetibile.
• LINEAR Il movimento è lineare nello spazio cartesiano, sia in posizione che
in assetto, ovvero il TOOL eseguirà un movimento lungo una linea retta
e l’assetto varierà linearmente tra inizio e fine. In questo caso i giunti si
muoveranno non-linearmente.
• CIRCULAR Il movimento tra inizio e fine è lungo un arco di circonferenza.
È necessario quindi specificare un terzo punto, detto punto di VIA, dal quale
dovrà passare il TOOL. Questo tipo di traiettoria non consente di specificare
il punto finale di arrivo in uno dei tanti modi disponibili, ma solo nel seguente
modo:
11
MOVE CIRCULAR TO P1 VIA P2
In ogni tipo di traiettoria, la legge temporale del movimento è sempre di tipo
“trapezoidale in velocità”.
Se in una istruzione MOVE la traiettoria è omessa, viene seguita quella di
default (JOINT). Segue ora un elenco di modi per specificare il punto finale di un
movimento. Questi modi si applicano alle traiettorie di tipo JOINT e LINEAR.
• MOVE TO {α1, α2, α3, α4, α5, α6}
si muove alla posizione giunti 0 α1, α2, α3, α4, α5, α60 I valori α sono angoli in
gradi.
• MOVE TO POS (x, y, z, e1, e2, e3)
si muove alla posizione cartesiana x, y , z con assetto e1 , e2 , e3.
• MOVE BY{α1, α2, α3, α4, α5, α6}
Si muove nella posizione giunti {α1, α2, α3, α4, α5, α6} relativa a quella corrente, ovvero l’ i-esimo giunto incrementa la sua posizione attuale di α
gradi.
• MOVE NEAR PO BY dist
Si muove verso la posizione PO, ma si ferma dist millimetri rispetto l’asse -z
del TOOL dalla posizione PO.
• MOVE AWAY dist
Si muove via dalla posizione attuale di dist millimetri lungo l’asse -z del
TOOL .
• MOVE RELATIVE VEC(x, y, z) IN BASE
Si muove di un vettore VEC (x, y , z) dalla posizione corrente. Il vettore
è espresso nel sistema di riferimento BASE. Al posto di BASE può esserci
TOOL, o UFRAME.
• MOVE ABOUT VEC(x, y, z) BY a IN TOOL
La punta ruota attorno al vettore VEC (x, y , z) di una quantità in gradi. Il
vettore è espresso nel sistema di riferimento TOOL. Al posto di TOOL, può
esserci BASE o UFRAME.
• MOVE FOR dist to PO
Si muove verso PO ma si ferma dopo aver percorso dist mm lungo la traiettoria.
12
In alternativa alla funzione MOVE vi è la funzione MOVEFLY ... ADVANCE che
ha la stessa sintassi della MOVE, ma con l’aggiunta dell’opzione ADVANCE. Questa funzione fa sı̀ che il movimento non si fermi al raggiungimento del punto finale
ma venga raccordato’ al movimento successivo, ottenendo quindi un movimento
continuo.
5.0.2
Esempio di programma PDL2
PROGRAM test
-- Questa e ’ una linea di commento
VAR p0 : POSITION -- Variabile di posizione cartesiana
j0 : JOINTPOS
-- Variabile di posizione giunti
i , j : INTEGER
-- Variabili intere
BEGIN
-- dichiarazione del sistema di riferimento UserFrame
$UFRAME := POS (0 , 0 , 0 , 0 , 0 , 0 , ’ ’)
-- dichiarazione del sistema di riferimento TooL
-- posizione (0 ,0 ,120) in mm e assetto (63.64 ,0 ,0) in gradi
$TOOL := POS (0 , 0 , 120 , 63.64 , 0 , 0 , ’ ’)
$PROG_ACC_OVR := 80
-- Settaggio Accelerazione massima al 80\%
$PROG_DEC_OVR := 70
-- Settaggio Decelerazione massima al 70\%
$PROG_SPD_OVR := 100
-- Settaggio Velocita ’ massima al 100\%
MOVE TO $CAL_SYS -- move verso la posizione di home
DELAY 1000 -- Attesa 1000 ms
-- Assegnazione variabile cartesiana pO Posizione (900 ,0 ,1350) in
mm e assetto del TOOL ( -45 ,90 , -90) in gradi
p0 := POS (900 , 0 , 1350 , -45 , 90 , -90 , ’ ’)
FOR i := 1 TO 6 DO -- ciclo for
j0 [ i ] : = 0 -- istruzione del ciclo
ENDFOR -- fine ciclo for
MOVE JOINT TO p0 -- Movimento di tipo JOINT verso la posizione p0
p0 . Y := 100 -- Modifica componente Y della posizione p0
MOVE LINEAR TO p0 -- Movimento di tipo LINEAR verso la nuova P0
j := 4 -- Assegnazione variabile intera j
j0 [ j ] := 30 -- Cambiamento della quarta componente del vettore j0
MOVE BY { , , ,30} -- Movimento di tipo JOINT del solo giunto 4 di
+30 gradi
MOVE TO j0 -- Movimento di tipo JOINT verso la posizione giunti j0
MOVE TO $CAL_SYS -- Ritorno alla posizione di home
END test -- fine del programma
Listing 2: Struttura di un programma PDL
13

Documenti analoghi

Comau Robotics per la scuola

Comau Robotics per la scuola La robotica industriale ha nel nostro Paese, e in particolare in Piemonte, una tradizione di assoluta eccellenza. E’, quindi, necessario che non solo le imprese italiane di automazione si impegnino...

Dettagli

Giaccone La robotica - Istituto di Istruzione Superiore "Aldo Moro"

Giaccone La robotica - Istituto di Istruzione Superiore "Aldo Moro" 3.4………………………………………………………………………………………………………… Prestazioni di un robot industriale. 3.5 ……………………………………………………………………………………………………………………………………..Principali errori. 3.6……………………………………………………………………………………………………...

Dettagli

Simulatore cinematico di Robot 3R

Simulatore cinematico di Robot 3R all’implementazione di una funzione che ci faccia sapere non solo quali sono le soluzioni, quando è possibile trovarle, ma anche più in generale se esistono e se sono in numero finito o infinito. Q...

Dettagli

Tesi - Università degli Studi di Parma

Tesi - Università degli Studi di Parma In questo capitolo ci si riferirà al robot Comau Smart SiX installato nel laboratorio di robotica della Palazzina 1 della sede scientifica di Ingegneria dell’Università degli Studi di Parma.

Dettagli

Progettazione di Robot per Applicazioni Indoor: Sviluppo e

Progettazione di Robot per Applicazioni Indoor: Sviluppo e predecessore, ci si è posti come obiettivo principale quello di poter avere a disposizione un'architettura in grado di essere facilmente aggiornata, ed una struttura meccanica funzionale, in consid...

Dettagli