27
Josep Fernández Ruzafa Dpt. Enginyeria de Sistemes, Automàtica i Informàtica Industrial Robòtica Robòtica Tema 4. Programació Tema 4. Programació

Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

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

RobòticaRobòtica

Tema 4. ProgramacióTema 4. Programació

Page 2: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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

Page 3: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 4: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 5: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 6: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 7: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 8: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 9: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 10: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 11: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 12: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 13: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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

Page 14: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 15: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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

Page 16: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 17: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 18: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 19: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 20: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 21: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

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

Exemple 2. Llenguatge RAPID Exemple 2. Llenguatge RAPID

Extracció de peces defectuoses

4.3.

Page 22: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 23: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 24: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 25: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 26: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.

Page 27: Robòtica - UPC Universitat Politècnica de Catalunyarob/protegit/apunts/tema4.pdf · Barrientos A. i altres "Fundamentos de Robòtica" Capítol 8. McKerrow P.J. "Introduction to

© 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.