Upload
others
View
10
Download
0
Embed Size (px)
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.