- 22 Dec 2024
- Imprimir
- DF
Multiple Views in a Single Recipe
- Actualizado el 22 Dec 2024
- Imprimir
- DF
Este ejemplo te muestra cómo configurar una única receta que pueda inspeccionar diferentes partes, ángulos o vistas sin cambiar a otras recetas. Hay varias razones para hacer esto, pero dos casos de uso principales son:
Cuando no hay suficiente tiempo entre capturas para cambiar de receta.
Realizar la misma inspección en múltiples partes o ángulos de una pieza (por ejemplo, presencia o ausencia de pernos en 5 posiciones diferentes en la carrocería de un automóvil). En este caso, este método evita la necesidad de entrenar el mismo modelo (presencia/ausencia de pernos) varias veces en diferentes recetas.
Receta de ejemplo para descargar:
Flujo de ejemplo importable para descargar (la configuración dentro de los nodos de Lógica de Bloque de Clasificación se perderá al importar):
Este ejemplo es una versión simple con 2 vistas y un tipo de inspección, pero puedes usar esta misma técnica para un número ilimitado de tipos de inspección y vistas. En esta inspección, buscaremos la presencia o ausencia de brocas en dos lados de una caja de brocas. Un lado tiene 5 brocas en la parte inferior, y el otro lado tiene 8 brocas tanto en la parte superior como en la inferior. Llamaremos al lado con 16 brocas lado A y al lado con 5 brocas lado B.
En lugar de usar una receta por cada lado debido a los diferentes diseños, combinaremos ambos lados en una sola receta para no tener que entrenar el mismo modelo de presencia/ausencia dos veces.
Paso 1: Crea una receta; en este caso, es una receta de clasificación, pero este mismo principio se puede usar con segmentación.
Paso 2: Configura el alineador (aligner) para la primera vista:(Skip)
Bloque de alineador solo utilizado para la configuración de ROI
La alineación no está disponible cuando se inspeccionan más de una vista en la misma receta. El bloque solo se utiliza para establecer la imagen base para el dibujo del ROI.
Paso 3: Dibuja las ROIs para el lado A. Nómbralas de manera que ayude a identificar a qué lado pertenecen. En este caso, nombré las ROIs como A1-A16.
Paso 5: Usando los botones de bloqueo junto a los nombres de las ROIs para evitar mover cualquier ROI del lado A, dibuja y nombra las ROIs para el lado B.
Repite el proceso si es necesario
Para recetas más complejas, repite este proceso para tantas vistas diferentes como desees inspeccionar.
Paso 6: Etiqueta y entrena el modelo de clasificación utilizando imágenes de ambos lados A y B. Al capturar y etiquetar el lado A, no etiquetes las ROIs del lado B y viceversa.
Paso 7: Configura Node-RED
Abre tu flujo de Node-RED en la página de configuración de IO. Crea una fuente para indicar al OV20i qué lado se está inspeccionando actualmente. Esto puede ser datos de posición del robot, información del PLC o cualquier otra cosa que desees usar. Yo simularé esto usando dos nodos de inyección, uno que envía la cadena "A" y otro que envía la cadena "B".
Dado que los datos del lado que llegan pueden ser momentáneos, pero queremos verificar qué lado está activo, almacenaremos los datos del estado utilizando una Variable de Flujo, que persistirá hasta que se reciba la siguiente información del lado. Conecta tu fuente de datos a un bloque de función que contenga el siguiente código:
Puedes probar si tus datos del lado se están almacenando correctamente abriendo la barra lateral de datos de contexto, enviando un mensaje y luego pulsando el botón de actualización en el panel de Variables de Flujo. El panel de datos de flujo solo se actualizará cuando se actualice manualmente usando el pequeño botón de actualización.
Una vez que los datos del lado estén correctamente almacenados en la variable de flujo, agrega un nodo de switch conectado a todas las salidas del bloque. Este será el bloque que enruta el mensaje con los datos de inspección de acuerdo con el lado que esté activo en la Variable de Flujo. Configúralo para que mire la Variable de Flujo y enrute el mensaje al puerto 1 si A está activo y al puerto 2 si B está activo.
Expande según sea necesario
En ejemplos más complejos, esto se puede expandir a tantas vistas diferentes como necesites inspeccionar.
Conecta cada puerto de salida del switch a un bloque de Lógica de Bloque de Clasificación y configura cada uno según las reglas que deseas inspeccionar para ese lado. El nodo switch solo enviará un mensaje a uno de los nodos a la vez. La imagen a continuación muestra la configuración para el puerto del lado B del switch. Observa que no hace referencia a ninguna de las ROIs del lado A, por lo que la lógica ignorará los resultados de ese lado cuando la inspección se dirija a través de este nodo.
Finalmente, conecta los bloques de lógica al bloque de Inspección Aprobada/No Aprobada. Esto permite que los resultados se muestren en el HMI, así como se transmitan a cualquier PLC adjunto u otro componente de flujo.
Esto completa el flujo de Node-RED y ahora es el momento de probar la receta de principio a fin. Primero, enviaremos el comando del lado A usando nuestro nodo de inyección de Node-RED. Luego, utilizaremos el HMI para inspeccionar una pieza buena. Nota cómo, a pesar de que una de las regiones del lado B falló, la inspección completa pasó.
Ahora, cuando eliminamos una broca del lado A e inspeccionamos de nuevo, obtenemos el resultado de fallo que deseamos.
Pasando al lado B, enviamos la señal B usando nuestro nodo de inyección de Node-RED y actualizamos la sección de variables de flujo en el panel de datos de contexto para asegurarnos de que esté almacenada.
Ahora, cuando cambiamos al lado B de una pieza buena, vemos que la inspección pasa a pesar de que todas las regiones del lado A hayan fallado.
¡Felicidades! Ahora sabes cómo usar una receta y un modelo en múltiples vistas de una pieza. Esto permitirá inspecciones complejas a alta velocidad y una integración estrecha con robots. También te ahorrará un tiempo significativo que de otro modo se dedicaría a entrenar múltiples modelos que realizan la misma inspección, pero en diferentes vistas.