Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A....

Preview:

Citation preview

Josep Fernández RuzafaDpt. Enginyeria de Sistemes, Automàtica i Informàtica Industrial

RobòticaRobòtica

Tema 4. ProgramacióTema 4. Programació

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Tema 4: Tema 4: Programació del RobotProgramació del Robot

4.1. Introducció. Formes de Programació.

4.2. Requeriments pels llenguatges de programació de robots.

4.3. Exemples de llenguatges de programació de robots: ACL, AL, RAPID

Temps Estimat: 2 hores

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Tema 4. Programació del RobotTema 4. Programació del Robot

Bibliografia

Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8.McKerrow P.J. "Introduction to Robotics" Capítol 12.Fu K. i altres " Robotica" Capítol 9.Groover M. i altres "Industrial Robotics" Capítols 8 i 9.Craig J. "Introduction to Robotics: Mechanics & Control" Capítol 12.Snyder W. "Industrial Robots" Capítol 15.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

4.1. Introducció4.1. Introducció

ACTUADORSSENSORSINTERNS

VelocitatParell

Posicióactual

PROGRAMAMOVIMENT = Posició Inicial i Final

+ Temps de trajectòria

CONTROL DE LES ARTICULACIONS

MOSTREIG

INTERPOLACIÓ

Posicionsde referència

Evolució suaude la posició i la velocitat

θ(t=nT)

θ(t)

MOVE A

Unitatde

Control

USUARI

2.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

IntroduccióIntroducció

Robot industrial: Manipulador multifuncional i reprogramable.

La programació permet fer de forma ràpida i econòmica diferent tipus de tasques.

El programa està relacionat amb la manipulació d’objectes a l’espai tridimensional.

Programa Computador Programa RobotiManipula dades i dades i objectesi Valor de la variables depèn del procés i depèn del procés i d’events externs

i temps d’execució crític

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Tipus de ProgramacióTipus de Programació

Per Guiat• Passiva• Activa

Textual• Nivell robot (Exemple: ACL, Mitsubishi, VAL, RAPID)• Nivell objecte (Exemple: RAPT)• Nivell tasca

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Programació per GuiatProgramació per Guiat

1. Moure el robot (o una maqueta) i memoritzar les posicions dels sensors interns (Programació)Programa = seqüència d’una infinitat de punts que defineixen la trajectòria

2. Reproduir el moviment memoritzat (execució)

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Programació per Guiat ActivaProgramació per Guiat Activa

• Programa ACTIVA: Es fa servir la botonera del robot per moure el robot.

• Es memoritza només les posicions de treball (o de pas) i no tota la trajectòria.

• Els sist. de prog. per guiat ACTIVA més avançats permeten definir característiques del comportament del robot (velocitat, tipus trajectòria, precisió, ..) i/o instruccions de control del flux d’execució, accions d’entrada / sortida ...

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Programació per Guiat Programació per Guiat

AVANTATGES

• Utilització simple• No calen coneixements de programació

INCONVENIENTS

• Necessitat del robot en la fase de programació• No existeix un document del programa• Els programes resulten complexes de modificar• Difícil de realitzar tasques complexes

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Programació Textual (I) Programació Textual (I)

Tasques més complexes Mètodes de programació més potents

1r llenguatge comercial VAL (Unimation) 1979.

Tipus de programació textual• Nivell robot. S’indica cada acció que ha de realitzar el robot. Permet

l’estructuració dels programes, la concurrència i una major capacitat sensorial. Ex.: MOVE POS, OPEN, SPEED 70, IF sensor=1 THEN ...

• Nivell objecte. S’indica com s’ha de manipular els objectes. Un planificador de tasques, amb la informació del món, genera les instruccions a nivell robot. Ex.: Situa l’objecte A sobre l’objecte B.

• Nivell tasca. S’indica el que ha de fer el sistema, i en cap cas es diu com s’ha de fer. Ex.: Muntar la cadira.

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Programació Textual (II) Programació Textual (II)

Programa del robot

Nivell robot...MOVE p_forat.....

PlanificadorModeldel món

Nivell Objecte....Situa travesser A en forat 1...

Especificació de la tasca

Descomposició de la tasca

Nivell tascaMuntar cadira

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Programació Textual (III) Programació Textual (III)

AVANTATGES

• Increment de la llegibilitat i potència dels programes.• Facilitat de modificació i extensió.• Programació off-line. Simulació gràfica.

INCONVENIENTS

• Dificultat d’ús.• Extensió dels programes en aplicacions complexes.

4.1.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

4.2. Requeriments d’un llenguatge 4.2. Requeriments d’un llenguatge de programació de Robots de programació de Robots

A. Pròpies d’un llenguatge de programació de computadors

• Estructurabilitat• Extensibilitat• Facilitat de “debugat”• Eficiència• Naturalitat

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Requeriments d’un Requeriments d’un llenglleng. de programació de Robots . de programació de Robots

B. Pròpies d’un llenguatge de programació de robots• Instruccions de moviment i d’acció de l’E.T.• Sincronització amb events externs ( entrades i sortides).• Capacitat d’interaccionar amb dispositius i sensors externs.• Concurrència de tasques (UC multiprocés).• Comunicació entre processos.• Tipus de dades adequats (associats a posicions, sensors, ..).• Capacitat d’interacció amb un sistema de modelat del món.• Capacitat de prendre decisions.

4.2.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

4.3. Exemples de Llenguatge de Progr. de Robots 4.3. Exemples de Llenguatge de Progr. de Robots

A. Llenguatge AL (Univ. Stanford, 1980)

• Derivat del Pascal i el Algol• Especificació a nivell robot• Instruccions per temps real: sincronització, concurrència• Tipus de dades adequats• Associat a un entorn per al modelat del món

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Exemple 1. Llenguatge AL Exemple 1. Llenguatge AL

Inserció d’un cargol en el forat

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Exemple: Llenguatge AL (I) Exemple: Llenguatge AL (I)

BEGIN inserción

{variables}diametro_tornillo ← 0.5*pulgadas;longitud_tornillo ← 1*pulgadas;intentos ← 0; sujeción ← falso;

{sistemas base}bloque ← FRAME(ROT(Z,90*grad),VECTOR(20,15,0)*pulgadas);alimentador ← FRAME(nilrot,VECTOR(25,20,0)*pulgadas);

{matrices de características}cabeza_tornillo ← alimentador *TRANS(nilrot,nilvect);punta_tornillo ← cabeza_tornillo *TRANS(nilrot,VECTOR(0,0,0.5)*pulgadas);taladro_bloque ← bloque *TRANS(nilrot, VECTOR(0,0,1)*pulgadas);

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Exemple: Llenguatge AL (II) Exemple: Llenguatge AL (II) {sistemas de puntos de paso}A ← alimentador *TRANS(nilrot, VECTOR(0,0,5)*pulgadas); B ← alimentador *TRANS(nilrot, VECTOR(0,0,8)*pulgadas);C ← taladro_bloque *TRANS(nilrot, VECTOR(0,0,5)*pulgadas);D ← taladro_bloque *TRANS(nilrot, longitud_tornillo*Z);

{Abrir la pinza}OPEN bhand TO diametro_tornillo + 1*pulgadas;

{situar la pinza sobre el tornillo}MOVE barm TO cabeza_tornillo VIA A

WITH APPROACH = -Z WRT alimentador;

DOCLOSE bhand TO 0.9*diametro_tornillo+1*pulgada;IF bhand < diametro_tornillo THEN BEGIN {Fracaso en la sujeccion del tornillo, nuevos intentos}

OPEN bhand TO diametro_tornillo + 1*pulgadas;MOVE barm TO ⊗ - 1*Z*pulgadas;

END ELSE sujeccion ← verdadero;intentos ← intentos + 1 ;

UNTIL sujeccion OR (intentos > 3);

IF NOT sujeccion THEN ABORT(<<Fracaso de sujeccion del tornillo>>); {Suspender la ejecucion }4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Exemple: Llenguatge AL (III) Exemple: Llenguatge AL (III)

{Mover el brazo hasta B}MOVE barm TO B VIA A WITH DEPARTURE = Z WRT alimentador;

{Mover el brazo hasta D}MOVE barm TO D VIA C WITH APPROACH = Z WRT taladro_bloque;

{Comprobar que el agujero está allí}MOVE barm TO ⊗ -0.1*Z*pulgadas

ON FORCE(Z) > 0.2*kg DO ABORT(“No se encontró el agujero”);

{Inserción}MOVE barm TO taladro_bloque DIRECTLY

WITH FORCE(Z) = -0.2*kgWITH FORCE(X) = 0*kgWITH FORCE(Y) = 0*kgWITH DURATION = 5*segundos;

END insercion.

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Exemples de Llenguatge de Progr. de Robots Exemples de Llenguatge de Progr. de Robots

B. Llenguatge RAPID (ABB, 1994)

• Amb tota la “potència” d’un lleng. Prog. de computadors.• Especificació a nivell robot.• Programació mitjançant paleta o ordinador extern.• Tipus i estructures de dades adequats

- Constants (CONS), Persistents (PERS) i Variables (VAR) - Tipus atòmiques: Numèric (num), Lògic (bool) i cadena (string)- Es poden definir tipus “struc”

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Exemple 2. Llenguatge RAPID Exemple 2. Llenguatge RAPID

Extracció de peces defectuoses

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Exemple 2. Llenguatge RAPIDExemple 2. Llenguatge RAPID

• Tipus de subprogrames o rutines- Procediments. No retornen cap valor- Funció. Retorna un valor que s’utilitza en una expressió- Rutina TRAP. Rutina associada a una interrupció

• Estructures de dades predefinides- Confdata. Especifica la configuració del robot- Loaddata. Descriu la càrrega transportada pel robot- Tooldata. Descriu les característiques de l’E.T.- Robtarget. Localització (configuració) del robot i dels eixos externs- Motsetdata. Definició d’alguns paràmetres de moviment

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Definició de Variables i ConstantsDefinició de Variables i Constants

PERS tooldata herramienta:= [TRUE,[[97,0,223],[0.924,0,0.383,0]],[5,[-23,0,75],[1,0,0,0],0,0,0]] ; Características elemento terminal

PERS loaddata carga:= [5,[50,0,50],[1,0,0,0],0,0,0]] ; Descripción de la carga manipulada

VAR signaldo pinza ; señal de activación de pinzaVAR signaldo activar_cinta ; señal de activación de cintaVAR signaldi pieza_defectuosa ; señal de pieza defectuosaVAR signaldi terminar ; señal de terminar programaVAR robtarget conf_espera := [[600,500,225],[1,0,0,0],

[1,1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]] ; Posición de espera

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Rutina d’interrupció Rutina d’interrupció

VAR intnum senal_pinza ; Variable interrupción

TRAP etrapHoldMove ; Para el movimiento del robotTPErase ; Borrar la pantalla de la paletaTPWrite “ERROR: La pieza se ha soltado de la pinza”TPWrite “” reg:= TPReadFK(“Cuando el sistema esté listo pulse

Start”,\FK1:=”Start”)RelMove ; Reanudar el movimientoIr_posición_espera ; Ir a posición inicial

ENDTRAP

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Subrutines (I)Subrutines (I)

PROC Coger()Set pinza ; Cerrar la pinza activando la señal digital pinzaWaitTime 0.3 ; Esperar 0.3 segundosGripLoad carga ; Señalar que la pieza esta cogidaIWatch senal_pinza ; Activar interrupción

ENDPROC

PROC Dejar() ISleep senal_pinza ; Desactivar interrupciónReset pinza ; Abrir la pinzaWaitTime 0.3 ; Esperar 0.3 segundosGripLoad LOAD0 ; Señalar que no hay pieza cogida

ENDPROC

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Subrutines (II)Subrutines (II)

PROC Coger_pieza() MOVEJ*, VMAX, z60, herramienta ; Mov. en articulares con poca precisión

; *= Punto grabado directamente por guiadoMOVEL*, V500, z20, herramienta ; Mov. línea recta con precisión MOVEL*, V150, FINE, herramienta ; Bajar con precisión máxima Coger ; Coger la piezaMOVEL*, V200, z20, herramienta ; Subir con la pieza cogida

ENDPROC

PROC Dejar_pieza()MOVEJ*, VMAX, z30, herramienta ; Mover hacia almacen piezas malasMOVEJ*, V300, z30, herramientaDejar ; Dejar la pieza.

ENDPROC

PROC Ir_posición_espera()MoveJ \Conc conf_espera, VMAX, z30, herramienta ; Mover a posición espera

ENDPROC

4.3.

© J. Fernández, J. Aranda. Dpt. ESAII - UPC

Programa principalPrograma principal

PROC main()ISignalDI senal_pinza ; Asignar señal de interrupciónCONNECT senal_pinza TO etrap ; Asignar rutina de interrupción

Ir_posicion_espera ; Mover a posición de espera

WHILE DInput(terminar)=0 DO ; Esperar señal de terminarIF DInput(pieza_defectuosa)=1 THEN ; Esperar señal de pieza defectuosa

SetDO activar_cinta,0 ; Parar cintaCoger_pieza ; Coger la piezaSetDO activar_cinta, 1 ; Activar señal de cintaDejar_pieza ; Dejar la piezaIr_posicion_espera ; Ir a posición de espera

ENDIFENDWHILE

ENDPROC

4.3.