Proyecto de Óptica y Acústica:
Inspección Óptica en Calidad
de Producción
Física para Ingeniería.
SP01SV-24.
10 de abril 2025
Profesor: Emmanuel Valdez Velázquez
Equipo:
Aguilar Sauzceño Brayan
Alegría Barrón Brenda
Encarnación González Maria Guadalupe
Machuca Hernández Emiliano
Quezada Carreón Carolina
Problemática
Tras modificaciones en una línea de ensamble, algunas piezas de
distintas líneas de producción se cruzan en la misma banda
transportadora y es necesario separarlas ya que van a distintas líneas de
montaje.
La organización está entre dos opciones; contratar nuevo personal para
realizar manualmente la separación de las piezas “buenas” de las “malas”
a lo largo de la línea de ensamble o establecer un sistema automatizado
que detecte las piezas incorrectas al inicio de la línea y ayude al personal
a detectar a través de una fotografía la cantidad y ubicación de las piezas
por descartar.
En este proyecto exploraremos a escala la implementación y el
funcionamiento de un sistema automatizado que sea capaz de distinguir
entre piezas aplicándolo a una línea de ensamble.
Marco teórico
Sistemas automatizados.
La palabra automatización deriva de las palabras griegas “auto” ( por sí
solo) y matos ( movimiento); algunas ventajas que estos sistemas
presentan son la precisión, fuerza y velocidad a las que son capaces de
realizar las actividades. La automatización industrial es entonces el uso y
la incorporación de equipos o máquinas de elementos y sistemas de
control, sensorización, supervisión y optimización de los procesos a través
de hardwares y softwares.
Se reconocen como soluciones que las empresas optan por adaptar en su
organización para cualquier proceso que se considere lo requiera.
Algunos buscan aumentar la eficiencia de la operación realizada, otros
buscan eliminar al máximo la intervención de mano de obra humana por
la naturaleza riesgosa del proceso, etc.
Estas soluciones abarcan computadoras, programas, robots y tecnologías
de la información que manejan diferentes procesos productivos y
maquinarias en la industria.
Niveles de funcionamiento
Estos son los tres niveles más comunes de un sistema de automatización
industrial.
a) Nivel supervisor.
Es el encargado de
centralizar todo el control
de las operaciones y
supervisar el proceso en
tiempo real.
b) Nivel de control.
En este nivel se ejecutan
todos los programas
relacionados con la
automatización, por
ejemplo PLC,
controladores lógicos programables, HMI, etc. Monitorea y controla
los dispositivos del campo.
c) Nivel de campo.
Como su nombre lo indica se encuentran en campo y pueden ser
sensores o actuadores que están conectados a los programas del
nivel de control. Algunos ejemplos son actuadores lineales o
rotativos, válvula de proceso, sensores, motores eléctricos, etc.
Tipos de automatización industrial
a) Automatización fija
No se permiten cambios ni reprogramaciones tras la
implementación inicial, suele ser más común en líneas donde se
produce un alto volumen de la misma pieza o articulo.
b) Automatización programable
La instalación se adapta a las necesidades del proceso y permite la
fabricación de piezas según la temporada.
c) Automatización flexible
Permite a la industria de la producción de elementos variados y
características únicas para los artículos.
Python
Es uno de los principales lenguajes de programación utilizados hoy en día
y sus usos van desde las aplicaciones web, el desarrollo de software,
machine learning hasta la automatización con scripts (automatización de
tareas como eliminar palabras duplicadas de un archivo, operaciones
matemáticas básicas, enviar correos electrónicos), etc. Esto debido a la
facilidad de programar y la compatibilidad que tiene en distintas
plataformas (macOS, Linux, Unix). Cuenta con una amplia biblioteca de
códigos reutilizables y la comprensión del código al ser una sintaxis
básica similar al idioma inglés.
Visión artificial
Parte de la inteligencia artificial que se enfoca en el desarrollo de
métodos que permiten enseñar a las computadoras y sistemas a derivar
información relevante desde entradas visuales (como imágenes digitales,
videos, etc) con el fin de hacer recomendaciones o realizar acciones
cuando se identifican defectos o problemas. Es decir, son capaces de
interpretar imágenes de forma similar a la visión humana, analizar y
medir datos de estas entradas visuales para supervisar procesos y tomar
decisiones.
La visión artificial permite a través del machine learning (modelos
algorítmicos) y redes neuronales, que las computadoras vean, observen y
comprendan las imágenes. Para ello necesita datos y ejecutar un análisis
sobre estos múltiples veces hasta que sea capaz de determinar
distinciones y reconocer las imágenes.
OpenCV
Biblioteca de código abierto con más de 2,500 algoritmos, la cual se
especializa en el sistema de visión artificial y machine learning. Dentro de
sus usos más comunes están la detección de objetos y rostros, encontrar
imágenes similares, reconocer escenarios, seguir los movimientos de los
ojos, extraer modelos 3D, etc.
Algunas de sus ventajas es que es gratuita, multiplataforma (Windows,
macOS, Linux, Android) y es compatible con Python.
Hipótesis
El sistema automatizado evitará contratar a personal para separar las
tapas.
Desarrollo
Equipo
Computadora
Teléfono (etapa
inicial)
Cámara web
Memoria USB
Recursos
Python 3.13.2 64 bit
OpenCV 25.0.1
Sublime Text
Materiales
Tapas de plástico
Triplay
Clavos de madera
Pintura base aceite
Luces
Cronograma de actividades:
Prototipo
1. Instalación de softwares.
Es necesario descargar Python y OpenCV, estos programas son gratuitos.
Utilizamos la versión 3.13.2.
Para la instalación de OpenCV abrimos el símbolo del sistema y
ejecutamos el siguiente comando:
pip install opencv-contrib-python
Por último, es necesario un editor de texto que nos permita visualizar las
imágenes de las piezas, en este caso lo haremos con Sublime Text.
Es posible utilizar el símbolo del sistema para ejecutar python en los
algoritmos escritos en Sublime text, sin embargo el símbolo de sistema
ejecuta de manera independiente la secuencia, por lo que es necesaria la
acción de cerrar la pestaña para que el algoritmo se siga ejecutando por
toda la imagen. Por lo que instalaremos Ubuntu Desktop para ser
utilizado como la terminal para ejecutar el algoritmo.
2. Implementación
Una vez instalados los softwares, tomamos las primeras fotos de las
tapas que tenemos disponibles para simular las piezas del proceso
de fabricación.
Algunas de las tapas tienen una leyenda, comprobaremos si el algoritmo
no tiene problemas al identificarlas y determinar su color.
Es necesario crear una carpeta donde se contengan tanto los algoritmos
de python (archivos py) y las imágenes que de las piezas. Requerimos de
un entorno virtual donde solo existan los programas de python y opencv,
en este entorno solo interactúan estos dos programas.
En la carpeta “Proyecto” estaremos guardando la programación y las
imágenes, mientras que las demás carpetas son para el entorno virtual.
Pruebas
Al obtener las imágenes en canny (escala de grises) y tipo HSV notamos
que aquellas tapas con letras interfieren en la fotografía, como vemos a
continuación:
Por lo que explicaremos de ahora en adelante con tapas que tengan un
solo color sólido.
Probamos estas nuevas tapas con el algoritmo para detectar
irregularidades.
Vemos que si bien los círculos están más definidos, el fondo de las piezas
es rugoso y el algoritmo detecta las líneas como parte de las piezas, lo
cual es incorrecto.
Los problemas de captura de cada pieza también los podemos visualizar
a través de una imagen auxiliar (comando imAux). Nuestro objetivo es
que se detecten las piezas como en la imagen de la izquierda y evitar en
la medida de lo posible capturas como las de la imagen de la derecha:
Capturas recomendables Capturas con interferencia
Estas líneas si bien no impiden que el algoritmo la mayoría de veces
detecte que se trata de círculos, es un error que se puede disminuir sin la
necesidad de correr el riesgo de que algunas piezas no sean detectadas.
Utilizaremos un fondo con mínimas rugosidades, como una cartulina o
mesa sin porosidades.
Con la superficie plana se perciben mejor las capturas.
Además de detectar el color de las tapas “correctas”, implementaremos
una codificación que permita detectar la forma ideal que buscamos en
las piezas.
Es decir, combinaremos la detección de color y forma en el sistema.
Este código nos permitirá inicializar la cámara conectada a la
computadora y comenzar el conteo de la cantidad de piezas “buenas” y
"malas” según el color y tamaño esperado.
Este conteo se visualiza del lado izquierdo de la nueva ventana abierta.
Ajustes
Para que opencv detecte las diferencias entre colores es necesario
establecer rangos o criterios para cada uno de los colores. Siendo el color
azul rey nuestra referencia como pieza “buena”, sus criterios de color
segun el sistema HSV es:
Al comenzar las pruebas, notamos que la cámara web es muy sensible al
movimiento y la altura a la que se coloque afecta el cómo detecta la
forma de las tapas. Además de que al combinar las dos funciones de
detección de forma y color notamos que el sistema no funciona
correctamente, es decir, comienza a dar falsos positivos y falsos negativos.
Por lo que hemos decidido solo centrarnos en que el sistema detecte la
forma ideal de las piezas.
Si bien el código realiza el conteo, para volver a reiniciarlo es
necesario detener la ejecución de python y volver a iniciar la
ejecución desde el símbolo del sistema.
Por tanto, agregamos al código las siguientes condiciones:
- Manejo de radio y parámetros de los círculos.
- Creación de un registro en excel.
- Interfaz de usuario.
- Posibilidad de turnos.
Al probar el código abre correctamente la interfaz de usuario y
guarda los registros en el archivo CVS.
Además de tomar el registro cada 5 segundos.
Prueba realizada
Diseño de la maqueta
Al buscar una base sólida y estable para la cámara, decidimos hacer la
maqueta con madera siguiendo el siguiente boceto:
Buscamos que la maqueta pueda trasladarse a lo largo de la banda
transportadora, es decir, no estará fija y no tendrá fondo.
Prototipo
Análisis de resultados
La implementación de nuestro sistema automatizado de Inspección
Óptica, se configuró para analizara una característica de calidad, su radio.
Para la detección de la geometría en las partes, artificial mediante la
programación de software. El sistema se entrenó utilizando imágenes de
tapas con la forma correcta y con deformaciones o irregularidades; esto le
permitió identificar aquellas tapas que no cumplían con las
especificaciones geométricas preestablecidas.
En las pruebas realizadas con nuestra maqueta, se procesaron un total de
101 tapas. De estas, el sistema identificó correctamente 43 como "buenas"
y 58 como "malas". Es importante destacar que el sistema logró una
precisión del 100% en las pruebas realizadas, pues pudo identificar
aquellas con un radio mayor a aquellas de las que no sin problema
alguno.
El haber generado estas pruebas preliminares nos ayudó a comprender
cuán efectivo puede ser nuestro sistema, ya que este puede ser ajustable
en tiempo real en cuanto a los parámetros de precisión y según las
condiciones a los que sea expuesto el producto, como por ejemplo,
distancia de la pieza a la cámara, cantidad de luz o resolución de la
cámara utilizada en el proceso.
Conclusión
El sistema funciona correctamente y detecta las dimensiones de las tapas
permitiéndonos diferenciar entre las piezas “buenas” y “malas”. Sin
embargo, es muy sensible a movimientos y dependemos directamente
de las propiedades de la cámara así como de si las tapas cuentan con un
diseño liso o con grabados en ellas por lo que sería necesario robustecer
el programa para lograr la identificación de tapas con letras plasmadas en
su diseño en caso de ser necesario.
Podemos decir entonces que nuestro proyecto cumplió con su propósito
y la hipótesis ha sido (teóricamente) aceptada, pues haría falta solo
utilizar un conveyor donde se ejemplifique un proceso de producción en
masa y agregarlo a la discriminación por dimensiones con algún brazo
robótico para hacerlo 100% automatizado y efectivo.
Mejoras
1. Agregar la condición de color.
Además de los inconvenientes ya mencionados, la principal desventaja es
la falta de expertise en el área y la sensibilidad y resolución de la cámara.
2. Incorporar una línea de banda movible.
Dejamos la maqueta libre para moverse sobre las superficies sin un fondo
fijo, pero la forma ideal para preservar la cámara y evitar movimientos
podría ser fijar todo al inicio o en varias secciones de una banda de
ensamblaje.
3. Utilizar procesos consecutivos que aseguren su automatización.
Si se requiere, un área de mejora se concentraría en su conversión a un
proceso automatizado donde luego de discriminar piezas buenas de
malas, estas sean dirigidas a conveyors diferentes mediante brazos
robóticos que luego de ser identificadas utilicen argumentos para
cambiarlas.
Referencias bibliográficas
Zubiri, H. H. (2023, April 27). Tipos de Automatización Industrial y sus
características. MasterD.
https://www.masterd.es/blog/tipos-de-automatizacion-industrial
Aula. (2023, October 6). Automatización Industrial: Qué es y cómo
funciona | Aula21. aula21 | Formación para la Industria.
https://www.cursosaula21.com/que-es-la-automatizacion-industrial/
Aula. (2023, May 23). Python: qué es, para qué sirve y cómo se programa |
Informática Industrial. aula21 | Formación para la Industria.
https://www.cursosaula21.com/que-es-python/
AUTOMATIZACIÓN y CONTROL - Micro automación. (2020, September 1).
Micro Automación.
https://co.microautomacion.com/es/tec/comando-bimanual-2/
¿Qué es Python? - Explicación del lenguaje Python - AWS. (n.d.). Amazon
Web Services, Inc. https://aws.amazon.com/es/what-is/python/
Rodríguez, H. (2021, April 28). ¿Qué es OpenCV?: ¡Descubre todo acerca
de la visión artificial! https://www.crehana.com.
https://www.crehana.com/blog/transformacion-digital/que-es-open
cv/
OpenCV. (2020, November 4). About - OpenCV. https://opencv.org/abo
OMES. (2020, March 12). Como instalar PYTHON 🐍y OPENCV 👁️ en
Windows [ Fácil y rápido ] [Video]. YouTube.
https://www.youtube.com/watch?v=6R_VU958jPY
OMES. (2019, December 3). Detectando FIGURAS GEOMÉTRICAS ( 🔵🔺⬛)
con OpenCV - Python. [Video]. YouTube.
https://www.youtube.com/watch?v=R82EcsCgnfg
OMES. (2019, December 16). Detecta FIGURAS GEOMÉTRICAS y sus
COLORES ❤️🧡💛💚💜 OpenCV - Python. [Video]. YouTube.
https://www.youtube.com/watch?v=CsS0V6pDsBM
OMES. (2019, March 2). DETECCIÓN DE COLORES en OPENCV [en 4
Pasos] - Parte1. [Video]. YouTube.
https://www.youtube.com/watch?v=giwtDYcIXKA&t=43s
Roelcode. (2023, February 20).🐍Configurando Sublime Text 4 para
programar en Python: Tutorial paso a paso. [Video]. YouTube.
https://www.youtube.com/watch?v=VPrSVMt0zwM
Net Ninja. (2024, August 19). Working with Files in Python #1 - Opening &
Reading Files. [Video]. YouTube.
https://www.youtube.com/watch?v=0mxeoYsXTMg
OMES. (2019, January 3). Como LEER, VISUALIZAR y GUARDAR UNA
IMAGEN en Python usando OpenCV. [Video]. YouTube.
https://www.youtube.com/watch?v=FqZkSXJfcic
Jorge Islas. (2024, July 16). Cómo Abrir una Imagen en python 2024.
[Video]. YouTube. https://www.youtube.com/watch?v=E6Jo4aIlk9Y
🟣
Enreta Services. (2024, April 25). Cómo instalar UBUNTU 24.04 PASO a
PASO desde cero! TUTORIAL 📀. [Video]. YouTube.
https://www.youtube.com/watch?v=cQDOJb9FXnU
OMES. (2019, January 19). RGB en OpenCV (Python). [Video]. YouTube.
https://www.youtube.com/watch?v=25zlS7-kD0w