integraciÓn de plataforma robÓtica mÓvil en sistema de …
TRANSCRIPT
TRABAJO DE FINAL DE GRADO
Grado en Ingeniería Electrónica Industrial y Automática
INTEGRACIÓN DE PLATAFORMA ROBÓTICA MÓVIL EN
SISTEMA DE ENSAMBLAJE ACADÉMICO
Memoria
Autor/a: Hidalgo Vélez, Justin Geovanny Director/a: Ponsa Asensio, Pedro Co-Director/a: Tornil Sin, Sebastián Convocatoria: Junio 2021
Resumen
Este proyecto integra la plataforma móvil Robotino® de FESTO en la cadena de montaje FAS200 de
SMC. El nexo entre ambos sistemas es el robot SCARA Mitsubishi RH-3FH5515-D1-S15, que recoge el
producto ensamblado y lo paletiza en la plataforma móvil para su posterior transporte a las zonas de
reposición de las estaciones FAS200.
Para formar un sistema compacto y coordinado se han adoptado soluciones de hardware para el
acoplo entre Robotino, SCARA, FAS200 y un operario de planta.
A nivel software se ha programado en el entorno gráfico Robotino®View 4 el funcionamiento íntegro
de Robotino, en RT Toolbox 2 la programación del robot RH-3FH5515-D1-S15 y en Arduino IDE la placa
NodeMCU ESP32 para una comunicación vía WiFi entre Robotino® y SCARA mediante el protocolo
UDP.
Esta memoria detalla los pasos anteriores, así como los problemas encontrados en el transcurso, con
el objetivo de crear documentación práctica y provechosa para la elaboración de futuros proyectos.
Última modificación de este documento: 16 de junio de 2021
Integración de plataforma robótica móvil en sistema de ensamblaje académico
i
Resum
Aquest projecte integra la plataforma mòbil Robotino® de FESTO a la cadena de muntatge FAS200 de
SMC. El nexe entre els dos sistemes és el robot SCARA Mitsubishi RH-3FH5515-D1-S15, que recull el
producte acabat i el paletitza a la plataforma mòbil per al seu posterior transport a les zones de
reposició de les estacions FAS200.
Per formar un sistema compacte i coordinat s'han adoptat solucions hardware per al acoblament entre
Robotino, SCARA, FAS200 i un operari de planta.
A nivell software s'ha programat a l'entorn gràfic Robotino®View 4 el funcionament íntegre de
Robotino, en RT Toolbox 2 la programació del robot RH-3FH5515-D1-S15 i en Arduino IDE la placa
NodeMCU ESP32 per a una comunicació via WiFi entre Robotino ® i SCARA mitjançant el protocol UDP.
Aquesta memòria detalla els passos anteriors, així com els problemes trobats en el transcurs, amb
l'objectiu de crear documentació pràctica i profitosa per a l'elaboració de futurs projectes.
Darrera modificació d'aquest document: 16 de juny de 2021
Memoria
ii
Abstract
This project integrates the FESTO mobile platform Robotino® into SMC's FAS200 assembly line. The
connection between both systems is the Mitsubishi RH-3FH5515-D1-S15 SCARA robot, which picks up
the assembled product and palletises it on the mobile platform to transport them to the replenishment
areas of the FAS200 stations.
To form a compact and coordinated system, hardware solutions have been created to join together
Robotino, SCARA, FAS200 and a plant operator.
Different software has been used. Robotino has been programmed in the Robotino®View 4 graphical
environment, RT Toolbox 2 to programme the RH-3FH5515-D1-S15 robot and Arduino IDE for the
NodeMCU ESP32 development board to establish a communication via WiFi between Robotino ® and
SCARA using the UDP protocol.
This report explains all this steps in detail, as well as the problems throughout the progress, with the
aim of creating practical and useful documentation for the development of future projects.
Last modification of this document: June 16, 2021
Integración de plataforma robótica móvil en sistema de ensamblaje académico
iii
Agradecimientos
A mi familia que ha sido el motor emocional, motivacional y económico durante estos años. Así mismo,
a los profesores que lejos de hacer su trabajo, te ayudan, instruyen y guían de forma altruista y a
aquellos amigos de los que he aprendido y he contado con su apoyo tanto en el ámbito estudiantil
como en el personal.
En relación a este proyecto quiero dar las gracias a los tutores por darme la oportunidad de realizar
este proyecto y su ayuda a lo largo de este mismo. Por último y no menos importante a los maestros
de taller del departamento de electrónica por su ayuda y suministro de material para el diseño
hardware de algunos elementos.
Memoria
iv
Índice
1. INTRODUCCIÓN _________________________________________________ 1
1.1. Origen del trabajo .................................................................................................... 1
1.2. Objetivos del trabajo ............................................................................................... 1
2. MARCO CONCEPTUAL ____________________________________________ 2
2.1. Sistema de ensamblaje académico FAS200 ............................................................ 2
2.2. ROBOTINO® 4.0 ....................................................................................................... 4
2.2.1. Información general ................................................................................................ 4
2.2.2. Hardware ................................................................................................................. 5
2.2.3. Software .................................................................................................................. 8
2.3. Mitsubishi RH-3FH-D ............................................................................................. 11
2.3.1. Controlador CR750-D ............................................................................................ 13
2.3.2. Consola de programación R32TB .......................................................................... 14
2.3.3. Elemento terminal ................................................................................................ 16
2.3.4. Caja de conexiones ............................................................................................... 16
2.3.5. RT Toolbox2........................................................................................................... 17
2.4. Descripción del proceso......................................................................................... 19
2.5. Protocolo de comunicación UDP ........................................................................... 21
2.5.1. Arquitectura .......................................................................................................... 21
2.5.2. Internet Protocol (IP) ............................................................................................ 23
2.5.3. Características ....................................................................................................... 24
2.5.4. Descripción técnica ............................................................................................... 24
3. MARCO EXPERIMENTAL _________________________________________ 26
3.1. Diseño de la estación ............................................................................................. 26
3.1.1. Contexto de uso .................................................................................................... 26
3.1.2. Soluciones adoptadas ........................................................................................... 26
3.2. Distribución de los elementos en la estación ....................................................... 37
3.3. Desarrollo software ............................................................................................... 39
3.3.1. Programación del NodeMCU en Arduino IDE ...................................................... 39
3.3.2. Programación en Robotino®View4 ....................................................................... 48
3.3.3. Programación en MELFA IV .................................................................................. 65
Integración de plataforma robótica móvil en sistema de ensamblaje académico
v
4. CONCLUSIONES ________________________________________________ 67
5. PRESUPUESTO Y/O ANÁLISIS ECONÓMICO __________________________ 69
6. BIBLIOGRAFÍA __________________________________________________ 71
Integración de plataforma robótica móvil en sistema de ensamblaje académico
1
1. Introducción
En este estudio se exploran y se ponen en práctica las diversas funcionalidades de la plataforma móvil
Robotino® en base a una metodología empírica, es decir, el aprendizaje autodidacta basado en la
experimentación y con el apoyo de los recursos de información al alcance, tales como documentación,
videos o proyectos similares.
1.1. Origen del trabajo
La idea del proyecto surge de la asignatura de Integración de Sistemas Automáticos [1]. En esta
asignatura se imparten conocimientos de regulación automática y técnicas de control aplicadas a la
automatización industrial. Esta aplicación se realiza mediante el estudio del sistema de ensamblaje
académico FAS200, presente en el laboratorio de automática de la Escuela de Ingeniería Barcelona
Este.
Surge la necesidad de almacenar y transportar el producto resultante de la cadena de montaje, hasta
ahora llevado a cabo manualmente. Con la adquisición de la plataforma móvil Robotino® se plantea su
participación en esta tarea en coordinación con el autómata presente en el laboratorio, el robot SCARA
RH-3FH-D de Mitsubishi.
1.2. Objetivos del trabajo
El principal objetivo es cerrar la cadena de montaje del sistema de ensamblaje académico cuya
motivación subyacente es facilitar las funciones de reposición y automatizar la recogida del material
proveniente de la estación FAS200. Para ello el robot SCARA RH-3FH-D recogerá el producto acabado
de la cinta de la estación FAS200 y lo depositará en la plataforma móvil que posteriormente se dirigirá
al principio de la cadena de montaje.
De este objetivo surgen objetivos complementarios. La asimilación y ejecución de los conocimientos
previos de robótica adquiridos durante la carrera para aplicarlos a los dos autómatas, objeto del
estudio, así como formarse y crear documentación útil para futuros proyectos de la escuela.
Memoria
2
2. Marco conceptual
2.1. Sistema de ensamblaje académico FAS200
El sistema FAS200 es un sistema de ensamblaje automático. Este sistema está compuesto por hasta 18
módulos/estaciones donde cada uno de ellos desempeña una parte del proceso de montaje. Dado el
diseño de este sistema cabe la posibilidad de ir añadiendo estaciones en función del producto que se
desea obtener, dotando al sistema de mayor flexibilidad.
A través de estas estaciones, se lleva a cabo el ensamblaje de un mecanismo de giro. Las distintas
estaciones están adaptadas para el montaje de una gran diversidad de conjuntos, introduciendo
variaciones en los materiales, colores y tamaños de las piezas. La combinación de todas estas
posibilidades permite obtener hasta un total de 24 conjuntos diferentes [2].
Figura 1.Sistema de ensamblaje académico FAS200 del laboratorio de automática (Fuente: propia)
Las estaciones que se disponen en el laboratorio de la universidad son las siguientes según el orden de
producción:
• FAS201: es el módulo de alimentación/verificación de la base.
• FAS202: módulo de rechazo/transferencia de la paleta. Trabaja de manera conjunta con la
FAS201.
• FAS203: módulo de alimentación/transferencia de rodamientos.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
3
• FAS204: módulo de medición/transferencia de rodamientos. Trabaja de manera conjunta
con la FAS203.
• FAS207: módulo alimentación y clasificación de ejes
• FAS208: módulo de rechazo/transferencia de ejes. Trabaja de manera conjunta con la
FAS207.
• FAS230: esta estación es un módulo de transfer lineal, es decir un sistema de transporte. Se
encarga de transportar las paletas por las diferentes estaciones.
El sistema con el que se trabaja en el laboratorio, dado que la paleta y la base siempre es la misma, es
capaz de producir 4 productos distintos combinando el rodamiento bajo o alto con un eje de aluminio
o de nylon. Es el operario quién puede decidir el tipo de producto que producir.
Además, el operario debe cumplir con la función de reponedor en las estaciones de alimentación y de
recoger la pieza acabada y el palé al final de sistema de transfer lineal.
Figura 2. Producto ensamblado en la estación FAS208
Memoria
4
2.2. ROBOTINO® 4.0
Figura 3. Plataforma móvil ROBOTINO® de FESTO (Fuente:[3])
2.2.1. Información general
Robotino es una plataforma móvil orientada a la educación e investigación en diversos campos como,
por ejemplo, la mecatrónica, la programación, el control y el procesamiento de imágenes entre otros.
Las características principales se presentan en la siguiente tabla. [3]
Tabla 1. Características de la plataforma móvil ROBOTINO® de FESTO (Fuente:[3])
Característica Valor
Altura 325 mm
Diámetro 450 mm
Peso total (peso en vacío) 20 kilogramos
Peso total (4 paquetes de baterías) 22,8 kg (aprox.700 g cada acumulador)
Carga útil máxima 30 kg (centrado)
Protección IP IP 00
Voltaje de la batería 18 V
Material de la carcasa acero inoxidable, PA6
Grados de libertad 3 (traslativo en la dirección x e y, rotacional sobre el eje z)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
5
2.2.2. Hardware
2.2.2.1. Unidad de control
Robotino es un ordenador personal Intel i5 8ª generación, reloj de 2,5 GHz, hasta 4,2 GHz en modo
Turbo y 4 núcleos físicos. Su sistema operativo es Linux Ubuntu de 64 bits con una memoria RAM de
8GB y un disco duro SSD de 64GB. [4]
Este hardware nos permite trabajar de forma independiente con el robot. Para acceder al sistema
únicamente es necesario conectar a las interfaces un monitor de entrada HDMI, un ratón y un teclado.
Dichas interfaces integradas en el robot se explican en detalle en el apartado 2.2.2.4.
2.2.2.2. Sistema de accionamiento
Robotino tiene tres motores de corriente continua [5], bajo la regulación de un microcontrolador de
32 bits, asignados a tres unidades de accionamiento; ruedas omnidireccionales [6] que trabajan de
forma individual y que por lo tanto permiten el movimiento en todas las direcciones del plano xy y
rotación en el eje z.
Cada motor cuenta con un encoder incremental [7] que permite variar la velocidad y que además se
utiliza para determinar la posición del sistema móvil
2.2.2.3. Sensores
Robotino cuenta con varios sensores integrados o de fácil instalación gracias a su interfaz de entradas
y salidas. Algunos de estos sensores son:
- Bumper: el sensor de protección contra colisiones, o bumper, es una banda de plástico unida
al borde inferior del chasis. Dentro se encuentran dos áreas conductoras separadas que se
cortocircuitan al presionar, por ejemplo, en caso de colisión, generando de esta manera una
señal que interrumpe la ejecución del programa y el movimiento.
Figura 4. Sensor de protección contra colisiones o bumper (Fuente:[8])
Memoria
6
- Sensores de distancia: los 9 sensores infrarrojos, repartidos cada 40º en la zona inferior del
chasis, permiten medir precisamente distancias de 4 a 30 cm. Estos sensores analógicos
proporcionan una tensión de salida cuya magnitud depende de la distancia al objeto, podemos
encontrar las gráficas para esta parametrización en la hoja de datos [9].
Figura 5. Sensor de distancia del fabricante SHARP (Fuente:[10])
- Giroscopio: Los giroscopios miden las velocidades angulares basándose en la conservación del
momento angular, su señal se utiliza para corregir la determinación de la posición basada en
el sistema de accionamiento aumentando así la precisión del posicionamiento. [11]
- Cámara RGBD: uno de los componentes más avanzados e importantes del Robotino es la
cámara de profundidad Intel® RealSense™ D435. Por un lado, es una cámara web convencional
que transmite imagen en directo y que es de gran utilidad para la navegación y la detección de
obstáculos. Por otro lado, incorpora un proyector de infrarrojos y 2 lectores de imágenes de
infrarrojos, que registran los valores de profundidad para cada píxel de la imagen. Los valores
3D capturados se proyectan en un plano 2D horizontal para determinar la distancia a los
obstáculos como en un escaneo láser 2D. [12]
Figura 6. Esquema de la cámara RGBD D435 (Fuente:[12])
- Sensor óptico: El dispositivo fotoeléctrico funciona con la emisión y recepción de luz roja
visible. Se detecta la luz reflejada cuya reflectancia cambia según las diferentes superficies y
colores. Los sensores se pueden utilizar para guiar a Robotino a lo largo de una ruta definida o
para detenerse en una posición específica con alta precisión. [13]
- Sensor inductivo: el sensor inductivo se utiliza para detectar objetos metálicos, su instalación
preferida es en la base del robot apuntando hacia el suelo para, por ejemplo, controlar la
trayectoria en un seguimiento de pista metálica. [14]
Integración de plataforma robótica móvil en sistema de ensamblaje académico
7
2.2.2.4. Interfaces
La interfaz física de Robotino nos permite interactuar con la unidad de control. Esta interfaz está
compuesta por:
- Punto de acceso WLAN: mediante el punto de acceso WiFi se puede conectar un Smartphone,
Tablet o PC y controlar el robot externamente ya sea por su interfaz web u otros medios de
programación que se explican en el apartado de software. Este punto de acceso [15] se debe
conectar a la entrada ethernet y una entrada USB del Robotino.
- Interfaz de E/S: La interfaz de entradas y salidas de Robotino permite conectar extensiones
como sensores y actuadores. La interfaz proporciona entradas/salidas digitales a 24V con
protección de sobrecarga y cortocircuito, entradas analógicas de 0-10V y salidas relé de 24V,
así como conexiones de alimentación de 24V con un máximo de 3A.
- Motor/codificador: Robotino cuenta con una cuarta salida de potencia para el control de un
motor externo, así como una entrada adicional para un codificador. La salida es básicamente
un puente en H que suministra hasta 5A de corriente, dicho puente se controla con una señal
PWM y un bit de dirección.
- USB: existen 4 puertos USB 3.0 (azules) y 2 puertos USB 2.0 (negros). Se pueden usar para
conectar el punto de acceso, la cámara, un ratón, un teclado, etc.
- PCI-Express: para incrementar las funcionalidades de la unidad de control Robotino cuenta con
dos ranuras PCI (Peripheral Component Interconnect), un bus que nos permite conectar
periféricos directamente a la placa base. Las tarjetas de expansión pueden ser de puertos, de
red cableada, de video, entre otros. [16]
- Ethernet: con esta interfaz nos podemos conectar directamente a la red de área local del
Robotino para transmitir datos de forma cableada.
- HDMI: con la salida HDMI se puede conectar un monitor para acceder directamente al sistema
del Robotino.
2.2.2.5. Fuente de alimentación
Robotino se puede alimentar de hasta 4 baterías que suministran en paralelo 18 V CC, 5.2Ah y que
otorgan al robot una autonomía de hasta 10 horas. Con una capacidad de 4 baterías, Robotino requiere
un mínimo de 1 batería para su funcionamiento. Estas baterías de litio se recargan con la estación de
carga rápida TCL6 de Festool en muy poco tiempo. [17]
2.2.2.6. Módulos [3]
- Torre principal: este prisma triangular de acero de 60 cm de alto permite el montaje de más
módulos a diferentes niveles.
Memoria
8
- Segmento: un segmento es una base de acero que se acopla a la torre y permite el montaje de
otros módulos y sensores en su superficie.
- Escáner láser: permite la generación, localización y navegación de mapas, así como la
detección de obstáculos mediante la detección digital de objetos en un plano. [18]
- Pinza eléctrica: con una fuerza de agarre de 140N, la pinza reconoce las piezas de trabajo entre
sus mordazas mediante una barrera de luz integrada. Además, puede determinar su estado
con los sensores de fin de carrera y su posición evaluando la corriente del motor.
- Carretilla elevadora: la carretilla elevadora nos permite realizar funciones de logística
automatizada. Puede soportar una carga máxima de 4 Kg y dispone de un sensor de
proximidad para el control de la posición final. La conexión se realiza mediante la interfaz del
motor/codificador adicional.
- Torre pequeña: prisma triangular formada de acero inoxidable permite ajustar la altura de los
demás componentes a la altura deseada a diferencia de la torre principal.
- Caja de interfaz: su función es expandir la capacidad de entradas y salidas al Robotino. Además,
cuenta con salidas a 5V para sensores que operen a ese voltaje.
- Lámpara de señalización: esta lampara RGB se puede ajustar a 7 colores diferentes fijos o
intermitentes y su función es indicar el estado del robot.
- Estación de carga: existe una estación de carga que nos facilita el proceso de carga de las
baterías. El proceso de instalación se encuentra en [4]
2.2.3. Software
Podemos dividir el software de manejo de Robotino en tres partes, la interfaz web, la programación, y
la simulación.
La interfaz web es un entorno accesible mediante el navegador web de un ordenador, tableta o móvil.
Para ello tendremos que estar conectados al punto de acceso y entrar la dirección IP que se adjunta
con el robot en la barra del navegador. Esta interfaz proporciona un medio para el control,
configuración y mantenimiento del sistema. En concreto podemos observar diferentes pantallas en la
barra de navegación superior del menú.
- Inicio: se detalla la versión hardware y software y la gestión de la alimentación como el estado
de las baterías.
- Programa: en esta página aparecen lo programas en la CPU de Robotino. Des de aquí se
pueden ejecutar, cargar o eliminar programas
- Configuración: En la página de configuración, puede realizar ajustes a medida que se ejecuta
el programa cuando se inicia Robotinos.
- Red: aquí se configura la red ethernet y/o la red WiFi
Integración de plataforma robótica móvil en sistema de ensamblaje académico
9
- Control: esta página presenta una imagen de la cámara en tiempo real. Pasando el dedo por
encima de la imagen se puede controlar el robot como si de un joystick se tratara.
- Servicio: se puede ver los procesos en ejecución en Robotino e iniciarlos y detenerlos. Cada
cambio solo se muestra haciendo clic en el botón 'Recargar'.
- Entradas y salidas: muestra el estado de la interfaz de E/S y permite configurar las salidas
digitales y los relés.
Figura 7. Captura de la interfaz web de ROBOTINO® (Fuente: propia)
Robotino está abierto a varios lenguajes de programación tales como C, C++, Java, MATLAB, LabVIEW
y ROS entre otros[19]. Esta característica hace de Robotino un robot versátil en este ámbito. Además
de estos lenguajes estándar Robotino cuenta con dos interfaces gráficas de programación, Robotino
Factory y Robotino View, que será el entorno de programación de este proyecto y que explicaremos
en detalle a continuación.
Una gran ventaja que nos ofrece gratuitamente el fabricante, FESTO, es la posibilidad de simular el
comportamiento del robot, así como todos los sensores integrados, en un entorno de experimentación
virtual, Robotino SIM. Este entorno puede ser controlado por cualquiera de los lenguajes mencionados
con anterioridad. Existe también la versión premium, Robotino SIM Professional, dónde se pueden
controlar más de un Robotino al mismo tiempo. [20]
Memoria
10
2.2.3.1. Robotino®View 4
Robotino®View 4 es un entorno de programación gráfico para Robotino®. El programa sigue una
secuencia GRAFCET dónde cada paso ejecuta un subprograma y el avance está condicionado por una
expresión booleana. La programación se basa en la interconexión de bloques de función. Las
funcionalidades de estos bloques van desde operaciones matemáticas o procesamiento de imágenes,
a el control de componentes de hardware como motores, sensores, cámara o interfaz de entradas y
salidas entre otros.
Figura 8. Menú de los bloques de función de Robotino® View 4 (Fuente: propia)
Además de estos bloques predeterminados existen también bloques definidos por el usuario que
pueden ser programadas tanto en C++ como en LUA Script [21]. De esta manera no hay funcionalidad
que escape de ser programada en esta interfaz.
Otra gran ventaja de esta herramienta es que nos permite interactuar con el robot en tiempo real ya
que se conecta al punto de acceso WiFi que incorpora el robot. Se puede ejecutar el programa entero
o de forma independiente los subprogramas y nos permite visualizar los valores de sensores, ver los
resultados de operaciones, la imagen de la cámara, velocidad, posición, etc.
Una vez programado se puede descargar el programa en la unidad de control de Robotino donde
posteriormente se pondrá en ejecución.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
11
Figura 9. Programa de ejemplo para el seguimiento de línea en Robotino® View 4 (Fuente: propia)
2.3. Mitsubishi RH-3FH-D
Figura 10. Robot Mitsubishi RH-3FH-D (Fuente:[22])
Al lado de la última estación del sistema de ensamblaje académico se encuentra el robot Mitsubishi
RH-3FH5515-D1-S15. De la familía RH-3FH, es un robot de tipo SCARA (por sus siglas en inglés
a Selective Compliant Assembly Robot Arm o Selective Compliant Articulated Robot Arm). Estos robots
Memoria
12
están diseñados especialmente para procesos de paletización rápida, clasificación precisa y perfecto
montaje dadas sus características [23].
Tabla 2. Datos técnicos del robot Mitsubishi RH-3FH-D
RH-3FH5515-D1-S15
Número de ejes 4
Carga máxima 3 kg
Radio de alcance (brazo 1 + 2) 550 mm
Carrera del husillo 150 mm
Grado de protección IP20
Controlador CR750-D
Velocidad máxima J1, J2, J3, J4 400º/s, 720º/s, 1100mm/s, 3000º/s
Repetibilidad ±0.012mm (X, Y); ±0.010mm (J3); ±0.004º (J4)
Del mismo nombre, RH-3FH5515-D1-S15, podemos descifrar algunas de estas características
Figura 11. Significado del nombre de un robot SCARA de Mitsubishi (Fuente:[24])
Integración de plataforma robótica móvil en sistema de ensamblaje académico
13
2.3.1. Controlador CR750-D
Figura 12. Esquema del frontal del controlador CR750-D (Fuente:[22])
A continuación se detallan los elementos de la figura 12:
1) ON/OFF: interruptor para encendido/apagado.
2) MODE: selector que permite seleccionar el modo de operación de robot:
- AUTOMATIC: el funcionamiento del robot es controlado a través de los botones
del panel de operación del controlador.
- MANUAL: si la consola de programación está activada, el robot es controlado
desde la misma.
3) OPERATION PANEL: panel de operación, con pulsadores y display.
4) EMERGENCY STOP: pulsador de emergencia, detiene la ejecución del programa y
desactiva los servos.
5) T/B CONNECTION CONNECTOR: conector para el cable de conexión con la consola
de programación.
6) INTERFACE COVER: tapa que da acceso a conector USB que permite comunicación
y control desde PC.
7), 8) Ventilador y filtro. [22]
Figura 13. Panel de operación del controlador CR750-D (Fuente:[22])
A continuación se detallan los elementos de la figura 13:
Memoria
14
31) STATUS NUMBER, display que permite mostrar diferentes informaciones:
1. Override - velocidad de ejecución relativa, entre 10 y 100%.
2. Program. No. - el número de programa seleccionado (en ejecución o detenido).
3. Line No. - la línea de programa en que se encuentra la ejecución.
4. Error No. - código de error de funcionamiento.
32) CHANGE DISPLAY: permite modificar la información visualizada en el display según
el orden: Override →Program No. → Line No.
33) UP/DOWN: botones que permiten, en función de cuál sea la información activa en
el display, aumentar/decrementar la velocidad de ejecución o seleccionar un programa
entre los almacenados para su ejecución.
34) SVO ON: activa los servos (potencia para los actuadores) del robot.
35) SVO OFF: desactiva los servos.
36) START: inicia la ejecución del programa seleccionado; deben haberse activado
previamente los servos.
37) STOP: detiene instantáneamente el programa en ejecución; los servos permanecen
activados.
38) RESET: resetea el código de error y también el programa en ejecución.
39) END: detiene el programa en ejecución tras ejecutar su última instrucción
los servos permanecen activados). [22]
2.3.2. Consola de programación R32TB
La consola está diseñada para la creación, modificación, gestión y de programas. Se utiliza con el
controlador en modo manual, para mover el robot (jogging) a diferentes posiciones y enseñarle
(teaching) donde están en la realidad esas posiciones.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
15
Figura 14. Consola de porgramación para el controlador CR750-D (Fuente:[22])
Los principales botones de la consola, de acuerdo a la figura 14, son los siguientes [22]:
1) EMERGENCY STOP: pulsador de emergencia, detiene el programa y desactiva los
servos.
2) ENABLE/DISABLE: pulsador para habilitar/deshabilitar la consola; para que la consola
quede habilitada, el selector de modo del controlador debe encontrarse en posición
MANUAL.
3) DEADMAN SWITCH: pulsador en la parte trasera de la consola que cuando es soltado
o apretado con excesiva fuerza provoca la desactivación de los servos y por tanto la
detención del programa; debe permanecer ligeramente desplazado, hacia la izquierda o
la derecha, para realizar operaciones de movimiento (jogging) del robot.
4) DISPLAY: muestra diferentes menús e informaciones.
6) F1, F2, F3, F4: pulsadores de selección de opciones indicadas en la parte inferior del
display. En modo JOG (jogging) permiten seleccionar un modo de jog determinado.
11) SERVO: permite habilitar/deshabilitar los servos.
13) JOG: permite entrar en modo de movimiento manual o jogging. Entre los modos de
JOG se encuentran los siguientes (para seleccionar uno determinado beben utilizarse
los pulsadores F1-F4):
- JOINT – control directo del movimiento de cada articulación.
- XYZ – control del movimiento del elemento terminal en las direcciones XYZ del
sistema de referencia absoluto (base del robot).
- TOOL – control del movimiento en las direcciones XYZ del sistema de referencia de
la pinza.
Memoria
16
2.3.3. Elemento terminal
Figura 15. Elemento terminal del robot SCARA. (Fuente: propia)
El elemento terminal del robot SCARA fue diseñado especialmente para la función de la recogida de la
pieza ensamblada proveniente de la FAS200. Consiste en cuatro ventosas que succionan la pieza.
2.3.4. Caja de conexiones
Figura 16. Caja de connexiones para el robot SCARA (Fuente:propia)
La caja de conexiones consta de 5 entradas (conectores azules) PNP activas a nivel alto (24V) y 5 salidas
de 24V, tres de 100mA (conectores verdes) y dos salidas de potencia (conectores amarillos) de 2A.
Además, existen bornes de alimentación de 24V (rojo) y tierra (negro). [25]
Integración de plataforma robótica móvil en sistema de ensamblaje académico
17
Figura 17.Esquema de las entradas y salidas de la caja de conexiones (Fuente:[25])
Estas conexiones se corresponden a las salidas (BX) y entradas (AX) del controlador según la siguiente
tabla. Las demás especificaciones técnicas se encuentran en [25].
Tabla 3. Correspondencia entre las entradas y salidas de la caja con el controlador CR750-D (Fuente:[25])
Entradas Salidas
Nº entrada Controlador Nº salida Controlador
21 A15 31 B5
20 A16 29 B7
19 A17 27 B9
18 A18 25 B11
17 A19 23 B13
2.3.5. RT Toolbox2
RT Toolbox 2 es un entorno de desarrollo para robots MELFA BASIC y se basa en el lenguaje cuyo
nombre es el mismo. Este entorno nos ofrece una interfaz entre ordenador, controlador y robot. Sin
conexión (modo offline) y online (con conexión), además se puede realizar una simulación para la
ejecución de un programa.
El primer paso en la creación de un programa es definir un espacio de trabajo o Workspace donde se
almacenarán los proyectos, se puede crear más de uno en un mismo Worksapce. Para crear un
proyecto con el robot de la universidad la configuración debe ser la siguiente:
Memoria
18
Figura 18. Configuración Ethernet de un proyecto en RT Toolbox 2 (Fuente:[26])
Un proyecto presenta un amplio abanico de funcionalidades, podemos ver las del modo online en la
figura 18.
Figura 19. Workspace de un proyecto en RT Toolbox 2 (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
19
Des del menú de ayuda podemos acceder al manual de ayuda de RT Toolbox 2 (referencia manual)
dónde se definen las funcionalidades básicas.
- Modelo del robot
- Programa: Programas escritos en el ordenador (offline) o en el controlador (online)
- Parámetros: Se establecen parámetros como el límite de movimiento, la detección de colisión,
el elemento terminal, los ejes de coordenadas, los planos límite, entre otros.
- Monitor: se puede consultar el programa en ejecución, el estado de las señales de entrada y
salida y datos de producción como el tiempo de ejecución de un programa.
- Mantenimiento: corrección de la posición de partida, cálculo de la longitud del elemento
terminal, información de los servomotores, etc.
- Simulador de E/S: simula las señales del controlador
Para crear un programa basta con hacer clic derecho sobre Program aquí nos aparece una ventana
donde haremos clic en New.
El lenguaje de programación se ha especifica en la creación del proyecto y podemos acceder a un
manual completo del lenguaje escogido MELFA BASIC IV o MELFA BASIC V des del menú de ayuda.
Dado que el lenguaje usado en las prácticas de la universidad es la versión 4 se ha escogido MELFA
BASIC IV para la programación. Una guía para la programación en este lenguaje también se encuentra
en [27] y [28].
2.4. Descripción del proceso
Para explicar el proceso se ha elaborado un modelo en 3D del laboratorio con los elementos que lo
componen, SCARA [29], controlador CR750-D [29], Robotino® [30] y el robot colaborativo UR3E [31].
El ciclo de trabajo comienza con el posicionamiento de la plataforma móvil en un punto conocido que
denominaremos punto cero. Des de esta posición con la ayuda de la navegación por odometría el robot
se desplaza hasta situarse frente a la estación del robot SCARA. Dado que los datos de posición por
odometría son muy inciertos es necesario ajustar la posición. Siguiendo el ejemplo de [32],en esta
aplicación se usa el sistema visual de marca fiducial [33]. La marca se sitúa debajo de la mesa encima
del controlador del SCARA y nos proporciona un sistema de coordenadas relativo a sí misma. La
situación de los componentes queda reflejada en la figura 19.
Memoria
20
Figura 20. Esquema del movimiento de Robotino® frente a la estación del robot SCARA (Fuente: propia)
Una vez delante de la marca, Robotino se ubica paralelo a la mesa y centrado con el SCARA gracias a
estas coordenadas relativas. Ahora Robotino se acerca perpendicularmente a la posición de recogida
de las bases dónde el SCARA comenzará la paletización sobre su plataforma.
La secuencia de paletizado se inicia con la detección de palé y base al final de la cinta que dará la señal
de recogida al SCARA. El primer trayecto, marcado en verde en la figura 20, es el de la base metálica
en la cinta hacia la plataforma del Robotino. Seguidamente se recoge el palé y se lleva a la mesa de
paletización dónde son almacenados (trayectoria amarilla). Este proceso se repite hasta que la
plataforma este llena. Para esto Robotino gira en el eje z y envía una señal vía WiFi, usando el protocolo
UDP que se explica más adelante, cuando está posicionado y listo, para que SCARA deposite otra base
encima.
Figura 21. Esquema de la acción de paletizado. En verde paletizado de la base, en amarillo del palé y en negro la rotación del
Robotino (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
21
Con la plataforma llena, Robotino retrocede y se desplaza a la estación FAS208, donde se sitúa gracias
a otra marca fiducial. Aquí espera a que un operario retire los ejes y los coloque en el alimentador de
la FAS207. Cuando el operario haya acabado activará mediante la interfaz web una señal que hará que
avance hacia la estación FAS204 dónde hay otra marca fiducial. Aquí el operario retira los cojinetes
para reponerlos en el alimentador de la estación FAS203. Siguiendo la misma metodología el robot
avanza a la estación FAS202 dónde se recogen las bases para el alimentador de la FAS201.
Este proceso queda ilustrado en la siguiente modelización 3D del laboratorio.
Figura 22. Esquema del movimiento de Robotino hacia las estaciones FAS208/4/2. (Fuente: propia)
2.5. Protocolo de comunicación UDP
La comunicación entre Robotino i SCARA se hará mediante el intercambio de datos UDP de la interfaz
Robotino® View 4 y la placa de desarrollo NodeMCU ESP32. Para entender el envío de datos mediante
este protocolo es necesario entender los conceptos básicos en los que el protocolo basa su
funcionamiento.
Se define un protocolo de comunicación como el conjunto de reglas que se establecen en el proceso
de comunicación entre dos sistemas [34]. El protocolo de datagramas de usuario basado en el
protocolo IP, UDP/IP, es un protocolo de la capa de transporte, el tercer nivel en un modelo de 4 capas.
Para entender el funcionamiento de este protocolo es necesario conocer la arquitectura del modelo y
el funcionamiento básico del protocolo subyacente, Internet Protocol (IP).
2.5.1. Arquitectura
El curso introducción al funcionamiento de las redes TCP/IP [35] explica de manera sencilla y resumida
el modelo de capas para el protocolo TCP/IP.
Memoria
22
2.5.1.1. Nivel de enlace
Incorpora todos los servicios necesarios para la comunicación dentro de la red a la que estamos
directamente conectados. Así pues, incorpora tanto las funcionalidades de la capa física como la de
enlace de datos del modelo OSI. Dichos sean aspectos como los niveles de señal, la codificación,
frecuencias, sincronización, reglas de transferencia y recepción de datos entre sistemas e identificación
del sistema en la red (dirección MAC).
Pongamos el ejemplo del estándar de comunicación inalámbrica WiFi IEEE 802.11X. Este estándar
define niveles de frecuencia dentro del rango de 2.4 y 5 GHz, velocidades de transmisión de 11 Mbps
hasta 600Mbps, niveles de encriptación, etc. Otros estándares conocidos son Ethernet, Token-Ring y
X-25.
2.5.1.2. Nivel de red
Esta capa cumple las funciones de la capa de red del modelo OSI. Las funciones principales de esta capa
son seleccionar el nodo al que enviar la información saliente, recibir los paquetes, tratarlos y
entregarlos a la capa superior de transporte y proveer de capacidades de detección y diagnóstico de
errores. La capa de Internet ofrece servicios de transmisión de datos "best-effort", es decir, la red hará
lo posible por entregar la información, pero esta no se puede asegurar. Si alguna aplicación requiere
de una conexión fiable, deberá ser gestionada en capas superiores. El más famoso de estos protocolos
es Internet Protocol (IP), aunque no es el único, por ejemplo, ICMP (Internet Control Message Protocol)
entre otros.
2.5.1.3. Nivel de transporte
Bajo el mismo nombre, equivale a la capa del modelo OSI. En esta capa se definen protocolos para una
comunicación extremo a extremo orientada a la conexión, el más usado TCP, y protocolos de
comunicación extremo a extremo sin conexión, mayormente usado, el protocolo UDP. Esta capa se
encarga del control de flujos (establecimiento de conexión y control de sesiones), de métodos para
establecer una comunicación fiable (retransmisión de paquetes en caso de pérdida) y de un sistema
de multiplexación basado en puertos que permiten establecer varios flujos de comunicación entre dos
dispositivos.
2.5.1.4. Nivel de aplicación
Utiliza los recursos de conectividad ofrecidos por la capa de transporte. En este nivel existen diferentes
protocolos en representación a servicios y procesos, cada uno de ellos con un puerto asignado.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
23
Los puertos son números de 16 bits definidos a partir de la RFC 6335 [36] y recogidos por la Autoridad
de Números Asignados en Internet (IANA por sus siglas en inglés) en [37]. Algunos de los más conocidos
y sus puertos son: HTTP (80), FTP(20), SMTP(25), DNS(53), TFTP(69), SNMP(161).
A continuación se presenta una tabla de la arquitectura previamente descrita.
Tabla 4. Arquitectura del modelo del protocolo TCP/IP. (Fuente:[38])
Aplicación HTTP FTP SMTP … DNS TFTP SNMP …
Transporte TCP UDP
Red IP
Enlace Ethernet (IEEE 802.3), WiFi (802.11), Token Ring (IEE 802.5), ADSL, X.25…
2.5.2. Internet Protocol (IP)
La principal función del protocolo IP es mover datagramas a través de un conjunto de redes
conectadas. Estos datagramas van de un dispositivo a otro a través de redes individuales basadas en la
interpretación de una dirección IP, un identificador individual y unívoco de 32 bits para cada equipo
conectado. Existen varias versiones, pero las más usadas son la versión 4 (IPv4) y 6 (IPv6).
Los datagramas se componen de una cabecera de mínimo 20 bytes y máximo 60, y de los propios datos
también llamada carga útil. La estructura de un datagrama IPv4 es la siguiente:
Figura 23. Datagrama del protocolo IP (Fuente:[39])
Cada uno de estos campos se define en el RFC 760 [40]. Así como el funcionamiento íntegro del
protocolo.
Memoria
24
2.5.3. Características
UDP es un servicio de comunicación sin conexión basado en el protocolo IP. Ubicado entre la capa de
red donde opera el protocolo IP y la capa de aplicación, UDP es esencialmente una interfaz que realiza
la función de demultiplexor, dirigiendo la carga útil del datagrama IP al puerto de la aplicación deseada.
Dado que UDP funciona sin conexión, no es necesario establecer una conexión entre dispositivos tal y
como lo hace el protocolo TCP. El datagrama se envía a la IP y puerto de destino referente a la
aplicación deseada y no garantiza ser escuchado, así como tampoco garantiza la integridad de los
datagramas. Debido a que no hay que llevar a cabo una configuración de la conexión el protocolo UDP
permite una comunicación rápida y sin retardos. Además, al contrario que la comunicación TCP, no se
intenta reenviar de forma automática los paquetes perdidos. En resumidas cuentas, UDP es una
comunicación rápida pero no confiable.
Gracias a esta rapidez UDP es el protocolo adecuado para comunicaciones en tiempo real como las
transmisiones de audio o vídeo. Además, estas características hacen del protocolo un sistema ideal
para aplicaciones basadas en la entrega de mejor esfuerzo, best effort delivery, en las que una
transmisión poco fiable es suficiente porque es repetida constantemente. Otra aplicación es para
comunicaciones multidifusión. A diferencia de TCP, UDP permite el envío de datos a varios
receptores.[41]
2.5.4. Descripción técnica
Este protocolo se define en el RFC 768 [42]. La estructura de su datagrama es la siguiente.
Tabla 5. Estructura de un datagrama UDP. (Fuente:[42])
Bits 0-15 16-31
0 Puerto de origen Puerto de destino
32 Longitud del mensaje Suma de verificación
… Datos
Los primeros 32 bits corresponden a el puerto de origen, que es un campo opcional ya que UDP no
solicita respuesta, y en caso de no ser usado se establece en 0, y el puerto de envío que es obligatorio.
La longitud del mensaje viene dada en grupos de 8 bits (octetos) e incluye todos los elementos del
datagrama. El valor mínimo en ausencia de datos será por lo tanto 8.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
25
Por último, antes del propio paquete de datos, se encuentra la suma de verificación también opcional.
La suma de comprobación es el complemento a uno de 16 bits de la suma del complemento a uno de
información del encabezado IP, el encabezado UDP y los datos, rellenado con cero octetos al final, si
es necesario, para hacer un múltiplo de dos octetos.
Memoria
26
3. Marco experimental
3.1. Diseño de la estación
3.1.1. Contexto de uso
Uno de los principales desafíos de este proyecto es el diseño de una estación que integre los dos
autómatas con el fin de que SCARA y Robotino trabajen coordinadamente. Para ello, se ha adaptado e
implementado individualmente hardware y software de cada robot, y así conseguir una conexión entre
ambos. A continuación, se detallan estas soluciones.
3.1.2. Soluciones adoptadas
3.1.2.1. Microrruptor
El primer conflicto se plantea en la recogida de la base proveniente de la estación de ensamblaje
FAS200. El robot SCARA es el encargado de esta ejecución y para ello necesita la información de que
una base se encuentra en el final de la cinta transportadora.
La solución más óptima según la complejidad de funcionamiento e instalación es disponer un final de
carrera o microrruptor al final de la cinta. Este tipo de sensores mecánicos se usan en la industria con
el fin de reconocer la posición de un objeto móvil al activar un pulsador accionado por una palanca.
Su funcionamiento es el de un interruptor de dos posiciones que conecta dos contactos con uno
común. El normalmente abierto, NA, que se cierra al accionar el pulsador, y el normalmente cerrado,
NC, que se abre al activar el pulsador.
Figura 24. Esquema interno de un microrruptor. (Fuente:[43])
Integración de plataforma robótica móvil en sistema de ensamblaje académico
27
Existen diferentes tipos de microrruptores según su activación, mecánica, eléctrica o neumática, su
material, plástico, fibra o metal y sus dimensiones. Por lo tanto, no cualquiera vale para cualquier
aplicación, para esta la opción válida es la que cumple con las dimensiones dónde se tiene que instalar.
Buscar en la web resulta un poco difícil ya que muchos fabricantes no adjuntan el dimensionado de
estos dispositivos. Finalmente se opta por un microrruptor con palanca de 53mm [44], que cumple con
el criterio de tamaño y al que posteriormente se le tendrá que hacer alguna adaptación.
Figura 25. Dimensiones del microrruptor (Fuente:[44])
La primera adaptación consiste en agrandar el orificio de sujeción de 3,1mm de diámetro a 4mm para
que coincida con la métrica M4 de la cinta. Luego, había que modificar la palanca para adaptarla a la
entrada en contacto con el pale transportador de la cinta.
Figura 26. Modificación de la palanca con una broca M4. (Fuente: propia)
Una vez modificado se instala en la cinta y se comprueba su funcionamiento con un multímetro.
Memoria
28
Para proteger el sensor se elabora un diseño de una caja en SolidWorks para su impresión en 3D
Figura 27. Modelo en 3D de la caja de protección para el microrruptor. (Fuente: propia)
Se dispone de cable y conectores banana para realizar la conexión a la caja de conexiones del SCARA.
Esta conexión se rige a las características de la caja de conexiones cuyas entradas son NPN (activas a
nivel alto) a 24V. Así pues, la conexión se realiza de manera que el COM se conecta como entrada,
normalmente conectada a la patilla NC, a su vez conectada a tierra. Cuando se activa el interruptor
COM se conecta a NA, a su vez conectada a 24V.
Elaborado el montaje el resultado final es el de la figura 27.
Figura 28. Montaje final del microrruptor con la caja y los conectores banana (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
29
3.1.2.2. Plataforma elevadora
Robotino cuenta con varios módulos que se pueden integrar y que aportan diferentes funcionalidades
(ver apartado 2.2.2.6). Uno de estos es el segmento, una base de acero que se acopla a la torre y
permite el montaje de otros módulos y sensores en su superficie. Tres segmentos forman una
plataforma.
Figura 29. Izquierda- Segmento de acero (Fuente:[3]); Derecha- Modelo de la plataforma en 3D (Fuente: propia)
Siguiendo el hilo de este proyecto, se plantea la recogida de las bases provenientes del robot SCARA y
dado que disponemos de la plataforma elevada, se propone realizar una paletización encima de esta.
Distribuidos los elementos de este layout se observa que la plataforma elevada no es lo
suficientemente alta como para llegar al rango de alcance que tiene el robot SCARA. Entonces ¿Cómo
hacemos llegar la pieza a la base?
La primera de las ideas es alargar el tamaño de la torre de manera que la plataforma final se eleve. Es
decir, elaborar, mediante impresión 3D, una prolongación de la torre con las mismas características.
Finalmente, esta idea se desestima tras considerar el peso que debería soportar, la inestabilidad que
una torre más alta conlleva y sobre todo la limitación física del Robotino con la mesa que, aún y elevar
la plataforma, seguía condicionando el alcance de la plataforma al terminal del robot SCARA. Podemos
observar estas limitaciones en la siguiente figura.
Memoria
30
Figura 30. Representación en 3D de un alargamiento de la torre (en verde). (Fuente: propia)
Así pues, se necesita una plataforma elevada que tenga la base superior lo suficientemente ancha
como para que cumpla con las dimensiones del layout. Como solución, se diseña en Solidworks una
base a partir del vaciado de un cilindro de 20cm de diámetro y 10.8cm de altura, que se parte en dos
para facilitar su posterior impresión 3D. Los orificios de esta pieza deben coincidir con la base para su
posterior ensamblaje.
Figura 31. Diseño en 3D de un cilindro para la nueva plataforma. (Fuente: propia)
Para las bases se recortan bases de madera reciclada de 2 cm de grosor, una de 36cm de diámetro para
la base inferior y 51cm para la base superior.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
31
Figura 32. Izquierda- Modelo en 3D de la plataforma diseñada; Derecha- Foto de la plataforma diseñada (Fuentes: propia)
De esta manera el SCARA ahora sí puede alcanzar la plataforma del ROBOTINO.
Figura 33. Robotino en posición de paletizado para la base. (Fuente:propia)
3.1.2.3. Mesa para la paletización de los palés
Una vez paletizada la base en la plataforma de Robotino es necesario también almacenar los palés. Los
requisitos de esta estructura son que sea lo suficientemente ancha como para almacenar un palé y
larga como para tres. Además, debe medir al menos 9 cm de alto, 11cm, que es la distancia a la que
llega el elemento terminal respecto a la mesa, menos 2 cm de alto que mide el palé.
Memoria
32
Figura 34. Diseño 3D de la mesa de paletizado para los palés. (Fuente: propia)
El diseño es una mesa sencilla de 425x210 mm elaborada con una placa de metacrilato de 6 mm de
grosor y patas de madera de 10cm de alto, un total de 106 mm de alto.
3.1.2.4. Módulo relé wifi NodeMCU ESP32
La paletización de la base en la plataforma del Robotino se realiza de manera que el robot SCARA
siempre deja la base en la misa posición siendo Robotino quien gira unos grados determinados para
dar lugar a la siguiente pieza. Así pues, nos debemos asegurar que el robot ha rotado y el espacio para
la pieza esta libre. Para advertir al robot SCARA que se puede depositar otra base encima se envía una
señal vía WiFi a la placa de desarrollo NodeMCU ESP32. Acompañada de un relé se encargará de activar
una entrada de la caja de conexiones del SCARA.
Partiendo del esquema eléctrico del módulo relé ESP-01S [45], se diseña un módulo relé para adaptarlo
a la placa Node MCU ESP32. El esquema es el mismo dado que ESP-01S se basa en el MCU ESP8266,
versión anterior del ESP32 que cuenta con dos núcleos y duplica la velocidad de su hermano menor.
En cuanto a características del pinout ambos ofrecen un voltaje de 3.3 V en estado alto y proporcionan
una corriente media de 80 mA. [46] [47]
Integración de plataforma robótica móvil en sistema de ensamblaje académico
33
Figura 35. Esquema eléctrico en EAGLE del módulo relé ESP32. (Fuente: propia)
Las partes para el esquema eléctrico y PCB se encuentran en [48]–[50].
El funcionamiento de este esquema se activa con el pin GPIO14 de la placa NodeMCU. Al recibir un
voltaje de 3.3V en la puerta (G), se establece una tensión puerta-fuente (VGS=3.3V) que hace circular
los electrones de drenador (D) a fuente (S), tal y como se observa en la gráfica de la hoja de datos del
fabricante Fairchild semiconductor. [51]
Figura 36. Corriente en el drenador en función del voltaje puerta-drenador. (Fuente:[51])
Al conectar drenador con fuente el relé y el diodo LED reciben 5V activándose. Además, el circuito
consta de un diodo protector que al activar el relé queda polarizado en inversa, pero que al desactivarlo
se polariza y es el camino por el que circula la intensidad parásita del relé, protegiendo así los demás
componentes. Esto es debido a que las bobinas tienen la propiedad de que, si se le retira bruscamente
Memoria
34
el flujo de corriente, cambia bruscamente la polaridad del voltaje entre sus terminales para intentar
que la corriente siga circulando [52]. El diodo 1N4148 es capaz de aguantar hasta 100V y 450mA.[53]
El diseño hecho con Eagle para la elaboración de la PCB es el siguiente.
Figura 37. Diseño en EAGLE de la PCB para el módulo relé. (Fuente: propia)
Una vez impresa la placa se sueldan todos los componentes y se comprueba su funcionamiento.
Figura 38. Módulo relé ESP32 (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
35
3.1.2.5. Luz de estado
Para reflejar el estado de movimiento del robot se instalará en el centro de la base superior de madera
una lámpara LED de la marca Withled serie 800 [54]. Esta lámpara dispone de 5 colores, rojo, verde,
azul, ámbar y blanco, su encendido puede ser fijo o intermitente y además incorpora un zumbador.
Figura 39. Esquema de conexionado de la lámpara L813BZ. (Fuente:[54] )
La conexión con ROBOTINO se hará a través de los dos relés presentes en la interfaz de entradas y
salidas y la alimentación de 24V. Dado que solo disponemos de dos relés solo se podrán reflejar dos
estados parado o en movimiento. Dichos estados se identificarán por verde fijo y ámbar intermitente,
respectivamente.
Para conseguir este funcionamiento se deberán interconectar, con ayuda de los relés, los cables verde
con negro y ámbar con gris. Para facilitar el conexionado se cambian los cables marrones de
alimentación a rojo y negro, verde y negro a azul y ámbar y gris a amarillo. Tal y como se muestra en la
siguiente imagen el conexionado final es el siguiente.
Figura 40. Conexionado de la lámpara en la interfaz de E/S. (Fuente: propia)
Esta lámpara se instala en la plataforma elevadora del apartado 3.1.2.2.
Memoria
36
3.1.2.6. Señal de avance en el proceso de reposición
En la función de reposición, dónde Robotino avanza hacia cada estación se necesita saber cunado el
operario ha retirado las piezas para que el robot avance a la siguiente estación. Aprovechando la
interfaz web podemos comunicarnos con el robot, ya que des de esta podemos activar las salidas
digitales de la interfaz de entradas y salidas usando un smarthpone conectado a la red de Robotino.
Figura 41. Captura del menú de E/S de la interfaz web de Robotino. (Fuente: propia)
Ahora bien, las salidas no son un valor legible des del entorno Robotino® View, así que se conectan las
salidas con las entradas. Con dos es suficiente.
Figura 42. Conexión de las salidas digitales 1 y 8 a las entradas digital 1 y 8. (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
37
3.2. Distribución de los elementos en la estación
Adoptadas todas las soluciones debemos adecuar el entorno de trabajo y distribuir los elementos en
el espacio disponible de forma estratégica.
La definición de la posición de la mesa para la paletización de los palés se ha adecuado a las posiciones
del proceso de paletizado siendo el condicionante el alcance del brazo. La marca fiducial se coloca
debajo del robot y su posición se puede ajustar ejecutando el subprograma de orientación en el eje X
de manera que Robotino quede centrado con el SCARA.
Dado que el espacio entre la parte inferior de la mesa y el suelo está vacío y este se necesita para el
acercamiento de Robotino se ha puesto una madera. Así el sensor óptico que se encuentra a esta altura
dispone de un obstáculo de referencia respecto al cual luego se ajustará la posición.
Figura 43. Distrbución de los elementos en la estación del robot SCARA. (Fuente: propia)
La zona de conexión es donde el microrruptor y el módulo relé se conectan al SCARA mediante la caja
de conexiones. Se ubica en esta posición por dos motivos. El primero es que la placa recibe
alimentación de la torre del ordenador que se encuentra detrás, el segundo es que no se quería
disponer de cables muy largos.
Memoria
38
Figura 44. Zona de conexión de las sensores para el Robot SCARA. (Fuente: propia)
Robotino usa como referencias para que el operario reponga las piezas en los alimentadores marcas
fiduciales colocadas en las estaciones FAS208, FAS204 y FAS202 como se observa en la figura 44.
Figura 45. Área de trabajo en el laboratorio. (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
39
3.3. Desarrollo software
3.3.1. Programación del NodeMCU en Arduino IDE
El chip integrado ESP32-WROOM-32 de la placa NodeMCU ofrece varios periféricos de comunicación,
por ejemplo, I2C, SPI, Bluetooth, WiFi, entre otros. Podemos ver las opciones disponibles en el
diagrama de bloques de la hoja de datos del fabricante.
Figura 46. Diagrama de bloques de los periféricos que incorpora el chip ESP32. (Fuente:[55])
Para esta aplicación buscamos una comunicación sin cables pudiendo ser esta comunicación Bluetooth
o WiFi. Dado que Robotino incorpora un router WiFi y dados los antecedentes [56] se plantea una
comunicación TCP/IP usando el protocolo de capa de transporte básico UDP. Es importante añadir que
la ESP32 no es capaz de conectarse a redes de 5GHz ya que trabaja con el estándar 802.11b/g/n que
establece una frecuencia de red de 2.4GHz. [55]
La programación UDP del chip ESP32 se puede realizar mediante comandos AT por el puerto serie.
Estas órdenes pertenecen a un estándar abierto de comandos para configurar y parametrizar estos
dispositivos. Los comandos para este chip se pueden consultar en [57].
Sin embargo, se ha configurado el entorno de desarrollo de Arduino para programar, a partir de este,
la placa NodeMCU ESP32. La ventaja de usar este entorno son los amplios recursos que nos ofrece,
como librerías, código abierto hecho por terceros que facilitan la programación.
Memoria
40
3.3.1.1. Configuración del ESP32 [58]
La programación de esta placa WiFi se hará mediante el IDE de Arduino siguiendo los pasos siguientes
Desde el menú Archivo accederemos a Preferencias
Figura 47. Captura del acceso a Preferencias des del menú Archivo. (Fuente: propia)
Nos aparecerá la siguiente ventana y en la casilla de “Gestor de URL’s adicionales de Tarjetas”
copiaremos el siguiente enlace https://raw.githubusercontent.com/espressif/arduino-esp32/gh-
pages/package_esp32_index.json
Figura 48. Captura de la ventana Preferencias. (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
41
Como podemos ver, en mi caso ya aparece otro enlace, si queremos conservar esta configuración
deberemos separar los enlaces con una coma. A continuación hacemos clic en “Ok”.
De esta manera hemos añadido la tarjeta en el gestor de tarjetas del IDE de Arduino.
Desde el menú Herramientas accederemos a Placa: “Nombre de la placa” → Gestor de Tarjetas como
se observa en la Figura X
Figura 49. Captura del acceso al Gestor de tarjetas des del menú Herramientas. (Fuente: propia)
Ahora buscamos en el gestor “esp32” e instalaremos el esp32 by Espressif Systems. Una vez instalada
cerramos la ventana.
Figura 50. Ventana del Gestor de tarjetas con el término de búsqueda esp32. (Fuente: propia)
Memoria
42
Por último, des del menú Herramientas debemos seleccionar la placa ESP32 Arduino como ESP32 Dev
Module.
3.3.1.2. Comunicación UDP
En la página web oficial de Arduino encontramos un tutorial [59] de cómo enviar y recibir un caracteres
por UDP usando las librerías WiFi.h y WiFiUDP.h [60].
Sin embargo, este código no compila así que se buscan las librerías en la carpeta de la documentación
de Arduino para entender sus funciones. Estas librerías también se pueden encontrar en la página
oficial [60].
Figura 51. Librería WiFiUdp.h en PIC C Compiler. (Fuente: propia)
El problema del primer código es que el envío de una respuesta por UDP usando la función write()
necesita una variable del tipo int, mientras que el mensaje de contestación era de tipo char. Solventado
el problema, se tenía que adaptar el programa a los recursos disponibles, así que, para las pruebas
usaremos un repetidor WiFi y la placa NodeMCU que activará un LED por el pin correspondiente al
relé; siguiendo el modelo de Priya en [61]. Para enviar y recibir paquetes UDP usaremos el software
Packet Sender[62].
3.3.1.2.1 Pruebas de comunicación
Para las primeras pruebas de comunicación usaremos un modelo híbrido entre [59] y [61]. El código
de este primer ensayo se encuentra en el anexo A.
El programa una vez se conecta a la red especificada nos dice la IP asignada a la placa NodeMCU
mediante el protocolo DHCP [63] que asigna automáticamente una IP a un dispositivo. Este método se
Integración de plataforma robótica móvil en sistema de ensamblaje académico
43
conoce como asignación de IP dinámica. Además, nos dice el puerto en el que está escuchando,
previamente asignado en el código.
Figura 52. Respuesta del monitor serie al ejecutarse el programa. (Fuente:propia)
Mediante el software Packet Sender se envían paquetes UDP dados la IP y el puerto anterior.
Figura 53. Interfaz del software Packet Sender para el envío de datos UDP. (Fuente: propia)
El mensaje recibido se imprime en el monitor serie, así como la longitud del mensaje en bytes, la IP y
el puerto del dispositivo que envía el mensaje, estos últimos asignados de forma automática.
Figura 54. Respuesta en el monitor serie al envío de datos. (Fuente: propia)
Durante las diferentes pruebas se ha advertido la necesidad de establecer una dirección de IP estática
ya que si la conexión se reestablecía las direcciones IP también. De esta manera solo se configura una
única vez la IP, no depende de la asignación DHCP y nos permitirá trabajar siempre con la misma IP que
como veremos más adelante es necesario configurar en Robotino® View 4. Además, dado que el puerto
UDP ya está especificado, los datos se enviarán siempre a la misma IP y puerto.
Para realizar esta configuración usaremos la instrucción WiFi.config() [64] de la librería WiFi.h siguiendo
el programa de ejemplo.
Figura 55. Configuración de la IP, la puerta de enlace y la subred siguiendo el ejemplo de [64]. (Fuente: propia)
Memoria
44
Cabe resaltar que solo se establece la configuración estática de la placa WiFi, que el dispositivo que
envía el mensaje variara su IP y puerto pero que estos no son importantes dado que no es necesario
enviar una respuesta.
Para designar una IP estática podemos consultar el rango de direcciones IP que se asignan
automáticamente mediante DHCP y escoger una comprendida en este rango. La guía para consultar la
configuración de router de Robotino se encuentra en [65].
Figura 56. Configuración DHCP del punto de acceso de Robotino. (Fuente: propia)
3.3.1.3. Configuración en Robotino® View 4
El entorno gráfico de Robotino cuenta con un servicio de intercambio de datos UDP en la pestaña
Añadir situada en la parte inferior derecha.
Figura 57. Bloques adicionales del menú Añadir. (Fuente: propia)
Una vez añadido el servidor se puede configurar haciendo doble clic sobre este. Por defecto el puerto
mediante el cual el servidor escucha y envía datos es el 9180 y el intervalo de envío, tiempo
transcurrido entre envíos de datagrama, 100ms, pudiendo alcanzar los 1000ms. En el apartado de
receptores añadiremos la IP y el puerto de la placa NodeMCU. [56]
Integración de plataforma robótica móvil en sistema de ensamblaje académico
45
Figura 58. Configuración del bloque de Intercambio de datos UDP. (Fuente: propia)
Como podemos ver, se puede activar el envío de datos para mensaje 0 y para mensaje 1
independientemente. Para esta aplicación solamente es necesario el mensaje 0. Estos mensajes son
los datagramas que conforman la estructura de datos del protocolo, cada uno es de 36 bytes y su
estructura interna es la de la siguiente figura.
Figura 59. Estructura de un mensaje UDP en Robotino® View 4. (Fuente: Ayuda de Robotino® View 4)
Memoria
46
Ahora que se ha configurado el canal de comunicación vamos a iniciar el envío de datos. Para ello se
programa un envío sencillo por la salida INT0 del mensaje 0.
Figura 60. Programa para el envío de un '1' por el INT0 del mensaje 0 a través de UDP. (Fuente: propia)
El entorno de Robotino solo puede enviar y recibir datos de tipo entero (int) así que adaptaremos el
programa de Arduino para comprobar qué se guarda en el buffer. Imprimiremos cada byte ahora como
entero, modificando el loop de la siguiente manera:
Figura 61. Modificación del bucle void loop() para el análisis del mensaje recibido. (Fuente: propia)
Por el monitor serie se observa el mensaje recibido de la IP 192.168.0.102 por el puerto 9180, mensaje
de 36 bytes proveniente de Robotino.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
47
Figura 62. Captura del monitor serie con el desglose byte a byte del mensaje. (Fuente: propia)
Este mensaje concuerda con la estructura de la figura 58 y como se observa se envía cada un segundo.
Dado que solo enviamos datos por el INT0 solo nos interesan los bytes 4-7.
En concreto, para activar el relé solo necesitamos saber si el mensaje del byte 4 es un 1 o un 0.
3.3.1.4. Programa final
El programa que se ejecuta en la placa es el adjunto en el anexo B.
Una vez se inicia el programa Robotino inicia la comunicación. La instrucción udp.parsePacket()
determina el tamaño del paquete recibido que debería ser 36. En caso de que no se reciba nada este
valor es 0 y por lo tanto no entraremos en el condicional if (paquete).
Cuando se recibe el mensaje de 36 bytes se almacena en una variable del mismo tamaño
(udp_buffer[36]). Como se ha mencionado anteriormente, el byte por el cual recibimos información es
el byte 4 así que de este depende la activación del relé.
Memoria
48
El paquete de datos se envía cada 100 ms y cómo podemos observar en la figura 62 hay muchos
mensajes que contienen la misma información. Cuando Robotino se encuentre girando se enviará un
0, un 1 comporta que Robotino está quieto. El envío del mensaje UDP se detalla en el apartado 3.3.2.9.
En conclusión, solo nos importa el cambio del byte 4 (udp_buffer[4])de ‘1’ a ‘0’, Robotino empieza el
giro, y de ‘0’ a ‘1’, Robotino se detiene. Por esta razón se implementa el uso de la variable flag
inicializada con un valor de 0. De esta manera solo cambiamos el estado del relé en los cambios de
nivel alto a bajo y viceversa.
Figura 63. Captura del monitor serie con la impresión del byte 4 del mensaje UDP recibido. (Fuente: propia)
3.3.2. Programación en Robotino®View4
3.3.2.1. Flujo de trabajo. GRAFCET
El esquema GRAFCET del programa principal se encuentra en el anexo C representa el proceso descrito
en el apartado 2.4.
La secuencia del proceso es la siguiente:
- Init: Se ejecuta el subprograma de inicialización y se continua al siguiente paso
Integración de plataforma robótica móvil en sistema de ensamblaje académico
49
- Step 10: Se ejecuta el subprograma de posicionamiento. Continua una vez se cumple la
expresión “posicionado==1”
- Step 20: Se ejecuta el subprograma de odometría. Continua una vez se cumple la expresión
“posicionado==1”
- Step 21: En el caso de que se produzca un choque o se detecte una posible colisión
(choque+colision==1) durante el step 20, se ejecuta el subprograma de detección de colisión.
Una vez se cumple la expresión “(choque+colision)==0” vuelve al Step 20.
- Step 30: Se ejecuta el subprograma de orientación en el eje Z. Continua una vez se cumple la
expresión “orientado==1”
- Step 40: Se ejecuta el subprograma de orientación en el eje X. Continua una vez se cumple la
expresión “posicionado==1”
- Step 41: En el caso de que se produzca un choque o se detecte una posible colisión
(choque+colision==1) durante el step 40, se ejecuta el subprograma de detección de colisión.
Una vez se cumple la expresión “(choque+colision)==0” vuelve al Step 40.
- Step 50: Se ejecuta el subprograma de acercamiento en el eje Y. Continua una vez se cumple
la expresión “acercado==1”
- Step 60: Se ejecuta el subprograma de rotación en el eje Z. Continua una vez se cumple la
expresión “paletizado==1”
- Step 70: Se ejecuta el subprograma de orientación en el eje Z. Continua una vez se cumple la
expresión “orientado==1”
- Step 80: Se ejecuta el subprograma de alejamiento en el eje Y. Continua una vez se cumple la
expresión “alejado==1”
- Step 81: En el caso de que se produzca un choque o se detecte una posible colisión
(choque+colision==1) durante el step 80, se ejecuta el subprograma de detección de colisión.
Una vez se cumple la expresión “(choque+colision)==0” vuelve al Step 80.
- Step 90: Se ejecuta el subprograma de descarga en la FAS207. Continua una vez se cumple la
expresión “(posicionado*ejes)==1”
- Step 91: En el caso de que se produzca un choque o se detecte una posible colisión
(choque+colision==1) durante el step 90, se ejecuta el subprograma de detección de colisión.
Una vez se cumple la expresión “(choque+colision)==0” vuelve al Step 90.
- Step 100: Se ejecuta el subprograma de descarga en la FAS203. Continua una vez se cumple la
expresión “(posicionado*cojinetes)==1”
- Step 101: En el caso de que se produzca un choque o se detecte una posible colisión
(choque+colision==1) durante el step 100, se ejecuta el subprograma de detección de colisión.
Una vez se cumple la expresión “(choque+colision)==0” vuelve al Step 100.
- Step 110: Se ejecuta el subprograma de descarga en la FAS201 y se termina el programa
Memoria
50
3.3.2.2. Subprograma de Inicialización
El programa comienza con la inicialización de todas las variables, del mensaje de comunicación UDP,
de los datos de odemetría y de las salidas relé.
Figura 64. Subprograma de inicialización. (Fuente: propia)
3.3.2.3. Subprograma de Posicionamiento
Inicialmente se coloca el robot en una zona determinada de forma manual. Para que Robotino parta
siempre del mismo punto se hará un posicionamiento respecto a los sensores 6 y 3. Robotino se irá
acercando a la pared en tanto que los valores de estos sensores sean menores o iguales a una distancia
de 11cm. El bloque de comparación si la distancia es mayor a 11cm da un valor de ‘0’ o false que
selecciona la entrada 0 del multiplexor donde se encuentran las velocidades en x e y para el bloque de
omniaccionamiento. Cuando se cumpla ambas condiciones el valor arrojado en la comparación será
true o ‘1’, se seleccionan las entradas cuya velocidad es 0 y se activará el reinicio de los datos de
odometría, así como la variable posicionado, dando paso al siguiente subprograma.
En la parte superior podemos observar la configuración del estado de ambos relés de la interfaz de E/S.
En este subprograma estará activada la luz verde fija. Reservaremos la luz intermitente para
desplazamientos largos y/o a mayores velocidades.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
51
Figura 65. Subprograma de posicionamiento. (Fuente: propia)
3.3.2.4. Subprograma de Odometría
El subprograma de odometría se basa en el cálculo de la distancia recorrida en mm para alcanzar una
pose deseada. Después de cálculos y pruebas se ha estimado esta distancia en 4 m en x y -2.6m en y.
El cálculo de la odemetría ha presentado variaciones en la pose alcanzada de los diferentes ensayos y
es por ello que esta pose no es la pose final de paletización ya que el robot SCARA requiere una pose
fija.
Las entradas del bloque controlador de posición reciben la posición a alcanzar y los datos actuales de
odometría que anteriormente se habían reiniciado. Este bloque arroja las velocidades para cada eje
conectadas al bloque de omniaccionamiento. Una vez alcanzada la posición la variable posicionado se
pone a ‘1’. En este desplazamiento se activará la luz amarilla intermitente.
Memoria
52
Figura 66. Subprograma de odometría, primera parte para la navegación. (Fuente: propia)
Por otro lado, en el mismo subprograma, tenemos algunos sensores de distancia que evitaran una
colisión y el bumper que, en caso de no poder evitar la colisión, por ejemplo, si el obstáculo se acerca
con mucha velocidad, detecta el choque. En estas situaciones la secuencia del programa se desvía al
subprograma de Detección de colisión.
Figura 67. Subprograma de odometría, segunda parte para la detección de colisión. (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
53
3.3.2.5. Subprograma de Detección de colisión
Este subprograma evalúa si existen obstáculos alrededor del robot o si el obstáculo con el que ha
chocado aún sigue en contacto con él. Si alguna de estas condiciones se cumple la secuencia del
programa permanecerá en este subprograma. Una vez el camino está libre se realiza un salto al
programa del cual se proviene.
Figura 68. Subprograma de detección de colisión. (Fuente: propia)
3.3.2.6. Subprograma de Orientación en el eje Z
Cuando Robotino se encuentra frente a la estación gracias al sistema de marca fiducial [33] que nos
proporciona la posición relativa a esta, Robotino se coloca paralelo a la mesa con un giro en el eje z.
Para ello se evalúa mediante un LUA Script la variable ‘a’ del bloque Marker position.
En este desplazamiento se activará la luz verde fija.
Memoria
54
Figura 69. Subprograma de orientación en el eje Z. (Fuente: propia)
3.3.2.7. Subprograma de Orientación en el eje X
Una vez paralelo a la mesa Robotino se centra respecto a la marca fiducial en su eje Y. El eje Y del robot
corresponde al eje X de la marca y se evalúa mediante un LUA Script la variable ‘x’ del bloque Marker
position.
En este desplazamiento se activará la luz amarilla intermitente.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
55
Figura 70. Subprograma de orientación en el eje X. (Fuente: propia)
3.3.2.8. Subprograma de Acercamiento en el eje Y
Centrado y paralelo a la mesa es hora de acercarse. En este desplazamiento se activará la luz amarilla
intermitente. El acercamiento a la mesa corre a cuenta del sensor 1. Cuando la distancia medida por el
sensor es mayor a 6 la salida del multiplexor, a su vez conectada a la vx del robot, se conecta con la
entrada de velocidad.
Figura 71. Subprograma de acercamiento en el eje Y. (Fuente: propia)
Memoria
56
3.3.2.9. Subprograma de Rotación en el eje Z
Este subprograma sigue un ciclo de 36.5 segundos valor medido y ajustado del tiempo que conlleva el
paletizado de base y palé por parte del SCARA, más el tiempo de giro necesario para ubicar las bases
en el palé. Al inicio de cada ciclo Robotino gira 2.575 s a una velocidad establecida de 10 grados/s esto
quiere decir que gira 25.75 grados dejando espacio suficiente para la colocación de otra base en la
plataforma.
Mientras el tiempo no es mayor a 2.575s, en otras palabras, mientras gira, se envía un ‘0’ al mensaje
UDP, al relé 1 indicando que la luz verde esta apagada y al multiplexor seleccionando así la entrada de
la velocidad. Con un bloque NOT se envía un ‘1’ al relé 2 encendiendo la luz amarilla intermitente.
Cada vez que se completa un ciclo se incrementa en 1 un contador y se reinicia el cronometro del
subprograma. Dado que gira 25.75 grados puede realizar 13.98 giros para cumplir los 360. Como el
contador solo lee números enteros lo dejaremos en 13 que a su vez serán las bases que puede colocar
el SCARA en la plataforma.
Figura 72. Subprograma de rotación en el eje Z. (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
57
3.3.2.10. Subprograma de alejamiento en el eje Y
Al igual que en el acercamiento, en este desplazamiento se activará la luz amarilla intermitente y
depende del sensor 1. Cuando la distancia medida por el sensor es menor a 30 la salida del multiplexor,
a su vez conectada a la vx del robot, se conecta con la entrada de velocidad. Además, este subprograma
incorpora la detección de algún obstáculo en su parte posterior por los sensores 4, 5, 6 y 7.
Figura 73. Subprograma de alejamiento en el eje Y. (Fuente: propia)
3.3.2.11. Subprograma de descarga en la FAS207/3/1
Una vez alejado Robotino se dirige a las estaciones FAS207, FAS203 y FAS201 empleando este
subprograma. El funcionamiento es sencillo, Robotino se desplaza hacia la estación en su eje Y. Cuándo
detecta la marca fiducial de la estación se centra respecto a ella. Las marcas son la 31, 32 y 33 para la
FAS207, FAS203 y FAS201 respectivamente.
Para dar paso a la siguiente estación un operario una vez repuesto el material a la estación deberá
activar la salida digital 1 o 8 para las estaciones FAS207 y FAS203 mediante la interfaz web desde un
smartphone. Esto no es aplicable para la FAS201 ya que aquí termina el programa.
Durante el desplazamiento se activará la luz amarilla y una vez alcanzada la posición cambiará de color
a verde. Además, de una estación a otra existe también una detección de colisión a cargo de los
sensores laterales 2, 3, 4, 7, 8, y 9 y el bumper.
Memoria
58
Figura 74. Subprograma de descarga en la FAS207. (Fuente: propia)
Figura 75. Subprograma de descarga en la FAS203. (Fuente: propia)
Integración de plataforma robótica móvil en sistema de ensamblaje académico
59
Figura 76. Subprograma de descarga en la FAS201. (Fuente: propia)
Figura 77. Detección de colisión dentro de los subprogramas de descarga en las estaciones (Fuente: propia)
Memoria
60
3.3.2.12. Acondicionamiento del sensor óptico
El bloque de sensor óptico nos proporciona un valor de voltaje comprendido entre 0 y 3V y la
orientación del sensor en cuestión, 40º para el sensor 2 y 360º para el noveno.
Figura 78. Bloque del sensor de distancia 2. (Fuente: propia)
Para determinar la distancia a partir del valor de voltaje se parametriza la función de la gráfica
distancia/voltaje que presenta el fabricante en la hoja de datos. [9]
Tabla 6. Distancia y voltaje según la gráfica de la hoja de datos. (Fuente:[9])
Distancia 30 28 26 24 22 20 18 16 14 12 10 8 6 4
Voltaje 0.4 0.45 0.5 0.55 0.6 0.65 0.75 0.8 0.95 1.08 1.3 1.59 2 2.7
Mediante la herramienta de ajuste de curvas, Curve Fitting Tool [66], de MATLAB elaboramos dos
modelos de interpolación, polinómica y exponencial.
Gracias a esta herramienta interactiva se puede ir variando el grado del polinomio de interpolación y
el que más se ajusta, según el criterio del coeficiente de determinación R, es el de grado 4.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
61
Figura 79. Resultado del modelo polinómico para el ajuste de la curva del sensor. (Fuente: propia)
Seguidamente se realiza un modelo exponencial.
Figura 80. Resultado del modelo exponencial para el ajuste de la curva del sensor. (Fuente: propia)
Memoria
62
Según el criterio del coeficiente de determinación R el modelo polinómico, con una R de 0.9991, es
mejor que el exponencial, con una R de 0.9989.
Estos modelos se evalúan en la práctica con un bloque definido por el usuario Script Lua. Se coloca el
robot a distancias conocidas y se compara la medida de ambos modelos.
Finalmente se determina que el modelo polinomial es el más aproximado al valor real de medida.
Figura 81. Bloque definido por el usuario, Script Lua, con los modelos de interpolación. (Fuente: propia)
3.3.2.13. Ajuste de los bloques de marca fiducial
Los bloques de marca fiducial de Robotino®VIEW arrojan datos no acordes a las distancias relativas
entre marca y robot. No existe documentación del funcionamiento de estos bloques y según
MuhammadAli empleado experto en software de FESTO los resultados de las posiciones arrojadas por
estos bloques son equívocos y se recomienda combinar estos bloques con otros sensores, por ejemplo,
los de distancia. [67]
Integración de plataforma robótica móvil en sistema de ensamblaje académico
63
Figura 82. Valores e imagen del bloque "Marker Postion". (Fuente: propia)
Como se puede observar a una distancia de más de un metro los valores resultantes en metros son
demasiado pequeños. Después de varias pruebas se determina que el valor de la arista de la marca la
deberemos insertar en mm y no en metros, así podemos obtener un valor que, aunque inexacto,
presenta un mayor rango de valores pudiendo alcanzar números enteros a diferencia que lo que se
observa en la figura 81.
Figura 83. Entradas al bloque "Marker detection". (Fuente: propia)
Así pues, solamente con el uso de las marcas no se puede establecer una posición x,y,z relativa exacta.
Sin embargo, se ha comprobado que los grados de rotación sí son exactos y que el origen del sistema
de referencia de la marca fiducial es alcanzable. Con ensayos se determinan los siguientes ejes de
coordenadas.
Memoria
64
Figura 84. Ejes de coordenadas de la marca fiducial y del Robotino®. (Fuente: propia)
Recordemos que la marca fiducial nos da la posición y orientación del robot en relación a ella misma y
que se usa para situar el robot en la posición de paletización. Para lograr alcanzar la posición utilizamos
la variable del eje x (y en el robot) y la variable “a” (rotación en z) del bloque Marker position.
La variable “a” que determina los grados de giro en el eje z es objeto de estudio ya que determina el
paralelismo del robot con la marca y por ende con la mesa. Se necesita que este valor sea 0 pero al
intentar fijar la posición de Robotino este no se queda fijo. Esto es debido a que, aunque se puede
llegar a un valor de 0 las variables no se quedan fijas a lo largo del tiempo.
El bloque de osciloscopio arroja los datos introducidos en forma de gráfica y texto y nos permite
estudiar variables. A partir de los datos se determina que la variable “a” oscila entre valores de -0.1 y
0.1 valores que establecen el lindar dentro del cual se considera que el robot está paralelo a la mesa.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
65
Figura 85. Imagen del bloque osciloscopio para la evolución de la variable 'a'. (Fuente: propia)
La posición en eje X tampoco se queda fija en 0 a lo largo del tiempo. Después de estudiar esta variación
se establece el mismo lindar para esta variable.
3.3.3. Programación en MELFA IV
El programa para el robot RH-3FH-D sigue el proceso descrito en el apartado 2.4. Su programación en
MELFA IV es la siguiente y esta explicada paso a paso.
1 'PROGRAMA PARA LA PALETIZACIÓN DE BASE Y PALÉ'
5 M1=1 'índice para la posición del pale'
10 M0=-22 'índice para el nivel del pale'
20 WHILE (M0<=66) 'bucle mientras no se hayan paletizado todos los pales'
25 HClose 1 'salida de aire apagada'
30 Ovrd 40 'velocidad a 40'
35 Mov PXYZBASE, +30 'colocarse por encima de la posición de la base'
40 Wait M_In(20)=1 'esperar que el microrruptor detecte pieza al final de la cinta'
41 Wait M_In(18)=1 'esperar a que el Robotino este quieto'
45 Ovrd 5 'velocidad a 5'
50 Mov PXYZBASE 'moverse a la posición de la base'
55 HOpen 1 'salida de aire abierta para la recogida de la base'
60 Dly 2.0 'retardo de 2 s'
65 Mov PXYZBASE, +30 'colocarse por encima de la posicion de la base'
70 Ovrd 40 'velocidad a 40'
75 Mov PROBOT, +35 'colocarse por encima de la posición del Robotino'
80 Ovrd 5 'velocidad a 5'
85 Wait M_In(18)=1 'esperar a que el Robotino este quieto'
90 Mov PROBOT 'mover a la base del Robotino'
Memoria
66
95 HClose 1 'dejar la pieza'
100 Dly 1.0 'retardo de 1 s'
105 Mov PROBOT, +35 'colocarse por encima de la posición del Robotino'
110 Ovrd 40 'velocidad a 40'
115 HClose 1 'salida de aire apagada'
120 Mov PXYZPALE, +30 'colocarse por encima de la posición del pale'
125 Wait M_In(20)=1 'microrruptor detecta pale al final de la cinta'
130 Ovrd 5 'velocidad a 5'
135 Mov PXYZPALE 'moverse a la posición del pale'
140 HOpen 1 'salida de aire abierta para la recogida del pale'
145 Dly 2.0 'retardo de 2 s'
150 Mov PXYZPALE, +30 'colocarse por encima de la posición del pale'
155 Ovrd 40 'velocidad a 40'
160 MOV PINI 'moverse a una posición por encima del pale'
165 SELECT M1 'inicio de salto condicional según M1'
170 CASE 1 'caso M1==1'
175 PALET=P1 'PALET es la posición 1 del pale 1'
180 M1 =M1+1 'sumamos 1 a M1 para que en la siguiente iteración sea 2'
181 M0 = M0+22 'subimos 22mm (altura del pale) cuando se ha completado el nivel'
185 CASE 2 'caso M1==2'
190 PALET=P2 'PALET es la posición 2 del pale 1'
195 M1 =M1+1 'sumamos 1 a M1 para que en la siguiente iteración sea 3'
200 CASE 3 'caso M1==3'
205 PALET=P3 'PALET es la posición 3 del pale 1'
225 M1 =1 'reestablecemos M1 a 1 para que vuelva a comenzar'
235 END SELECT 'fin del salto condicional'
240 PALET.Z = PALET.Z + M0 'PALET es la posición anteriormente designada más la variable
del nivel en Z'
245 Ovrd 10 'velocidad a 10'
250 Mov PALET, +25 'moverse a 25mm por encima de la posición PALET'
251 Ovrd 5 'velocidad a 5'
255 Mov PALET 'moverse a la posición PALET'
260 HClose 1 'dejar el pale'
265 Dly 1.0 'retardo de 1 s'
270 Mov PALET, +25 'moverse a 30mm por encima de la posición PALET'
275 WEND 'fin del bucle while
Integración de plataforma robótica móvil en sistema de ensamblaje académico
67
4. Conclusiones
Este proyecto ha conseguido con éxito los objetivos planteados en el capítulo de introducción. A
medida que avanzaba el proyecto surgían problemas hardware y software a las que se ha dado solución
y para los cuales se ha tenido que usar el ingenio, la perspicacia, la perseverancia y los conocimientos
previos impartidos en el grado de electrónica.
El gran reto, que ha comportado el mayor trabajo, ha sido usar Robotino y sus interfaces. Aunque es
una gran herramienta con mucho potencial educacional, flaquea en términos de documentación y es
por este motivo que dicho potencial no se puede explotar al máximo. Así que no solo se usan
conocimientos sino que se adquieren a base de trabajo y esfuerzo y de los resultados se obtiene la
mayor satisfacción.
Cabe mencionar que, aunque las soluciones desarrolladas son óptimas y nos han permitido lograr los
objetivos, existen mejoras y recomendaciones que pueden ser implementadas en un futuro. Por
ejemplo, establecer una comunicación bidireccional entre Robotino® y SCARA. Esto sería utilizar una
salida de la caja de conexiones del SCARA que se conecte a la placa WiFi y des de aquí enviar una señal
a Robotino®. Esta señal activaría el giro en el proceso de rotación que actualmente depende del tiempo
y no considera cualquier inconveniente como por ejemplo un choque del brazo.
Otra mejora que se podría incorporar es la evasión de obstáculos. Actualmente se pueden detectar
pero no evitar. Por último, se recomienda cambiar el punto de partida, ahora mismo ubicado en un
punto específico, por la base de carga de Robotino. Cargar las baterías puede resultar engorroso y
limita el tiempo de trabajo así que, además de tener un punto de partida fijo, aumentamos las horas
de trabajo.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
69
5. Presupuesto y/o Análisis Económico
El gasto económico que acarrea este proyecto no es más que el de diseño hardware, que a su vez utiliza
software con licencia, y el coste ingenieril. No obstante, la mayoría del material ha sido facilitado por
la universidad a través de los maestros de taller del laboratorio de electrónica, así como el software
facilitado por la universidad o con licencia de estudiante gratuita. A continuación, se desglosa el diseño
hardware para analizarlos basados en un precio aproximado de mercado sin tener en cuenta estas
facilidades.
• Sensor de palé basado en un microrruptor
Microrruptor…………………………………………………………………………………… 2.19 €
1 m cable ……………………………………………………………………………………….. 0.28 €/m
Conectores Banana x3………………………………………………………………………1.273€/u
10.1g de PLA …………………………………………………………………………………... 0.019€/g
1 h de diseño 3D……………………………………………………………………………... 20€/h
Coste Total (IVA incluido) ___________________________________ 26.48€
• Plataforma elevadora
Tablero de aglomerado 60x120………………………………………………………. 10.49€
Tornillos M4……………………………………………………………………………………. 0.15 (x15)
354,8 g de PLA ………………………………………………………………………………… 0.019€/g
8 h de diseño 3D……………………………………………………………………………... 20€/h
Coste Total (IVA incluido) ___________________________________ 179.48€
• Modulo relé ESP32
NodeMCU ESP32..…………………………………………………………………………… 8.29€
1 m cable ……………………………………………………………………………………….. 0.28 €/m
Conectores Banana x3………………………………………………………………………1.273€/u
Transistor 2n700……………………………………………………………………………… 0.292€
Diodo 1N4748…………………………………………………………………………………. 0.35€
Diodo LED ………………………………………………………………………………………. 0.54€
Relé 5V …………………………………………………………………………………………… 3.65€
Zócalo para PCB ……………………………………………………………………………… 0.95€
Placa PCB ……………………………………………………………………………………….. 3.47€
Conector PCB………………………………………………………………………………….. 0.59€
Resistencias(x3)………………………………………………………………………………. 0.013€
3h de Diseño PCB……………………………………………………………………………. 15€/h
Coste Total (IVA incluido) ___________________________________ 67.24€
Memoria
70
• Luz de estado
Lámpara RGB Withled..…………………………………………………………………… 55€
6 m cable ……………………………………………………………………………………….. 0.28 €/m
Soporte de fijación………………………………………………………………………..… 4.05€
Tubo de fijación 38 mm….…………………………………………………………….… 5.80€
Tornillos M4……………………………………………………………………………………. 0.15 (x4)
Coste Total (IVA incluido) ___________________________________ 67.13€
• Mesa paletizado
Liston de madera 9x18 mm..……………………………………………………………. 1.19€
Tablero metacrilato 892.5cm2……………………………….………………………... 0.005 €/cm2
Tornillos M4……………………………………………………………………………………. 0.10 (x4)
Coste Total (IVA incluido) ___________________________________ 6.09€
Software Coste
licencia (€)
Tiempo de
uso (meses)
Tiempo de
licencia (meses)
Coste de
amortización (€)
Solidworks Student
Edition*
99 4 12 33
Eagle* 347 1 12 29
RT Toolbox 2* 205 4 12 68
Robotino®View 0 - - 0
Matlab* 69 1 12 5.75
Coste Total € 135.75
*Gratuito con licencia de estudiante o facilitado por la universidad
A este proyecto se le añaden los costes de las horas de dedicación de aproximadamente 490
hora. A un precio de 20€/hora sumaría un total de 9800
El precio de este proyecto está entorno a los 10283.92 €.
Integración de plataforma robótica móvil en sistema de ensamblaje académico
71
6. Bibliografía
[1] J. Francisco, G. Caro, J. Francisco, G. Caro, M. Lluva, and T. Serra, “Guía docente 295202 - ISA - Integración de Sistemas Automáticos,” pp. 7–10, 2021.
[2] SMC, FAS-200 Sistema de ensamblaje flexible. .
[3] “Festo Didactic InfoPortal.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/Overview/EN/index.html. [Accessed: 15-Jun-2021].
[4] M. Ersoy, D. Tsakas, and C. Deppe, “Robotino ® 4.0, Instrucciones de utilización,” 2019.
[5] “GR 42X40 Motor.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/document/robotinomotorstechnicaldescription_en_de.pdf. [Accessed: 15-Jun-2021].
[6] Rotacaster Wheel limited, “Omnidirectional wheels.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/document/robotinowheelsproductspecification.pdf. [Accessed: 15-Jun-2021].
[7] Dunkermotoren, “Incremental Encoder for GF/G Motors.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/document/robotinoencoderstechnicaldescription_en_de.pdf. [Accessed: 15-Jun-2021].
[8] MAYSER Polymer Electric, “Bumper SK EKS 011.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/document/robotinostossleistedatenblatt.pdf. [Accessed: 15-Jun-2021].
[9] SHARP, “GP2Y0A41SK0F, Analog Output Type Distance Measuring Sensor,” 25-Apr-2005. [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/document/robotinodistancesensorsspecification.pdf. [Accessed: 15-Jun-2021].
[10] SHARP, “GP2Y0A41SK0F, Distance Measuring Sensor.” [Online]. Available: http://www.farnell.com/datasheets/2364614.pdf. [Accessed: 15-Jun-2021].
[11] “R6093U SPECIFICATION Ver1.2 Microinfinity Confidential.”
[12] “Intel ® RealSense TM D400 Series Product Family Datasheet Intel ® RealSenseTM Vision Processor D4, Intel ® RealSenseTM Vision,” 2019.
[13] FESTO, “Fibre-optic unit 165 326 SOEG-L-Q30-P-A-K-2L.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/document/robotinoopticalsensoroperatinginstructions.pdf. [Accessed: 15-Jun-2021].
[14] Festo AG and Co KG, “Näherungssensor SIEA-M12B-UI-S.”
[15] “TL-WR902AC | Router de Viaje Inalámbrico AC750 | TP-Link Iberia.” [Online]. Available:
Annexos
72
https://www.tp-link.com/es/home-networking/wifi-router/tl-wr902ac/v3/#overview. [Accessed: 15-Jun-2021].
[16] “Tipos de tarjetas de expansión mas utilizadas | Informacion Ordenadores.” [Online]. Available: https://oam2012revuelta.wordpress.com/2012/08/03/tipos-de-tarjetas-de-expansion-mas-utilizadas/. [Accessed: 15-Jun-2021].
[17] “Festo Didactic InfoPortal, Power Suplpy.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/Hardware/Supply/EN/index.html. [Accessed: 15-Jun-2021].
[18] “Festo Didactic InfoPortal, Laser scanner.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/Hardware/Modules/EN/Laser.html. [Accessed: 15-Jun-2021].
[19] “Festo Didactic InfoPortal, Software .” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/Software/Programming/EN/index.html. [Accessed: 15-Jun-2021].
[20] “Festo Didactic InfoPortal, Simulation.” [Online]. Available: https://ip.festo-didactic.com/InfoPortal/Robotino/Software/Simulation/EN/index.html. [Accessed: 15-Jun-2021].
[21] “Lua 5.1 Reference Manual.” [Online]. Available: http://www.lua.org/manual/5.1/manual.html#2.5.1. [Accessed: 15-Jun-2021].
[22] S. Tornil Sin, “Robótica Industrial i Visión por Computador Práctica 1 El robot RH-3FH y el entorno de programación RT Toolbox2,” pp. 1–15, 2021.
[23] “Datos técnicos - Mitsubishi Electric Factory Automation - Spain.” [Online]. Available: https://es3a.mitsubishielectric.com/fa/es/shared/img/producttables/2013_148_1?distributor=1. [Accessed: 15-Jun-2021].
[24] Mitsubishi, “Industrial Robots, product catalog.” [Online]. Available: https://www.mitsubishielectric.com/fa/dctlg/catalog/04/pdf/rbt.pdf. [Accessed: 15-Jun-2021].
[25] D. Pons and A. Freixa, “Informació caixa connexions.” .
[26] D. Pons and A. Freixa, “COMUNICACIÓ ETHERNET AMB CONTROLADOR CR750.” .
[27] S. Tornil Sin, “Robótica Industrial i Visión por Computador Práctica 2 Programación del robot ( I ),” no. I, 2021.
[28] R. Loredo, “Programacion Melfa Iv.” [Online]. Available: https://es.slideshare.net/ruben_loredo/programacion-melfa-iv. [Accessed: 15-Jun-2021].
[29] “Industrial/Collaborative Robots-MELFA Robots CAD Data Downloads | MITSUBISHI ELECTRIC FA.” [Online]. Available: https://www.mitsubishielectric.com/fa/download/cad/rbt/robot/index.html. [Accessed: 15-Jun-2021].
Integración de plataforma robótica móvil en sistema de ensamblaje académico
73
[30] “Robotino robot | 3D CAD Model Library | GrabCAD.” [Online]. Available: https://grabcad.com/library/robotino-robot-2. [Accessed: 15-Jun-2021].
[31] “3D ContentCentral - Modelos CAD en 3D gratuitos, dibujos 2D y catálogos de proveedores.” [Online]. Available: https://www.3dcontentcentral.es/parts/supplier/UNIVERSAL-ROBOTS.aspx. [Accessed: 15-Jun-2021].
[32] I. A. Muhammad, A. Tenhunen, T. Oksanen, and K. Cheremetiev, “Final Report Project # 34 Flexible Factory Floor with Mobile Robots and Wireless Communication,” 2018.
[33] M. Krogius, A. Haggenmiller, and E. Olson, “Flexible Layouts for Fiducial Tags.”
[34] “protocolo | Definición | Diccionario de la lengua española | RAE - ASALE.” [Online]. Available: https://dle.rae.es/protocolo?m=form. [Accessed: 15-Jun-2021].
[35] A. Adrover Llinás, “Introducción al funcionamiento de las redes TCP/IP.” [Online]. Available: https://www.linkedin.com/learning/redes-tcp-ip-esencial/introduccion-al-funcionamiento-de-las-redes-tcp-ip. [Accessed: 15-Jun-2021].
[36] “rfc6335.” [Online]. Available: https://datatracker.ietf.org/doc/html/rfc6335. [Accessed: 15-Jun-2021].
[37] “Service Name and Transport Protocol Port Number Registry.” [Online]. Available: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml. [Accessed: 15-Jun-2021].
[38] “UDP - Protocolos de la familia Internet.” [Online]. Available: http://personales.upv.es/rmartin/TcpIp/cap02s11.html. [Accessed: 15-Jun-2021].
[39] R. Montañana, “Curso de Redes. 8.2 La cabecera IP. - YouTube.” [Online]. Available: https://www.youtube.com/watch?v=twfTrXFCQYc&list=PLomN84AdULIBcoI8Rb98dnompliIktJk9&index=109. [Accessed: 16-Jun-2021].
[40] “rfc760.” [Online]. Available: https://datatracker.ietf.org/doc/html/rfc760#page-5. [Accessed: 16-Jun-2021].
[41] “UDP: ¿qué es UDP? - IONOS.” [Online]. Available: https://www.ionos.es/digitalguide/servidores/know-how/udp-user-datagram-protocol/. [Accessed: 16-Jun-2021].
[42] “RFC 768-UDP.” [Online]. Available: https://dl.acm.org/doi/pdf/10.17487/RFC0768. [Accessed: 16-Jun-2021].
[43] “PROYECTOS DE TECNOLOGÍA: Microrruptor o final de carrera.” [Online]. Available: https://elblogdelprofesordetecnologia.blogspot.com/2016/02/microrruptor-o-final-de-carrera.html. [Accessed: 16-Jun-2021].
[44] “MICRORRUPTOR PALANCA 53MM 16A.” [Online]. Available: https://diotronic.com/microrruptores-final-de-carrera/12373-microrruptor-palanca-53mm-16a. [Accessed: 16-Jun-2021].
Annexos
74
[45] “ESP-01S Relay v1.0 1. Description.”
[46] Espressif Systems, “ESP8266EX Datasheet.” [Online]. Available: https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf. [Accessed: 16-Jun-2021].
[47] Espressif Systems, “ESP32-WROOM-32 Datasheet.” [Online]. Available: https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32_datasheet_en.pdf. [Accessed: 16-Jun-2021].
[48] “ESP32-DEVKITC-32D footprint & symbol by Espressif Systems | SnapEDA.” [Online]. Available: https://www.snapeda.com/parts/ESP32-DEVKITC-32D/Espressif Systems/view-part/. [Accessed: 16-Jun-2021].
[49] “2N7000 footprint & symbol by STMicroelectronics | SnapEDA.” [Online]. Available: https://www.snapeda.com/parts/2N7000/STMicroelectronics/view-part/?company=Polytechnic+University&welcome=home. [Accessed: 16-Jun-2021].
[50] “RELAY SRD-05VDC-SL-C · GitHub.” [Online]. Available: https://github.com/dvdnhm/Maker-Tools-Eagle-Libraries/find/master. [Accessed: 16-Jun-2021].
[51] “2N7002 pdf, 2N7002 description, 2N7002 datasheets, 2N7002 view ::: ALLDATASHEET :::” [Online]. Available: https://pdf1.alldatasheet.com/datasheet-pdf/view/559974/FAIRCHILD/2N7002.html. [Accessed: 16-Jun-2021].
[52] “¿Por qué poner un diodo en paralelo con un relé? - Electrónica Unicrom.” [Online]. Available: https://unicrom.com/por-que-se-pone-un-diodo-en-paralelo-con-un-rele/. [Accessed: 16-Jun-2021].
[53] “1N4148; 1N4448 Datasheet.” [Online]. Available: http://j5d2v7d7.stackpathcdn.com/wp-content/uploads/2019/04/PH4148.pdf. [Accessed: 16-Jun-2021].
[54] Withled, “Catálogo lámparas LED serie 800.” [Online]. Available: https://www.e-merchan.com/media/pdf/LP80010.pdf. [Accessed: 16-Jun-2021].
[55] Espressif Systems, “ESP32 Series Datasheet,” 2021.
[56] A. J. Paucar Ati, “ANÁLISIS E IMPLEMENTACIÓN DE UN SISTEMA INALÁMBRICO CON PROTOCOLO DE COMUNICACIÓN UDP ENTRE EL ROBOTINO, BRAZO ROBÓTICO Y LA MESA DE TRABAJO PARA REALIZAR PROCESOS DE PALETIZACIÓN,” 2015.
[57] Espressif Systems, “ESP32 AT Instruction Set and Examples,” 2019.
[58] J. Astoraque, “SERIE ESP32 # 2: PROGRAMAR ESP32 CON ARDUINO IDE - YouTube.” [Online]. Available: https://www.youtube.com/watch?v=NmVA8XSt3yQ. [Accessed: 16-Jun-2021].
[59] “Send and Receive UDP String | Arduino.” [Online]. Available: https://www.arduino.cc/en/Tutorial/WiFiSendReceiveUDPString. [Accessed: 16-Jun-2021].
[60] “Arduino - WiFi.” [Online]. Available: https://www.arduino.cc/en/Reference/WiFi. [Accessed:
Integración de plataforma robótica móvil en sistema de ensamblaje académico
75
16-Jun-2021].
[61] Priya, “Client Server Communication over UDP Protocol : IOT Part 31.” [Online]. Available: https://www.engineersgarage.com/client-server-communication-over-udp-protocol-iot-part-31/. [Accessed: 16-Jun-2021].
[62] “Packet Sender - Download.” [Online]. Available: https://packetsender.com/download#show. [Accessed: 16-Jun-2021].
[63] “¿Qué es DHCP y cómo funciona un servidor DHCP? - IONOS.” [Online]. Available: https://www.ionos.es/digitalguide/servidores/configuracion/que-es-el-dhcp-y-como-funciona/. [Accessed: 16-Jun-2021].
[64] “Arduino - WiFiConfig.” [Online]. Available: https://www.arduino.cc/en/Reference/WiFiConfig. [Accessed: 16-Jun-2021].
[65] “TL-WR902AC V3 User Guide | TP-Link.” [Online]. Available: https://www.tp-link.com/us/user-guides/tl-wr902ac_v3/chapter-3-set-up-internet-connection-via-quick-setup-wizard#ug-sub-title-1. [Accessed: 16-Jun-2021].
[66] “Curve Fitting Toolbox - MATLAB.” [Online]. Available: https://es.mathworks.com/products/curvefitting.html. [Accessed: 16-Jun-2021].
[67] “Robotino View Marker Position | Distance not calculated right - openrobotino.” [Online]. Available: https://forum.openrobotino.org/forum/main-forum/software/12344-robotino-view-marker-position-distance-not-calculated-right. [Accessed: 16-Jun-2021].