UNIVERSIDAD NACIONAL DE
EDUCACIÓN A DISTANCIA
DEPARTAMENTO DE INGENIERÍA DE
SOFTWARE Y SISTEMAS INFORMÁTICOS
ESCUELA TÉCNICA SUPERIOR DE
INGENIERÍA INFORMÁTICA
JUAN DEL ROSAL, 16
28040 MADRID
APARTADO DE CORREOS 60.141
Ingeniería Técnica en Informática de Sistemas (Plan Nuevo y Plan Antiguo)
Ingeniería Técnica en Informática de Gestión (Plan Nuevo y Plan Antiguo)
ASIGNATURA:
ROBÓTICA
Curso 2006/2007
Soluciones a los
PROBLEMAS PROPUESTOS
TEMA 6
Carlos Cerrada Somolinos
Profesor de la asignatura
Preparados por:
Enunciado del PROBLEMA 6.1
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
6.1
Solución al PROBLEMA 6.1
1) Planteemos un primer esquema de funcionamiento en seudocódigo:
Mover robot a posición de espera segura sobre el primer punto
10 Esperar mordaza apretada (pieza colocada en posición inicial)
20 Mover robot a punto de inicio de soldadura
100 Ordenar retirada de pieza de la mordaza
Esperar giro finalizado de la mordaza de apriete (pieza en orientación correcta)
Realizar trayectoria de soldadura
Retirar robot a posición de no interferencia con el giro de pieza
Comprobar si se han dado los 4 giros (pieza completada)
Si todos los giros ir a 100
Ordenar giro siguiente
Realizar trayectoria de retroceso
Ir a 20
Realizar trayectoria de retroceso
Ir a 10
2) Analicemos los recursos de programación necesarios:
• Señales digitales de Entrada/Salida a tener en cuenta:
nº 2 (salida): señal de activación giro de mordaza, para ordenar el comienzo del giro
siguiente.
nº 1 (salida): señal de activación de fin de ciclo, para ordenar comienzo de retirada de
pieza de la mordaza.
nº 12 (entrada): señal que indicará que el giro en curso de la mordaza ha terminado.
nº 11 (entrada): señal que indicará que la pieza está colocada en posición inicial de la
mordaza.
Las definiciones correspondientes podrían ser:
DEFINE GIROM = OUTPORT 2
DEFINE FINCICLO = OUTPORT 1
DEFINE FINGIRO = INPORT 12
DEFINE MORDAZA = INPORT 11
• Para desactivar/activar la pinza de soldadura se supondrá que funciona con las
instrucciones OPEN/CLOSE.
• Como puntos “seguros” se pueden definir un conjunto de ellos colocados sobre los
puntos de soldadura extremos y fuera de la estructura mecánica de la pieza (por
ejemplo a 10cm). Pueden servir para definir a su vez una trayectoria completa de
retroceso, así como para determinar las zonas de cambio de dirección de soldadura sin
tropezar con la pieza.
• También se supone definido un sistema de referencia cartesiano respecto al que se
definen las coordenadas de los puntos y las direcciones de orientación de la
herramienta. Una propuesta sería la de la figura en la que el eje Z coincide con el eje de
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
6.2
giro de la mordaza, y el origen del sistema está colocado 5cm por debajo del plano
inferior del aspa.
• Cada punto seguro se podría definir en este sistema como un agregado de 6
componentes, siendo las 3 primeras las coordenadas cartesianas del punto y las 3
últimas las componentes de un vector dirección coincidente con la dirección de
soldadura en ese punto (y con el que se supone
debe estar alineado el vector de aproach de la
herramienta del robot en el mismo). Una
posible definición de los mismos según este
esquema y la figura adjunta sería:
Z
P2
35.0
30.0
25.0
P1
P3
efectuados (desde 1 hasta 4) que permita controlar el bucle de fin de operación,
llamémosla CONTAGIROS. También se pueden utilizar dos variables CONTAH y
CONTAV para contar en cada ciclo el número de soldaduras realizadas en horizontal y
vertical respectivamente.
3) Un posible código más refinado usando el lenguaje del texto sería (páginas siguientes):
DEFINE P1 = POINT <0,10.25,35,0,0,-1>
DEFINE P2 = POINT <0,25.25,35,0,0,-1>
DEFINE P3 = POINT <0,35.25,35,0,-1,-1>
DEFINE P4 = POINT <0,35.25,20,0,-1,0>
DEFINE P5 = POINT <0,35.25,15,0,-1,0>
DEFINE P6 = POINT <0,35.25,0,0,-1,1>
DEFINE P7 = POINT <0,25.25,0,0,0,1>
DEFINE P8 = POINT <0,10.25,0,0,0,1>
• Se necesita una variable contador para los giros
P4
P5
10.25
P8
25.25
P7
35.25
P6
Y
10.0
20.0
15.0
10.0
5.0
0.25
X
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
6.3
PROGRAMA SOLDARCRUZ
%
% Definición de puertos de E/S, constantes y variables
%
DEFINE GIROM = OUTPORT 2
DEFINE FINCICLO = OUTPORT 1
DEFINE FINGIRO = INPORT 12
DEFINE MORDAZA = INPORT 11
DEFINE P1 = POINT <0,10.25,35,0,0,-1>
DEFINE P2 = POINT <0,25.25,35,0,0,-1>
DEFINE P3 = POINT <0,35.25,35,0,-1,-1>
DEFINE P4 = POINT <0,35.25,20,0,-1,0>
DEFINE P5 = POINT <0,35.25,15,0,-1,0>
DEFINE P6 = POINT <0,35.25,0,0,-1,1>
DEFINE P7 = POINT <0,25.25,0,0,0,1>
DEFINE P8 = POINT <0,10.25,0,0,0,1>
DEFINE RETROCESO = PATH (P7,P6,P5,P4,P3,P2,P1)
DEFINE PUNTO = POINT
DEFINE CONTAGIROS, CONTAH, CONTAV = INTEGER
%
% Comienzo de código de ejecución
%
MOVE P1
CONTAGIROS = 0
CONTAH = CONTAH + 1
IF CONTAH GT 4 GOTO 25
PUNTO = PUNTO + <0, 5, 0>
MOVES PUNTO
GOTO 20
PUNTO = P1
WAIT FINGIRO, ON
CONTAH = 1
APPROS PUNTO, 10
PUNTO = PUNTO + <0, 0, -10>
5
10 WAIT MORDAZA, ON
20 CALL SOLDAR
25 DEPARTS PUNTO, 10
30 CALL SOLDAR
35 DEPARTS PUNTO, 10
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
MOVES P3
MOVES P4
PUNTO = P4
CONTAV = 1
APPROS PUNTO, 10
PUNTO = PUNTO + <0, -10, 0>
CONTAV = CONTAV + 1
IF CONTAV GT 2 GOTO 35
PUNTO = PUNTO + <0, 0, -5>
MOVES PUNTO
GOTO 30
MOVES P6
6.4
CONTAH = CONTAH + 1
IF CONTAH GT 4 GOTO 45
PUNTO = PUNTO + <0, -5, 0>
MOVES PUNTO
GOTO 40
MOVES P7
PUNTO = P7
CONTAH = 1
APPROS PUNTO, 10
PUNTO = PUNTO + <0, 0, 10>
40 CALL SOLDAR
45 DEPARTS PUNTO, 10
SIGNAL GIRAM, ON
MOVES RETROCESO
CONTAGIROS = CONTAGIROS + 1
IF CONTAGIROS LT 4 GOTO 10
SIGNAL FINCICLO, ON
GOTO 5
END PROGRAM
%
% Subrutina para soldar un punto
%
SUBROUTINE SOLDAR
CLOSEI
WAIT 500
OPENI
END SUBROUTINE
% msec
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
6.5
Enunciado del PROBLEMA 6.2
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
6.6
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
6.7
Solución al PROBLEMA 6.2
1º) Análisis del problema y recursos necesarios.
Del análisis previo de este problema observamos que se trata de un enunciado similar
al planteado en el texto, si bien se pueden considerar ciertas simplificaciones:
• No hay que efectuar ningún test a las piezas, y por tanto tampoco parece necesario
usar la caja de deshechos (aunque aparezca en la figura) al no tener que considerar
piezas defectuosas.
• Para no complicar en exceso la programación, y dado que se pueden hacer las
hipótesis oportunas, se considerará que no hay que gestionar alarmas de falta de
componente en alimentador ni componente mal agarrado por la pinza.
Con estas consideraciones podemos plantear una primera descripción por pasos de la
tarea a programar:
1
2
Solicitar la colocación de un nuevo pallet vacío en la posición de llenado
Gestionar dos bucles, uno por filas y otro por columnas, para calcular (y recorrer)
cada una de las posiciones libres del pallet (que tiene forma matricial).
Por cada posición libre calculada realizar la secuencia:
3
3.1 Recoger pieza del alimentador
3.2 Dejar pieza en la posición libre del pallet
4
5
6
7
Analicemos a continuación los recursos de programación necesarios:
Calcular la siguiente posición libre del pallet
Si el pallet NO está lleno volver al paso 3
Ordenar la retirada del pallet lleno
Repetir el ciclo: vuelta a 1
• Señales de control digitales de Entrada/Salida a tener en cuenta:
Ea (entrada): Indicará que hay pieza en el alimentador
Ep (entrada): Indicará que el pallet está disponible en su posición inicial
Sm (salida): señal de control del motor de la cinta transportadora
• La pinza se activará también con una señal digital de salida, si bien su programación
puede considerarse integrada en el lenguaje Código-R mediante las instrucciones:
; para cerrar la pinza
; para abrirla
PINZA = CERRAR
PINZA = ABRIR
• Según el gráfico parece necesario definir varios puntos (constantes o variables de tipo
posición) asociados a localizaciones de los distintos elementos que aparecen en el
mismo, tales como:
Pa : Posición del alimentador (fija)
Pp : Posición del pallet (fija). Podemos usarla como posición inicial de llenado del
mismo y llamarla Pi
Oa : Orientación según llegan las piezas en el alimentador (fija)
Op : Orientación en que habrá que colocar las piezas en el pallet (fija)
Pv : Posición del hueco libre actual en el pallet en cada instante (variable)
Soluciones del Equipo Docente de Robótica a los Problemas Propuestos del Tema 6
6.8
Pf : Posición del primer hueco libre de cada fila del pallet (variable)
Ic : Incremento de posición según el eje x entre cada columna del pallet (fija)
If : Incremento de posición según el eje y entre cada fila del pallet (fija)
• Macroinstrucciones y subrutinas: Como se ha visto en el texto base, se puede
simplificar la codificación usando macroistrucciones y subrutinas. Pueden utilizarse las
mismas que en el ejemplo del libro.
• Se necesitan dos bucles anidados, y se pueden usar los n
Comentarios de: Robótica. Soluciones a los problemas propuestos (0)
No hay comentarios