Definizione e implementazione di un interprete multilinguaggio per robot antropomorfi Candidato: Gabriele Pira Relatori: Prof. Lorenzo Pollini Prof. Mario Innocenti Ing. Giuseppe D’Urzo Robot antropomorfi? -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Un braccio robotico antropomorfo, o più semplicemente robot antropomorfo, è un braccio meccanico a sei gradi di libertà. Il nome antropomorfo si riferisce alla struttura che riprende quella di un braccio umano. La loro flessibilità permette di utilizzarli per i compiti più disparati. Dalla manipolazione di oggetti, al supporto per attrezzature, alle lavorazioni tipiche delle macchine utensili come fresatura e taglio. 2 Robot antropomorfi -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni 3 Applicazioni -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Taglio di vetroresina Operazione di fresatura 4 Programmazione -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Al pari delle macchine utensili, i robot antropomorfi devono essere programmati. Ovvero deve essere creato un programma che contiene tutti i comandi che il robot dovrà eseguire. Esistono due modalità di programmazione per robot antropomorfi: Autoapprendimento o teaching; Fuorilinea o off-line 5 Programmazione in Autoapprendimento -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni L’operatore muove il robot su di un percorso che viene memorizzato. Al termine il robot è in grado di eseguire il percorso acquisito. Vantaggi: Semplicità; Controllo immediato delle traiettorie per evitare collisioni e singolarità; Svantaggi: Scarsa precisione; Numero di posizioni limitato; 6 Programmazione in Autoapprendimento -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni 7 Programmazione fuorilinea -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Il programma viene creato lontano dal robot con l’ausilio di programmi CADCAM, simulatori e postProcessor. Vantaggi: Precisione e numero di posizioni elevato; Svantaggi: È necessaria una verifica delle traiettorie a posteriori. O direttamente con il robot o con strumenti di simulazione. 8 Simulatori e PostProcessor -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni In commercio esistono software per la simulazione di programmi robot preesistenti e software per la creazione di programmi robot a partire da percorsi CAM: I primi sono Simulatori per robot antropomorfi; I secondi sono postProcessor per robot antropomorfi; 9 Scopo del lavoro di tesi -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Realizzazione di un interprete per linguaggi robot integrato in un postProcessor. Il postProcessor in questione è “ROBOmove” sviluppato da “Qdesign S.R.L.”. Definizione di un nuovo linguaggio robot: l’APT-esteso derivato dal linguaggio per macchine a controllo numerico APT. 10 Studio preliminare -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni La realizzazione dell’interprete è stata preceduta da uno studio preliminare sui linguaggi robot KUKA, MOTOMAN e ABB. Lo studio di questi linguaggi si è concentrato su: Comandi di movimentazione lineare; Comandi di movimentazione nei giunti; Costrutti per il controllo del flusso; Espressioni matematiche e variabili; 11 Comando di movimentazione lineare -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni È il comando più diffuso in un programma robot. I parametri di questo comando sono la destinazione del movimento compresa l’orientazione del TCP ed il valore di eventuali assi esterni. Il TCP si muove linearmente dalla posizione attuale alla destinazione. Si incorre nel rischio di attraversare una singolarità ma la traiettoria è prevedibile. 12 Comando di movimentazione nei giunti -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Il robot si muove dalla configurazione attuale, alla configurazione dei giunti della destinazione. La destinazione può essere espressa sia nello spazio dei giunti che in coordinate cartesiane. Questo tipo di movimento non è affetto dal rischio di singolarità ma la traiettoria del TCP non è prevedibile con il conseguente rischio di collisioni con parti della cella. 13 Comando di movimentazione lineare e nei giunti -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni 14 Costrutti per il controllo del flusso -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Come in ogni linguaggio, anche per i linguaggi robot sono presenti costrutti per il controllo del flusso di esecuzione. Lo studio si è concentrato su: IF THEN ELSE Ciclo FOR e ciclo WHILE Chiamata a sottoprogramma Non tutti i linguaggi analizzati possiedono i costrutti elencati e non tutti con le stesse modalità. 15 Variabili -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Le variabili in un linguaggio robot vengono utilizzate sia per l’elaborazione dei dati, sia per contenere la destinazione dei comandi di movimento. Esempio in linguaggio APT-esteso VAR ROBOPOS dest =X, Y, Z, rpy Roll, Pitch, Yaw GOTO / dest In questo esempio viene creata una variabile che contiene le coordinate di un comando di movimentazione. 16 Interprete multilinguaggio -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Per implementare l’interprete multilinguaggio, è stato realizzato un unico interprete in grado di elaborare un solo linguaggio, l’APT-esteso che funge da buffer. Con dei software di traduzione i vari linguaggi robot vengono tradotti in APT-esteso. 17 Interprete multilinguaggio -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni MOTOMAN ABB APTesteso KUKA Dallo studio delle parti comuni a questi linguaggi, è stato definito il linguaggio APTesteso. 18 Linguaggio per macchine a controllo numerico APT -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Il linguaggio APT standard è un formato CAM e come tale risulta incompleto per essere utilizzato come linguaggio robot. L’APT può gestire fino a cinque gradi di libertà (CAM e macchine a cinque assi) che sono insufficienti per programmare un robot che possiede almeno sei gradi di libertà più gli eventuali assi esterni. GOTO / X, Y, Z, Zx, Zy, Zz Coordinate XYZ più coseni direttori dell’utensile o ZTool 19 Linguaggio APT-esteso -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Per ovviare alle carenze dell’APT standard, è stato stato necessario definire un nuovo linguaggio che possedesse le caratteristiche basilari dei linguaggi robot analizzati: l’APT-esteso. Le caratteristiche introdotte nell’APT-esteso sono: Estensione della sintassi del comando di movimentazione lineare GOTO Comandi per la movimentazione nei giunti Costrutti per il controllo del flusso Implementazione delle variabili 20 APT-esteso: Comando di movimento lineare -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Il comando è “GOTO” come nel caso di APT-standard, ma i parametri permettono di specificare completamente l’orientazione del TCP e il valore di eventuali assi esterni. Inoltre è possibile utilizzare variabili come parametri. GOTO / 0.0, 0.0, 0.0, rpy 0.0, 0.0, 0.0, ext 0.0 GOTO /varX, 0.0, 0.0, rpy 0.0, 0.0, 0.0, ext 0.0 con “varX” variabile numerica. 21 APT-esteso: Comando di movimento nei giunti -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Esistono due comandi di movimento nei giunti: GOTOJ: movimento nei giunti con coordinate della destinazione espresse nello spazio dei giunti. GOTOJ / A1, A2, A3, A4, A5, A6, E1…E6 GOTOJC: movimento nei giunti con coordinate espresse in cartesiano. GOTOJC / X, Y, Z, rpy Roll, Pitch, Yaw 22 APT-esteso: Comandi per controllo del flusso -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Nel linguaggio APT-esteso sono stati implementati anche i più diffusi costrutti per il controllo del flusso di esecuzione: Costrutto IF THEN ELSE Ciclo FOR Ciclo WHILE Chiamata a subroutine Definizione di una subroutine 23 APT-esteso: Variabili -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni I tipi di variabili implementati in APTesteso sono: REAL: variabile reale INT: variabile intera ROBOPOS: struttura che contiene le coordinate cartesiane di un punto più il valore degli eventuali assi esterni ROBOAXIS: struttura che contiene le coordinate nello spazio dei giunti di un punto. Le variabili possono essere utilizzate come parametri dei comandi di movimento. 24 Interprete APT-esteso: Allocazione delle variabili -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Creazione delle variabili in fase di parsing del codice. Allocazione in stack lineari locali al sottoprogramma corrente. Inizializzazione delle variabili solo in fase di esecuzione del codice. VAR REAL v1=10.0 VAR REAL v2=v1*2 GOTO / v1, v2, 0.0 25 Interprete APT-esteso: Gestione dell’Instruction Pointer -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni In seguito alla fase di parsing è stata creata una lista di comandi da eseguire. L’IP viene incrementato dopo l’esecuzione di ogni comando. I comandi di controllo del flusso di esecuzione modificano il valore dell’IP con un valore noto al comando stesso. Il nuovo valore può: Appartenere alla routine corrente Appartenere ad un’altra routine 26 Interprete APT-esteso: Gestione dell’Instruction Pointer -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Se il nuovo valore dell’IP appartiene alla routine corrente, l’esecuzione si sposta e riprende da questo valore. Non vengono eseguite operazioni aggiuntive. Se il nuovo valore dell’IP non appartiene alla routine corrente, il vecchio valore dell’IP e lo stack di variabili locali viene salvato e viene caricato lo stack delle variabili locali alla routine chiamata. Al termine di questa viene ripristinato il vecchio valore dell’IP e lo stack di variabili del chiamante. 27 Risolutore matematico -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni L’interprete APT-esteso è in grado di elaborare le più comuni espressioni matematiche. Il risolutore si basa sulla “Reverse Polish Notation” ovvero sulla riscrittura delle espressioni matematiche in una forma diversa dalla forma algebrica classica. In questa nuova forma la risoluzione di un’espressione richiede meno accessi in memoria rispetto alla forma algebrica. 28 Reverse Polish Notation -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Il nome deriva dalla “Polish Notation” inventata dal matematico polacco Jan Łukasiewicz e si basa sull’utilizzo di uno stack per contenere i risultati parziali dell’espressione. L’algoritmo utilizzato per convertire un’espressione dalla notazione algebrica alla RPN è l’algoritmo “Shunting Yard” inventato da Dijkstra. Esempio 4+5*2 452*+ 29 Traduttori per i linguaggi robot -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni I traduttori convertono il codice macchina in APT-esteso permettendo all’interprete di elaborare più linguaggi. In questo modo per elaborare un nuovo linguaggio robot è sufficiente implementare il relativo traduttore. Il limite di questo metodo è che le diversità tra i linguaggi robot possono rendere difficile o impossibile la traduzione completa degli stessi. 30 Conclusioni -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Gli obiettivi raggiunti con questo lavoro di tesi sono: Implementazione di un interprete multi-robot in grado di elaborare i più comuni comandi dei linguaggi KUKA, MOTOMAN e ABB. Definizione di un nuovo linguaggio robot, l’APT-esteso, che possiede le caratteristiche di base dei linguaggi citati. Integrazione dell’interprete all’interno del postProcessor “ROBOmove” sviluppato da “Qdesign S.R.L.”. 31 Conclusioni: sviluppi futuri e limiti -Titolo -Introduzione -Programmazione -Scopo del lavoro di tesi -Studio preliminare -Interprete multilinguaggio -Linguaggio APT -Linguaggio APTesteso -Interprete APTesteso -Conclusioni Possibili sviluppi futuri di questo lavoro sono: Ampliamento del numero di linguaggi interpretabili. Attualmente è in fase di studio il linguaggio FANUC. Ampliamento del numero di comandi interpretabili come la gestione della postura del robot, del sistema di riferimento corrente e l’introduzione di variabili di sistema. Il limite maggiore di questo lavoro è la diversità tra i vari linguaggi che può rendere molto complesso o addirittura impossibile la completa traduzione di questi e quindi l’aggiunta di nuovi linguaggi e comandi interpretabili. 32