La Otra Parte del Software de Visión Artificial

Gustavo Valdés, Ingeniero de Mercadotecnia, National lnstruments México
Kyle Voosen, Gerente de Negocios de Visión, National lnstruments
InTech México Automatización,
Expocontrol 2008

INTRODUCCIÓN 

A grandes rasgos, un sistema de visión artificial debe de realizar tres tareas principales: adquirir imágenes, procesar imágenes, y comunicar los resultados. Prácticamente, todos los paquetes de software de visión líderes en el mercado cuentan con el soporte adecuado para trabajar con la cámara que se ajuste a su aplicación, por lo que aquí no se profundizará en el software para adquisición de imágenes. Además, todos estos paquetes de software de visión cuentas con algoritmos muy similares para procesamiento de imágenes, como reconocimiento e igualación de patrones, análisis de partículas, OCR, y lectores de códigos de barras en 2D y 3D.

Aún y cuando algunos paquetes cuentan con algoritmos únicos y avanzados, como clasificación de objetos, la gran mayoría de los algoritmos de visión son intercambiables entre diferentes paquetes de software en términos de velocidad y precisión.

Teniendo esto en mente, la característica más importante y la mayor diferencia entre paquetes de software de visión no radica en el número o complejidad de sus algoritmos, sino en la facilidad de uso de los mismos y la capacidad de comunicar resultados.

Para ilustrarlo, se presentará como caso de estudio la inspección de un filtro de aceite donde el objetivo es identificar el tipo de filtro dependiendo del número de orificios alrededor del centro, verificar que un anillo esté presente, y comunicar los resultados con otros dispositivos industriales.

Facilidad de Uso de Algoritmos 

Como se mencionó anteriormente, debido a que los paquetes líderes de visión cuentan con algoritmos similares, la verdadera diferencia técnica está en cuán fácil y rápido puede crear una inspección con ellos. Un software de visión fácil de usar regularmente cuenta con tres componentes principales: un entorno para prototipo de aplicaciones, generación automática de código, y una interfaz de programación intuitiva.

Los entornos de diseño de prototipos usualmente son interfaces con menús y ventanas que le permiten explorar situaciones o en imágenes sin tener que llamar ninguna función o comenzar a programar. Con estos entornos de prototipos, usted puede resaltar algunas características de la imagen mediante diferentes filtros, elegir las funciones de procesamiento de imágenes adecuadas para su aplicación, y fijar los parámetros para cada una de las mismas.

El resultado es usualmente una seria de pasos o script con los componentes necesarios para analizar la imagen. Por ejemplo, el prototipo de la inspección de los filtros de aceite cuenta con tres pasos: encontrar el orificio central con una igualación de patrones, contar el número de orificios pequeños utilizando análisis de partículas, y verificar la presencia del anillo analizando la intensidad alrededor del diámetro (ver Figura 1).

 

Una vez terminado el script que analiza correctamente las imágenes, el entorno para prototipo debe de poder indicarle la cantidad de tiempo que toma ejecutarse. Esta información es extremadamente valiosa si su inspección tiene que llevarse a cabo en cierto tiempo. En este caso, la inspección del filtro de aceite toma 53.5 ms para terminar: 12.3 ms para encontrar el centro mediante una igualación de patrones, 11.9 ms para contar los orificios con un análisis de partículas, y 8.2 ms para cuantificar la intensidad del anillo en el diámetro. Los 21 ms restantes fueron el tiempo para abrir la imagen del filtro desde un archivo (ver Figura 2).

Una vez que se ha desarrollado la inspección del filtro de aceite y ha verificado que terminará dentro del tiempo deseado, es necesario migrar la inspección del entorno de prototipos a un lenguaje de programación como Microsoft C/C++, Visual Basic, o LabVIEW, mediante la generación automática de código. Esto permitirá integrar el código en una aplicación mayor o ejecutar por sí sola.

  Programación Gráfica  

Aún y cuando los entornos de prototipos y la generación de código simplifican por mucho el desarrollo de aplicaciones de visión artificial, es importante contar con un entorno de programación que simplifique el desarrollo de la aplicación completa. LabVIEW de National Instruments es el entorno líder para programación gráfica que puede utilizar para implementar sus aplicaciones de visión al conectar íconos de funciones de forma gráfica y crear interfaces personalizadas.

Ingenieros e investigadores utilizan la programación gráfica de LabVIEW para aplicaciones de visión porque pueden lograr más en menos tiempo al trabajar con diagramas de flujo y bloques en lugar de llamadas a funciones textuales y sintaxis específica (ver Figura 3).

LabVIEW utiliza un lenguaje de programación patentado mediante flujo de datos que lo libera de la arquitectura secuencia de los lenguajes de programación textuales. Este modelo de flujo de datos encaja bien en las aplicaciones de visión que por su naturaleza siguen un proceso de adquisición de imagen, procesamiento y comunicación de resultados.

El flujo de los datos a través de los nodos en LabVIEW determina el orden de ejecución, por lo que fácilmente podría crear diagramas de bloques que además ejecutaran múltiples operaciones en paralelo.

Comunicación de Resultados

Con herramientas de desarrollo como entornos para diseño de prototipos, generación de código, y programación gráfica, es sencillo programar aplicaciones de visión artificial complejas. Sin embargo, es importante no centrarse únicamente en la aplicación de visión y considerar todo el sistema de automatización en su conjunto.

Regularmente, los sistemas de visión no están aislados, deben de trabajar con actuadores de potencia para clasificar productos y remover partes con defectos; comunicarse con PLCs y PACs para cerrar los lazos de control; guiar sistemas de control movimiento o brazos robóticos; e integrarse con el software empresarial y los sistemas SCADA para monitorizar los valores históricos y almacenar las estadísticas.

Para simplificar este proceso, National Instruments ha implementado en LabVIEW herramientas para facilitar el desarrollo y la integración de sistemas distribuidos desde hace más de 3 años.

Utilizando la inteligencia distribuida, una sola ventana de proyecto en LabVIEW es capaz de administrar y sincronizar los procesos y su comunicación a lo largo de diferentes sistemas distribuidos como controladores de automatización programable (PACs), controladores de movimiento, sistemas embebidos de visión, interfaces de operador o HMls, y sistemas SCADA.

Para lograr esto, LabVIEW cuenta con un motor de variables compartidas que abstrae la administración y el control de diferentes sistemas distribuidos a lo largo de buses y protocolos industriales.

Si retomamos el caso de la inspección del filtro de aceite, muy posiblemente un requisito es comunicar los resultados de la inspección a otros dispositivos de automatización. Por ejemplo, una vez que se encuentra un filtro con defecto, es necesario rechazar el elemento de la línea ya sea mediante aire comprimido o un solenoide.

Aún y cuando muchos sistemas embebidos de visión pueden controlar estos dispositivos directamente mediante líneas digitales de E/S de 24 V, en muchas ocasiones el actuador está controlado indirectamente desde un PLC o PAe. Ya que muchas aplicaciones de visión son inherentemente visuales, las pantallas para el operador y las interfaces hombre-máquina (HMI) juegan también un papel importante porque permiten al operador hacer modificaciones a la inspección, como seleccionar el número de inspecciones a correr, actualizar valores, y verificar el desempeño.

Para poder inspeccionar exitosamente los filtros de aceite, los operadores necesitan ver las inspecciones en tiempo real para validar si es necesario ajustar los límites por variaciones en la iluminación, o para elegir una nueva inspección tras cambios a un producto nuevo en la línea de producción. Finalmente, cada fabricante requiere de monitorizar las estadísticas de calidad y tendencias históricas. Estos cálculos se pueden realizar utilizando los resultados de cada inspección (no sólo el valor de pase o fallo) de los sistemas de visión.

Sin embargo, pueden surgir problemas de integración o conectividad al intentar incorporar estos datos en un sistema SCADA más grande o al software empresarial. LabVIEW cuenta con las herramientas para conectarse a bases de datos de SOL y software empresarial para enrutar información valiosa a servidores y bases de datos. Además, utilizando las estructuras de comunicación en LabVIEW, puede sincronizar cada aspecto de un sistema de visión, desde el control de la inspección, la comunicación de resultados a un HMI, los controladores de automatización, y la conexión al software empresarial.

En general, un software de visión es mucho más que una colección de librerías para procesamiento de imágenes. Al escoger entre los diferentes paquetes de visión, vea más allá de la lista de algoritmos para identificar qué tan fácil puede desarrollar su inspección y comunicar los resultados con su equipo existente. Al empezar con el software correcto, se sorprenderá de cuán fácil y rápido puede desarrollar su aplicación de visión artificial.

0
Compartir:

Dejar un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.