320 likes | 474 Views
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?.
E N D
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? • 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.
Applicazioni Taglio di vetroresina Operazione di fresatura
Programmazione • 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
Programmazione in Autoapprendimento • 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;
Programmazione fuorilinea • Il programma viene creato lontano dal robot con l’ausilio di programmi CAD-CAM, 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.
Simulatori e PostProcessor • 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;
Scopo del lavoro di tesi • 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.
Studio preliminare • 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;
Comando di movimentazione lineare • È 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.
Comando di movimentazione nei giunti • 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.
Costrutti per il controllo del flusso • 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à.
Variabili • 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.
Interprete multilinguaggio • 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.
Interprete multilinguaggio MOTOMAN ABB KUKA APT- esteso Dallo studio delle parti comuni a questi linguaggi, è stato definito il linguaggio APT-esteso.
Linguaggio per macchine a controllo numerico APT • 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
Linguaggio APT-esteso • 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
APT-esteso:Comando di movimento lineare • 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.
APT-esteso: Comando di movimento nei giunti • 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
APT-esteso: Comandi per controllo del flusso • 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
APT-esteso: Variabili • I tipi di variabili implementati in APT-esteso 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.
Interprete APT-esteso:Allocazione delle variabili • 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
Interprete APT-esteso:Gestione dell’Instruction Pointer • 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
Interprete APT-esteso:Gestione dell’Instruction Pointer • 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.
Risolutore matematico • 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.
Reverse Polish Notation • 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 4 5 2 * +
Traduttori per i linguaggi robot • 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.
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.”.
Conclusioni: sviluppi futuri e limiti • 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.