TFM - Roberto Alonso - Mijangos PDF
TFM - Roberto Alonso - Mijangos PDF
TFM - Roberto Alonso - Mijangos PDF
Agradecimientos
Después de un duro y largo camino para llegar hasta aquí, quiero agradecer a mi madre, a
mi padre, a mi hermana y a mi pareja el apoyo y ánimo transmitido durante todo este
tiempo, ya que sin ellos no lo hubiera conseguido.
Para conseguir superar este máster, no existen atajos, tan solo sirve el esfuerzo, trabajo y
sacrificio, realizado durante dos intensos años. En estos años, he crecido como persona
como nunca lo había hecho antes, he aprendido que la gente maravillosa escasea y no voy
a separarme de las que he encontrado. Con esto, quiero agradecer a todos los amigos que
me han ayudado y han estado en los momentos difíciles.
3
Resumen Aplicación pick and place
Resumen
La evolución que se está produciendo en la industria durante la Cuarta Revolución Industrial
está llevando a las empresas a la búsqueda de la automatización y la creación de fábricas
inteligentes. En este ámbito han surgido los robots paralelos como respuesta a aquellas
aplicaciones que se quieren realizar con una gran precisión y alta velocidad.
Paralelamente se está dotando a estos robots de cámaras que, junto con programas de visión
artificial, hacen que estas células robotizadas sean inteligentes y tomen decisiones a partir
del entorno que perciben.
Este Trabajo Fin de Master tiene como objetivo el diseño e implementación de una célula
robotizada con un sistema de visión artificial para operaciones pick and place.
La célula robotizada contiene un robot paralelo tipo Delta (de la empresa Omron), cuya
arquitectura de control abierta permite implementar estrategias de control avanzada. Para la
programación del robot y sus distintas tareas, se va a utilizar el entorno de programación de
Sysmac Studio.
Para su monitorización y control se ha realizado una interfaz gráfica que permite el control de
la palabra que va a formar el robot y de su velocidad, al mismo tiempo que informa del estado
de la conexión TCP y de las posiciones de los cubos que va a recoger y depositar en cada
plataforma.
Palabras clave: Automatización, Robótica, Robot paralelo, Visión Artificial, Pick and Place.
4
Abstract Aplicación pick and place
Abstract
The evolution that is taking place in industry during the Fourth Industrial Revolution is leading
companies to seek automation and the creation of smart factories. Parallel robots have
emerged in this field as a response to applications that need to be carried out with high speed
and precision.
At the same time, these robots are being equipped with cameras that, together with artificial
vision programmes, make these robotic cells intelligent and make decisions based on the
environment they perceive.
The objective of this Master's Thesis Project is the design and implementation of a robotic cell
with an artificial vision system for pick and place operations.
This robotic cell contains a parallel robot type Delta (from the company Omron), whose open
control architecture allows the implementation of advanced control strategies. For the
programming of the robot and its various tasks, the Sysmac Studio programming environment
will be used.
The application to be implemented with the robot cell consists of forming words by means of
cubes with letters screen-printed on the upper face. In this way, the user will use a graphic
interface to select the word he/she wishes to form and an artificial vision system will be used
to detect where each of the letters is at any given moment, send this coded data to the robot,
and the robot will pick up and place the cubes with the letters necessary to form the word.
For its monitoring and control, a graphic interface has been created that allows control of the
word that the robot is going to form and its speed, at the same time as it reports the status of
the TCP connection, the positions of the cubes that it is going to pick up and deposit on each
platform.
This work has been carried out exclusively at the University of the Basque Country, specifically
at at the Faculty of Engineering from Bilbao.
Keywords: Automation, Robotics, Parallel Robot, Artificial Vision, Pick and Place.
5
Laburpena Aplicación pick and place
Laburpena
Laugarren Industria Iraultzaren barnean, enpresak prozesu desberdinak automatizatzen eta
lantegi adimendunak sortzen ari dira. Honetako, robot paraleloak oso egokiak izan daitezkeela
ikusi da, zehaztasun eta abiadura handiz lan egiteko ahalmena baitute.
Aldi berean, azken urteetan, robot horiei kamerak jartzen hasi dira, ikusmen artifizialean
oinarrituz, ingurunearen egoeraren arabera erabakiak hartzeko gaitasuna duten zelula
robotizatu adimendunak sortuz.
Master Amaierako Lan honen helburua, pick and place operazioetarako, ikusmen artifiziala
duen zelula robotizatu bat diseinatzea eta inplementatzea da.
Zelula robotizatua, Omron enpresako Delta robot paralelo batean oinarrituta dago. Robot
honen kontrol irekiko arkitekturak, kontrol aurreratuko estrategia desberdinak ezartzea
ahalbidetzen du. Robota eta haren zereginak programatzeko, Sysmac Studioko programazio-
ingurunea erabiliko da.
Zelula robotizatua erabiliz inplementatuko den aplikazioa, goiko aldean letra serigrafiatuak
dituzten kuboen bidez hitzak osatzean datza. Behin aplikazioa diseinatu eta inplementatuta,
erabiltzaileak, interfaze grafikoan osatu nahi duen hitza hautatuko du. Aukeraketa hau egin
ondoren, ikusmen artifizialeko sistema bat erabiliko da, letra bakoitza une bakoitzean non
dagoen antzemateko. Ikusmen artifizialeko sistemak, datu kodetu horiek robotari bidaliko
dizkio, eta honek, behar diren letrak dituzten kuboak mugituko ditu aukeratutako hitza osatuz.
Interfaze grafiko bat garatuko da, aplikazioa hau monitorizatu eta kontrolatzeko. Interfaze
honek, robotak osatuko duen hitza eta mugimenduen abiadura aukeratzea ahalbidetzeaz
gainera, TCP konexioaren egoeraren eta kuboen posizioen berri emango du.
Lan hau Euskal Herriko Unibertsitateko Bilboko Ingeniaritza Eskolan burutu da.
Hitz gakoak: Automatizazioa, Robotika, Robota Paraleloa, Ikusmen Artifiziala, Pick and
Place.
6
Índice Aplicación pick and place
Índice
Capítulo 1:............................................................................................................................. 24
1. Introducción. .................................................................................................................. 25
Capítulo 2:............................................................................................................................. 30
Capítulo 3:............................................................................................................................. 33
Capítulo 4:............................................................................................................................. 45
7
Índice Aplicación pick and place
Capítulo 5:............................................................................................................................. 61
8
Índice Aplicación pick and place
5.6.1. LabVIEW.............................................................................................................. 74
Capítulo 6:............................................................................................................................. 77
9
Índice Aplicación pick and place
T7. Programación, configuración y calibración del movimiento del robot. ................... 144
10
Índice Aplicación pick and place
11
Índice Aplicación pick and place
12
Índice Aplicación pick and place
13
Índice de figuras Aplicación pick and place
Índice de figuras
Figura 1.1. Primer robot industrial instalado en General Motors llamado Unimate. .......... 26
Figura 1.3. Robot tipo SCARA (izquierda) y Robot tipo DELTA (derecha). ...................... 27
Figura 3.10. Imágenes obtenidas por el sistema de visión del robot. ............................... 43
Figura 4.11. Diagrama de conexionado de los componentes del robot Delta. .................. 54
14
Índice de figuras Aplicación pick and place
Figura 5.5. Esquema del modelo OSI y del modelo de Ethernet. ..................................... 65
Figura 5.11. Ejemplo de imágenes a comparar con la técnica de pattern machine. ......... 73
15
Índice de figuras Aplicación pick and place
Figura 6.8. Vista en planta del área de trabajo del cilindro del robot. ............................... 83
Figura 6.12. Cubos con cada letra serigrafiada en la parte superior. ............................... 84
Figura 6.14. Distribución del habitáculo superior del robot en la realidad. ........................ 85
Figura 6.27. Funcionamiento de las tareas y sus prioridades en Sysmac Studio. ............ 90
16
Índice de figuras Aplicación pick and place
Figura 6.39. Logo de la aplicación para capturar el tráfico de red. ................................. 100
Figura 6.42. Secuencia e intercambio de datos entre el servidor y el cliente. ................ 102
Figura 6.44. Zona de visión de la cámara con el robot interfiriendo. .............................. 104
Figura 6.47. Zona de visión del robot original vs zona de trabajo. .................................. 105
Figura 6.49. Esquema de las tiras led dentro de la célula. ............................................. 106
Figura 6.53.. Imagen de la webcam sin iluminación y con iluminación. .......................... 108
Figura 6.54. Tablero de ajedrez como patrón con medidas de pixeles. .......................... 109
17
Índice de figuras Aplicación pick and place
Figura 6.57. Imagen de la plataforma en escala de grises junto con su histograma. ..... 110
Figura 6.65. Mensaje mostrado por pantalla con la clase de letra y su posición en
milímetros. ....................................................................................................................... 116
Figura 6.66. Resultado obtenido mediante el programa de visión artificial. .................... 117
Figura 6.67. Resultado obtenido mediante el programa de visión artificial para otras
distribuciones de letras. ................................................................................................... 117
Figura 6.68. Resultado obtenido mediante el programa de visión artificial para otras
distribuciones de letras. ................................................................................................... 118
Figura 6.69. Representación del lugar donde se va a recoger y depositar cada letra en la
interfaz............................................................................................................................. 119
Figura 6.71. Chasis de aluminio de la célula robotizada y paneles de metacrilato. ........ 122
Figura 6.72. Sensores de las puertas del circuito de seguridad. .................................... 123
Figura 6.73. Panel de la botonera auxiliar programable junto con sus pilotos. ............... 123
18
Índice de figuras Aplicación pick and place
Figura 6.91. Barra deslizante para regular la velocidad del robot. .................................. 132
Figura 6.96. Interfaz con cada uno de los paneles recuadrados. ................................... 134
Figura 6.103. Esquema del cableado entre el ordenador y el PLC. ................................ 138
Figura 6.105. Esquema de alimentación del aire comprimido de la pinza ...................... 139
Figura 6.106. Esquema del conexionado de los componentes del robot. ....................... 139
19
Índice de figuras Aplicación pick and place
Figura V.17. Barra deslizante para regular la velocidad del robot. ................................. 302
20
Índice de figuras Aplicación pick and place
Figura VII.16. Sistemas de coordenadas del robot Mini Delta. ....................................... 319
21
Índice de tablas Aplicación pick and place
Índice de tablas
Tabla 4.1. Especificaciones del rendimiento del robot. ..................................................... 50
Tabla 5.3. Comparación de características entre UDP, TCP y Modbus TCP. .................. 69
Tabla 5.6. Comparación de características entre LabVIEW, App Designer y Matlab Guide.
.......................................................................................................................................... 76
Tabla 6.4. Posición de cada letra dentro de la matriz a recoger. .................................... 118
22
Acrónimos Aplicación pick and place
Acrónimos
3D Tres dimensiones
Mm Milímetros
Cm Centímetros
S Segundos
Min Minutos
Gr. Gramos
º Grados angulares
º/s Grados/segundo
Kg Kilogramos
M Métrica
Ø Diámetro
N/mm2 Newton/milímetro^2
E/S Entradas/Salidas
23
Capítulo 1. Introducción Aplicación pick and place
Capítulo 1:
INTRODUCCIÓN
24
Capítulo 1. Introducción Aplicación pick and place
1. Introducción.
La robótica nació llena de promesas para el futuro con un desarrollo tan rápido e intenso que,
en pocos años, habría alcanzado metas que en aquellos momentos correspondían al ámbito
de la ciencia ficción. El continuo desarrollo junto a las novedosas metodologías de la
inteligencia artificial, permitían imaginar robots con una gran flexibilidad y capacidad de
adaptación al entorno, que invadirían todos los sectores productivos de forma rápida e
imparable.
Para su realización, será fundamental documentarse acerca del contexto actual existente en
el ámbito industrial y de la robótica, cuya evolución en los últimos años ha sido determinante.
La profundización en estos conceptos permitirá la definición de una serie de objetivos que
aseguren que el proyecto es realizado correctamente acorde con la denominada Industria
4.0.
Una vez se hayan definido las bases sobre las que se va a fundamentar este proyecto, se
procederá a analizar detalladamente las diferentes alternativas valoradas para la célula
robotizada a diseñar, destacando, como no podría ser de otra manera, el robot paralelo que
será integrado. Esta elección resulta fundamental, ya que, de ella va a depender la elección
del escenario a desarrollar en la célula.
25
Capítulo 1. Introducción Aplicación pick and place
Tras analizar todas las alternativas en cada tarea a realizar se aplicará la que se considere
más óptima. Para la realización de este diseño resulta imprescindible la utilización de
herramientas de simulación para llevar a cabo la programación del robot.
Los robots industriales han sufrido una rápida evolución desde la aparición de la primera
generación de robots industriales a principios de los 60 [2]. La compañía estadounidense
Unimation, se encargó de dirigir el primer robot (ver Figura 1.1) de transferencia programable
para el levantamiento de grandes piezas de metal caliente, para depositarlo posteriormente
en líquidos refrigerantes, tarea que era muy peligrosa para los operarios.
Figura 1.1. Primer robot industrial instalado en General Motors llamado Unimate.
26
Capítulo 1. Introducción Aplicación pick and place
Estos robots de segunda generación empezaban a reconocer algunos elementos del entorno
y su sistema de controlador empleaba microprocesadores o Controladores Lógicos
Programables (PLC).
Figura 1.3. Robot tipo SCARA (izquierda) y Robot tipo DELTA (derecha).
1.2. Contexto.
El desarrollo del TFM se va a realizar utilizando la célula robotizada del robot paralelo Delta
del departamento de Ingeniería de Sistemas y Automática que se puede observar en la figura
1.4.
27
Capítulo 1. Introducción Aplicación pick and place
Para este trabajo, se parte de una célula robotizada con un chasis rectangular de cuatro
caras. En su interior, en el espacio superior, se encuentra el robot delta con el que se va a
trabajar y en el espacio inferior, se encuentran los múltiples dispositivos y componentes
necesarios para su funcionamiento.
En la figura 1.5, se muestra con mayor detalle la parte superior, donde se encuentra el robot
Mini Delta. Se trata de un robot paralelo compuesto por una base fija y una base móvil, ambas
unidas por tres brazos con la misma longitud.
28
Capítulo 1. Introducción Aplicación pick and place
En este apartado, se va a exponer la estructura del presente Trabajo Fin de Master que se
divide en diez capítulos y siete anexos:
II. En el anexo 2, se presenta el código del controlador del robot desarrollado en Sysmac
Studio.
VII. En el anexo 7, se indican los pasos a seguir para realizar la calibración mecánica y
hardware del robot.
29
Capítulo 2. Objetivos y alcance del trabajo Aplicación pick and place
Capítulo 2:
OBJETIVOS Y ALCANCE
DEL TRABAJO
30
Capítulo 2. Objetivos y alcance del trabajo Aplicación pick and place
Recientemente, hay un creciente interés por incorporar la robótica paralela en los procesos
de producción como respuesta a la demanda de producción de hoy en día.
Los tiempos y la calidad de producción juegan un papel muy importante donde las empresas
quieren obtener la mayor ventaja posible. Con este objetivo, los centros de producción buscan
la manera de automatizar los procesos, de manera que se pueda fabricar de manera continua,
sin interrupciones, logrando la mayor flexibilidad posible en la producción y consiguiendo
satisfacer las demandas personalizadas de los clientes.
La robótica puede abordar estos retos de producción, pero si además se consigue trasladar
al humano fuera de tareas repetitivas, rápidas y tediosas, se obtendrá un beneficio por partida
doble.
Para el control de esta célula se ha implementado una interfaz gráfica de usuario que permita
al usuario controlar dicha célula garantizando la seguridad tanto del robot como del operario.
Además, se han analizado varias alternativas que permitan solucionar cada problemática y
así, escoger la más adecuada para cada problema. Los objetivos para poder completar este
proyecto son:
31
Capítulo 2. Objetivos y alcance del trabajo Aplicación pick and place
• Programar la aplicación de pick and place con el programa de control del robot.
• Diseñar e implementar la interfaz gráfica para qué el usuario pueda decidir que tarea
quiere que realice el robot.
• Diseñar e implementar las piezas 3D que componen el entorno de trabajo dentro de
la célula robotizada.
• Configurar y calibrar el robot.
El alcance de este TFM comprende la integración de una interfaz gráfica, junto con un sistema
de visión artificial dentro de una célula robotizada compuesta por un robot paralelo. Para ello,
se han llevado a cabo distintas simulaciones que han permitido completar el proyecto.
Para este fin, es necesario llevar a cabo un análisis de los distintos métodos de extracción de
características de una imagen, de la calibración, disposición e iluminación de la cámara. Para
ello, resulta imprescindible realizar un análisis de los distintos protocolos de comunicación
que permiten desarrollar esta aplicación.
Para este proyecto, cada parte se lleva a cabo mediante simulaciones para posteriormente
realizar la implementación física con el robot.
32
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
Capítulo 3:
ESTADO ACTUAL DE LA
TECNOLOGÍA
33
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
Desde la creación del primer robot programable en 1954, la robótica ha evolucionado hasta
convertirse en una parte indispensable de nuestras vidas. Hoy en día, existen robots en
prácticamente cualquier ámbito de la sociedad, y cada día su número y sus capacidades
aumenta, haciendo que sea más fácil la vida con ellos.
Desde la aparición de las primeras máquinas de trabajo, el ser humano ha buscado la forma
de disminuir el esfuerzo físico y aumentar la eficiencia lo máximo posible. Esta búsqueda es
la que ha llevado a la tecnología hasta el estado actual, pudiendo agruparse este desarrollo
en cuatro grandes revoluciones industriales.
Cada una de las cuatro revoluciones industriales fue impulsada por un conjunto de
tecnologías que transformaron el mundo en su momento, marcando una antes y un después.
La Primera Revolución Industrial surgió a mediados del siglo XVIII y tuvo su origen en
Inglaterra, país que se convirtió durante mucho tiempo en el primer productor de bienes
industriales del mundo y generó consecuencias económicas, sociales, culturales e incluso,
ambientales [4].
La máquina de vapor, cuyo combustible era el carbón mineral, fue la base sobre la que se
asentó todo el desarrollo. Esto permitió la sustitución de las viejas herramientas artesanales
por maquinaria más productiva.
34
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
La Segunda Revolución Industrial iniciada entre los años 1850 y 1870, se extiende hasta
1914, coincidiendo con el inicio de la Primera Guerra Mundial. En esta época comienzan a
aparecer nuevas formas de energía, como el petróleo, que reemplazó al carbón, y la
electricidad [5].
La Industria 4.0 implica la promesa de una nueva revolución que combina técnicas avanzadas
de producción y operaciones con tecnologías inteligentes que se integran en las
organizaciones, las personas y los activos.
Esta revolución está marcada por la aparición de nuevas tecnologías como la robótica, la
analítica, la inteligencia artificial, las tecnologías cognitivas, la nanotecnología y el Internet of
Things (IoT), entre otras [7].
Las organizaciones deben identificar las tecnologías que mejor satisfacen sus necesidades
para invertir en ellas. Si las empresas no comprenden los cambios y oportunidades que trae
consigo la Industria 4.0, corren el riesgo de desaparecer.
información está impulsado por el continuo y cíclico flujo de información y acciones entre los
mundos físicos y digitales.
35
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
Las ventajas que los robots industriales aportan a las empresas y son clave de su éxito son:
• Fiabilidad y calidad mejorada. Todos los brazos robóticos que son distribuidos por las
marcas fabricantes de robots industriales deben pasar por un proceso previo de
estudio y pruebas de repetitividad y carga útil, con la finalidad de garantizar que
cuando estos salgan al mercado puedan realizar sus trabajos con precisión y
eficiencia.
• Reducción de costes de producción. Un retorno a la inversión (ROI) rápido, permite
poder recuperar los costes de la inversión inicial. Instalar robots industriales genera
un impacto positivo en la producción, ya que se incrementan los tiempos de ciclos.
• Incremento de la producción. Una línea de fabricación adecuada es fundamental para
incrementar la eficiencia. Los humanos tienen ciertas limitaciones que los robots no,
como el hecho de trabajar a una velocidad constante sin descansos, lo que finalmente
se expresa en mayores ganancias para las empresas y una mejora de su
competitividad.
• Mejor utilización de los espacios de la empresa. Al reducir el espacio ocupado por un
área de trabajo a través de la automatización de algunas partes de la línea de
producción, se puede disponer de esos espacios para otro tipo de operaciones.
• Mayor calidad en los productos. Los robots industriales están diseñados para realizar
trabajos efectivos y precisos. Al implementar estos en la línea de operaciones de una
empresa se reducen el número de defectos en los productos, disminuyendo así los
costes de los desperdicios de productos.
• Incremento de la seguridad en el lugar de trabajo. El incremento de la seguridad y
sobre todo de la ergonomía, es una ventaja importante que ofrece la automatización
36
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
Los robots industriales disponen de hasta 7 ejes que pueden ser empleados para la
realización de múltiples trabajos, que pueden ir desde la soldadura robotizada, el paletizado
de cajas y de sacos, dispensar materiales y productos, cortar láminas o el transporte de
materiales entre otros.
• Robots serie.
• Robots paralelos o manipuladores.
Los robots tipo serie están formados por una cadena cinemática abierta, con una estructura
similar a un brazo humano. Su principal ventaja frente a los robots paralelos se encuentra en
la cinemática y en el espacio de trabajo:
Un robot paralelo es un mecanismo formado por una plataforma móvil que está conectada a
una base por al menos dos series de cadenas cinemáticas independientes. Esta configuración
de cadena cinemática cerrada, otorga a los robots paralelos, ciertas ventajas con respecto a
37
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
los robots serie, en términos de rigidez, velocidad, precisión e inercia en movimiento [12]. La
figura 3.2, muestra la estructura cinemática de un robot serie y un robot paralelo.
Estos robots destacan por sus aplicaciones como máquina-herramienta, como simuladores
espaciales, en tareas de automoción, empaquetadoras de alimentos y ensambladores de
microchips, entre otros. La razón por la que se emplean estos robots, es debido a su excelente
desempeño dinámico para completar operaciones en las líneas de producción para una
clasificación rápida, un agarre preciso y un ensamble seguro [13].
Dentro de los robots paralelos, cabe destacar los robots tipo Delta (ver Figura 3.3), que se
caracterizan por una gran velocidad, un posicionamiento seguro y preciso, costes bajos de
mantenimiento y una alta eficiencia, lo que permite amortizar la inversión en periodos de un
año [14].
El robot tipo Delta nace de la necesidad de los sectores de manufactura y producción, con el
objetivo de utilizar manipuladores que trabajen a alta velocidad y con una alta precisión, en
todas las tareas realizadas.
El robot Delta es un tipo de robot paralelo de tres grados de libertad conformado por dos
bases unidas por tres cadenas cinemáticas basadas en el uso de paralelogramos. La base
superior se encuentra fija, mientras que la base inferior, donde se ubica el efector final, es
móvil y siempre está paralela a la base fija. Para su construcción se pueden utilizar
actuadores rotacionales o lineales según la aplicación para la cual quiera usarse.
38
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
Los robots Delta más actuales pueden llegar a disponer de hasta cinco grados de libertad y
tener hasta seis ejes. Su característica más destacable es que pueden ser capaces de
ejecutar hasta 300 movimientos por minuto.
En síntesis, los robots Delta están constituidos por (ver Figura 3.4):
• El cuerpo o base que integra todas las articulaciones principales, los servomotores,
los reductores planetarios y la electrónica.
• Los brazos mecánicos que actúan como bielas y se encargan de desplazar el efector
final sobre la superficie, siempre de forma paralela.
• El efector final en el extremo de los brazos.
• Los gripper o pinzas de vacío ubicados en el efector final que realizan las tareas de
recolección.
39
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
La aplicación principal de este tipo de robot es la operación de Pick and place, que consiste
en recoger un objeto de una posición para posteriormente depositarlo en otra. La rapidez de
esta operación es clave en ciertas partes de las cadenas de producción, donde cada objeto
se recoge selectivamente en base a unas características y se depositan en otro lugar, con
una colocación u orientación cambiante [16], [17].
Por lo tanto, los robots Delta están diseñados especialmente para aplicaciones de baja carga
y son muy demandados en la industria alimentaria, electrónica, cosmética y farmacéutica, ya
que no hay ningún otro robot que pueda moverse sin sobrecalentarse a velocidades
parecidas.
40
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
Los fabricantes de alimentos tienen que cumplir con estándares de lavado de equipos y evitar
la exposición del producto a contaminantes potenciales como lubricantes, fragmentos de
metal, plástico o polvo. Debido a la arquitectura del robot delta, los motores se pueden aislar
bien en gabinetes, y muchos modelos están disponibles con una clasificación de protección
de ingreso IP69K, lo que permite que el robot sea explotado por lavado a alta presión y alta
temperatura.
Estos robots permiten a estas cadenas de producción trabajar de forma continua las 24 horas
a temperaturas bajas, cumpliendo todos los estándares de seguridad alimentaria, sin
presentar peligros microbiológicos y acelerando posteriormente el proceso de envasado.
Además, con el paso del tiempo, las mejoras realizadas a los robots Delta hacen que estos
ya no se limiten solo a tareas de embalaje y ensamblaje, sino que sean empleados para
aplicaciones de ultra precisión (en escala de nanómetros), tales como cirugía robótica remota,
relojería y mecanizado de precisión; asimismo, pueden desempeñarse para simuladores de
vuelo, manipuladores de grandes cargas y posicionamiento de antenas.
41
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
En este apartado se exponen distintas líneas de investigación en los que actualmente se está
trabajado con robots paralelos.
Así, este trabajo propone una planificación de trayectorias basado en curvas pitagóricas
quinticas para realizar la operación suave y estable a alta velocidad, permitiendo optimizar
las trayectorias para reducir el tiempo de ciclo de la operación de recogida y colocación, como
se muestra en la figura 3.8.
42
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
Otros trabajos se centran en la dinámica y los espacios singulares de estos robots. Por
ejemplo, algunos trabajos [23]–[25] proponen un control completo de impedancia del espacio
de tareas con dinámica inversa usando cuaterniones duales para el modelado cinemático.
Además, se integra una red neuronal para componer una representación libre de
singularidades y adecuada para el cálculo en tiempo real. Esta red es capaz de calcular la
cinemática directa más de 150 veces más rápido que un algoritmo de resolución de
ecuaciones numéricas, con un error de estimación promedio de menos de 0.5mm.
En diferente ámbito, existen varios trabajos acerca de robots tipo Delta dedicados a jugar al
tenis de mesa. Para ello emplean distintas técnicas de control visual, donde cabe destacar el
realizado por la compañía OMRON con el robot FORPHEUS, [26], que se puede ver en la
figura 3.9.
Se trata de un robot paralelo diseñado para ser tutor de tenis de mesa equipado con
inteligencia artificial, capacidad de sentir, moverse y responder adecuadamente a las
acciones del oponente, e incluso cuenta con diferentes niveles de habilidad.
Este robot no solo juega, sino que también ayuda a mejorar la habilidad del jugador humano,
lo que lo convierte en un tutor en lugar de una simple máquina para golpear la pelota.
La capacidad de predicción del sistema de visión artificial (ver Figura 3.10) se ha mejorado
mediante el uso de cuatro cámaras y una cámara estéreo de procesamiento de imágenes de
43
Capítulo 3. Estado actual de la tecnología Aplicación pick and place
alta velocidad, que permite detectar simultáneamente la forma, habilidad, posición y velocidad
del jugador de la raqueta y la trayectoria de la pelota. De hecho, es capaz de predecir la
dirección en que el jugador devolverá la pelota antes de que sea golpeada.
Con esta intención, y poniendo el punto de mira en la rapidez para clasificar diferentes piezas
mediante movimientos pick and place, se pretende abordar la aplicación de técnicas de visión
artificial en una célula robotizada donde se incorporará un robot paralelo.
44
Capítulo 4. Selección del robot Aplicación pick and place
Capítulo 4:
SELECCIÓN DEL ROBOT
45
Capítulo 4. Selección del robot Aplicación pick and place
En este capítulo se tratan los distintos robots valorados para este proyecto, sus características
y las razones por las que se ha elegido. Posteriormente, se realiza una caracterización técnica
del robot seleccionado, los elementos que lo componen, sus principales propiedades y los
elementos de los que consta la célula robotizada.
En el mercado existen gran variedad de robots tipo Delta, pero su selección se realiza en
base a las especificaciones de trabajo, al proceso que se quiere automatizar y las
características de producción deseadas. Con estos datos, los principales parámetros en los
que se basa la selección del robot son:
Atendiendo a estas características, los robots paralelos candidatos valorados para esta
aplicación son:
46
Capítulo 4. Selección del robot Aplicación pick and place
En la figura 4.1 se muestra el IRB 360, uno de los robots industriales más rápido del mundo
que ofrece una alta fiabilidad y precisión. Es un robot FlexPicker de ABB que ha sido el líder
en tecnología robótica de pick and place de alta velocidad y última generación durante los
últimos 20 años [27].
ABB IRB 360 FlexPicker es capaz de realizar aplicaciones de preparación de pedidos muy
rápidas y está optimizado para aplicaciones de empaquetado. El robot tiene un rendimiento
de movimiento sobresaliente con tiempos de ciclo muy cortos y una precisión muy elevada.
El modelo escogido de este robot soporta cargas útiles de hasta 1kg con alcances de hasta
1130mm. Además, puede ser de tres o cuatro ejes, permitiendo este último la rotación de la
pinza. Sus tiempos de ciclo varían desde 0.3 segundos a 0.36 segundos para cargas que van
desde 0.1kg a 1kg.
El robot Yaskawa MPP3S [28] (ver Figura 4.2) es un robot diseñado para operaciones de pick
and place que permite realizar envasados de alta velocidad de hasta 230 ciclos por minuto.
El robot Yaskawa MPP3S consta de cuatro ejes (con rotación de la pinza) de alta velocidad,
es capaz de mover cargas de hasta 3 kg a altas velocidades. Cuenta con 150 ciclos por
minuto con una carga útil de 3 kg y 185 ciclos por minuto con una carga útil de 1 kg.
Además, debido a su reducido tamaño (diámetro inferior a 700 mm) permite ser implementado
en instalaciones de alta densidad. Este robot realiza una carrera útil de 300 mm con un rango
de trabajo de 800 mm y una repetibilidad de 0.1mm.
47
Capítulo 4. Selección del robot Aplicación pick and place
El robot Fanuc M-3iA/6A (ver Figura 4.3) consta de seis ejes de alta velocidad perfecto para
tareas de picking, embalaje y ensamblaje [29]. Su muñeca de tres ejes permite girar las piezas
y herramientas de acuerdo con los requisitos de las aplicaciones de ensamblaje.
Cuenta con un alcance máximo de 1350mm y puede transportar una carga útil de hasta 6 kg
con una repetibilidad de 0.1mm.
El robot CR_UGD4MINI-NR (ver Figura 4.4) de OMRON [30], es un robot de 3 ejes (sin
rotación de la pinza) de alta velocidad, capaz de mover cargas de hasta 1 kg a velocidades
altas y hasta 200 ciclos por minuto con una carga útil de hasta 1 kg. Debido a sus pequeñas
dimensiones cuenta con un rango de trabajo de 500 mm, una repetibilidad de 0.2mm y una
protección IP65.
Para este proyecto se ha seleccionado este robot debido principalmente a sus pequeñas
dimensiones, ya que, el criterio de selección principal, es un robot cuya área de trabajo no
supere los 400mm y tenga una repetibilidad menor de 0.2mm a altas velocidades para poder
alcanzar los objetos con una buena precisión.
Además, las piezas con las que va a trabajar en ningún caso superarán los 50 gramos y
tampoco se necesita la rotación de la pinza como en modelos anteriores, por lo que su tamaño
y sencillez colocan al robot CR_UGD4MINI-NR de OMRON como el mejor candidato para
esta tarea.
48
Capítulo 4. Selección del robot Aplicación pick and place
En este apartado, se procede a exponer las características técnicas del robot seleccionado.
El robot CR_UGD4MINI-NR Delta es un robot de alta velocidad constituido por fibra de
carbono y unos servodrivers que pueden ser utilizados en las aplicaciones de pick and place
más exigentes.
Está diseñado como un sistema cinemático Delta cuyas características principales son:
La placa base del robot lleva una etiqueta de identificación con los datos importantes, entre
los cuales se encuentran:
• Tipo de robot.
• Peso total del robot.
• Año de producción.
• Número de serie, importante para pedir repuestos.
El robot consta de tres ejes colocados radialmente que dan al TCP libertad para moverse en
tres direcciones, ‘X’, ‘Y’ y ‘Z’. Los brazos primarios del robot están construidos con aluminio
anodizado y montados directamente en una caja de cambios de dos etapas para garantizar
una alta rigidez.
Los brazos secundarios están montados con cojinetes de rótula de acero inoxidable a los
brazos primarios y el TCP, esto garantiza un bajo desgaste con lo que el mantenimiento es
mínimo. A continuación, en la figura 4.5 se muestran las partes del robot.
49
Capítulo 4. Selección del robot Aplicación pick and place
Robot CR_UGD4MINI
Por otro lado, en cuanto a las velocidades de la ruta del robot para aplicaciones de pick and
place, se muestra la tabla 4.2 asociada a la figura 4.6 de la ruta del robot.
Esta figura representa una ruta Pick and place del robot y dependiendo de la carga, el tiempo
de ciclo para recorrer dicha ruta varia como muestra la tabla 4.2.
25 x 305 x 25 1 kg 0.50 s
Para más información sobre las características técnicas del robot CR-UGD4MINI-NR [31],
[32] consultar cualquiera de los dos documentos técnicos de la bibliografía.
En este apartado se expone la cinemática del robot con el que se va a trabajar. Como se
muestra en la figura 4.7, la geometría de este robot Delta, está formada por la parte fija
(superior), tres brazos, uno con cada motor, tres brazos móviles y la conexión de los tres
brazos móviles. La rotación de estos tres motores permite el movimiento en las direcciones
‘X’, ‘Y’ y ‘Z’.
50
Capítulo 4. Selección del robot Aplicación pick and place
• Rf = 112 mm. Distancia (radio) desde el centro del marco fijo hasta el motor del eje.
• Rm = 40 mm. Distancia (radio) desde el centro del marco móvil hasta el punto de
conexión del enlace 2.
• Lf = 150 mm. Longitud del enlace 1.
• Lm = 435 mm. Longitud del enlace 2.
En este apartado, se trata el espacio de trabajo del robot CR-UGD4MINI-NR, el cual, utiliza
tres servomotores paralelamente para poder manejar la posición del extremo del robot. Dicho
extremo se puede mover en un volumen determinado, denominado espacio de trabajo.
Este volumen de trabajo es un cilindro y un cono cortado, como se muestra en la figura 4.8.
La estructura que encierra el robot tiene que disponer de un espacio libre superior a estos
valores.
51
Capítulo 4. Selección del robot Aplicación pick and place
En esta sección se muestran algunas de las limitaciones software que tiene este robot, entre
las cuales, las más importantes son la amplitud máxima del movimiento que pueden alcanzar
las articulaciones de los motores. Su rango de trabajo, va desde -40º hasta 90º y se refieren
a los ángulos máximos y mínimos de cada cadena serie o pata.
La célula robotizada consta de una estructura de seguridad que proporciona al robot Delta
sujeción. Consta de dos zonas, una para colocar los dispositivos de control (en la parte
inferior) y otra en la que se plantea el escenario y donde se pueden realizar sus operaciones
de pick and place.
La estructura tiene forma de prisma rectangular y está formada por perfiles de aluminio con
una sección de 80 X 80 mm2 .
52
Capítulo 4. Selección del robot Aplicación pick and place
La célula (ver Figura 4.10) tiene las siguientes dimensiones y está dividida de la siguiente
manera:
En esta sección, se muestra el cableado de la célula junto con los elementos de protección y
control de los que dispone. El cuadro eléctrico es la parte de la instalación eléctrica en la que
se encuentran los elementos de protección y control de la energía necesarios para el correcto
funcionamiento del robot Delta. Este robot tiene que estar conectado a una red eléctrica de
230 V y 50 Hz con el esquema que aparece en la figura 4.11.
53
Capítulo 4. Selección del robot Aplicación pick and place
54
Capítulo 4. Selección del robot Aplicación pick and place
En este subapartado, se exponen los elementos de mando, control y protección que dispone
la célula robotizada, que se encuentran fuera del chasis:
• Botones auxiliares programables. El robot cuenta con un panel de tres luces led junto
a un selector de tres posiciones (ver Figura 4.17), cuyas tres posiciones pueden ser
personalizadas por el programador para realizar distintas acciones. La
primera posición se activa colocando el selector apuntando a la parte
superior izquierda, y lanza el programa de inicialización del robot.
55
Capítulo 4. Selección del robot Aplicación pick and place
• Circuito de seguridad. El armario del robot cuenta con dos puertas de seguridad, una
superior y otra inferior, las cuales tienen instaladas unos sensores (ver Figura 4.18)
para detectar cuando se encuentran abiertas o cerradas, de manera que el robot se
pare de forma inmediata cuando estas se abran. De esta forma, se garantiza la
seguridad del operario evitando posibles accidentes.
4.11.1. Compresor.
4.11.2. Controlador.
56
Capítulo 4. Selección del robot Aplicación pick and place
Para alimentar al controlador se necesita una fuente de alimentación. Para ello, se utiliza el
modelo NJ-PA3001 (ver Figura 4.21) que cuenta con las siguientes características:
Para más información sobre la fuente de alimentación del PLC NJ-PA3001 consultar el
documento técnico de la bibliografía [35] o acceder al anexo (VI.II. Fuente de alimentación
del controlador.).
Junto al PLC se encuentran unidos los tres servodrivers, uno por cada servomotor que
contiene el robot delta. Su función es controlar la velocidad y posición del servomotor. Los
servodrivers que utiliza el robot Mini Delta son el R88D-KN04H-ECT (ver Figura 4.22). El
modelo R88D-KN04H-ECT tiene las siguientes características:
57
Capítulo 4. Selección del robot Aplicación pick and place
Los servomotores que utiliza el robot Mini Delta son el R88M-K40030T-BS2 (ver Figura 4.23)
y tienen las siguientes características:
El acoplador detecta todos los módulos de E/S conectados y crea una imagen de proceso
local. Esta imagen de proceso puede incluir una disposición mixta de módulos analógicos y
digitales. Es el enlace entre la red de control de la máquina EtherCAT y el NX-serie de E/S.
También realiza la función alimentar las unidades NX-serie de E/S. Se utiliza el modelo NX-
ECC201 (ver Figura 4.24) con las siguientes características:
58
Capítulo 4. Selección del robot Aplicación pick and place
La función de las entradas digitales es leer los datos de una señal digital. Para la aplicación
a desarrollar se necesitan un mínimo de 10 entradas, por lo que se utilizan dos bloques del
modelo NX-ID4342 (ver Figura 4.25) que tiene las siguientes características:
Por otro lado, la función de las salidas digitales es escribir los datos en una señal digital. Para
la aplicación a desarrollar se necesitan de un mínimo de 5 salidas, por lo que se utilizan dos
(aunque con una sería suficiente) del modelo NX-OD4256 (ver Figura 4.26) con las siguientes
características:
Se necesita una fuente de 24Vdc para alimentar el acoplador EtherCAT y las E/S digitales.
En el peor de los casos se necesita que suministre hasta 8A, ya que dispone de dos salidas
digitales con un consumo máximo de 4A cada una, pero no se van a utilizar para esta
aplicación todas las salidas y el consumo baja, por lo que con 2,5A es suficiente.
La fuente de alimentación utilizada es el modelo S8VK-G06024 (ver Figura 4.27) que tiene
las siguientes características:
59
Capítulo 4. Selección del robot Aplicación pick and place
En este apartado se exponen los nuevos dispositivos que se han añadido a la célula
robotizada para abordar el objetivo definido en este TFM. Las células suelen estar equipadas
con sistemas de visión artificial 3D que hacen que los robots puedan tomar decisiones en
función del entorno que perciben haciendo que sean totalmente autónomos porque son
capaces de distinguir objetos y formas presentes en el escenario y que interaccionarán con
el robot. De esta forma, permitirá al robot leer códigos y localizar objetos de cualquier tamaño,
forma, posición o color.
Por tanto, las ventajas más relevantes de una célula robotizada son:
Para este TFM se ha instalado una webcam que permite implementar un sistema de visión
artificial. Esta webcam se conecta al PC (mediante un cable USB) que se encarga del
procesamiento de la imagen.
Por otro lado, para obtener unos niveles de iluminación constantes y un mejor procesado de
la imagen se necesita una buena iluminación, para lo cual se va a utilizar unas tiras led
blancas que funcionan a 5Vdc y 100mA.
60
Capítulo 5. Análisis de alternativas Aplicación pick and place
Capítulo 5:
ANÁLISIS DE
ALTERNATIVAS
61
Capítulo 5. Análisis de alternativas Aplicación pick and place
5. Análisis de alternativas.
En este capítulo se van a exponer cada una de las alternativas valoradas para las tareas a
realizar junto con las razones de selección de la alternativa elegida.
Para el diseño de las piezas 3D se han valorado principalmente dos herramientas de diseño,
que son:
• Tinkercad.
• Fusion 360.
5.1.1. Tinkercad.
Tinkercad [41] es un software gratuito de diseño y modelado 3D muy sencillo de usar, pero
con una cantidad de herramientas limitada para el diseño de piezas complejas. Permite
diseñar cualquier objeto con volumen de forma intuitiva y después llevarlo a la realidad
mediante una impresora 3D.
Entre las principales ventajas de esta herramienta destaca que es online y gratuita, por lo que
se puede usar desde cualquier dispositivo con acceso a internet y permite compartir diseños
entre diferentes usuarios. Además, cuenta con una gran cantidad de tutoriales explicando
paso a paso las funciones básicas del programa.
Fusion 360 [42] es un software CAD de circuitos impresos de modelado 3D basado en la nube
para el diseño y la manufactura de productos.
Tiene una gran libertad de diseño y es perfecto para la impresión 3D ya que permite el diseño
de piezas con gran precisión, por esta razón, se ha convertido en el software de diseño 3D
62
Capítulo 5. Análisis de alternativas Aplicación pick and place
de moda. También permite el diseño colaborativo de piezas, compartiendo proyecto con otros
usuarios en línea.
Además, cuenta con múltiples herramientas de diseño que permite reducir el coste de los
prototipos y obtener una solución completa.
Fácil de aprender NO SI
Para el diseño del programa de control del robot con el PLC que se dispone, solo se pueden
utilizar dos herramientas:
• CX-Programmer.
• Sysmac Studio.
5.2.1. CX-Programmer.
63
Capítulo 5. Análisis de alternativas Aplicación pick and place
Esta herramienta es la nueva versión de CX-Programmer, ya que las nuevas series NJ/NX
de Omron se han diseñado a partir del estándar IEC61131-3 que cada vez es más
demandado. Los lenguajes de programación definidos por este estándar son cinco, pero esta
herramienta tan solo soporta dos:
64
Capítulo 5. Análisis de alternativas Aplicación pick and place
Estándar IEC-61131-3 SI NO
Lenguajes LD y ST SI SI
Simulación 3D SI NO
Funciones Robótica SI NO
HMI SI NO
Las redes de comunicación industrial pueden utilizarse en los sistemas de control para pasar
datos entre los dispositivos de campo y los PLCs, entre diferentes PLCs, o entre los PLCs y
PCs. Un protocolo de comunicación son todas las reglas que definen dicho intercambio de
datos.
65
Capítulo 5. Análisis de alternativas Aplicación pick and place
Para este TFM hay que implementar una comunicación entre un PLC y un PC, y aunque
existen múltiples protocolos de comunicación, es importante tener en cuenta que solo se
puede implementar un tipo de comunicación si los dispositivos a comunicar entre sí permiten
dicho protocolo.
En este caso, el PLC modelo NJ501-4300 de Omron soporta comunicaciones UDP, TCP y
Modbus TCP. Por lo que, a continuación, se va a exponer cada uno de estos protocolos para
elegir el que mejor se ajusta a este TFM.
UDP es un protocolo no orientado a la conexión, es decir, no ocurre como en TCP donde hay
una fase de establecimiento de la conexión, aquí directamente se envían sin establecimiento
previo.
Este protocolo no proporciona ningún tipo de control de flujo, si un equipo es más rápido que
otro y envía información, es muy posible que se pierda información debido a que colapsará
al más lento, y habrá que reenviar la información.
UDP tampoco proporciona ningún tipo de control de congestión, si hay congestión en la red,
se podrían perder paquetes, y no se va a encargar de reenviarlos como sí ocurre con TCP.
66
Capítulo 5. Análisis de alternativas Aplicación pick and place
Por tanto, UDP al no disponer de control de congestión, control de flujo ni control de errores,
se podría decir que UDP es un protocolo no fiable.
Esto significa que un dispositivo esclavo no puede ofrecer información, debe esperar a que
se le pida. El maestro escribirá datos en los registros de un dispositivo esclavo y leerá los
datos de los registros de un dispositivo esclavo.
Por lo tanto, en una red Modbus estándar, hay un maestro y hasta 247 esclavos, cada uno
con una dirección de esclavo única de 1 a 247. El maestro también puede escribir información
a los esclavos.
Existen varios tipos de versiones en el protocolo Modbus para el puerto serie y Ethernet, que
se utilizan para atender las necesidades específicas de los sistemas de automatización
industrial en las empresas. Las más comunes son:
• Modbus RTU.
• Modbus TCP.
• Modbus ASCII.
• Modbus Plus.
Modbus TCP se introdujo para aprovechar las infraestructuras LAN actuales. A su vez,
aumentó el número de unidades que podían conectarse a la misma red. Este sistema engloba
los bloques de datos de solicitud y respuesta del Modbus RTU en un bloque TCP transmitido
a través de redes estándar de Ethernet.
67
Capítulo 5. Análisis de alternativas Aplicación pick and place
Tanto TCP como UDP son dos protocolos fundamentales para las comunicaciones a través
de Internet, ya que estos dos protocolos se sitúan en la capa de transporte del modelo TCP/IP,
y es la primera capa donde origen y destino se comunican directamente, ya que las capas
inferiores (capa de red y capa de acceso al medio) no realizan esta función [45].
Debido a que TCP sirve a una gran cantidad de protocolos de la capa de aplicación, es
fundamental que los datos (segmentos) lleguen correctamente al destinatario, sin errores y
en orden.
Otra característica muy importante es que la información que viaja desde un origen hasta un
destino, llegue en orden, es decir, en el mismo orden que fueron emitidos, ya que el protocolo
IP es un protocolo best-effort, hace todo lo que puede para que los paquetes lleguen en orden
y correctos, pero no es confiable ya que no garantiza nada.
TCP dispone de una ventana deslizante en el emisor y en el receptor, de tal forma que, si
recibimos un segmento que no está en orden, automáticamente «esperará» hasta que llegue
el segmento que falta, o si no, pedirá una retransmisión únicamente del segmento que falte.
Con cada segmento recibido por el receptor, se enviará un ACK indicando al emisor que todo
está llegando correctamente, no obstante, en la vida real las implementaciones de TCP
permiten que se envíe un ACK para confirmar la recepción de varios segmentos
simultáneamente, con el objetivo de no saturar la red de tantas confirmaciones.
68
Capítulo 5. Análisis de alternativas Aplicación pick and place
TCP también dispone de control de congestión, esto permite que no se pierdan paquetes en
Internet porque haya congestión en los routers. Si el router no es capaz de procesar o reenviar
paquetes al ritmo que los recibe, el propio router los descartará y se perderá, ya que su buffer
se llenará.
Orientado a la conexión NO SI SI
Velocidad Rápido Rápido (más lento que UDP) Rápido (más lento que UDP)
Fiabilidad de datos NO SI SI
Confirmación de recepción NO SI SI
Control de flujo NO SI SI
Comprobación de errores NO SI SI
Para cumplir con el objetivo de ubicación de los cubos e identificación de las letras, se
necesita una cámara de alta resolución para poder asegurar que todas las letras de los cubos
se van a poder obtener con una resolución suficiente para poder trabajar con ellas.
Entre los diferentes modelos de cámaras del mercado, se han valorado dos principales
productos:
• Logitech c270.
• Logitech Brio.
69
Capítulo 5. Análisis de alternativas Aplicación pick and place
La webcam Logitech c270 [47] (ver Figura 5.8) es una webcam de gama media que destaca
por su relación calidad-precio.
Permite grabar con una resolución de 720p en pantalla panorámica, y cuenta con una cámara
de 3 megapíxeles que permite realizar fotos con una calidad aceptable a distancias cortas y
deficiente a distancias medias. Cuenta con ajuste automático de la imagen para mejorarla en
condiciones de iluminación escasa.
Entre los principales inconvenientes de esta cámara destaca que no permite realizar un ajuste
de la distancia a la cual se quiere enfocar la imagen, por lo que una parte de la plataforma
aparecerá desenfocada y no permitirá realizar una buena identificación.
La webcam modelo Logitech Brio 4k UltraHD [48] (ver Figura 5.9) es una webcam de gama
alta que destaca por la buena calidad que se obtiene de sus imágenes.
Permite grabar con una resolución de hasta 4k a 30fps y cuenta con una cámara de 13MP.
Esta webcam permite configurar la cámara para distintas condiciones de iluminación y así
poder obtener buenos resultados en condiciones de iluminación cambiante.
Además, se puede configurar la distancia a la que enfoca la cámara, lo cual es muy importante
para este TFM, ya que la distancia desde la webcam hasta la plataforma es mucho mayor de
la distancia para las que están enfocadas por defecto este tipo de cámaras.
70
Capítulo 5. Análisis de alternativas Aplicación pick and place
Debido a los constantes cambios en la iluminación que puede sufrir el entorno de trabajo y
atendiendo a la tabla 5.4, se va a implementar el sistema de visión artificial con la cámara
Logitech Brio.
Resolución 720p 4K
En este apartado se tratan los tres principales métodos planteados para la diferenciación de
las letras a través del sistema de visión artificial para extraer la información deseada de la
imagen. Para este TFM se han valorado tres posibles herramientas:
• Red neuronal.
• Reconocimiento de patrones.
• Extracción de características geométricas.
Para esta aplicación las redes neuronales convolucionales (CNN, ver Figura 5.10) permiten
detectar un objeto dentro de una imagen, ya que, a diferencia de las redes neuronales
convencionales y otros algoritmos de clasificación de imágenes, procesan la información de
manera rápida y sencilla [49].
71
Capítulo 5. Análisis de alternativas Aplicación pick and place
Para ello, el algoritmo toma un pequeño cuadrado de píxeles (entrada) que pasarán por
diversas capas ocultas organizadas para una ejecución analítica gradual, es decir, las
primeras capas de la red detectarán características simples, como líneas, curvas, bordes…
siendo las capas más profundas capaces de reconocer las formas complejas de cada letra.
Algo a tener en cuenta es que para esta red se utilizaría un aprendizaje supervisado donde
se partiría de un conjunto de datos etiquetado previamente, es decir, se necesitaría una gran
cantidad de imágenes etiquetadas para entrenar a la red, lo cual implica mucho tiempo de
toma y clasificación de las fotos.
Por tanto, usando este sistema de visión artificial se busca la forma de que las herramientas
de reconocimiento de visión actúen acorde a patrones, identificando y clasificando productos
según este esquema predeterminado, obviando otras características físicas que pueden
alterar la forma, pero no la naturaleza del objeto.
Para comparar cada una de las letras, se utiliza una librería (patrones) de cada una de las
letras con distintos tamaños y formas y se comparan una a una hasta encontrar la que más
se aproxime. La figura 5.11 muestra un ejemplo de una librería.
72
Capítulo 5. Análisis de alternativas Aplicación pick and place
Para entrenar al sistema con este método se necesitan en torno a 1.000 imágenes de letras
para que el sistema sea capaz reconocer los patrones de los distintos números y letras de las
matrículas.
Por lo que, al igual que ocurre con el método de la red neuronal, se necesitan una gran
cantidad de imágenes de letras etiquetadas para poder hacer las comparaciones y tiene el
inconveniente de que el coste computacional es demasiado alto.
• Área.
• Circularidad.
• Anchura.
• Altura.
• Perímetro.
73
Capítulo 5. Análisis de alternativas Aplicación pick and place
Librería de imágenes SI SI NO
Tiempo de entrenamiento SI SI NO
Tabla 5.5. Comparación entre la red neuronal, el reconocimiento de patrones y las características geométricas.
Actualmente, existen múltiples herramientas para diseñar interfaces, pero en función de los
requisitos de la aplicación algunas son más adecuadas que otras. Para este proyecto se ha
valorado realizar dicha interfaz en tres plataformas diferentes:
• LabVIEW.
• Matlab App Designer.
• Matlab Guide.
5.6.1. LabVIEW.
74
Capítulo 5. Análisis de alternativas Aplicación pick and place
LabVIEW cuenta con dos interfaces; un panel frontal y un diagrama de bloques. Estas
cuentan con paletas que contienen los objetos necesarios para implementar y desarrollar
tareas.
La principal ventaja que tiene App Designer sobre el entorno Guide de Matlab aparte de
disponer de un nuevo entorno de trabajo reside en que dispone de más herramientas
especializadas respecto a su predecesor. Pero las herramientas nuevas implementadas en
esta versión no se van a utilizar para este trabajo.
Matlab dispone de una app con interfaces gráficas (Matlab Guide) que permite el control de
programas que necesiten un ingreso continuo de datos. Esta herramienta contiene todas las
características básicas de todos los programas visuales como Visual Basic o Visual C++.
75
Capítulo 5. Análisis de alternativas Aplicación pick and place
Atendiendo a la tabla 5.6, Matlab Guide [53] es la herramienta que se ha escogido, ya que
cuenta con todas las herramientas necesarias para implementar la interfaz gráfica deseada,
al mismo tiempo que permite exportar la interfaz final a una aplicación independiente.
Permite comunicaciones SI SI SI
Tabla 5.6. Comparación de características entre LabVIEW, App Designer y Matlab Guide.
76
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Capítulo 6:
INTEGRACIÓN DE LA
CÉLULA ROBOTIZADA
77
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En este apartado se describe el proceso seguido para la realización del proyecto. El objetivo
final es conseguir que el usuario, desde una interfaz gráfica mostrada a través de una pantalla
táctil, escriba una palabra y el robot que cuenta con un sistema de visión artificial, reconozca
cada una de las letras impresas en las piezas cúbicas que están depositadas de forma
aleatoria en la plataforma grande y las coloque en la segunda, escribiendo la palabra deseada
por el usuario.
Este capítulo que se divide en siete partes y contiene las tareas a realizar para este TFM, que
son:
En este capítulo se expone el diseño de las piezas 3D desarrolladas para el TFM junto con
sus planos y la aplicación utilizada para ello. Estas piezas conforman el entorno de trabajo
del robot el cual está compuesto por tres tipos de piezas:
• Plataforma grande.
• Plataforma pequeña.
• Cubos.
78
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En este apartado se define la primera tarea a realizar y es que, en el entorno de trabajo del
robot, es necesario disponer de una plataforma de la que se puedan recoger los cubos con
letras.
Para poder formar la mayor cantidad posible de palabras se necesita una cantidad importante
de cubos por lo que se ha decidido diseñar una plataforma con 63 huecos, para poder colocar
63 cubos.
Teniendo en cuenta que los cubos tienen 25mm de lado, se han creado unos huecos en la
plataforma de 27mm, para tener un margen de 2mm cuando el robot recoja y deposite dichos
cubos, como muestra la figura 6.1.
Para disponer de los 63 huecos en el espacio más reducido posible, debido al espacio de
trabajo del robot, la plataforma cuenta con 7 filas y 9 columnas de huecos, cuya separación
entre cubo y cubo es de 10mm.
Esta separación es necesaria, ya que para coger cada uno de los cubos, se utiliza una pinza
neumática de dos dedos y cada uno de esos dedos tiene una anchura de 4.11mm. En la
figura 6.2, en la parte izquierda se puede observar un plano 3D del adaptador de la pinza sin
las patas y en la parte derecha se muestra la pinza en la realidad.
79
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
De esta manera, se dispone de un margen de 3 mm a cada lado de las patas de la pinza para
al recoger un cubo no impactar con el que se encuentra a su lado. En el anexo de planos de
la pinza (I.II. Planos Pinza.) se observa el plano de las patas de la pinza, donde se muestra
la anchura de las mismas anteriormente comentada.
Teniendo en cuentas estas dimensiones, para conseguir una plataforma con 63 huecos, se
ha diseñado una plataforma de 381mm de largo y 295mm de ancho, como se puede observar
en la figura 6.3.
Por otro lado, se han añadido ocho puntos de anclaje, dos por cada esquina, para atornillar
la plataforma a la base como puede verse en los planos de la plataforma. Para ver el plano
completo acceder a su anexo (I.I. Plano plataforma grande.).
Otro dato a tener en cuenta para el diseño de esta pieza, es el volumen de trabajo del robot,
el cual se puede observar en la figura 6.4, donde se puede ver que dicho volumen está
formado por un cilindro y un cono cortado en su parte inferior.
El radio inferior del cono es de 132.75mm, distancia insuficiente para alcanzar todas las
posiciones de la plataforma grande, ya que esta tiene una anchura de 381mm, por lo que es
imprescindible trabajar en el volumen de trabajo del cilindro del robot que es de 250mm de
radio y así poder alcanzar todas las posiciones.
Para ello, la altura de la plataforma respecto de la base tiene que ser superior a 45mm, por
lo que se ha definido la altura de la pieza a 55mm para trabajar recogiendo y colocando piezas
de forma segura dentro del volumen del cilindro, como se muestra en la figura 6.4.
80
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Figura 6.4. Representación de las dimensiones de la plataforma grande del espacio de trabajo del robot.
81
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En este apartado se define la segunda pieza a realizar y al igual que se ha diseñado una
plataforma grande de donde recoger los cubos, es necesario disponer de otra plataforma
donde colocar los cubos formando la palabra deseada. Para ello, se ha diseñado una
plataforma pequeña de 9 huecos, por lo que la longitud máxima de las palabras que se
pueden formar es de 9 letras, donde colocar los cubos de la palabra deseada.
Para el diseño de esta plataforma, se han tenido en cuenta las mismas condiciones que para
el diseño de la plataforma grande, por lo que se mantienen las dimensiones de los huecos y
del espacio entre huecos.
Teniendo esto en cuenta, se ha diseñado una plataforma con dos filas de 9 huecos, que
posee 381mm de largo y 80mm de ancho, como se puede observar en la parte izquierda de
la figura 6.7.
Por otro lado, se han añadido ocho puntos de anclaje, dos por cada esquina, para atornillar
la plataforma a la base. Para ver el plano completo acceder a su anexo (I.III. Plano plataforma
pequeña.).
Al igual que ocurría con el diseño de la plataforma grande, para el diseño de esta pieza se ha
tenido que tener en cuenta el espacio de trabajo del robot, el cual obliga a trabajar dentro del
volumen del cilindro para alcanzar todas las posiciones, por lo que la altura de esta plataforma
también será de 55mm.
Además, tanto la plataforma grande como la pequeña, han sido diseñadas para que ambas
puedan convivir dentro del volumen del cilindro y así tener disponibles todos los huecos de
las plataformas como se muestra en la figura 6.8, que muestra una representación en planta
del área del cilindro y la disposición de las plataformas dentro de él.
82
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Figura 6.8. Vista en planta del área de trabajo del cilindro del robot.
Debido a las dimensiones de esta plataforma (381mm de largo y 80mm de ancho) y sabiendo
que el área máxima de impresión de la impresora 3D que se dispone es de 250mmx250mm,
ha sido necesario dividir la plataforma en dos partes y añadir una pequeña prolongación para
posteriormente unirlas como un puzle.
83
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
6.1.3. Cubos.
En este apartado se expone el diseño de los cubos que el robot va a coger y dejar en cada
uno de los huecos de la plataforma. Estos cubos tienen 25mm por cada lado y en su cara
superior se ha serigrafiado una letra del abecedario, como se puede observar en la figura
6.11. La única letra que no se ha diseñado, ya que no se va a tener en cuenta en la
programación, es la letra ñ. Para ver el plano completo de los cubos ver el anexo (I.IV. Plano
cubos.).
Figura 6.13. Resultado de colocar los cubos sobre la plataforma en simulación y en la realidad.
84
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En este capítulo, se expone la configuración del robot mediante la herramienta Sysmac Studio
junto con el programa de control del robot.
Antes de comenzar con la programación del robot en Sysmac Studio, la primera tarea a
realizar es la configuración de la red EtherCAT y la configuración de los ejes, [54] que hay
que cargar en el PLC.
En primer lugar, hay que configurar los módulos del controlador en base a la configuración
física que existe. Posteriormente hay que definir la red EtherCAT y pasarle el nombre y el
número de nodo que se le ha asignado a cada módulo, como se tienen tres servomotores
(uno para cada eje del robot):
85
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
El robot tiene tres servomotores; uno para el eje X, otro para el eje Y y otro para el eje Z. En
el apartado configuración, se tiene que crear un eje por cada servomotor del robot Mini Delta
como se muestra en la figura 6.16, ya que es necesario realizar un control en cada eje para
poder alcanzar la posición deseada correctamente.
Para la configuración de cada eje, hay que realizar los siguientes pasos:
1. Realizar la configuración básica del eje, como se puede ver la figura 6.17.
86
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
87
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
5. Tal y como se ha comentado en el apartado de las limitaciones software del robot (4.8.
Limitaciones Software.) y por la seguridad de este, es necesario limitar por software
el rango de movimiento de cada servomotor.
7. Por último, se realiza la configuración del contador lineal y del encoder absoluto.
Una vez definidos los ejes, hay que crear el grupo con los ejes X, Y y Z para formar el grupo
Mini Delta, que permite el control del grupo de motores de forma coordinada, como se puede
observar en la figura 6.24.
88
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
El siguiente paso es realizar la configuración básica del grupo de ejes, en la que se asigna el
control de cada eje lógico a cada eje de composición, tal y como se puede observar en la
figura 6.25.
Sysmac Studio funciona con un sistema de prioridad de tareas, teniendo que configurar al
menos, la tarea principal. El periodo de tiempo que se quiere para que se repita la tarea
principal es de 1ms (ver Figura 6.26).
Se ha definido como tarea periódica de prioridad 4 para que el programa la considere como
la única tarea obligatoria que tiene que realizar, donde se encuentran las funciones,
programas y bloques de función implementados.
89
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Esta prioridad de tarea es la más alta como se puede ver en la figura 6.27, indicando que es
la principal tarea periódica a realizar, dentro de una escala que va desde 4 hasta 48.
Tras realizar la configuración hardware del robot, es necesario realizar una calibración
mecánica del robot y mapeo del espacio de trabajo del robot a coordenadas cartesianas que
puede verse en el anexo (VII.I. Método de calibración del robot Mini Delta.).
Una importante tarea a realizar es el programa de control del robot que se divide en siete
partes. Para ello, se utilizan las funciones de la librería “Motion Control” que permiten manejar
los motores del robot y posicionar el extremo en la coordenada deseada y/o realizar una
trayectoria determinada a una velocidad o tiempo establecido. A continuación, se muestran
algunas de las funciones más utilizadas:
90
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para más información sobre el software de control Sysmac Studio [55] consultar el documento
técnico de la bibliografía.
1. Inicialización.
2. Movimiento del robot.
6.2.5.1. Inicialización.
Para arrancar el robot, hay que presionar el pulsador verde de la botonera de activación del
robot y colocar el selector de tres posiciones en la parte superior. Tras esto, comenzará a
ejecutarse el programa desarrollado para la inicialización del robot (ver anexo II.I.
Inicialización del robot.). Es necesario asegurarse previamente de que el robot no se
encuentre arrancado.
Durante el tiempo que el robot se encuentre en este estado, parpadeará el led verde de la
botonera auxiliar programable y se ejecutarán internamente las siguientes etapas:
También se comprueba si el PLC tiene algún error. Si hubiera algún error en el PLC,
en el eje o en el variador, se encenderá el piloto rojo y los servomotores no se podrán
alimentar hasta que se solucione el problema.
91
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
El robot comienza moviéndose a la posición de reposo que se ha definido para poder obtener
imágenes de la webcam sin que las patas del robot interfieran en dicha imagen.
Cada aproximación del robot a un cubo se realiza mediante una trayectoria obtenida con un
polinomio de tercer grado. Para que no se produzcan colisiones con los cubos, todas las
trayectorias del robot se realizan 30mm por encima del punto medio de lo que sobre sale cada
cubo, es decir, cada cubo sobresale 17mm de la plataforma.
De manera que cada vez que se quiere recoger un cubo se realiza un movimiento a las
coordenadas ‘X’ e ‘Y’, pero 30mm por encima en la coordenada ‘Z’.
Una vez se alcanza dicho punto el robot abre la pinza, desciende 30mm y cierra la pinza para
recoger el cubo. Con el cubo atrapado y para evitar colisiones se asciende otra vez
verticalmente 30mm y se realiza la siguiente trayectoria a la posición donde se va a depositar
dicho cubo.
92
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Cuando se termine ese tiempo, el robot volverá a moverse para recoger cada cubo de la
palabra formada y depositarlo en la misma posición de donde fue extraída. Al terminar de
recoger todos los cubos, el robot volverá a la posición de reposo, se cerrará la comunicación,
indicando al cliente que el proceso se ha completado y el servidor volverá a estar a la escucha
para formar otra palabra.
Debido a la extensión del diagrama del flujo del programa del control del robot se ha dividido
en secciones más pequeñas detallando a continuación cada paso:
93
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
1. Inicialización.
94
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
2. Comunicación y acondicionamiento.
95
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
3. Extracción de cubos.
96
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Una dirección IP tiene dos partes; la primera parte de una dirección IP se usa como dirección
de red y la segunda parte como dirección host. Para el PC, se ha definido que la dirección IP
a utilizar es la 192.168.137.101. Si se divide en dos partes, se obtiene que la red es
192.168.137 y el host es 101, es decir, 192.168.137.0 es la dirección de red y 0.0.0.101 es la
dirección de host.
En TCP/IP, las partes de la dirección IP que se usan como direcciones de red y host no son
fijas. Esta información se proporciona en otro número de 32 bits denominado máscara de
subred. La máscara de subred para este trabajo es 255.255.255.0.
Por lo que para que se encuentren dentro de la misma subred la dirección IP del PLC se ha
definido como 192.168.137.100. Tanto el PLC como el PC van a recibir y enviar datos desde
el puerto 8080 (los puertos TCP van desde el 0 hasta el 65535), por lo que el socket queda
definido como:
• PC - 192.168.137.101:8080.
• PLC - 192.168.137.100:8080.
En la figura 6.33, se muestra la configuración del puerto Ethernet utilizado para el PLC.
Con la dirección IP del PLC definida, el siguiente paso es definir la dirección IP del PC, para
ello se teclea desde el “cmd” el comando “ipconfig” y se obtiene el resultado de la figura 6.34,
97
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
donde se puede observar la dirección IPV4 del equipo actual, y esa es la dirección IP que hay
que modificar a 192.168.137.101.
Para cambiar la dirección IP hay que ir a conexiones de red, seleccionar la red Ethernet que
se quiere modificar, pinchar en propiedades, seleccionar el Protocolo de Internet versión 4
(TCP/IPv4) y poner la dirección IP y la máscara de subred comentada anteriormente, como
muestra la figura 6.35.
98
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
192.168.137.101:8080 192.168.137.100:8080
Esta conexión previa se denomina 3-way handshake, y consiste básicamente en que el cliente
(el que inicia la conexión) envía un mensaje SYN al servidor (el que recibe la conexión).
Para finalizar la conexión, el que quiere finalizar la conexión envía un mensaje FIN, y el host
que lo recibe enviará un mensaje ACK junto con otro mensaje FIN, de tal forma que, el equipo
99
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Dentro de la aplicación, para poder ver esta comunicación hay que seleccionar el método de
conexión, el puerto y escribir en el filtro de visualización “tcp.port==8080” para observar el
tráfico de datos de la comunicación TCP en el puerto 8080.
100
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Atendiendo a la figura 6.40, el recuadro en color rojo muestra los mensajes para establecer
la conexión. Se puede observar como en el instante 135.123 el cliente envía un mensaje al
servidor (tipo SYN) para establecer una comunicación entre los dos dispositivos, a lo que el
servidor contesta con un tipo ACK para confirmar la recepción del mensaje en 2ms.
Como se puede comprobar, para cada mensaje recibido, se obtiene una confirmación de que
ese paquete ha llegado al destino.
Tras recibir este mensaje, se procede a cerrar la comunicación cuyo intercambio de mensajes
se encuentran dentro del recuadro azul.
Otra propiedad importante es la cabecera de TCP, que tiene la forma que se muestra en la
figura 6.41.
TCP añade 20 bytes de cabecera en cada segmento como mínimo, ya que se dispone de un
campo de «opcionales». En esta cabecera TCP se encuentra el puerto de origen y puerto de
destino de la conexión (socket), también se encuentra el número de secuencia, número de
ACK, y los diferentes FLAGS de TCP como SYN, ACK, RST, FIN, URG y otros.
101
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Cuando desde la interfaz el usuario seleccione una palabra a escribir y el algoritmo del PC
calcule las coordenadas de los cubos que tiene que recoger de la plataforma grande, solicitará
establecer la comunicación y una vez el servidor la acepte, le pasará un vector de información.
Una vez se envíe dicha información, el PC (cliente) se quedará a la espera de que el PLC
(servidor) le indique que se ha terminado de formar la palabra mediante un bit y en ese
momento se cerrará la comunicación y el servidor (PLC) volverá a estar a la escucha, como
muestra la figura 6.42.
Para esta comunicación TCP, la información tiene que pasarse en formato de bytes. Un byte
está compuesto de 8 bits, entre 0 y 255 en decimal o entre 00 y FF en hexadecimal.
Como la longitud máxima de la palabra que se puede escribir es de nueve letras, si se realiza
esto para cada letra, el vector de información que se pasa en la comunicación es un vector
102
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
de 27 posiciones, más una posición más (28) donde se define la velocidad del robot. Dicho
vector se muestra en la figura 6.43.
Para este TFM se ha implementado una aplicación de visión artificial capaz de detectar cada
uno de los cubos de la plataforma y distinguir cada una de las letras serigrafiadas en la cara
superior.
Una decisión importante a la hora de utilizar una cámara para capturar un proceso industrial
es la disposición de la misma, ya que hay que procurar capturar toda la zona en la que se
quiere trabajar.
En algunas ocasiones no es posible capturar toda la zona deseada con una sola cámara y
será necesario colocar varias cámaras y que cada una de ella trate una parte del proceso.
En otras ocasiones no se puede obtener toda la zona de trabajo con una sola imagen, y una
solución es tomar varias imágenes con una única cámara eliminando los objetos molestos
que se colocan en el medio entre captura y captura para posteriormente juntarlas, tratarlas
computacionalmente y obtener la imagen del entorno completa.
103
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para este trabajo, un gran problema ha sido la colocación de la cámara, ya que, apenas
existen posiciones que permitan capturar todos los cubos de la plataforma grande con una
sola imagen al encontrarse el robot en el medio, como se muestra en la figura 6.44.
La disposición ideal de la cámara sería vertical al centro de la plataforma para poder ver sin
distorsiones ni sombras todas las letras de la plataforma, pero esto no es posible, ya que
tanto las patas del robot como la pinza impiden poder tomar una foto de toda la plataforma ya
que se encuentran en mitad del camino.
Una posible solución para utilizar esta disposición sería mover el robot para tomar varias
fotografías, combinarlas y obtener una imagen completa, y así capturar todos los cubos. Pero
esta opción ha sido desechada debido a que el tiempo de obtención de cada imagen, más el
procesamiento, más el de espera de cada movimiento del robot harían que el tiempo de
obtención de una imagen procesada con todos los cubos fuera demasiado grande.
En la figura 6.45 se puede comprobar la vista de la cámara desde la parte superior del robot,
donde no se puede evitar que alguna pata oculte ciertos cubos de la plataforma.
104
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Después de varias pruebas, solo se ha encontrado un lugar y una posición que permite
obtener con una sola imagen la plataforma grande completa, lo cual reduce enormemente el
tiempo de procesamiento respecto a las anteriores opciones comentadas anteriormente.
En la figura 6.47 se observa la zona de trabajo que se consigue con esta disposición de la
cámara y a su derecha la imagen recortada por el programa que identifica la zona de trabajo,
que es la plataforma grande.
105
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
6.4.2. Iluminación.
Esto es debido a que las condiciones no son nunca homogéneas debido al nivel de luz
ambiente, ya que la luz varía a lo largo del día por la iluminación natural o porque en ciertas
horas del día se encienden luces de apoyo. Esto hace que la luz varíe en un porcentaje que,
de una manera u otra, afecta a los programas de las cámaras de visión artificial.
Para que una aplicación de visión artificial obtenga resultados robustos, los objetos deben
iluminarse de la manera más uniforme y constante posible en cualquier momento del día.
Entre los diversos tipos de iluminación para aplicaciones de visión artificial, cabe destacar la
iluminación LED, que se ha convertido en el estándar universal para aplicaciones de
imágenes. Por esta razón, en este proyecto se han introducido unas tiras led autoadhesivas
con longitud adaptable como la que se encuentra en la figura 6.48.
Observando el esquema de la figura 6.49, se han colocado 8 tiras led en la parte superior del
chasis de la célula robotizada para conseguir una iluminación lo más uniforme posible, cuatro
de ellas con una longitud de 50cm y otras cuatro con una longitud de 70cm.
A continuación, en la figura 6.50, se muestra un esquema de conexión de cada tira led para
ser alimentada con la fuente de alimentación.
106
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En la figura 6.51 se puede observar el resultado real, donde se muestra en color rojo los leds
de la iluminación frontal y en color naranja los leds de la iluminación lateral.
107
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
La gran ventaja que aporta es que elimina sombras y se puede utilizar a grandes distancias
cámara/objeto como es este caso. Pero tiene un gran inconveniente y es que produce
intensos reflejos sobre superficies reflectantes y la base donde se apoya la plataforma es de
aluminio, lo cual produce grandes reflejos y brillos.
Por lo que, para solucionar este problema se ha colocado como fondo una lámina negra mate
que elimina dicho brillo.
Esta iluminación frontal, se ha combinado con una iluminación lateral cuya principal ventaja
es resaltar los bordes, rayas y fisuras que, para esta aplicación, permite resaltar con más
claridad las letras.
Finalmente, con este sistema de iluminación, se consiguen eliminar todas las zonas oscuras
del espacio de trabajo de la cámara que dificultan la detección y diferenciación de las letras
de los cubos y paralelamente, se solucionan los problemas de brillos producidos por los rayos
del sol en los días soleados que incidían dentro de la célula y provocaban brillos indeseados
en la cámara.
En la figura 6.53 se muestra en la parte izquierda la imagen que obtiene la cámara sin
iluminación en su interior y en la parte derecha con la iluminación instalada.
108
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
La imagen a modo de patrón que se utiliza es un tablero de ajedrez (figura 6.54) que se ha
colocado en la base de la plataforma y se conoce cuál es el tamaño de la cuadrícula del
tablero (30x30mm).
Del programa se extrae el ancho y alto en píxeles de cada cuadricula, que tienen que ser
iguales y conociendo los milímetros de cada cuadricula y los pixeles que conforman esa
cuadricula, se puede obtener un parámetro para conocer la relación mm/píxel, como muestra
en la expresión 6.1.
30mm
alfa = = 0.3947 (6.1)
76 píxeles
Para los dos últimos apartados (6.4.3. Calibración de la cámara. y 6.4.4. Preprocesado de la
imagen.) de iluminación y calibración existen gran cantidad de empresas que se dedican
única y especialmente a estas dos actividades debido a su gran dificultad y su importancia
para que un sistema de visión artificial pueda funcionar correctamente.
En este apartado se tratan los distintos modelos de color utilizados para obtener la imagen
con la que trabajar y las operaciones morfológicas y de segmentación utilizadas para obtener
una imagen final óptima con la que trabajar.
Con la calibración terminada, la siguiente tarea a realizar ha sido obtener una imagen con la
que poder trabajar y extraer las características deseadas a partir de la imagen capturada por
la cámara que se encuentra en formato RGB.
El término RGB se refiere a un espacio de color que reproduce todos los colores visibles para
los humanos mediante la mezcla aditiva de los tres colores primarios. El espacio de color
RGB recibe, por tanto, el nombre de estos tres colores; rojo, verde y azul y su modelo de color
se puede ver en la figura 6.55.
109
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Una imagen en escala de grises indica el valor que cada píxel posee equivalente a una
graduación de gris. Es una imagen cuyos pixeles van del negro (valor 0) al blanco (valor 255)
pasando por varios tonos del gris.
En la figura 6.57 se muestra la imagen en escala de grises junto a su histograma que es una
representación gráfica en forma de barras, que simboliza la distribución del valor de cada
pixel de la imagen. Sirve para obtener un panorama de la distribución de la población.
110
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Analizando la imagen y el histograma, se puede observar que las letras que están escritas en
blanco (color rojo) que es lo que se quiere diferenciar del resto de la imagen (background,
color verde) se encuentran agrupadas en la parte derecha del histograma.
Con el objetivo de poder diferenciar las letras del resto de la imagen, se trabaja en el espacio
de colores binario.
Una imagen binaria es una imagen digital que tiene únicamente dos valores posibles para
cada píxel, siendo estos, negro (valor 0) y blanco (calor 1), y así poder separar cada letra del
resto de la imagen. De esta manera el fondo se mantendrá de color negro y las letras en color
blanco.
La imagen resultante (ver Figura 6.58) dista mucho de la imagen que se quiere, ya que
contiene ruido y pérdida de información, por lo que es necesario hacer un acondicionamiento
de la misma mediante operaciones morfológicas para corregirla.
111
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
112
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Tras una serie de transformaciones morfológicas (ver anexo, III.XI. Visión artificial.) donde se
han realizado dos aperturas, una erosión y una dilatación, se consigue obtener cada una de
las letras claras y como un único objeto, se obtiene el resultado de la figura 6.63 en forma de
imagen binaria, donde en la parte izquierda se puede observar la imagen original sin
transformaciones y en la parte derecha la imagen con las transformaciones.
En este apartado se trata el reconocimiento de las letras, que es la siguiente tarea a realizar
para extraer la información deseada de la imagen
Por lo que la siguiente tarea a realizar ha sido un programa capaz de extraer diversas
características geométricas de cada letra. Este programa de visión artificial está
implementado como una función dentro de la interfaz, de manera que cada vez que se quiera
formar una palabra, se saque una foto mediante la webcam y se detecte donde se encuentra
cada cubo y letra.
Para poder diferenciar correctamente cada letra se han calculado las siguientes
características geométricas de cada objeto, las cuales consiguen establecer unas relaciones
que permiten diferenciar cada una de las letras de la plataforma:
• Área.
• Centroide.
• Circularidad.
113
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
• Anchura.
• Altura.
• Perímetro.
Lo primero que se calcula es el centroide de cada letra, con su Object Coordenada X Coordenada y
1 16,94782609 222,1913043
coordenada ‘X’ e ‘Y’ asociada a cada objeto. Al haber 63 cubos, 2 22,44736842 180,6403509
3 28,54716981 139,5471698
tienen que reconocerse 63 objetos. 4 31,59550562 107,741573
5 37,01694915 76,3559322
6 41,35294118 45,76470588
7 45,49019608 19,50980392
8 60,512 221,144
9 65,81188119 179,5445545
10 67,55952381 141,1547619
11 72,48780488 106,5243902
12 74,07042254 76,14084507
13 76,05882353 45,8627451
14 79,39622642 19,47169811
15 104,593985 222,1503759
16 107,2761905 179,5142857
17 109,0352941 141,3294118
18 109,5789474 106,4736842
19 113,015873 45,41269841
20 111,597561 74,6097561
21 113,5322581 18,09677419
22 148,6607143 73,71428571
23 148,0188679 17,39622642
24 148,1724138 106,1149425
25 149,1216216 139,0135135
Figura 6.64. Representación del centroide de cada letra. 26 148,5 176,525641
27 150,3902439 220
En la figura 6.64 se muestra el centroide de cada letra sobre la 28 148,03125 44,84375
29 183,75 17,19230769
imagen y en la tabla 6.2 se muestra las coordenadas ‘X’ e ‘Y’ del 30 185,2295082 44,31147541
31 186,8275862 73,44827586
centroide de cada objeto. 32 186,4285714 105,7142857
33 193 179,7425743
34 196,6052632 220,1184211
Conociendo el centroide es posible definir la posición que va a 35 192 139,5
36 219,6545455 16,32727273
ocupar cada letra dentro de la plataforma, ya que esta se puede
37 224,9459459 44,86486486
asemejar a una matriz de 9 columnas y 7 filas. 38 229,2236842 105,3421053
39 224,5517241 74,06896552
40 232,9693878 140,4285714
Si no se produjera la distorsión, cada cubo de la misma columna 41 236,4343434 178,2323232
42 240,197861 219,6096257
tendría un valor de ‘X’ similar, pero no es así, por lo que, para 43 256 15,37931034
44 259,4782609 42,06521739
poder colocar cada elemento dentro de la matriz, cada elemento 45 264,6091954 72,56321839
46 268,5822785 104,5822785
se ha ordenado por filas, ya que en este caso sí que tiene una 47 275,3877551 139,9183673
48 281,1830065 178,6013072
coordenada ‘Y’ similar y dentro de los elementos que comparten 49 287,8088235 219,9705882
50 290,8205128 13,66666667
esa coordenada ‘Y’, se ordenan de izquierda a derecha a 51 298,4915254 43,44067797
52 304,4637681 72,07246377
medida que va aumentando la coordenada ‘X’ y de esta manera 53 314,1632653 106,8367347
54 319,0098039 140,4901961
se consigue rellenar la matriz de letras. 55 326,202381 176,3571429
56 329,7936508 13,38095238
Una vez se tiene definido cada objeto dentro de la matriz, el 57 335,2689655 220,1655172
58 337,0759494 41,64556962
siguiente paso es extraer la información de cada objeto para 59 343,9411765 71,95294118
60 351,3035714 106,875
diferenciarlo del resto de letras y así obtener la letra de ese cubo. 61 361,3541667 139,2604167
62 371,2892562 178,7520661
Tabla 6.2. Coordenadas de los centroides de cada letra. 63 381,859375 221,2265625
114
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
115
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Esta misma regla se aplica para diferenciar la ‘L’, ‘T’ y ‘J’ combinando el ancho y largo de la
letra (Minor Axis Length).
Para letras con cierta circularidad como la ‘O’, la ‘Q’, la ‘D’, la ‘C’, la ‘S’ o la ‘B’ se utiliza la
propiedad ‘Circularity’. La circularidad mide la redondez de los objetos (para un círculo
perfecto, el valor de circularidad es la unidad), y se calcula a partir de la expresión 6.1:
(4 ∗ Área ∗ pi)
Circularidad = (6.1)
Perimetro2
Las letras ’W’ y ‘M’ tienen un perímetro mucho más grande que las demás y se pueden
clasificar atendiendo a este parámetro. Otras letras se diferencian atendiendo a un parámetro
o la mezcla de varios parámetros para identificarlas y diferenciarlas.
De esta manera se comprueba letra por letra si se encuentra dentro de ese rango de
características geométricas que define una letra, para así diferenciarlas todas.
Figura 6.65. Mensaje mostrado por pantalla con la clase de letra y su posición en milímetros.
116
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para demostrar que el resultado es robusto, se muestran los resultados obtenidos con
distintas configuraciones de letras en las figuras 6.67 y 6.68. Y como se puede comprobar en
cada una de ellas, las pegatinas de la imagen procesada muestran la letra identificada
correctamente.
Figura 6.67. Resultado obtenido mediante el programa de visión artificial para otras distribuciones de letras.
117
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Figura 6.68. Resultado obtenido mediante el programa de visión artificial para otras distribuciones de letras.
La siguiente tarea a realizar consiste en realizar el algoritmo que es capaz de extraer a partir
de los resultados obtenidos del programa de visión artificial las coordenadas donde se
encuentra cada cubo que hay que extraer para formar la palabra deseada.
Para ello, se hace un barrido fila por fila de la matriz, hasta encontrar la letra deseada. Por
ejemplo, si se quiere formar la palabra ‘robot’, se empezará buscando la letra ‘r’, cuando se
encuentre, se guardará la posición fila y columna que ocupa en la matriz y se pasará a buscar
la siguiente letra hasta completar la palabra.
Para este ejemplo y con la distribución de letras de la figura 6.66, se obtiene que las letras a
recoger se encuentran en las coordenadas de la tabla 6.4 y al mismo tiempo la interfaz
muestra visualmente en la figura 6.69, donde se encuentra cada letra que va a recoger de la
plataforma grande y como va a quedar expuesta en la plataforma pequeña.
LETRA 1 (R) LETRA 2 (O) LETRA 3 (B) LETRA 4 (O) LETRA 5 (T)
FILA 7 7 3 2 2
COLUMNA 8 3 3 3 1
118
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Figura 6.69. Representación del lugar donde se va a recoger y depositar cada letra en la interfaz.
Con las posiciones identificadas, el siguiente paso es convertir dichas posiciones a las
coordenadas del robot y mandárselas al PLC que gobierna al robot mediante la comunicación
TCP. Para lo cual es necesario convertir esas coordenadas a datos en formato byte que
posteriormente el PLC acondiciona para obtener la coordenada real deseada.
Python [57] es un lenguaje de programación de alto nivel, orientado a objetos, con una
semántica dinámica integrada, principalmente para el desarrollo web y de aplicaciones
informáticas.
De manera que cuando se quieren enviar los datos, Matlab ejecuta una función de Python
que envía el vector de comunicación explicado anteriormente, a la dirección y puerto del PLC
y hasta que no se active un bit que envía el PLC cuando se ha completado el proceso del
robot no se completará dicha función, es decir, el programa se queda a la espera de que el
PLC indique que el proceso ha terminado para cerrar la comunicación y poder formar otra
palabra.
119
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Otra limitación es el número de letras, ya que no se pueden formar palabras que tengan más
de nueve letras ni tampoco palabras que contengan la letra ‘ñ’.
A modo de easter egg, se ha programado una función que utiliza las caras triste y sonriente
de la plataforma y las coloca al final de las palabras para un conjunto de palabras
determinadas. Esta función puede verse en el anexo (III.III. Escoger cara.).
En este apartado se plantea la normativa actual referente a la seguridad ISO aplicada a los
sistemas robóticos en el marco de la Unión Europea para posteriormente demostrar que tanto
los sistemas de seguridad de la célula como diseño del tamaño del chasis teniendo en cuento
el espacio de trabajo del robot cumplen la normativa.
Se comienza explicando la norma UNE-ISO 10218. Esta norma trata de dar respuesta a los
riesgos que presentan los robots y los sistemas robóticos industriales, dando así unas
directrices y criterios a seguir, para así minimizar al máximo los peligros que puede suponer
la aplicación de uno de estos sistemas en un entorno industrial.
El número y tipo de riesgos producidos por estos sistemas están relacionados con el proceso
de automatización (tipo de robot y función) y con la manera en que está instalado,
programado, operado y mantenido.
Haciendo así, que para cada sistema robótico existan diferentes riesgos a tener en cuenta.
Es por todo ello, que esta primera norma se divide en dos partes, las cuales se trataran en
los dos siguientes apartados.
En esta primera parte de la norma [58], se especifican los requisitos e indicaciones a seguir
para garantizar la seguridad en el diseño y construcción del robot. También, se describen los
riesgos asociados a los robots y se dan las pautas, medidas de protección e información de
uso, para eliminar o reducir dichos riesgos.
Esta norma está destinada a los fabricantes de robots, a los cuales proporciona una
herramienta muy útil para evaluar todos los peligros que podría suponer el robot
120
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
La segunda parte de la norma [59] trata los peligros derivados del diseño e integración de los
sistemas robóticos industriales en celdas industriales robotizadas y líneas de producción.
Igual que en la primera parte, también se proporcionan directrices, pero en este caso
enfocadas a garantizar la seguridad del personal hacía todo lo que tiene que ver con la
integración del robot.
Mientras la primera parte estaba más enfocada a los fabricantes de robots, ésta segunda,
afecta a todos los “participantes” en la integración de un sistema de este tipo. En la misma
norma, se especifican como “participantes”: el fabricante, el suministrador, el integrador y el
usuario final.
Según la norma UNE-ISO 10218-2:2011, una célula robotizada es aquella que se compone
de uno o más sistemas robóticos incluyendo la maquinaria correspondiente, el espacio de
seguridad y las medidas de protección correspondientes.
Se puede describir la celda robotizada como aquella área restringida donde trabaja el robot y
quedan recogidos todos los elementos necesarios para que trabaje. Tal y como indica la
definición dada en la norma, la celda incluye el espacio de seguridad y los elementos de
protección.
Este aspecto es muy importante, ya que dentro de la celda el robot ejecuta movimientos a
alta velocidad, con lo cual, cualquier contacto con una persona podría resultar fatal
(aplastamiento, golpes, proyección a alta velocidad, etc.). Por lo tanto, el límite físico de la
celda robotizada se corresponde con el espacio de seguridad del robot.
Para este proyecto ha sido muy importante que, tanto durante todo el proceso de trabajo
como para el futuro uso del robot, este sea seguro ante condiciones adversas, es por ello que
la célula robotizada cuenta con un circuito de seguridad.
Tal y como se ha comentado anteriormente, una celda robotizada no se podría entender sin
su espacio de seguridad y las medidas de protección correspondientes, ya que el robot puede
suponer un peligro potencial para las personas y para el entorno.
121
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Todas estas medidas deben cumplir estrictamente las diferentes normativas recogidas en el
estándar UNE-ISO 10218-2:2011, ya que es la única manera de asegurar que se han
evaluado todos los peligros existentes, y que, por lo tanto, se cumplen con todos los requisitos
de seguridad.
Para el diseño del sistema de seguridad de las celdas, es necesario tener en cuenta tanto los
requisitos del sistema (de modo que se puedan satisfacer lo máximo posible), como el
cumplimiento de las normas.
Aunque el espacio de trabajo del robot este formado por un cilindro y un cono, se define que
el espacio de trabajo del robot como todo el lugar del habitáculo superior que puede ocupar.
A partir de aquí, su protección está formada por una cabina formada por un chasis de perfiles
de aluminio recuadrados en color rojo en la figura 6.71 y unos paneles de metacrilato en cada
pared, señalados en color naranja.
Las puertas que permiten acceder al habitáculo superior e inferior del robot cuentan con unos
sensores (ver Figura 6.72) para detectar cuando se encuentran abiertas o cerradas de
manera que el robot se pare inmediatamente en el momento en que una puerta se abra para
garantizar la seguridad del usuario y evitar posibles accidentes.
122
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Figura 6.73. Panel de la botonera auxiliar programable junto con sus pilotos.
Para definir las limitaciones del movimiento del robot y el vallado perimetral mediante los
paneles de metacrilato es necesario analizar la norma UNE-ISO 10218-2:2011 que se ha
comentado anteriormente.
Este espacio se considera el espacio restringido, y en este caso, se define que el espacio de
seguridad deberá ser al menos 10 cm mayor que el restringido, como muestra la figura 6.74.
Donde en la parte izquierda de la figura se muestra la pinza que tiene una anchura de 50mm,
pero solo puede sobre salir sobre el área de trabajo la mitad es decir 25mm por cada lado
más el espacio restringido de 100mm.
123
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Por debajo, la longitud de la pinza desde el TCP del robot son 45.1mm y el cubo que es de
25mm, como máximo puede sobresalir por debajo de la pinza 12.5mm, más el área de
seguridad inferior de 100mm.
En la parte derecha de la figura, se puede ver en color rojo el espacio de seguridad mínimo
que debe tener la celda del robot y que cumple nuestra célula de seguridad.
Con tal de cumplir con la normativa seleccionada, las partes de los sistemas de control
encargadas de la seguridad (SRP/CS), deben estar diseñadas de manera que un único fallo
en cualquiera de estas partes no conlleve una pérdida de la función de seguridad. En otras
palabras, si algún elemento falla, no puede derivar en un fallo general del sistema de
seguridad de la celda.
124
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para alcanzar el objetivo principal del TFM, que es el diseño e implementación de una célula
robotizada con un sistema de visión artificial para operaciones pick and place, es necesario
desarrollar una interfaz gráfica que dé respuesta a las necesidades del usuario.
Dado que la aplicación consiste en formar palabras, elegidas a través de una pantalla táctil
por el usuario, mediante cubos con letras serigrafiadas en la cara superior, las acciones a
programar para la nueva interfaz son las siguientes:
Todo ello será implementado en Matlab, utilizando la herramienta Matlab Guide y para su
control se utiliza el monitor táctil de la célula robotizada.
En este apartado se explica y se muestra el diseño y las funciones que se pueden realizar al
iniciar la interfaz (ver Figura 6.77), donde aparece una imagen con el fondo de la escuela y
dos botones para arrancar la interfaz (en color verde) o para cerrarla (en color negro).
125
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
La interfaz desarrollada cuenta con las siguientes partes que se pueden ver en la figura 6.78:
126
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para poder implementar el cambio de idioma, se ha desarrollado una función que, según el
idioma seleccionado, permite cambiar todos los textos de la aplicación de un idioma a otro.
En este apartado se trata el panel de ‘Palabras’ (recuadrado en color verde en la figura 6.96)
que se encuentra justo debajo del panel anterior que contiene 16 pulsadores con 16 palabras
que el robot puede escribir. Cada una de estas palabras tiene a su lado derecho una imagen
de la palabra y unos pilotos verdes que indican que la palabra está disponible para escribirla.
Estos pilotos pueden encontrarse de tres colores como muestra la figura 6.80:
• Piloto verde. Indica que la palabra asociada a ese piloto está disponible para
escribirse.
• Piloto amarillo. Indica que la palabra se encuentra en proceso de formación por el
robot. Este piloto aparece al pulsarse una palabra para escribir.
• Piloto rojo. Indica que la palabra que no está disponible para escribir. Cuando se pulsa
una palabra para escribir, todas las demás se bloquean hasta que se termine de
formar y recoger la seleccionada.
En este panel se encuentran las palabras predefinidas que el robot siempre podrá escribir
con la distribución de letras de la plataforma. En la figura 6.81, se muestra el panel de
palabras, donde en la parte izquierda se muestra el panel por defecto y en la parte izquierda
se muestra el panel cuando se pulsa una palabra para escribir, en este caso ‘Televisor’.
127
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para que este panel funcione correctamente existen varias (ver anexo III.IX. Secuencia panel
palabras.) funciones que trabajan de forma coordinada para que, al apretar un pulsador, se
pase la información de la palabra que se quiere formar a las funciones que se encargan del
cálculo y la obtención de coordenadas.
Posteriormente, otra función se encarga de ocultar todos los pulsadores (ver anexo III.XIV.
Ocultar pulsadores., III.XIII. Mostrar pulsadores.), definir cada piloto del color adecuado (ver
anexo, III.IV. Control color pilotos., III.V. Actualizar color pilotos.) e inhabilitar el panel de
escritura de otras palabras para no provocar conflictos de escritura de palabras.
En esta sección se tratan los pulsadores de arranque y paro de la interfaz (ver Figura 6.82)
que se encuentran en la parte superior central (recuadrado en color naranja en la figura 6.96).
El primero permite parar la interfaz, cuando la interfaz esté arrancada, aparecerá en color rojo
con la palabra ‘Stop’ para parar la interfaz y se pondrá en color verde cuando la interfaz está
parada y se quiera arrancar. El segundo pulsador, que aparece en color negro permite cerrar
la interfaz, pero este botón se encuentra deshabilitado si la interfaz está en marcha. Si se
quiere cerrar la interfaz, primero hay que pararla, pulsando en ‘stop’ y posteriormente pulsa
en ‘cerrar programa’.
128
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Dentro de este panel (ver Figura 6.83) se habilita un recuadro de texto, donde el usuario
puede escribir cualquier palabra que quiera que el robot escriba. Posteriormente, es necesario
pulsar el botón de comprobar para verificar si esa palabra se puede escribir y si es posible,
se comenzará a ello.
Para esto, se ha desarrollado una función (ver anexo III.X. Secuencia panel comprobar
palabras.) capaz de conocer la cantidad de letras de cada tipo que contiene la plataforma
grande a través del programa de visión artificial y comprobar letra por letra si se puede escribir
dicha palabra.
Este panel cuenta con un pulsador (recuadrado en color amarillo en la figura 6.96) que permite
desplegar u ocultar el panel. En la figura 6.85, se muestra el panel en la parte izquierda y en
la parte derecha el pulsador asociado.
129
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En la figura 6.86, se muestra el panel vacío en la parte izquierda, el panel con los cuadrantes
donde se va a recoger cada cubo para la palabra ‘televisor’ en la parte derecha y en la parte
inferior el pulsador asociado.
Para este panel, se ha implementado una función (ver anexo III.XVII. Panel plataforma
grande.) que a partir de la matriz de letras que se obtiene del programa de visión artificial,
permite obtener las posiciones de cada letra que el robot va a extraer de dicha matriz para
mostrarlo gráficamente.
130
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
ver la plataforma pequeña y el lugar donde el robot va a depositar cada cubo para formar la
palabra. Este panel cuenta con un pulsador que permite desplegar u ocultar este panel.
En la figura 6.87, se muestra el panel vacío en la parte izquierda, el panel con el lugar donde
se va a depositar cada cubo para la palabra ‘televisor’ en la parte derecha y el pulsador
asociado en la parte inferior.
Para este panel se ha desarrollado una función (ver anexo III.XIX. Panel plataforma
pequeña.), que conociendo la palabra que se desea escribir y su longitud, es capaz de
obtener la posición de la plataforma pequeña donde va a ir cada cubo.
En esta sección se explica el último panel de la interfaz que es el panel del robot (recuadrado
en color rosa en la figura 6.96) que se encuentra en la parte central derecha de la interfaz y
muestra lo que ve el robot a través de la webcam (ver Figura 6.88). Al mismo tiempo se
muestra el estado de la conexión TCP.
131
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Al mismo tiempo se informa del estado de la conexión TCP mediante un mensaje y un piloto
de color. En la figura 6.90, se puede ver en la parte izquierda los avisos sin establecer la
conexión TCP y en la parte derecha con la conexión TCP establecida.
Además, en este panel se permite regular la velocidad a la que se quiere que se mueva el
robot mediante una barra deslizante que se puede llevar desde el 0% al 100%. Este rango de
velocidades del robot no se corresponde con la velocidad mínima y máxima del robot sino
con un rango de velocidad segura, tanto para el robot como para el usuario. En la figura 6.91,
se muestra diferentes velocidades del robot.
Es importante saber que antes de seleccionar la palabra que se quiere formar, se seleccione
a la velocidad a la cual se quiere que se mueva el robot. Finalmente, en la figura 6.92, se
puede observar el panel completo del robot.
132
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para este panel, se han implementado varias funciones cuyas tareas son mostrar el panel del
robot junto con su imagen (ver anexo III.XXII. Velocidad robot.), mostrar el estado de la
conexión TCP, definir la velocidad del robot y declarar el vector de comunicación (ver anexo
II.IV. Acondicionamiento del vector TCP., III.II. Comunicación TCP.) para mandar la
información al robot.
En este apartado se exponen las dos pestañas habilitadas que se encuentran en la parte
superior izquierda de la interfaz. La primera pestaña muestra un documento con el histórico
de las palabras que se han escrito con la fecha y hora de cada una de ellas (ver anexo III.VIII.
Exportar fichero palabras.), como se puede ver en la figura 6.93.
133
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En la figura 6.96, puede verse la interfaz completa con todos los paneles desplegados que se
acaban de explicar.
6.7.10. Aplicación.
Una vez se ha completado el programa y todas las funciones, en esta sección se detalla la
creación de la aplicación autónoma IROBOT para instalar el programa y la interfaz en
cualquier equipo sin necesidad de tener Matlab instalado.
Esta aplicación puede instalarse en equipos cuyo sistema operativo no sea Windows, ya que
también soporta macOS y Linux. Para ello se ha utilizado la herramienta de Matlab Compiler
que permite compartir programas de Matlab como aplicaciones independientes.
134
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
135
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
136
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
Para instalarlo aparecerá una ventana con la información y versión de la aplicación (ver Figura
6.102a). Después se elige el directorio de instalación (ver Figura 6.102b) y comenzará la
instalación (ver Figura 6.102c). Al finalizar, el programa ya se encuentra instalado y se genera
un acceso directo en el escritorio que permite abrir la aplicación (ver Figura 6.102d).
137
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
En esta figura se puede ver además la conexión entre el equipo y el monitor táctil, que se ha
realiza mediante un cable VGA a partir de un adaptador de HDMI a VGA desde el equipo. En
la figura 6.104, se muestran los cuatro elementos que tienen que ir alimentados a la red.
Por otro lado, la instalación realizada permite alimentar a la pinza neumática de aire
comprimido mediante dos fuentes; bien a través de la red de aire comprimido del laboratorio,
conectando la tubería de aire comprimido desde la toma del laboratorio hasta la llave de paso
de la célula o bien a través del compresor como muestra el esquema de la figura 6.105.
Para cambiar la fuente de aire, se deberá soltar la tubería azul de la llave de paso y conectar
la otra. La razón por la que se permiten estas dos fuentes, es para hacer que la célula sea
completamente independiente y portable, y así poder transportarla a cualquier lugar donde
tan solo será necesario alimentarla de la red.
138
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
El esquema de control propuesto está formado por un PLC, que intercambia datos con el PC
y muestra el resultado en el HMI con la interfaz gráfica desarrollada. Al mismo tiempo, el PLC
se comunica con los servo-drivers para mandar al robot a la posición deseada y
paralelamente obtiene información del entorno a través de los módulos de entrada y salidas
digitales que se encuentran conectados a las botoneras de control del robot. La estructura de
control jerarquizada se muestra en la figura 6.106.
En esta sección se muestra el diagrama de flujo utilizado por la aplicación de la interfaz que
se muestra en la figura 6.107.
139
Capítulo 6. Integración de la célula robotizada Aplicación pick and place
140
Capítulo 7. Metodología seguida para el desarrollo del trabajo Aplicación pick and place
Capítulo 7:
METODOLOGÍA SEGUIDA
PARA EL DESARROLLO
DEL TRABAJO
141
Capítulo 7. Metodología seguida para el desarrollo del trabajo Aplicación pick and place
En este apartado se describen las tareas realizadas durante el transcurso del trabajo. Se
incluyen también los medios materiales y humanos utilizados en cada una de las tareas, que
servirán como base para el desarrollo del presupuesto. Las tareas realizadas son las
siguientes:
1. Búsqueda de la información.
2. Diseño de la célula robotizada.
3. Selección de la instrumentación utilizada.
4. Diseño de las piezas 3D.
5. Aprendizaje de uso del software Sysmac Studio.
6. Impresión de piezas en 3D.
7. Programación, configuración y calibración del movimiento del robot.
8. Diseño de la iluminación y cableado.
9. Programación del sistema de visión artificial.
10. Diseño y programación de la interfaz gráfica de usuario.
11. Diseño y programación de la comunicación.
12. Cableado de la arquitectura de control.
13. Pruebas, solución de errores y validación.
14. Elaboración del informe.
En los siguientes apartados, se procede a describir cada una de estas tareas con mayor
detalle.
En esta tarea se ha realizado una detallada búsqueda de información de los tipos de robots
paralelos existentes en la actualidad, buscando en el mercado cuales son los comercializados
por los principales fabricantes del sector.
También se incluye en esta tarea una búsqueda de información del contexto tecnológico
actual para intentar adecuar la solución adoptada a las últimas tecnologías presentes en la
actualidad.
• Duración: 2 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador.
142
Capítulo 7. Metodología seguida para el desarrollo del trabajo Aplicación pick and place
Una vez se ha obtenido toda la información de la tarea interior, se procede a la selección del
robot paralelo que mejor se ajusta a los requisitos de la aplicación.
• Duración: 2 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador.
• Duración: 1 semana.
• Medios humanos: Ingeniero Junior y Responsable de Proyecto.
• Medios materiales: Ordenador.
• Duración: 2 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador.
• Duración: 2 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador.
143
Capítulo 7. Metodología seguida para el desarrollo del trabajo Aplicación pick and place
Esta tarea incluye el tiempo de espera transcurrido en el proceso de impresión de las piezas
mediante impresoras 3D.
• Duración: 2 semanas.
• Medios humanos: Ingeniero Junior, Técnico de impresión 3D.
• Medios materiales: Ordenador, set de herramientas.
En esta tarea se ha realizado la programación del control de movimiento del robot después
de realizar la configuración hardware y la calibración.
• Duración: 4 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador, set de herramientas.
En esta tarea se ha detallado el diseño e implementación del sistema de iluminación del robot
y su cableado para el correcto funcionamiento del sistema de visión artificial.
• Duración: 1 semana.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador, set herramientas, soldador, cables, tiras led.
En esta tarea se ha realizado la programación completa del sistema de visión artificial que
extrae la información de las imágenes obtenidas por la webcam.
• Duración: 4 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador, webcam.
144
Capítulo 7. Metodología seguida para el desarrollo del trabajo Aplicación pick and place
• Duración: 6 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador, monitor táctil.
• Duración: 3 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador.
Esta tarea consiste en el diseño y el montaje del cableado de todos los dispositivos añadidos
para que la aplicación funcione correctamente y sea móvil.
• Duración: 1 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Taladro, set de herramientas.
Una vez comprobado el funcionamiento individual de cada uno de los elementos, se han
realizado las pruebas de integración, probando el funcionamiento del conjunto, solucionando
los errores encontrados.
• Duración: 2 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador portátil.
Esta tarea incluye el tiempo necesario para realizar un informe elaborado que exponga cada
una de las tareas realizadas.
145
Capítulo 7. Metodología seguida para el desarrollo del trabajo Aplicación pick and place
• Duración: 4 semanas.
• Medios humanos: Ingeniero Junior.
• Medios materiales: Ordenador.
Diagrama de Gantt
15-sep 04-nov 24-dic 12-feb 03-abr
Búsqueda de la información
Diseño de la célula robotizada
Selección de la instrumentación utilizada
Diseño de las piezas 3D
Aprendizaje de uso del software Sysmac Studio
Impresión de piezas en 3D
Programación, configuración y calibración del robot
Diseño de la iluminación y cableado
Programación del sistema de visión artificial
Diseño y programación de la interfaz gráfica
Diseño y programación de la comunicación
Cableado de la arquitectura de control
Pruebas, solución de errores y validación
Elaboración del informe
146
Capítulo 8. Aspectos económicos Aplicación pick and place
Capítulo 8:
ASPECTOS
ECONÓMICOS
147
Capítulo 8. Aspectos económicos Aplicación pick and place
8. Aspectos económicos.
En este apartado se desarrolla el estudio económico necesario para llevar a cabo este trabajo.
Se desglosa por actividades y se valoran cada uno de los costes.
En este apartado se muestra la tabla 8.1 que contiene la identificación de cada producto, la
cantidad, el precio por unidad y total de los componentes utilizados para realizar el proyecto.
En la tabla 8.2 se muestran los costes de personal que se desglosan en las horas necesarias
para la realización de cada parte del proyecto. Con un coste de 30 euros por hora trabajada
para un ingeniero.
148
Capítulo 8. Aspectos económicos Aplicación pick and place
Los principales programas utilizados para este proyecto necesitan una licencia que conlleva
cierto coste que se expone en la tabla 8.3.
CONCEPTO SUBTOTAL
Licencia Fusion 360 530,00 €
Licencia Labview 1.489,00 €
Licencia Sysmac Studio 2.200,00 €
SUBTOTAL 4.219,00 €
Tabla 8.3. Costes de equipo y software.
El coste total es la suma de los costes materiales totales, de los costes de mano de obra
directa y de los costes de equipo y software, que se puede observar en la tabla 8.4.
CONCEPTO SUBTOTAL
Costes materiales totales 39.730,37 €
Coste mano de obra directa 18.000,00 €
Costes de equipo y software 4.219,00 €
SUBTOTAL 61.949,37 €
Tabla 8.4. Costes totales.
Se estima un 15% para los gastos generales, y un 6% para el beneficio industrial sobre el
coste de ejecución material, como se muestra en la tabla 8.5.
149
Capítulo 8. Aspectos económicos Aplicación pick and place
CONCEPTO SUBTOTAL
Coste de ejecución material 61.949,37 €
Gastos generales (15%) 9.292,41 €
Beneficio industrial (6%) 3.716,96 €
Tabla 8.5. Gastos generales y beneficio industrial.
El presupuesto de ejecución por contrata es la suma de los costes de ejecución material, los
gastos generales y el beneficio industrial, como se puede comprobar en la tabla 8.6.
CONCEPTO SUBTOTAL
Coste de ejecución material 61.949,37 €
Gastos generales y beneficio industrial 13.009,37 €
SUBTOTAL FINAL 74.958,74 €
Tabla 8.6. Presupuesto de ejecución por contrata.
Por último, se muestra el precio final de ejecución del proyecto en la tabla 8.7. Todos los
precios mostrados anteriormente, llevan incluido el 21% de IVA.
CONCEPTO SUBTOTAL
Importe final 74.958,74 €
Tabla 8.7. Importe total del presupuesto.
150
Capítulo 9. Conclusiones Aplicación pick and place
Capítulo 9:
CONCLUSIONES
151
Capítulo 9. Conclusiones Aplicación pick and place
9. Conclusiones.
Paralelamente se está dotando a estos robots de cámaras que junto con programas de visión
artificial hacen que estas células robotizadas sean inteligentes y tomen decisiones a partir del
entorno que perciben.
En este TFM se ha llevado a cabo la implementación de una célula robotizada con un sistema
de visión artificial para operaciones de pick and place utilizando visión artificial para el
reconocimiento de objetos y permitiendo su control desde una interfaz gráfica. Todo ello
implementado dentro de la aplicación IROBOT.
En cuanto al sistema robótico, se ha diseñado una aplicación mediante Sysmac Studio capaz
de configurar, calibrar y realizar la aplicación de pick and place mediante el programa de
control del robot.
152
Capítulo 9. Conclusiones Aplicación pick and place
En el ámbito del sistema de visión artificial, sería interesante comparar los resultados
obtenidos con los otros dos métodos de extracción de características de la imagen
mencionado en el TFM, es decir, mediante las redes neuronales convolucionales y el
reconocimiento de patrones. De esta manera, se podrá confirmar cual es más robusto ante
entornos de iluminación cambiantes.
153
Capítulo 10. Bibliografía Aplicación pick and place
Capítulo 10:
BIBLIOGRAFÍA
154
Capítulo 10. Bibliografía Aplicación pick and place
[7] G. Beier, A. Ullrich, S. Niehoff, M. Reißig, and M. Habich, “Industry 4.0: How it is defined
from a sociotechnical perspective and how much sustainability it includes – A literature
review,” Journal of Cleaner Production, vol. 259, p. 120856, Jun. 2020, doi:
10.1016/J.JCLEPRO.2020.120856.
[9] K. D. Thoben, S. A. Wiesner, and T. Wuest, “‘Industrie 4.0’ and smart manufacturing-a
review of research issues and application examples,” International Journal of
Automation Technology, vol. 11, no. 1, pp. 4–16, 2017, doi:
10.20965/IJAT.2017.P0004.
[10] F. Xia, L. T. Yang, L. Wang, and A. Vinel, “Internet of Things,” International Journal of
Communication Systems, vol. 25, no. 9, pp. 1101–1102, Sep. 2012, doi:
10.1002/DAC.2417.
155
Capítulo 10. Bibliografía Aplicación pick and place
https://www.academia.edu/9144786/Dise%C3%B1o_Industrial_DISE%C3%91O_Y_AUTOM
ATIZACI%C3%93N_INDUSTRIAL (accessed May 24, 2022).
[12] T. Su, L. Cheng, Y. Wang, X. Liang, J. Zheng, and H. Zhang, “Time-Optimal Trajectory
Planning for Delta Robot Based on Quintic Pythagorean-Hodograph Curves,” IEEE
Access, vol. 6, pp. 28530–28539, Apr. 2018, doi: 10.1109/ACCESS.2018.2831663.
[13] G. Wu, “Kinematic Analysis and Optimal Design of a Wall-mounted Four-limb Parallel
Schönflies-motion Robot for Pick-and-place Operations,” Journal of Intelligent &
Robotic Systems, vol. 85, no. 3–4, pp. 663–677, Mar. 2016, doi: 10.1007/S10846-016-
0377-5.
[16] Q. Meng, F. Xie, and X. J. Liu, “Conceptual design and kinematic analysis of a novel
parallel robot for high-speed pick-and-place operations,” Frontiers of Mechanical
Engineering 2017 13:2, vol. 13, no. 2, pp. 211–224, Nov. 2017, doi: 10.1007/S11465-
018-0471-4.
156
Capítulo 10. Bibliografía Aplicación pick and place
[22] T. Su, L. Cheng, Y. Wang, X. Liang, J. Zheng, and H. Zhang, “Time-Optimal Trajectory
Planning for Delta Robot Based on Quintic Pythagorean-Hodograph Curves,” IEEE
Access, vol. 6, pp. 28530–28539, Apr. 2018, doi: 10.1109/ACCESS.2018.2831663.
[23] Y. Li, T. Huang, and D. G. Chetwynd, “An approach for smooth trajectory planning of
high-speed pick-and-place parallel robots using quintic B-splines,” Mechanism and
Machine Theory, vol. 126, pp. 479–490, Aug. 2018, doi:
10.1016/J.MECHMACHTHEORY.2018.04.026.
[24] G. Wu, “Kinematic Analysis and Optimal Design of a Wall-mounted Four-limb Parallel
Schönflies-motion Robot for Pick-and-place Operations,” Journal of Intelligent &
Robotic Systems 2016 85:3, vol. 85, no. 3, pp. 663–677, May 2016, doi:
10.1007/S10846-016-0377-5.
[25] M. Özdemir, “Dynamic analysis of planar parallel robots considering singularities and
different payloads,” Robotics and Computer-Integrated Manufacturing, vol. 46, pp. 114–
121, Aug. 2017, doi: 10.1016/J.RCIM.2017.01.005.
[26] “[PDF] The Ping Pong Robot to Return a Ball Precisely | Semantic Scholar.”
https://www.semanticscholar.org/paper/The-Ping-Pong-Robot-to-Return-a-Ball-
Precisely-Kyohei-Masamune/2fbcc5e2a2a3da8451116c5c1f7003a13a8d36ce
(accessed May 24, 2022).
[27] “Datos del IRB 360 - IRB 360 (Robots industriales) | ABB.”
https://new.abb.com/products/robotics/es/robots-industriales/irb-360/datos (accessed
May 24, 2022).
[28] “MPP3S.”
https://www.yaskawa.es/productos/robots/packaging/productdetail/product/mpp3s_74
6 (accessed May 24, 2022).
157
Capítulo 10. Bibliografía Aplicación pick and place
[30] “Item # CR-UGD4MINI-NR, 3 Max Axes Delta Robot On Omron Automation Americas.”
http://products.omron.us/item/sysmac-robots/mini-delta-robot/cr-ugd4mini-nr
(accessed May 24, 2022).
[31] “ZX-T Series CR_UGD4MINI Series USER´S MANUAL Delta 3+1 Robot IP65
protection class CONTENTS CR_UGD4MINI User’s Manual Chapter 1 Introduction.”
[37] “R88M-K40030T-BS2”.
[42] “Manual Fusion 360 Español | PDF | Point and Click | Diseño.”
https://es.scribd.com/document/396877544/Manual-Fusion-360-Espanol (accessed
May 25, 2022).
[43] “El CD-ROM de CX-One / CX-Programmer contiene el manual de usuario del archivo
PDF”.
[47] “C270 HD WEBCAM Complete Setup Guide Guide d’installation complet CONTENTS”.
[48] “Complete Setup Guide Guide d’installation complet BRIO ULTRA HD BUSINESS
WEBCAM CONTENTS”.
158
Capítulo 10. Bibliografía Aplicación pick and place
[51] E. Julian and A. Almidon, “Manual de progradation LabVIEW 9.0,” Labview, no.
October, p. 79, 2018, Accessed: May 25, 2022. [Online]. Available:
https://zenodo.org/record/2557815
[54] “20131011_GR_Robot_DELTA”.
[55] “Automation Software Sysmac Studio Ver.1.@@ Sysmac Studio for machine creators.”
[56] R. Sharpe, E. Warnicke, and U. Lamping, “Wireshark User’s Guide Preface Foreword”,
Accessed: May 25, 2022. [Online]. Available:
https://gitlab.com/wireshark/wireshark/wikis/.
159
Anexo I. Planos Aplicación pick and place
ANEXO I:
PLANOS
I. Planos.
160
Anexo I. Planos Aplicación pick and place
161
Anexo I. Planos Aplicación pick and place
162
Anexo I. Planos Aplicación pick and place
163
Anexo I. Planos Aplicación pick and place
164
Anexo II. Código Sysmac Studio Aplicación pick and place
Anexo II:
CÓDIGO SYSMAC
STUDIO
165
Anexo II. Código Sysmac Studio Aplicación pick and place
166
Anexo II. Código Sysmac Studio Aplicación pick and place
167
Anexo II. Código Sysmac Studio Aplicación pick and place
168
Anexo II. Código Sysmac Studio Aplicación pick and place
169
Anexo II. Código Sysmac Studio Aplicación pick and place
170
Anexo II. Código Sysmac Studio Aplicación pick and place
171
Anexo II. Código Sysmac Studio Aplicación pick and place
172
Anexo II. Código Sysmac Studio Aplicación pick and place
173
Anexo II. Código Sysmac Studio Aplicación pick and place
174
Anexo II. Código Sysmac Studio Aplicación pick and place
175
Anexo II. Código Sysmac Studio Aplicación pick and place
176
Anexo II. Código Sysmac Studio Aplicación pick and place
177
Anexo II. Código Sysmac Studio Aplicación pick and place
178
Anexo II. Código Sysmac Studio Aplicación pick and place
179
Anexo II. Código Sysmac Studio Aplicación pick and place
180
Anexo II. Código Sysmac Studio Aplicación pick and place
181
Anexo II. Código Sysmac Studio Aplicación pick and place
182
Anexo II. Código Sysmac Studio Aplicación pick and place
183
Anexo II. Código Sysmac Studio Aplicación pick and place
184
Anexo II. Código Sysmac Studio Aplicación pick and place
185
Anexo II. Código Sysmac Studio Aplicación pick and place
186
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo1.
Acondicionamiento_Terminado
moeve1
187
Anexo II. Código Sysmac Studio Aplicación pick and place
Moeve2
Cerrar
Moeve3
188
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo2.
Acondicionamiento_Terminado
Moeve7
Moeve8
189
Anexo II. Código Sysmac Studio Aplicación pick and place
Cerrar
Moeve9
190
Anexo II. Código Sysmac Studio Aplicación pick and place
191
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo3.
Acondicionamiento_Terminado
Moeve13
Moeve14
Cerrar
Moeve15
192
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo4.
Acondicionamiento_Terminado
Moeve19
193
Anexo II. Código Sysmac Studio Aplicación pick and place
Moeve20
Cerrar
Moeve21
194
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo5.
Acondicionamiento_Terminado
Moeve25
Moeve26
195
Anexo II. Código Sysmac Studio Aplicación pick and place
Cerrar
Moeve27
196
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo6.
Acondicionamiento_Terminado
Moeve31
Moeve32
Cerrar
Moeve33
197
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo7.
Acondicionamiento_Terminado
Moeve37
198
Anexo II. Código Sysmac Studio Aplicación pick and place
Moeve38
Cerrar
Moeve39
199
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo8.
Acondicionamiento_Terminado
Moeve43
Moeve44
Cerrar
Moeve45
200
Anexo II. Código Sysmac Studio Aplicación pick and place
201
Anexo II. Código Sysmac Studio Aplicación pick and place
Coger Cubo9.
Acondicionamiento_Terminado
Moeve49
Moeve50
Cerrar
Moeve51
202
Anexo II. Código Sysmac Studio Aplicación pick and place
203
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo9.
Acondicionamiento_Terminado EMPEZAR_RECOGER
Moeve55
Moeve56
Cerrar
Moeve57
204
Anexo II. Código Sysmac Studio Aplicación pick and place
205
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo8.
Acondicionamiento_Terminado RECOGER8
Moeve61
Moeve62
Cerrar
Moeve63
206
Anexo II. Código Sysmac Studio Aplicación pick and place
207
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo7.
Acondicionamiento_Terminado RECOGER7
Moeve67
Moeve68
Cerrar
Moeve69
208
Anexo II. Código Sysmac Studio Aplicación pick and place
209
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo6.
Acondicionamiento_Terminado RECOGER6
Moeve73
Moeve74
Cerrar
Moeve75
210
Anexo II. Código Sysmac Studio Aplicación pick and place
211
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo5.
Acondicionamiento_Terminado RECOGER5
Moeve79
Moeve80
Cerrar
Moeve81
212
Anexo II. Código Sysmac Studio Aplicación pick and place
213
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo4.
Acondicionamiento_Terminado RECOGER4
Moeve85
Moeve86
Cerrar
Moeve87
214
Anexo II. Código Sysmac Studio Aplicación pick and place
215
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo3.
Acondicionamiento_Terminado RECOGER3
Moeve91
Moeve92
Cerrar
Moeve93
216
Anexo II. Código Sysmac Studio Aplicación pick and place
217
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo2.
Acondicionamiento_Terminado RECOGER2
Moeve97
Moeve98
Cerrar
Moeve99
218
Anexo II. Código Sysmac Studio Aplicación pick and place
219
Anexo II. Código Sysmac Studio Aplicación pick and place
Recoger Cubo1.
Acondicionamiento_Terminado RECOGER1
Moeve103
Moeve104
Cerrar
Moeve105
220
Anexo II. Código Sysmac Studio Aplicación pick and place
221
Anexo II. Código Sysmac Studio Aplicación pick and place
222
Anexo II. Código Sysmac Studio Aplicación pick and place
223
Anexo II. Código Sysmac Studio Aplicación pick and place
224
Anexo II. Código Sysmac Studio Aplicación pick and place
225
Anexo II. Código Sysmac Studio Aplicación pick and place
226
Anexo II. Código Sysmac Studio Aplicación pick and place
227
Anexo III. Código Matlab Aplicación pick and place
Anexo III:
CÓDIGO MATLAB
228
Anexo III. Código Matlab Aplicación pick and place
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
229
Anexo III. Código Matlab Aplicación pick and place
%INICIALIZACIÓN DE VARIABLES.
%Fondo interfaz
axes(handles.axes174);
background=imread('fondoreal1.jpg');
imshow(background);
axis off;
%Fondo robot.
axes(handles.axes298);
background=imread('fondo23.jpg');
imshow(background);
axis off;
%Paneles.
set(handles.togglebutton10,'visible','off');
set(handles.togglebutton11,'visible','off');
set(handles.togglebutton12,'visible','off');
set(handles.uibuttongroup5,'visible','off');
set(handles.uipanel11,'visible','off');
set(handles.uipanel16,'visible','off');
set(handles.uipanel17,'visible','off');
set(handles.uipanel18,'visible','off');
set(handles.uipanel19,'visible','off');
set(handles.uipanel20,'visible','off');
[handles]=LedsInicio(handles);
%Cerrar ficheros.
fclose('all');
%Botón start/stop.
handles.Ts=0.5;
handles.estado=0; %Estado 0 = stop.
%Palabra.
handles.palabra=[];
%Leds.
handles.ocupado=0;
handles.p1=0;
handles.p2=0;
handles.p3=0;
handles.p4=0;
handles.p5=0;
handles.p6=0;
handles.p7=0;
230
Anexo III. Código Matlab Aplicación pick and place
handles.p8=0;
handles.p9=0;
handles.p10=0;
handles.p11=0;
handles.p12=0;
handles.p13=0;
handles.p14=0;
handles.p15=0;
handles.p16=0;
%Caras plataformas.
set(handles.axes303,'visible','off');
set(handles.axes304,'visible','off');
set(handles.axes305,'visible','off');
set(handles.axes306,'visible','off');
set(handles.axes307,'visible','off');
handles.contento=0;
handles.triste=0;
%Texto velocidad.
set(handles.text894,'string',0);
% --- Outputs from this function are returned to the command line.
function varargout = control_planta_OutputFcn(~, ~, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
%--------------------------------------------------------------------------
% --- Executes when selected object is changed in uibuttongroup1.
231
Anexo III. Código Matlab Aplicación pick and place
function pushbutton5_Callback(~, ~, ~)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%BOTON START/STOP.
guidata(hObject,handles);
%START.
if get(hObject,'Value')==1
handles.pushbutton5.Enable = 'off';
handles.encendido=1;
hObject.String = 'Stop';
set(handles.togglebutton2,'Backgroundcolor','r');
set(handles.uipanel11,'visible','on');
set(handles.uibuttongroup5,'visible','on');
set(handles.togglebutton10,'visible','on');
set(handles.togglebutton11,'visible','on');
set(handles.togglebutton12,'visible','on');
set(handles.uipanel19,'visible','on');
else
%STOP.
handles.pushbutton5.Enable = 'on';
handles.encendido=0;
hObject.String = 'Start';
set(handles.togglebutton2,'Backgroundcolor','g');
set(handles.togglebutton10,'visible','off');
set(handles.togglebutton11,'visible','off');
set(handles.togglebutton12,'visible','off');
set(handles.uibuttongroup5,'visible','off');
set(handles.uipanel11,'visible','off');
set(handles.uipanel16,'visible','off');
set(handles.uipanel17,'visible','off');
set(handles.uipanel18,'visible','off');
set(handles.uipanel19,'visible','off');
end
while get(hObject,'Value')==1
%General para ver los dibujos de las palabras.
[handles]=VerPalabras(handles);
%IDIOMA.
if handles.radiobutton6.Value == 1 %Castellano
set(handles.pushbutton9,'string','TELEVISOR');
set(handles.pushbutton44,'string','CABLE');
set(handles.pushbutton47,'string','PLANOS');
set(handles.pushbutton50,'string','INGENIERO');
set(handles.pushbutton53,'string','TECLADO');
set(handles.pushbutton39,'string','CÁMARA');
232
Anexo III. Código Matlab Aplicación pick and place
set(handles.pushbutton42,'string','LÁMPARA');
set(handles.pushbutton40,'string','COCHE');
set(handles.pushbutton43,'string','ROBOT');
set(handles.pushbutton46,'string','MÁSTER');
set(handles.pushbutton49,'string','ESCUELA');
set(handles.pushbutton45,'string','ESTUFA');
set(handles.pushbutton48,'string','PIEZAS');
set(handles.pushbutton51,'string','MOTOR');
set(handles.pushbutton54,'string','MÓVIL');
else % Euskera
set(handles.pushbutton9,'string','TELEBISTA');
set(handles.pushbutton44,'string','KABLEA');
set(handles.pushbutton47,'string','PLANOAK');
set(handles.pushbutton50,'string','INGENIARI');
set(handles.pushbutton53,'string','TEKLATUA');
set(handles.pushbutton39,'string','KAMERA');
set(handles.pushbutton42,'string','LANPARA');
set(handles.pushbutton40,'string','AUTOMOBIL');
set(handles.pushbutton43,'string','ROBOTA');
set(handles.pushbutton46,'string','MASTERRA');
set(handles.pushbutton49,'string','ESKOLA');
set(handles.pushbutton45,'string','BEROGAILU');
set(handles.pushbutton48,'string','PIEZAK');
set(handles.pushbutton51,'string','MOTOREA');
set(handles.pushbutton54,'string','MUGIKORRA');
end
drawnow;
guidata(hObject,handles);
pause(handles.Ts);
end
guidata(hObject,handles);
if handles.ocupado==0
handles.ocupado=1;
handles.p1=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='televisor';
else % Euskera
handles.palabra='telebista';
end
[handles]=General_letras(handles);
end
guidata(hObject,handles);
233
Anexo III. Código Matlab Aplicación pick and place
if handles.ocupado==0
handles.ocupado=1;
handles.p7=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='camara';
else % Euskera
handles.palabra='kamera';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p13=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='coche';
else % Euskera
handles.palabra='automobil';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p2=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='upvehu';
else % Euskera
handles.palabra='upvehu';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p8=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='lampara';
234
Anexo III. Código Matlab Aplicación pick and place
else % Euskera
handles.palabra='lanpara';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p14=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='robot';
else % Euskera
handles.palabra='robota';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p3=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='cable';
else % Euskera
handles.palabra='kablea';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p9=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='estufa';
else % Euskera
handles.palabra='berogailu';
end
[handles]=General_letras(handles);
end
235
Anexo III. Código Matlab Aplicación pick and place
if handles.ocupado==0
handles.ocupado=1;
handles.p15=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='master';
else % Euskera
handles.palabra='masterra';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p4=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='plano';
else % Euskera
handles.palabra='planoak';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p10=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='piezas';
else % Euskera
handles.palabra='piezak';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
236
Anexo III. Código Matlab Aplicación pick and place
handles.p16=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='escuela';
else % Euskera
handles.palabra='eskola';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p5=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='ingeniero';
else % Euskera
handles.palabra='ingeniari';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p11=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='motor';
else % Euskera
handles.palabra='motorea';
end
[handles]=General_letras(handles);
end
if handles.ocupado==0
handles.ocupado=1;
handles.p6=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='teclado';
else % Euskera
handles.palabra='teklatua';
end
[handles]=General_letras(handles);
237
Anexo III. Código Matlab Aplicación pick and place
end
if handles.ocupado==0
handles.ocupado=1;
handles.p12=1;
if handles.radiobutton6.Value == 1 %Castellano
handles.palabra='movil';
else % Euskera
handles.palabra='mugikorra';
end
[handles]=General_letras(handles);
end
238
Anexo III. Código Matlab Aplicación pick and place
set(handles.uipanel18,'visible','off');
end
guidata(hObject,handles);
guidata(hObject,handles);
% --------------------------------------------------------------------
function Fichero_escritura_Callback(~, ~, ~)
% hObject handle to Fichero_escritura (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
winopen('Historial_Palabras.txt');
% --------------------------------------------------------------------
function guia_usuario_Callback(~, ~, ~)
% hObject handle to guia_usuario (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
winopen('Manual_Usuario.txt');
239
Anexo III. Código Matlab Aplicación pick and place
%Slider Velocidad.
handles.velocidad=get(hObject,'value');
handles.velocidad=round(handles.velocidad);
set(handles.text894,'string',handles.velocidad);
guidata(hObject,handles);
function [handles]=Comprobar_formar_palabra(handles)
240
Anexo III. Código Matlab Aplicación pick and place
set(handles.text620,'visible','on');
%LED VERDE.
set(handles.axes299,'visible','on');
axes(handles.axes299);
background=imread('Verde.png');
imshow(background);
axis off;
else
set(handles.text620,'string','Palabra No Disponible');
set(handles.text620,'visible','on');
%LED ROJO.
set(handles.axes299,'visible','on');
axes(handles.axes299);
background=imread('Rojo.png');
imshow(background);
axis off;
end
function [handles]=comunicacion_TCP(handles)
pause(0.1)
241
Anexo III. Código Matlab Aplicación pick and place
py.miarchivo.add_numbers_2(T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(9), T(10),
T(11), T(12), T(13), T(14), T(15), T(16), T(17), T(18), T(19), T(20), T(21), T(22), T(23),
T(24), T(25), T(26), T(27), T(28));
function [handles]=contento_triste(handles)
set(handles.uipanel20,'visible','on');
set(handles.axes301,'visible','on');
axes(handles.axes301);
background=imread('foto_visens.png');
imshow(background);
axis off;
end
end
end
end
end
end
242
Anexo III. Código Matlab Aplicación pick and place
end
end
end
end
end
end
end
end
end
end
end
end
243
Anexo III. Código Matlab Aplicación pick and place
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
244
Anexo III. Código Matlab Aplicación pick and place
end
end
end
end
end
end
end
end
end
end
end
end
end
end
245
Anexo III. Código Matlab Aplicación pick and place
i=length(handles.Posicion_x);
handles.Posicion_x(i+1)=9;
handles.Posicion_y(i+1)=7;
handles.contento=1;
end
end
end
end
end
end
end
end
end
end
if handles.contento==1
set(handles.axes303,'visible','on');
axes(handles.axes303);
background=imread('sonrie.jpg');
imshow(background);
axis off;
end
if handles.triste==1
set(handles.axes304,'visible','on');
axes(handles.axes304);
background=imread('triste.jpg');
imshow(background);
axis off;
end
function [handles]=controlluces(handles)
246
Anexo III. Código Matlab Aplicación pick and place
%F1
axes(handles.axes124);
background=imread('Rojo.png');
imshow(background);
axis off;
%F2
axes(handles.axes127);
background=imread('Rojo.png');
imshow(background);
axis off;
%F3
axes(handles.axes130);
background=imread('Rojo.png');
imshow(background);
axis off;
%F4
axes(handles.axes133);
background=imread('Rojo.png');
imshow(background);
axis off;
%F5
axes(handles.axes136);
background=imread('Rojo.png');
imshow(background);
axis off;
%F6
axes(handles.axes139);
background=imread('Rojo.png');
imshow(background);
axis off;
%F7
axes(handles.axes142);
background=imread('Rojo.png');
imshow(background);
axis off;
%F8
axes(handles.axes145);
background=imread('Rojo.png');
imshow(background);
axis off;
%F13
axes(handles.axes160);
background=imread('Rojo.png');
imshow(background);
axis off;
%F14
axes(handles.axes163);
background=imread('Rojo.png');
247
Anexo III. Código Matlab Aplicación pick and place
imshow(background);
axis off;
%F15
axes(handles.axes166);
background=imread('Rojo.png');
imshow(background);
axis off;
%F16
axes(handles.axes169);
background=imread('Rojo.png');
imshow(background);
axis off;
%F9
axes(handles.axes148);
background=imread('Rojo.png');
imshow(background);
axis off;
%F10
axes(handles.axes151);
background=imread('Rojo.png');
imshow(background);
axis off;
%F11
axes(handles.axes154);
background=imread('Rojo.png');
imshow(background);
axis off;
%F12
axes(handles.axes157);
background=imread('Rojo.png');
imshow(background);
axis off;
% Luces de trabajo.
if handles.p1==1
axes(handles.axes124);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p2==1
axes(handles.axes127);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p3==1
axes(handles.axes130);
background=imread('Amarillo.png');
248
Anexo III. Código Matlab Aplicación pick and place
imshow(background);
axis off;
end
if handles.p4==1
axes(handles.axes133);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p5==1
axes(handles.axes136);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p6==1
axes(handles.axes139);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p7==1
axes(handles.axes142);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p8==1
axes(handles.axes145);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p9==1
axes(handles.axes148);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p10==1
axes(handles.axes151);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p11==1
axes(handles.axes154);
background=imread('Amarillo.png');
imshow(background);
axis off;
249
Anexo III. Código Matlab Aplicación pick and place
end
if handles.p12==1
axes(handles.axes157);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p13==1
axes(handles.axes160);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p14==1
axes(handles.axes163);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p15==1
axes(handles.axes166);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
if handles.p16==1
axes(handles.axes169);
background=imread('Amarillo.png');
imshow(background);
axis off;
end
function [handles]=controlluces_terminado(handles)
%F1
axes(handles.axes124);
background=imread('Verde.png');
imshow(background);
axis off;
%F2
axes(handles.axes127);
background=imread('Verde.png');
imshow(background);
axis off;
250
Anexo III. Código Matlab Aplicación pick and place
%F3
axes(handles.axes130);
background=imread('Verde.png');
imshow(background);
axis off;
%F4
axes(handles.axes133);
background=imread('Verde.png');
imshow(background);
axis off;
%F5
axes(handles.axes136);
background=imread('Verde.png');
imshow(background);
axis off;
%F6
axes(handles.axes139);
background=imread('Verde.png');
imshow(background);
axis off;
%F7
axes(handles.axes142);
background=imread('Verde.png');
imshow(background);
axis off;
%F8
axes(handles.axes145);
background=imread('Verde.png');
imshow(background);
axis off;
%F13
axes(handles.axes160);
background=imread('Verde.png');
imshow(background);
axis off;
%F14
axes(handles.axes163);
background=imread('Verde.png');
imshow(background);
axis off;
%F15
axes(handles.axes166);
background=imread('Verde.png');
imshow(background);
axis off;
%F16
axes(handles.axes169);
background=imread('Verde.png');
251
Anexo III. Código Matlab Aplicación pick and place
imshow(background);
axis off;
%F9
axes(handles.axes148);
background=imread('Verde.png');
imshow(background);
axis off;
%F10
axes(handles.axes151);
background=imread('Verde.png');
imshow(background);
axis off;
%F11
axes(handles.axes154);
background=imread('Verde.png');
imshow(background);
axis off;
%F12
axes(handles.axes157);
background=imread('Verde.png');
imshow(background);
axis off;
Function [posy,posx]=deteccion_coordenadas(i,alfa,matriz_coordenadasx,matriz_coordenadasy,
valor, centroids)
coordenadax=round(centroids(i,1)*alfa);
coordenaday=round(centroids(i,2)*alfa);
for v1=1:9%length(vector_coordenadax)
valornuevox=abs(coordenadax-matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:7%length(vector_coordenaday)
valornuevoy=abs(coordenaday-matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
252
Anexo III. Código Matlab Aplicación pick and place
function [handles]=enviar_coordenadas_TCP(handles)
valor_X=handles.coordenadas_robot_x(handles.Posicion_y(i),handles.Posicion_x(i));
valor_Y=handles.coordenadas_robot_y(handles.Posicion_y(i),handles.Posicion_x(i));
end
253
Anexo III. Código Matlab Aplicación pick and place
function [handles]=exportarfichero(handles)
%Pintar datos.
fprintf(fid,'%s','Fecha: ');
fprintf(fid,'%s ',datetime);
fprintf(fid,'%s',' ---> Palabra escrita: ');
fprintf(fid,'%s \n',handles.palabra);
%Cerrar fichero.
fclose(fid);
end
function [handles]=General_letras(handles)
%--------------------------------------------------------------------------
%Ocultar pulsadores
%--------------------------------------------------------------------------
[handles]=ocultar_pulsadores(handles);
%--------------------------------------------------------------------------
254
Anexo III. Código Matlab Aplicación pick and place
%--------------------------------------------------------------------------
%Se borran los textos de la plataforma grande.
%--------------------------------------------------------------------------
[handles]=textos_grande(handles);
[handles]=textos_pequeno(handles);
%--------------------------------------------------------------------------
%Función de velocidad.
%--------------------------------------------------------------------------
[handles]=Velocidad_Robot(handles);
%--------------------------------------------------------------------------
%Extracción de las coordenadas de los cubos de la palabra.
%--------------------------------------------------------------------------
[handles]=Inicio_Vision(handles);
%--------------------------------------------------------------------------
%Pintar las letras en la plataforma grande.
%--------------------------------------------------------------------------
[handles]=plataforma_grande(handles);
%--------------------------------------------------------------------------
%Pintar las letras en la plataforma pequeña.
%--------------------------------------------------------------------------
[handles]=plataforma_pequena(handles);
%--------------------------------------------------------------------------
%Se exporta la palabra al fichero.
%--------------------------------------------------------------------------
[handles]=exportarfichero(handles);
%--------------------------------------------------------------------------
%Se calculan las coordenadas del robot para mandarlas por TCP.
%--------------------------------------------------------------------------
[handles]=enviar_coordenadas_TCP(handles);
%--------------------------------------------------------------------------
%Se envian los datos por TCP al controlador del robot.
%--------------------------------------------------------------------------
[handles]=comunicacion_TCP(handles);
%--------------------------------------------------------------------------
%Volver a poner los leds en disponible.
%--------------------------------------------------------------------------
[handles]=controlluces_terminado(handles);
%--------------------------------------------------------------------------
%Mostrar pulsadores
%--------------------------------------------------------------------------
[handles]=mostrar_pulsadores(handles);
255
Anexo III. Código Matlab Aplicación pick and place
function [handles]=General_letras_comprobar(handles)
%--------------------------------------------------------------------------
%Ocultar pulsadores
%--------------------------------------------------------------------------
[handles]=ocultar_pulsadores(handles);
%--------------------------------------------------------------------------
%Control de las luces
%--------------------------------------------------------------------------
[handles]=controlluces(handles);
handles.palabra=handles.comprobar;
%--------------------------------------------------------------------------
%Se borran los textos de la plataforma grande.
%--------------------------------------------------------------------------
[handles]=textos_grande(handles);
[handles]=textos_pequeno(handles);
%--------------------------------------------------------------------------
%Función de velocidad.
%--------------------------------------------------------------------------
[handles]=Velocidad_Robot(handles);
%--------------------------------------------------------------------------
%Extracción de las coordenadas de los cubos de la palabra.
%--------------------------------------------------------------------------
[handles]=Inicio_Vision(handles);
%--------------------------------------------------------------------------
%Comprobar si se puede formar la palabra
%--------------------------------------------------------------------------
[handles]=Comprobar_formar_palabra(handles);
if handles.nosepuede==0
%----------------------------------------------------------------------
%Se calcula si se van a mostrar las caritas de contento o triste.
%----------------------------------------------------------------------
[handles]=contento_triste(handles);
%----------------------------------------------------------------------
%Pintar las letras en la plataforma grande y pequeña.
%----------------------------------------------------------------------
[handles]=plataforma_grande(handles);
[handles]=plataforma_pequena(handles);
%----------------------------------------------------------------------
%Se calculan las coordenadas del robot para mandarlas por TCP.
%----------------------------------------------------------------------
[handles]=enviar_coordenadas_TCP(handles);
%handles.vector_TCP
%----------------------------------------------------------------------
256
Anexo III. Código Matlab Aplicación pick and place
%----------------------------------------------------------------------
%Pintar las letras en la plataforma pequeña.
%----------------------------------------------------------------------
[handles]=exportarfichero(handles);
else
%----------------------------------------------------------------------
%Se escribe no disponile en la plataforma grande.
%----------------------------------------------------------------------
[handles]=plataforma_grande_mala(handles);
pause(2);
end
%--------------------------------------------------------------------------
%Volver a poner los leds en disponible.
%--------------------------------------------------------------------------
[handles]=controlluces_terminado(handles);
%--------------------------------------------------------------------------
%Mostrar pulsadores
%--------------------------------------------------------------------------
[handles]=mostrar_pulsadores(handles);
set(handles.uipanel20,'visible','off');
handles.nosepuede=0;
handles.contento=0;
handles.triste=0;
function [handles]=Inicio_Vision(handles)
% Charge image.
I=imread('result.jpg');
% figure(),imshow(I);
I=imcrop(I,[316.51,236.51,403.98,247.98]);
257
Anexo III. Código Matlab Aplicación pick and place
axis off;
% %% 0. Calibrate camera.
patern=imread('Pattern.bmp');
% figure(),imshow(patern)
% Select the start and finish pixels to know the pixels of a grid.
h=imdistline(gca,[500 500],[96 172]);
% Amount of pixels.
dist=76;
% 1square= 30mmx30mm
% Alfa parameter to conver pixels in mm.
alfa=30/dist; % mm/pixel
% %% 1. Image pre-processing.
% Change color space to gray.
Igray=rgb2gray(I);
% figure(),imshow(Igray);
bw=imbinarize(Igray,0.79);
% figure(),imshow(bw);
% %% 1. Detect objects.
%Centroid.
s=regionprops(bw,'centroid');
stats = regionprops('table',bw,'Area','Perimeter');
centroids=cat(1,s.Centroid);
% figure(), imshow(I);
% hold on
% plot(centroids(:,1),centroids(:,2),'b*');
% hold off
%Area.
area=regionprops(bw,'Area');
%Perimeter.
perimeter=regionprops(bw,'Perimeter');
for i=1:length(perimeter)
perimetro(i)=round(perimeter(i).Perimeter);
end
258
Anexo III. Código Matlab Aplicación pick and place
vector_coordenadax=1:5;
vector_coordenaday=1:5;
detector=zeros(length(perimeter));
for i=1:length(perimeter)
%El detector es el perimetro ya redondeado.
detector(i)=perimetro(i);
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%A
handles.matriz_letras(posy,posx)=1;
valor=inf;
a=a+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%B
handles.matriz_letras(posy,posx)=2;
valor=inf;
b=b+1;
259
Anexo III. Código Matlab Aplicación pick and place
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%C
handles.matriz_letras(posy,posx)=3;
valor=inf;
c=c+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%D
handles.matriz_letras(posy,posx)=4;
valor=inf;
d=d+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
260
Anexo III. Código Matlab Aplicación pick and place
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%E
handles.matriz_letras(posy,posx)=5;
valor=inf;
e=e+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%F
handles.matriz_letras(posy,posx)=6;
valor=inf;
f=f+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
261
Anexo III. Código Matlab Aplicación pick and place
end
%G
handles.matriz_letras(posy,posx)=7;
valor=inf;
g=g+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%H
handles.matriz_letras(posy,posx)=8;
valor=inf;
h=h+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%I
handles.matriz_letras(posy,posx)=9;
valor=inf;
i=i+1;
262
Anexo III. Código Matlab Aplicación pick and place
coordenaday=round(centroids(i,2)*alfa);
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%J
handles.matriz_letras(posy,posx)=10;
valor=inf;
j=j+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%K
handles.matriz_letras(posy,posx)=11;
valor=inf;
k=k+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
263
Anexo III. Código Matlab Aplicación pick and place
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%L
handles.matriz_letras(posy,posx)=12;
valor=inf;
l=l+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%M
handles.matriz_letras(posy,posx)=13;
valor=inf;
m=m+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
264
Anexo III. Código Matlab Aplicación pick and place
%N
handles.matriz_letras(posy,posx)=14;
valor=inf;
n=n+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%O
handles.matriz_letras(posy,posx)=15;
valor=inf;
o=o+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%P
handles.matriz_letras(posy,posx)=16;
valor=inf;
p=p+1;
265
Anexo III. Código Matlab Aplicación pick and place
coordenaday=round(centroids(i,2)*alfa);
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%Q
handles.matriz_letras(posy,posx)=17;
valor=inf;
q=q+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%R
handles.matriz_letras(posy,posx)=18;
valor=inf;
r=r+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
266
Anexo III. Código Matlab Aplicación pick and place
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%S
handles.matriz_letras(posy,posx)=19;
valor=inf;
s=s+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%T
handles.matriz_letras(posy,posx)=20;
valor=inf;
t=t+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
267
Anexo III. Código Matlab Aplicación pick and place
end
%U
handles.matriz_letras(posy,posx)=21;
valor=inf;
u=u+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%V
handles.matriz_letras(posy,posx)=22;
valor=inf;
v=v+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%W
handles.matriz_letras(posy,posx)=23;
valor=inf;
w=w+1;
268
Anexo III. Código Matlab Aplicación pick and place
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%X
handles.matriz_letras(posy,posx)=24;
valor=inf;
x=x+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%Y
handles.matriz_letras(posy,posx)=25;
valor=inf;
y=y+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
269
Anexo III. Código Matlab Aplicación pick and place
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%Z
handles.matriz_letras(posy,posx)=26;
valor=inf;
z=z+1;
for v1=1:length(vector_coordenadax)
valornuevox=abs(coordenadax-handles.matriz_coordenadasx(1,v1));
if valornuevox<valor
posx=v1;
end
valor=valornuevox;
end
valor=100;
for v2=1:length(vector_coordenaday)
valornuevoy=abs(coordenaday-handles.matriz_coordenadasy(v2,1));
if valornuevoy<valor
posy=v2;
end
valor=valornuevoy;
end
%Caras
handles.matriz_letras(posy,posx)=27;
valor=inf;
end
end
270
Anexo III. Código Matlab Aplicación pick and place
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='c'
handles.caracteresconvertido(i)=3;
c1=c1+1;
if c1>c
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='d'
handles.caracteresconvertido(i)=4;
d1=d1+1;
if d1>d
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='e'
handles.caracteresconvertido(i)=5;
e1=e1+1;
if e1>e
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='f'
handles.caracteresconvertido(i)=6;
f1=f1+1;
if f1>f
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='g'
handles.caracteresconvertido(i)=7;
g1=g1+1;
if g1>g
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='h'
handles.caracteresconvertido(i)=8;
h1=h1+1;
if h1>a
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='i'
handles.caracteresconvertido(i)=9;
i1=i1+1;
if i1>i
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='j'
handles.caracteresconvertido(i)=10;
j1=j1+1;
if j1>j
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='k'
handles.caracteresconvertido(i)=11;
k1=k1+1;
if k1>k
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='l'
handles.caracteresconvertido(i)=12;
271
Anexo III. Código Matlab Aplicación pick and place
l1=l1+1;
if l1>l
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='m'
handles.caracteresconvertido(i)=13;
m1=m1+1;
if m1>m
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='n'
handles.caracteresconvertido(i)=14;
n1=n1+1;
if n1>n
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='o'
handles.caracteresconvertido(i)=15;
o1=o1+1;
if o1>o
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='p'
handles.caracteresconvertido(i)=16;
p1=p1+1;
if p1>p
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='q'
handles.caracteresconvertido(i)=17;
q1=q1+1;
if q1>q
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='r'
handles.caracteresconvertido(i)=18;
r1=r1+1;
if r1>r
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='s'
handles.caracteresconvertido(i)=19;
s1=s1+1;
if s1>s
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='t'
handles.caracteresconvertido(i)=20;
t1=t1+1;
if t1>t
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='u'
handles.caracteresconvertido(i)=21;
u1=u1+1;
if u1>u
handles.nosepuede=1;
end
272
Anexo III. Código Matlab Aplicación pick and place
elseif handles.caracteres(i)=='v'
handles.caracteresconvertido(i)=22;
v1=v1+1;
if v1>v
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='w'
handles.caracteresconvertido(i)=23;
w1=w1+1;
if w1>w
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='x'
handles.caracteresconvertido(i)=24;
x1=x1+1;
if x1>x
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='y'
handles.caracteresconvertido(i)=25;
y1=y1+1;
if y1>y
handles.nosepuede=1;
end
elseif handles.caracteres(i)=='z'
handles.caracteresconvertido(i)=26;
z1=z1+1;
if z1>z
handles.nosepuede=1;
end
end
i=i+1;
end
if handles.caracteresconvertido(i)==handles.matriz_letras(x11,x2)
handles.Posicion_x(i)=x2;
handles.Posicion_y(i)=x11;
handles.coordenadas_a_coger_x(i)=handles.matriz_coordenadasx1(x2);
handles.coordenadas_a_coger_y(i)=handles.matriz_coordenadasy1(x11);
273
Anexo III. Código Matlab Aplicación pick and place
x11=tx;
detectada=1;
else
x2=x2+1;
end
end
x11=x11+1;
end
end
i=i+1;
end
function [handles]=LedsInicio(handles)
%--------------------------------------------------------------------------
%Leds
%--------------------------------------------------------------------------
%F1
axes(handles.axes124);
background=imread('Verde.png');
imshow(background);
axis off;
%F2
axes(handles.axes127);
background=imread('Verde.png');
imshow(background);
axis off;
%F3
axes(handles.axes130);
background=imread('Verde.png');
imshow(background);
axis off;
%F4
axes(handles.axes133);
background=imread('Verde.png');
imshow(background);
axis off;
%F5
axes(handles.axes136);
background=imread('Verde.png');
imshow(background);
axis off;
%F6
axes(handles.axes139);
background=imread('Verde.png');
274
Anexo III. Código Matlab Aplicación pick and place
imshow(background);
axis off;
%F7
axes(handles.axes142);
background=imread('Verde.png');
imshow(background);
axis off;
%F8
axes(handles.axes145);
background=imread('Verde.png');
imshow(background);
axis off;
%F9
axes(handles.axes148);
background=imread('Verde.png');
imshow(background);
axis off;
%F10
axes(handles.axes151);
background=imread('Verde.png');
imshow(background);
axis off;
%F11
axes(handles.axes154);
background=imread('Verde.png');
imshow(background);
axis off;
%F12
axes(handles.axes157);
background=imread('Verde.png');
imshow(background);
axis off;
%F13
axes(handles.axes160);
background=imread('Verde.png');
imshow(background);
axis off;
%F14
axes(handles.axes163);
background=imread('Verde.png');
imshow(background);
axis off;
%F15
axes(handles.axes166);
background=imread('Verde.png');
imshow(background);
axis off;
%F16
275
Anexo III. Código Matlab Aplicación pick and place
axes(handles.axes169);
background=imread('Verde.png');
imshow(background);
axis off;
function [handles]=mostrar_pulsadores(handles)
function [handles]=ocultar_pulsadores(handles)
%Ocultar palabras.
set(handles.pushbutton9,'visible','off');
set(handles.pushbutton41,'visible','off');
set(handles.pushbutton44,'visible','off');
set(handles.pushbutton47,'visible','off');
set(handles.pushbutton50,'visible','off');
set(handles.pushbutton53,'visible','off');
set(handles.pushbutton39,'visible','off');
set(handles.pushbutton42,'visible','off');
set(handles.pushbutton40,'visible','off');
set(handles.pushbutton43,'visible','off');
set(handles.pushbutton46,'visible','off');
set(handles.pushbutton49,'visible','off');
set(handles.pushbutton45,'visible','off');
set(handles.pushbutton48,'visible','off');
set(handles.pushbutton51,'visible','off');
set(handles.pushbutton54,'visible','off');
set(handles.pushbutton118,'visible','off');
276
Anexo III. Código Matlab Aplicación pick and place
function [handles]=Palabra_Escogida(handles)
function [handles]=Palabras(handles)
handles.p1p='televisor';
handles.p2p='camara';
handles.p3p='coche';
handles.p4p='upv';
handles.p5p='lampara';
handles.p6p='robot';
handles.p7p='cable';
handles.p8p='estufa';
handles.p9p='master';
handles.p10p='plano';
handles.p11p='piezas';
handles.p12p='escuela';
handles.p13p='ingeniero';
handles.p14p='motor';
handles.p15p='teclado';
handles.p16p='movil';
function [handles]=plataforma_grande(handles)
if handles.contento==1 || handles.triste==1
longitud1=length(handles.Posicion_x)-1;
else
longitud1=length(handles.Posicion_x);
end
if Posiciones=='11'
277
Anexo III. Código Matlab Aplicación pick and place
set(handles.text511,'string',handles.caracteres1(i));
set(handles.text511,'visible','on');
elseif Posiciones=='12'
set(handles.text512,'string',handles.caracteres1(i));
set(handles.text512,'visible','on');
elseif Posiciones=='13'
set(handles.text513,'string',handles.caracteres1(i));
set(handles.text513,'visible','on');
elseif Posiciones=='14'
set(handles.text514,'string',handles.caracteres1(i));
set(handles.text514,'visible','on');
elseif Posiciones=='15'
set(handles.text515,'string',handles.caracteres1(i));
set(handles.text515,'visible','on');
elseif Posiciones=='16'
set(handles.text516,'string',handles.caracteres1(i));
set(handles.text516,'visible','on');
elseif Posiciones=='17'
set(handles.text517,'string',handles.caracteres1(i));
set(handles.text517,'visible','on');
elseif Posiciones=='18'
set(handles.text518,'string',handles.caracteres1(i));
set(handles.text518,'visible','on');
elseif Posiciones=='19'
set(handles.text519,'string',handles.caracteres1(i));
set(handles.text519,'visible','on');
elseif Posiciones=='21'
set(handles.text521,'string',handles.caracteres1(i));
set(handles.text521,'visible','on');
elseif Posiciones=='22'
set(handles.text522,'string',handles.caracteres1(i));
set(handles.text522,'visible','on');
elseif Posiciones=='23'
set(handles.text523,'string',handles.caracteres1(i));
set(handles.text523,'visible','on');
elseif Posiciones=='24'
set(handles.text524,'string',handles.caracteres1(i));
set(handles.text524,'visible','on');
elseif Posiciones=='25'
set(handles.text525,'string',handles.caracteres1(i));
set(handles.text525,'visible','on');
elseif Posiciones=='26'
set(handles.text526,'string',handles.caracteres1(i));
set(handles.text526,'visible','on');
elseif Posiciones=='27'
set(handles.text527,'string',handles.caracteres1(i));
set(handles.text527,'visible','on');
elseif Posiciones=='28'
set(handles.text528,'string',handles.caracteres1(i));
set(handles.text528,'visible','on');
elseif Posiciones=='29'
set(handles.text529,'string',handles.caracteres1(i));
set(handles.text529,'visible','on');
elseif Posiciones=='31'
278
Anexo III. Código Matlab Aplicación pick and place
set(handles.text531,'string',handles.caracteres1(i));
set(handles.text531,'visible','on');
elseif Posiciones=='32'
set(handles.text532,'string',handles.caracteres1(i));
set(handles.text532,'visible','on');
elseif Posiciones=='33'
set(handles.text533,'string',handles.caracteres1(i));
set(handles.text533,'visible','on');
elseif Posiciones=='34'
set(handles.text534,'string',handles.caracteres1(i));
set(handles.text534,'visible','on');
elseif Posiciones=='35'
set(handles.text535,'string',handles.caracteres1(i));
set(handles.text535,'visible','on');
elseif Posiciones=='36'
set(handles.text536,'string',handles.caracteres1(i));
set(handles.text536,'visible','on');
elseif Posiciones=='37'
set(handles.text537,'string',handles.caracteres1(i));
set(handles.text537,'visible','on');
elseif Posiciones=='38'
set(handles.text538,'string',handles.caracteres1(i));
set(handles.text538,'visible','on');
elseif Posiciones=='39'
set(handles.text539,'string',handles.caracteres1(i));
set(handles.text539,'visible','on');
elseif Posiciones=='41'
set(handles.text541,'string',handles.caracteres1(i));
set(handles.text541,'visible','on');
elseif Posiciones=='42'
set(handles.text542,'string',handles.caracteres1(i));
set(handles.text542,'visible','on');
elseif Posiciones=='43'
set(handles.text543,'string',handles.caracteres1(i));
set(handles.text543,'visible','on');
elseif Posiciones=='44'
set(handles.text544,'string',handles.caracteres1(i));
set(handles.text544,'visible','on');
elseif Posiciones=='45'
set(handles.text545,'string',handles.caracteres1(i));
set(handles.text545,'visible','on');
elseif Posiciones=='46'
set(handles.text546,'string',handles.caracteres1(i));
set(handles.text546,'visible','on');
elseif Posiciones=='47'
set(handles.text547,'string',handles.caracteres1(i));
set(handles.text547,'visible','on');
elseif Posiciones=='48'
set(handles.text548,'string',handles.caracteres1(i));
set(handles.text548,'visible','on');
elseif Posiciones=='49'
set(handles.text549,'string',handles.caracteres1(i));
set(handles.text549,'visible','on');
279
Anexo III. Código Matlab Aplicación pick and place
elseif Posiciones=='51'
set(handles.text551,'string',handles.caracteres1(i));
set(handles.text551,'visible','on');
elseif Posiciones=='52'
set(handles.text552,'string',handles.caracteres1(i));
set(handles.text552,'visible','on');
elseif Posiciones=='53'
set(handles.text553,'string',handles.caracteres1(i));
set(handles.text553,'visible','on');
elseif Posiciones=='54'
set(handles.text554,'string',handles.caracteres1(i));
set(handles.text554,'visible','on');
elseif Posiciones=='55'
set(handles.text555,'string',handles.caracteres1(i));
set(handles.text555,'visible','on');
elseif Posiciones=='56'
set(handles.text556,'string',handles.caracteres1(i));
set(handles.text556,'visible','on');
elseif Posiciones=='57'
set(handles.text557,'string',handles.caracteres1(i));
set(handles.text557,'visible','on');
elseif Posiciones=='58'
set(handles.text558,'string',handles.caracteres1(i));
set(handles.text558,'visible','on');
elseif Posiciones=='59'
set(handles.text559,'string',handles.caracteres1(i));
set(handles.text559,'visible','on');
elseif Posiciones=='61'
set(handles.text561,'string',handles.caracteres1(i));
set(handles.text561,'visible','on');
elseif Posiciones=='62'
set(handles.text562,'string',handles.caracteres1(i));
set(handles.text562,'visible','on');
elseif Posiciones=='63'
set(handles.text563,'string',handles.caracteres1(i));
set(handles.text563,'visible','on');
elseif Posiciones=='64'
set(handles.text564,'string',handles.caracteres1(i));
set(handles.text564,'visible','on');
elseif Posiciones=='65'
set(handles.text565,'string',handles.caracteres1(i));
set(handles.text565,'visible','on');
elseif Posiciones=='66'
set(handles.text566,'string',handles.caracteres1(i));
set(handles.text566,'visible','on');
elseif Posiciones=='67'
set(handles.text567,'string',handles.caracteres1(i));
set(handles.text567,'visible','on');
elseif Posiciones=='68'
set(handles.text568,'string',handles.caracteres1(i));
set(handles.text568,'visible','on');
elseif Posiciones=='69'
set(handles.text569,'string',handles.caracteres1(i));
set(handles.text569,'visible','on');
280
Anexo III. Código Matlab Aplicación pick and place
elseif Posiciones=='71'
set(handles.text571,'string',handles.caracteres1(i));
set(handles.text571,'visible','on');
elseif Posiciones=='72'
set(handles.text572,'string',handles.caracteres1(i));
set(handles.text572,'visible','on');
elseif Posiciones=='73'
set(handles.text573,'string',handles.caracteres1(i));
set(handles.text573,'visible','on');
elseif Posiciones=='74'
set(handles.text574,'string',handles.caracteres1(i));
set(handles.text574,'visible','on');
elseif Posiciones=='75'
set(handles.text575,'string',handles.caracteres1(i));
set(handles.text575,'visible','on');
elseif Posiciones=='76'
set(handles.text576,'string',handles.caracteres1(i));
set(handles.text576,'visible','on');
elseif Posiciones=='77'
set(handles.text577,'string',handles.caracteres1(i));
set(handles.text577,'visible','on');
elseif Posiciones=='78'
set(handles.text578,'string',handles.caracteres1(i));
set(handles.text578,'visible','on');
elseif Posiciones=='79'
set(handles.text579,'string',handles.caracteres1(i));
set(handles.text579,'visible','on');
end
i=i+1;
end
function [handles]=plataforma_grande_mala(handles)
%TEXTO NO.
set(handles.text534,'string','N');
set(handles.text534,'visible','on');
set(handles.text535,'string','O');
set(handles.text535,'visible','on');
%TEXTO POSIBLE.
set(handles.text542,'string','P');
set(handles.text542,'visible','on');
set(handles.text543,'string','O');
set(handles.text543,'visible','on');
set(handles.text544,'string','S');
set(handles.text544,'visible','on');
set(handles.text545,'string','I');
set(handles.text545,'visible','on');
281
Anexo III. Código Matlab Aplicación pick and place
set(handles.text546,'string','B');
set(handles.text546,'visible','on');
set(handles.text547,'string','L');
set(handles.text547,'visible','on');
set(handles.text548,'string','E');
set(handles.text548,'visible','on');
function [handles]=plataforma_pequena(handles)
set(handles.text612,'string',handles.caracteres1(1));
set(handles.text612,'visible','on');
set(handles.text613,'string',handles.caracteres1(2));
set(handles.text613,'visible','on');
set(handles.text614,'string',handles.caracteres1(3));
set(handles.text614,'visible','on');
set(handles.text615,'string','/');
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(4));
set(handles.text616,'visible','on');
set(handles.text617,'string',handles.caracteres1(5));
set(handles.text617,'visible','on');
set(handles.text618,'string',handles.caracteres1(6));
set(handles.text618,'visible','on');
elseif length(handles.Posicion_x)==1
set(handles.text615,'string',handles.caracteres1(1));
set(handles.text615,'visible','on');
elseif length(handles.Posicion_x)==2
set(handles.text614,'string',handles.caracteres1(1));
set(handles.text614,'visible','on');
set(handles.text615,'string',handles.caracteres1(2));
set(handles.text615,'visible','on');
elseif length(handles.Posicion_x)==3
282
Anexo III. Código Matlab Aplicación pick and place
set(handles.text614,'string',handles.caracteres1(1));
set(handles.text614,'visible','on');
set(handles.text615,'string',handles.caracteres1(2));
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(3));
set(handles.text616,'visible','on');
elseif length(handles.Posicion_x)==4
set(handles.text613,'string',handles.caracteres1(1));
set(handles.text613,'visible','on');
set(handles.text614,'string',handles.caracteres1(2));
set(handles.text614,'visible','on');
set(handles.text615,'string',handles.caracteres1(3));
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(4));
set(handles.text616,'visible','on');
elseif length(handles.Posicion_x)==5
set(handles.text613,'string',handles.caracteres1(1));
set(handles.text613,'visible','on');
set(handles.text614,'string',handles.caracteres1(2));
set(handles.text614,'visible','on');
set(handles.text615,'string',handles.caracteres1(3));
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(4));
set(handles.text616,'visible','on');
set(handles.text617,'string',handles.caracteres1(5));
set(handles.text617,'visible','on');
else
if handles.contento==1
set(handles.axes305,'visible','on');
axes(handles.axes305);
background=imread('sonrie.jpg');
imshow(background);
axis off;
end
if handles.triste==1
set(handles.axes305,'visible','on');
axes(handles.axes305);
background=imread('triste.jpg');
imshow(background);
axis off;
283
Anexo III. Código Matlab Aplicación pick and place
end
end
elseif length(handles.Posicion_x)==6
set(handles.text612,'string',handles.caracteres1(1));
set(handles.text612,'visible','on');
set(handles.text613,'string',handles.caracteres1(2));
set(handles.text613,'visible','on');
set(handles.text614,'string',handles.caracteres1(3));
set(handles.text614,'visible','on');
set(handles.text615,'string',handles.caracteres1(4));
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(5));
set(handles.text616,'visible','on');
set(handles.text617,'string',handles.caracteres1(6));
set(handles.text617,'visible','on');
else
if handles.contento==1
set(handles.axes305,'visible','on');
axes(handles.axes305);
background=imread('sonrie.jpg');
imshow(background);
axis off;
end
if handles.triste==1
set(handles.axes305,'visible','on');
axes(handles.axes305);
background=imread('triste.jpg');
imshow(background);
axis off;
end
end
elseif length(handles.Posicion_x)==7
set(handles.text612,'string',handles.caracteres1(1));
set(handles.text612,'visible','on');
set(handles.text613,'string',handles.caracteres1(2));
set(handles.text613,'visible','on');
set(handles.text614,'string',handles.caracteres1(3));
set(handles.text614,'visible','on');
284
Anexo III. Código Matlab Aplicación pick and place
set(handles.text615,'string',handles.caracteres1(4));
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(5));
set(handles.text616,'visible','on');
set(handles.text617,'string',handles.caracteres1(6));
set(handles.text617,'visible','on');
set(handles.text618,'string',handles.caracteres1(7));
set(handles.text618,'visible','on');
else
if handles.contento==1
set(handles.axes306,'visible','on');
axes(handles.axes306);
background=imread('sonrie.jpg');
imshow(background);
axis off;
end
if handles.triste==1
set(handles.axes306,'visible','on');
axes(handles.axes306);
background=imread('triste.jpg');
imshow(background);
axis off;
end
end
elseif length(handles.Posicion_x)==8
set(handles.text611,'string',handles.caracteres1(1));
set(handles.text611,'visible','on');
set(handles.text612,'string',handles.caracteres1(2));
set(handles.text612,'visible','on');
set(handles.text613,'string',handles.caracteres1(3));
set(handles.text613,'visible','on');
set(handles.text614,'string',handles.caracteres1(4));
set(handles.text614,'visible','on');
set(handles.text615,'string',handles.caracteres1(5));
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(6));
set(handles.text616,'visible','on');
set(handles.text617,'string',handles.caracteres1(7));
set(handles.text617,'visible','on');
285
Anexo III. Código Matlab Aplicación pick and place
set(handles.text618,'string',handles.caracteres1(8));
set(handles.text618,'visible','on');
else
if handles.contento==1
set(handles.axes306,'visible','on');
axes(handles.axes306);
background=imread('sonrie.jpg');
imshow(background);
axis off;
end
if handles.triste==1
set(handles.axes306,'visible','on');
axes(handles.axes306);
background=imread('triste.jpg');
imshow(background);
axis off;
end
end
elseif length(handles.Posicion_x)==9
set(handles.text611,'string',handles.caracteres1(1));
set(handles.text611,'visible','on');
set(handles.text612,'string',handles.caracteres1(2));
set(handles.text612,'visible','on');
set(handles.text613,'string',handles.caracteres1(3));
set(handles.text613,'visible','on');
set(handles.text614,'string',handles.caracteres1(4));
set(handles.text614,'visible','on');
set(handles.text615,'string',handles.caracteres1(5));
set(handles.text615,'visible','on');
set(handles.text616,'string',handles.caracteres1(6));
set(handles.text616,'visible','on');
set(handles.text617,'string',handles.caracteres1(7));
set(handles.text617,'visible','on');
set(handles.text618,'string',handles.caracteres1(8));
set(handles.text618,'visible','on');
set(handles.text619,'string',handles.caracteres1(9));
set(handles.text619,'visible','on');
286
Anexo III. Código Matlab Aplicación pick and place
else
if handles.contento==1
set(handles.axes307,'visible','on');
axes(handles.axes307);
background=imread('sonrie.jpg');
imshow(background);
axis off;
end
if handles.triste==1
set(handles.axes307,'visible','on');
axes(handles.axes307);
background=imread('triste.jpg');
imshow(background);
axis off;
end
end
end
handles.p2=0;
function [handles]=textos_grande(handles)
set(handles.text511,'visible','off');
set(handles.text512,'visible','off');
set(handles.text513,'visible','off');
set(handles.text514,'visible','off');
set(handles.text515,'visible','off');
set(handles.text516,'visible','off');
set(handles.text517,'visible','off');
set(handles.text518,'visible','off');
set(handles.text519,'visible','off');
set(handles.text521,'visible','off');
set(handles.text522,'visible','off');
set(handles.text523,'visible','off');
set(handles.text524,'visible','off');
set(handles.text525,'visible','off');
set(handles.text526,'visible','off');
set(handles.text527,'visible','off');
set(handles.text528,'visible','off');
set(handles.text529,'visible','off');
set(handles.text531,'visible','off');
set(handles.text532,'visible','off');
set(handles.text533,'visible','off');
set(handles.text534,'visible','off');
set(handles.text535,'visible','off');
set(handles.text536,'visible','off');
set(handles.text537,'visible','off');
set(handles.text538,'visible','off');
287
Anexo III. Código Matlab Aplicación pick and place
set(handles.text539,'visible','off');
set(handles.text541,'visible','off');
set(handles.text542,'visible','off');
set(handles.text543,'visible','off');
set(handles.text544,'visible','off');
set(handles.text545,'visible','off');
set(handles.text546,'visible','off');
set(handles.text547,'visible','off');
set(handles.text548,'visible','off');
set(handles.text549,'visible','off');
set(handles.text551,'visible','off');
set(handles.text552,'visible','off');
set(handles.text553,'visible','off');
set(handles.text554,'visible','off');
set(handles.text555,'visible','off');
set(handles.text556,'visible','off');
set(handles.text557,'visible','off');
set(handles.text558,'visible','off');
set(handles.text559,'visible','off');
set(handles.text561,'visible','off');
set(handles.text562,'visible','off');
set(handles.text563,'visible','off');
set(handles.text564,'visible','off');
set(handles.text565,'visible','off');
set(handles.text566,'visible','off');
set(handles.text567,'visible','off');
set(handles.text568,'visible','off');
set(handles.text569,'visible','off');
set(handles.text571,'visible','off');
set(handles.text572,'visible','off');
set(handles.text573,'visible','off');
set(handles.text574,'visible','off');
set(handles.text575,'visible','off');
set(handles.text576,'visible','off');
set(handles.text577,'visible','off');
set(handles.text578,'visible','off');
set(handles.text579,'visible','off');
%Caras plataforma.
set(handles.axes303,'visible','off');
set(handles.axes304,'visible','off');
function [handles]=textos_pequeno(handles)
set(handles.text611,'visible','off');
set(handles.text612,'visible','off');
set(handles.text613,'visible','off');
set(handles.text614,'visible','off');
set(handles.text615,'visible','off');
set(handles.text616,'visible','off');
set(handles.text617,'visible','off');
set(handles.text618,'visible','off');
288
Anexo III. Código Matlab Aplicación pick and place
set(handles.text619,'visible','off');
%Caras plataforma.
set(handles.axes305,'visible','off');
set(handles.axes306,'visible','off');
set(handles.axes307,'visible','off');
function [handles]=Velocidad_Robot(handles)
function [handles]=VerPalabras(handles)
%--------------------------------------------------------------------------
%Dibujos
%--------------------------------------------------------------------------
axes(handles.axes39);
background=imread('Televisor.jpg');
imshow(background);
axis off;
axes(handles.axes71);
background=imread('upv_ehu.jpg');
imshow(background);
axis off;
axes(handles.axes74);
background=imread('Cable.jpg');
imshow(background);
axis off;
axes(handles.axes77);
289
Anexo III. Código Matlab Aplicación pick and place
background=imread('Plano.jpg');
imshow(background);
axis off;
axes(handles.axes80);
background=imread('Ingeniero.jpg');
imshow(background);
axis off;
axes(handles.axes83);
background=imread('Teclado.jpg');
imshow(background);
axis off;
axes(handles.axes69);
background=imread('Camara.jpg');
imshow(background);
axis off;
axes(handles.axes72);
background=imread('Lampara.jpg');
imshow(background);
axis off;
axes(handles.axes75);
background=imread('Estufa.jpg');
imshow(background);
axis off;
axes(handles.axes78);
background=imread('Piezas.jpg');
imshow(background);
axis off;
axes(handles.axes81);
background=imread('Motor.jpg');
imshow(background);
axis off;
axes(handles.axes84);
background=imread('Movil.jpg');
imshow(background);
axis off;
axes(handles.axes70);
background=imread('Coche.jpg');
imshow(background);
axis off;
axes(handles.axes73);
background=imread('Robot.jpg');
imshow(background);
axis off;
axes(handles.axes76);
background=imread('Master.jpg');
imshow(background);
axis off;
290
Anexo III. Código Matlab Aplicación pick and place
axes(handles.axes79);
background=imread('Escuela.jpg');
imshow(background);
axis off;
%--------------------------------------------------------------------------
%Plataformas
%--------------------------------------------------------------------------
axes(handles.axes176);
background=imread('plataforma_grande.png');
imshow(background);
axis off;
axes(handles.axes296);
background=imread('plataforma_peque.png');
imshow(background);
axis off;
291
Anexo IV. Código Python Aplicación pick and place
Anexo IV:
CÓDIGO PYTHON
292
Anexo IV. Código Python Aplicación pick and place
import socket
def add_numbers_2(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16,
n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28):
import socket
buffer_size = 64
# Se recibe la confirmación del PLC.
data = sock.recv(buffer_size)
# Se cierra la comunicación.
sock.close()
293
Anexo V. Manual de usuario Aplicación pick and place
Anexo V:
MANUAL DE USUARIO
294
Anexo V. Manual de usuario Aplicación pick and place
V. Manual de usuario.
En este capítulo se van a exponer, por un lado, los pasos necesarios que hay que realizar
para la correcta puesta en marcha y detención del robot y, por otro lado, el manual de usuario
de la interfaz gráfica desarrollada en este proyecto.
Para realizar el arranque del robot, hay que realizar los pasos que se explican a continuación:
Para apagar el robot se recomienda esperar a que se haya terminado de formar una palabra
completa, pero se puede apagar sin necesidad de ello. Tan solo hay que pulsar el botón rojo
de la botonera lateral de activación y colocar el selector en la posición intermedia (pausa).
Cuando se quiera acceder al habitáculo del robot abriendo alguna de las puertas el robot se
detendrá inmediatamente, mostrando en los displays de los servodrivers el error “St” y
encendiéndose el piloto rojo. Una vez cerradas las puertas para arrancar el robot se siguen
los pasos del arranque del robot desde el paso 3.
El selector de tres posiciones cuenta con una posición central que es la posición de pausa y
para lanzar la aplicación es necesario colocar el selector a la posición inferior. Si durante el
movimiento del robot el selector se coloca en la posición intermedia o superior, el robot
295
Anexo V. Manual de usuario Aplicación pick and place
Siempre que ocurra cualquiera de los casos de este apartado, una vez restablecidas las
condiciones de funcionamiento habrá que pasar el selector a la posición de inicialización
(posición superior) y proceder con los pasos del apartado “Arranque del robot”.
296
Anexo V. Manual de usuario Aplicación pick and place
Para instalarlo aparecerá una ventana con la información y versión de la aplicación (ver Figura
V.2a). Después se elige el directo de instalación (ver Figura V.2b) y comenzará la instalación
(ver Figura V.2c). Al finalizar, el programa ya se encuentra instalado y se genera un acceso
directo en el escritorio que permite abrir la aplicación (ver Figura V.2d).
Con la aplicación instalada y el robot arrancado, tan solo es necesario abrir la aplicación
desde el acceso directo del escritorio para abrir la interfaz gráfica.
Para arrancar la interfaz una vez abierta la aplicación hay que pulsar en el botón verde ‘Start’
de la figura V.3.
El segundo pulsador, que aparece en color negro permite cerrar la interfaz, pero este botón
se encuentra deshabilitado si la interfaz está en marcha. Si se quiere cerrar la interfaz, primero
hay que pararla, pulsando en ‘stop’ y posteriormente pulsa en ‘cerrar programa’.
297
Anexo V. Manual de usuario Aplicación pick and place
El panel de ‘Palabras’ contiene 16 pulsadores con 16 palabras que el robot puede escribir.
Cada una de estas palabras tiene a su lado derecho una imagen de la palabra y unos pilotos
verdes que indican que la palabra está disponible para escribirla.
298
Anexo V. Manual de usuario Aplicación pick and place
• Piloto verde. Indica que la palabra asociada a ese piloto está disponible para
escribirse.
• Piloto amarillo. Indica que la palabra se encuentra en proceso de formación por el
robot. Este piloto aparece al pulsarse una palabra para escribir.
• Piloto rojo. Indica que la palabra que no está disponible para escribir. Cuando se pulsa
una palabra para escribir, todas las demás se bloquean hasta que se termine de
formar y recoger la seleccionada.
En este panel se encuentran las palabras predefinidas que el robot siempre podrá escribir
con la distribución de letras de la plataforma. En la figura V.8, se muestra el panel de palabra,
donde en la parte izquierda se muestra el panel por defecto y en la parte izquierda se muestra
el panel cuando se pulsa una palabra para escribir, en este caso ‘Televisor’.
Si se quiere que el robot escriba una palabra fuera de las que están predefinidas, hay que
utilizar este panel que permite comprobar si es posible escribir la palabra deseada. Dentro de
299
Anexo V. Manual de usuario Aplicación pick and place
este panel se habilita un recuadro de texto, donde el usuario puede escribir cualquier palabra
que quiera que el robot escriba. Posteriormente es necesario pulsar el botón de comprobar
para verificar si esa palabra se puede escribir y si es posible, se comenzará a ello.
Este panel cuenta con un pulsador (recuadrado en color amarillo) que permite desplegar u
ocultar el panel. En la figura V.11, se muestra el panel en la parte izquierda y la parte
derecha el pulsador asociado.
En la figura V.12, se muestra el panel vacío en la parte izquierda, el panel con los cuadrantes
donde se va a recoger cada cubo para la palabra ‘televisor’ en la parte derecha y la parte
inferior el pulsador asociado.
300
Anexo V. Manual de usuario Aplicación pick and place
El panel de la plataforma pequeña permite ver la plataforma pequeña y el lugar donde el robot
va a depositar cada cubo para formar la palabra. Este panel cuenta con un pulsador que
permite desplegar u ocultar este panel.
En la figura V.13, se muestra el panel vacío en la parte izquierda, el panel con el lugar donde
se va a depositar cada cubo para la palabra ‘televisor’ en la parte derecha y el pulsador
asociado en la parte inferior.
El último panel se encuentra en la parte derecha, que es el panel que muestra lo que ve el
robot a través de la webcam. Al mismo tiempo se muestra el estado de la conexión TCP.
301
Anexo V. Manual de usuario Aplicación pick and place
Al mismo tiempo se informa del estado de la conexión TCP mediante un mensaje y un piloto
de color. En la figura V.16, se puede ver en la parte izquierda los avisos sin establecer la
conexión TCP y en la parte derecha con la conexión TCP establecida.
Además, en este panel se permite regular la velocidad a la que se quiere que se mueva el
robot mediante una barra deslizante que se puede llevar desde el 0% al 100%. Este rango de
velocidades del robot no se corresponde con la velocidad mínima y máxima del robot sino
con un rango de velocidad segura tanto para el robot como para el usuario. En la figura V.17,
se muestra diferentes velocidades del robot.
302
Anexo V. Manual de usuario Aplicación pick and place
Es importante saber que antes de seleccionar la palabra que se quiere formar, se seleccione
a la velocidad a la cual se quiere que se mueva el robot. Finalmente, en la figura V.18, se
puede observar el panel completo del robot.
Por otro lado, se han habilitados dos pestañas en la parte superior izquierda de la interfaz. La
primera pestaña muestra un documento con el histórico de las palabras que se han escrito
con la fecha y hora de cada una de ellas, como se puede ver en la figura V.19.
303
Anexo V. Manual de usuario Aplicación pick and place
304
Anexo VI. Información dispositivos del robot Aplicación pick and place
Anexo VI:
INFORMACIÓN
DISPOSITIVOS DEL
ROBOT
305
Anexo VI. Información dispositivos del robot Aplicación pick and place
VI.I. Controlador.
306
Anexo VI. Información dispositivos del robot Aplicación pick and place
Para más información sobre el controlador NJ501-4300 [34] consultar el documento técnico
de la bibliografía.
Para más información sobre la fuente de alimentación del PLC NJ-PA3001 [35] consultar el
documento técnico de la bibliografía.
VI.III. Servodrivers.
307
Anexo VI. Información dispositivos del robot Aplicación pick and place
• Conector de control E/S (CN1). Se utiliza para las señales de entrada de comando y
señales de entrada/salida.
• Conector de encoder externo (CN4). Conector para una señal de codificador utilizado
durante el control de cierre total.
• Conector de monitor analógico (CN5). Puede utilizar un cable especial para supervisar
los valores, tales como la rotación del motor velocidad, el par de valor nominal, etc.
• Circuito principal (L1, L2, L3). Conector de donde el servomotor recibe la alimentación.
308
Anexo VI. Información dispositivos del robot Aplicación pick and place
Para más información sobre los servodriver R88D-KN04H-ECT [36] consultar el documento
técnico de la bibliografía.
• Bus conector NX: Este conector se utiliza para conectar la unidad de acoplador
EtherCAT a la Unidad NX en el lado derecho.
• Indicadores: Los indicadores muestran el estado de funcionamiento actual del
acoplador y el estado de la fuente de alimentación.
• Conector de comunicación: Estos conectores están conectados a los cables de
comunicaciones de la red EtherCAT. Hay dos conectores: uno para el puerto de
entrada y uno para el puerto de salida.
• Puerto USB: Este puerto se utiliza para conectar con el soporte de software de Studio
Sysmac.
• Interruptores giratorios: Los interruptores giratorios se utilizan para ajustar el dígito 1s
y 10s dígitos de la dirección del nodo del acoplador EtherCAT como un esclavo
EtherCAT.
• Interruptor DIP: El interruptor DIP se utiliza para ajustar el dígito 100s de la dirección
del nodo del acoplador EtherCAT como un esclavo EtherCAT.
• Bloque terminal: El bloque de terminales se utiliza para conectarse a los cables de
alimentación y cable de tierra. Tiene unos indicadores numéricos para asignar las
posiciones los agujeros de terminales. Los terminales se introducen en los agujeros
de terminales con la ayuda de los agujeros de inserción.
309
Anexo VI. Información dispositivos del robot Aplicación pick and place
Para más información sobre el acoplador EtherCAT NX-ECC201 [38] consultar el documento
técnico de la bibliografía.
310
Anexo VII. Calibración del robot Aplicación pick and place
Anexo VII:
CALIBRACIÓN DEL
ROBOT
311
Anexo VII. Calibración del robot Aplicación pick and place
La siguiente tarea a realizar es la calibración de los encoders del robot, que se pueden
descalibrar debido a que las baterías de los servodrivers se agotan. Con objeto de recalibrar
los encoders absolutos para que el robot vuelva a funcionar correctamente existen dos
métodos:
• Kit de calibración.
• Método alternativo.
La calibración mediante kit de calibración consiste en emplear una herramienta especial que
suministra Omron. Este juego de calibración tiene la referencia CR_ART.1058.
Para realizar la calibración con este método, se deben realizar los siguientes pasos para
poner los tres brazos superiores del robot en la posición cero:
1. Soltar el freno del motor y asegurarse de que todos los brazos primarios estén girados
hacia abajo, lo suficiente para que la herramienta de calibración pueda ser montada.
2. Deslizar la herramienta de calibración en la placa base como se muestra en la figura
6.40.
3. Apretar la tuerca de estrella hasta que la herramienta esté fija.
4. Soltar el freno del motor seleccionado y empujar el brazo superior con su rótula contra
la herramienta de calibración.
312
Anexo VII. Calibración del robot Aplicación pick and place
Una vez hecho esto, todos los brazos primarios están en posición cero y desde el modelo
cinemático y siguiendo los siguientes dos pasos, el robot queda totalmente calibrado:
Para conseguir definir el origen de la máquina, hay que emplear el siguiente procedimiento:
1. Soltar los ejes de la parte móvil para permitir que cada eje se mueva libremente.
2. Montar un tope mecánico en el origen de máquina de cada brazo del robot.
El segundo método está pensado para cuando no se dispone de dicha herramienta, como es
este caso. Es el método empleado para este proyecto y consiste en calibrar el robot sin utilizar
313
Anexo VII. Calibración del robot Aplicación pick and place
Los tres perfiles tienen que tener la misma sección, en este caso se ha utilizado una sección
de 40mm. Una vez se dispone de las herramientas, hay que colocar cada perfil en cada eje
de giro y fijarlo mediante los sargentos. Los tres perfiles tendrán que estar situados a la misma
altura y paralelos al techo para que todos los ejes estén calibrados respecto a la misma
referencia, como se ilustra en la figura 6.44.
Con los sargentos y perfiles colocados, se muestran los pasos realizados para mover cada
eje individualmente y así poder calibrar el robot desde el PLC.
Para ello, primero hay que realizar una conexión directa a través del cable ethernet del PLC
al ordenador, se ejecuta Sysmac Studio y se selecciona la opción conectar con dispositivo
314
Anexo VII. Calibración del robot Aplicación pick and place
permitiendo realizar una transferencia de datos desde el dispositivo, como muestran las
indicaciones de la figura 6.45.
315
Anexo VII. Calibración del robot Aplicación pick and place
Se abrirá una nueva pestaña donde se podrá elegir el eje con el que se quiere trabajar, pero
para ello, es necesario pulsar el botón verde de la botonera del robot y restablecer los errores
desde Sysmac. Estos pueden ser debidos a que los servomotores no están alimentados o a
que se han superado los umbrales límite de giro de los mismos.
Tras encender el servo, se permiten cuatro tipos de movimiento para el eje seleccionado:
• Jogging.
• Posicionamiento relativo.
• Posicionamiento absoluto.
• Homing.
2
3
Para calibrar el encoder, la pestaña que se utiliza es la de Homing. En ella ha sido necesario
configurar previamente el desplazamiento a la posición inicial, como se puede ver en la figura
6.48.
316
Anexo VII. Calibración del robot Aplicación pick and place
Como resultado aparece la ventana de la figura 6.49, donde hay que seleccionar el método
de homing, la dirección de inicio de homing, la dirección de detección de entrada de inicio y
la velocidad.
1
2
Con la configuración del homing del eje definida, se aplica la configuración de desplazamiento
que se acaba de editar y se pulsa en “play”, de esta manera se está definiendo que la posición
en la que se encuentra actualmente el eje es su nueva posición cero (posición de reposo).
Una vez se alcanza la posición deseada, hay que guardar esa posición como home. Para
ello, se vuelve a la pestaña de movimiento “Jogging”, se pulsa de nuevo en aplicar y después
en “play”, como se muestra en la figura 6.50. Por último, hay que apagar el servomotor.
1
2
317
Anexo VII. Calibración del robot Aplicación pick and place
Para calibrar correctamente los tres ejes, se emplean los tres perfiles comentados
anteriormente. Para ello, cuando se pulse el “play”, se permitirá al robot moverse hasta que
el extremo de uno de los dos bulones del eje toque el perfil (ver Figura 6.51), en ese momento
habrá que parar el servomotor.
Se repiten estos pasos para cada uno de los ejes del robot y de esta manera queda definida
la nueva posición de reposo. Para la aplicación que se ha desarrollado, la nueva posición de
reposo, se encuentra a una distancia de 15cm desde el final de la pinza hasta la base de la
célula robotizada, como se puede observar en la figura 6.52.
Es importante conocer que el espacio de trabajo del robot es móvil, es decir, la posición de
reposo del TCP, define la posición de la punta de la flecha de la figura 6.53. De manera que
si con una configuración de reposo, no es posible alcanzar todos los puntos para una
determinada aplicación, puede que si sea posible alcanzarlos definiendo el TCP a una
distancia menor de la plataforma.
318
Anexo VII. Calibración del robot Aplicación pick and place
Esto es debido a que el rango de giro de los servomotores va desde -40º a 110º y se define
como 0º el punto en el que se realiza la preconfiguración como posición cero.
El robot Mini Delta tiene tres tipos de sistemas de coordenadas, como se muestra en la figura
6.54.
319
Anexo VII. Calibración del robot Aplicación pick and place
El robot Delta siempre trabaja en coordenadas de eje (ACS), sin embargo, se ha definido un
programa en el que se pueden introducir las posiciones en MCS y mediante la función
MC_InverseKin se realiza la cinemática inversa, convirtiendo la referencia de posición MCS
a coordenada ACS.
320