Saltar a contenido

Sentry2 y STEAMakersBlocks

Antes de comenzar se recomienda encarecidamente leer los contenidos anteriores relativos a Sentry2.

Sentry 2 + STEAMakersBlocks

Introducción

Aunque podemos programar la cámara de visión artificial Sentry 2 con el IDE de Arduino (C++) o con MicroPython tienes más información, mayoritariamente en chino, en:

STEAMakersBlocks facilita su programación con bloques que permiten:

  • iniciar el dispositivo
  • establecer el algoritmo de visión (escogiendo uno de los 8 tipos disponibles)
  • establecer el número máximo de resultados esperados
  • establecer el zoom de la cámara (entre 1 y 5)
  • obtener el número de resultados
  • obtener, para cada resultado, sus valores (coordenadas, tamaños e identificación)
  • identificar la imagen obtenida en función del color, del tipo de tarjeta o del objeto

Los bloques disponibles son:

Bloques Sentry 2 en STEAMakersBlocks

Bloque Iniciar

Bloque Iniciar

Podemos conectar a nuestra placa microcontroladora hasta 4 cámaras Sentry 2, y con este bloque podemos seleccionar las direcciones individuales del bus I2C.

Es el primer bloque que utilizaremos siempre, concretamente dentro del blog Inicializar.

Establecer algoritmo

Establecer algoritmo

Con este bloque escogeremos el algoritmo de visión que queremos utilizar, de entre los 8 disponibles:

Algoritmos disponibles

Es el segundo bloque que utilizaremos siempre, también dentro del bloque Inicializar, aunque podemos utilizarlo en cualquier otro lugar del programa si queremos cambiar el algoritmo de visión.

Para más información sobre cada algoritmo, aquí tienes los enlaces:

Establecer máximo número de resultados

Establecer máximo número de resultados

Generalmente estableceremos este valor a 1, pero puede interesarnos, en algunos casos, obtener más resultados.

Establecer zoom

Establecer zoom

Aumentar el zoom hará que el objeto sea mayor, pero el campo de visión será más pequeño y verás menos. Reducir el zoom hará que el objeto sea menor, pero el campo de visión será mayor y te permitirá ver más.

También puedes cambiar el zoom con el joystick de la cámara:

  • Acercar (zoom in) → pulsación larga hacia arriba
  • Alejar (zoom out) → pulsación larga hacia abajo

Admite de 1 a 5 niveles de ajuste:

Niveles de zoom

Número de resultados del algoritmo

Número de resultados del algoritmo

Nos permite confirmar si se han obtenido resultados al aplicar el algoritmo seleccionado, concretando su número. Lo utilizaremos dentro de un bloque + si … hacer … o de un bloque + si … hacer … si no …, básicamente para comprobar si hay algún resultado al aplicar el algoritmo de visión.

Obtener los valores de los resultados del algoritmo

Obtener los valores de los resultados del algoritmo

Cada algoritmo de visión devuelve 5 valores para cada resultado, que son (excepto para los algoritmos de reconocimiento de color, detección de líneas y aprendizaje profundo):

· coordenada X
· coordenada Y
· ancho
· altura
· identificación de la etiqueta → valor numérico

Opciones para los valores de los resultados del algoritmo

El algoritmo de reconocimiento de color devuelve estos 4 valores para cada resultado:

· rojo (entre 0 y 255)
· verde (entre 0 y 255)
· azul (entre 0 y 255)
· identificación de la etiqueta (negro, blanco, rojo, verde, azul, amarillo, desconocido) → 1, 2 , 3, 4, 5, 6, 0

Tienes toda la información en ID: 1 → Color

El algoritmo de detección de líneas devuelve estos 5 valores para cada resultado:

· coordenada X del punto final de la línea (superior)
· coordenada Y del punto final de la línea (superior)
· coordenada X del punto inicial de la línea (inferior) → es la opción Anchura del desplegable
· coordenada Y del punto inicial de la línea (inferior) → es la opción Altura del desplegable
· grados de la línea → es la opción ID de etiqueta del desplegable

Tienes toda la información en ID: 4 → Line (líneas)

El algoritmo de aprendizaje profundo devuelve estos 5 valores para cada resultado:

· fijo, 160
· fijo, 120
· fijo, 224
· fijo, 224
· identificación de la etiqueta de la imagen aprendida

por lo que nosotros sólo utilizaremos uno, el que aparece como ID de etiqueta en el bloque, que es el número con el que se ha identificado la imagen al aplicar el algoritmo de aprendizaje con la cámara.

Tienes toda la información en ID: 5 → Learning (aprendizaje)

Etiqueta de color

Etiqueta de color

Nos proporciona la identificación de la etiqueta del resultado obtenido al aplicar el algoritmo de reconocimiento de color o el algoritmo de reconocimiento de bloques de color:

Identificadores de la etiqueta de color

Etiqueta de tarjeta

Etiqueta de tarjeta

Nos proporciona la identificación de la etiqueta del resultado obtenido al aplicar el algoritmo de reconocimiento de tarjetas (tráfico, formas o números):

Identificadores de la etiqueta de tarjeta

Tienes toda la información en ID: 6 → Card (tarjetas)

Etiqueta de objeto

Etiqueta de objeto

Nos proporciona la identificación de la etiqueta del resultado obtenido al aplicar el algoritmo de reconocimiento de objetos predeterminados:

Identificadores de la etiqueta de objeto

Tienes toda la información en ID: 8 → 20Class (objetos)

Ejemplos de utilización

Contador de color

Cuando Sentry 2 detecta algo de color rojo, irá acumulando el número de detecciones que se mostrará en la consola serie. Cuando enviemos desde la consola serie la letra R, el valor del contador se pondrá a cero.

Contador de color
Descargar el programa

Un posible resultado es el siguiente:

Resultado contador de color

Un ejemplo de uso puede ser un sistema de clasificación de caramelos por colores en una línea de producción. La Sentry 2 estaría montada sobre la cinta transportadora y configurada para detectar distintas regiones de interés. El programa analizaría la salida del algoritmo de reconocimiento de color para cada región y, en base al color detectado, activaría un mecanismo (como un desviador neumático) para dirigir cada caramelo a su contenedor correspondiente.

Reconocimiento del color de la luz de un semáforo

Configuramos manualmente la Sentry2 para detectar bloques de color rojo, amarillo y verde. Sólo los bloques rojos y verdes situados en la zona central de la imagen pueden ser los colores emitidos por los semáforos.

  • Si se reconoce la luz roja, se enciende el LED rojo y se muestra "ROJO" en la pantalla.
  • Si se reconoce la luz verde, se enciende el LED verde y se muestra "VERDE" en la pantalla.
  • Si se reconoce la luz amarilla, se apagan los dos LEDs y se muestra "NINGUNO" en la pantalla.

Reconocimiento del color de la luz de un semáforo
Descargar el programa

Robot seguidor de objeto de un color

Se trata de un sistema de seguimiento de objetos donde un robot sigue un objeto de un color específico. El sensor detectaría el bloque de color y proporcionaría su posición, permitiendo al robot ajustar su movimiento para mantener el objeto dentro de su campo de visión.

Nota:

El color del objeto a detectar hay que configurarlo previamente en la Sentry2 entrando en las opciones de "Blob" y dejando activo el color deseado.

Configuración de Blob en Sentry2

En la imagen anterior se ha configurado el color rojo como bloque de color a detectar.

El programa completo y su descarga la tienes disponible en la imagen siguiente:

Robot seguidor de objeto de un color
Descargar el programa

Control de servo con etiquetas April

Utiliza diferentes etiquetas April para que cuando el resultado del reconocimiento sea 1, un servo gire a la izquierda. Si el resultado del reconocimiento es 2, hacia la derecha. En ambos casos, muestra en una pantalla OLED o en la matriz de leds 8x8 una flecha correspondiente a cada movimiento.

El programa completo y su descarga la tienes disponible en la imagen siguiente:

Control de servo con etiquetas April
Descargar el programa

Alerta por desviación de carril

Se trata de crear un sistema de alerta de desviación de carril para una bicicleta. La Sentry2 debe estar orientada hacia delante en la parte delentera de la bicicleta para detectar las líneas de la carretera. El programa analiza la salida con el algoritmo de detección de líneas (específicamente el ángulo de la línea detectada respecto a la dirección de la bicicleta) y emite una alerta sonora si la bicicleta comienza a desviarse demasiado hacia la derecha o izquierda de las líneas detectadas.

El programa completo utilizando una ESP32 STEAMakers, la Sentry2, un zumbador y una pantalla OLED lo tienes disponible en la imagen siguiente, debajo de la cual está el enlace para su descarga:

Alerta por desviación de carril con ESP32 STEAMakers
Descargar el programa

Alerta por desviación de carril con 3DBot

Se trata de aplicar el ejemplo anterior al robot 3DBot.

Alerta por desviación de carril con 3DBot
Descargar el programa

Reconocimiento de logotipos con 3DBot

En primer lugar hay que entrenar la Sentry2 para que reconozca los logotopos que vamos a utilizar. En este caso serán el de 20th Century Fox, Star Wars y Ghostbusters. Para que el programa coincida hazlo en el orden citado, y así los identificadores de cada imagen serán, respectivamente, 1, 2 y 3. Programa el 3DBot para que reproduzca la melodía asociada a cada imagen cuando la mostramos en la Sentry2.

Reconocimiento de logotipos con 3DBot
Descargar el programa

Propuestas similares de ejercicios son:

  • Reconocimiento de dígitos escritos a mano. Escribe a mano los números 1, 2 y 3 en tamaño grande y con cierto grosor en un papel blanco. Realiza el entrenamiento en secuencia, haciendo que la etiqueta 1 corresponda al número 1, la etiqueta 2 al número 2 y la etiqueta 3 al número 3. Después del entrenamiento, utiliza la Sentry2 para reconocer los dígitos escritos a mano y mostrar los resultados del reconocimiento en la pantalla OLED.
  • Papelera inteligente. Entrena diferentes patrones de basura, como la etiqueta de entrenamiento 1 para cáscaras de plátano, la etiqueta 2 para las espinas de pescado, la etiqueta 3 para las botellas, la etiqueta 4 para los recipientes de papel, etc. Una vez completado el entrenamiento, cuando Sentry2 reconozca los patrones de las pieles de plátano y las espinas de pescado, mostrará un icono de verificación que indicará que se trata de residuos orgánicos. El resto no son orgńaicos y se tratan como desconocidos mostrándose un signo de interrogación.
  • Sistema de identificación de fruta. Se podría entrenar la Sentry2 con imágenes de distintos tipos de fruta (manzanas, plátanos, naranjas, etc.) asignando una etiqueta a cada tipo. Cuando un cliente coloca una fruta frente a la cámara, el algoritmo de aprendizaje profundo intentaría identificarla y proporcionaría esta información a un sistema de punto de venta o a una aplicación móvil.
  • Identificación de plantas o flores. Entrena la Sentry2 para que reconozca plantas o flores específicas. Al detectarlas, ofrece información educativa o activa riego automático específico por planta.
  • Resolución matemática. Entrena la Sentry2 para que reconozca tarjetas con los símbolos de las operaciones básicas (suma, resta, multiplicación y división) y tarjetas con los diez primeros números (del 0 al 9). Una vez entrenada la Sentry2, coloca 3 tarjetas horizontalmente. La primera y la tercera son tarjetas de un solo número, y la segunda tarjeta, la del medio, es una tarjeta con un operador de suma, resta, multiplicación o división "+ - * /", como "2", "+", "7". Coloca las 3 tarjetas dentro del campo de visión de Sentry2 y, a continuación, acciona un pulsador. En ese momento se empieza a calcular el problema de matemáticas con las tarjetas detectadas y el resultado del cálculo se muestran en la pantalla OLED.

Conducción autónoma con tarjetas de tráfico

Controla el desplazamiento del 3DBot mediante las tarjetas de tráfico, como avanzar, girar a la izquierda, girar a la derecha, detenerse, acelerar o frenar.

Conducción autónoma con tarjetas de tráfico
Descargar el programa

Seguir una cara

Utiliza la coordenada horizontal (X) de la orientación de cualquier cara para determinar si el robot 3DBot debe moverse hacia la izquierda, hacia la derecha o recto. Si no se detecta ninguna cara, el robot se detiene.

Seguir una cara
Descargar el programa

Monitor de postura sentada

Utiliza las coordenadas horizontales y verticales de la orientación de la cara para determinar si la postura sentada es correcta y utiliza la anchura de la cara para determinar si la cara está demasiado cerca de la mesa o lejos. Si la postura sentada no cumple con los requisitos, se emitirá un sonido de aviso y se mostrará la ubicación actual. La pantalla OLED facilita a los usuarios ajustar su postura sentada.

NOTAS:

  • Configura en la cámara las coordenadas absolutas (319 x 239)
  • La postura correcta sería la correspondiente a X = 160 e Y = 120 y W = 80 y H = 60
  • Se dibuja un píxel en la OLED mapeando el X y la Y
  • Se dibuja un rectángulo en la OLED mapeando las coordenadas (x y y) de la esquina superior izquierda y la anchura y la altura de la cara

Monitor de postura sentada
Descargar el programa

Desbloqueo por reconocimiento facial

Cuando la Sentry2 detecta y reconoce la cara de una persona, se desbloquean, por ejemplo, todas las funcionalidades de un coche y se enciende un LED verde y suena un mensaje personalizado de bienvenida.

Desbloqueo por reconocimiento facial
Descargar el programa

Guardia de tráfico

Se trata de supervisar los carriles de vehículos a motor y emitir avisos si se detectan peatones o bicicletas. A continuación se dan dos versiones de un posible programa.

ADVERTENCIA

En el experimento de simulación se utilizan tarjetas que representan personas, bicicletas y automóviles con el fin de modelar distintos escenarios. Es importante destacar que este procedimiento está diseñado exclusivamente para fines experimentales y no debe implementarse en contextos reales.

A continuación se realiza un propuesta de ejercicio para resolver:

Implementar un sistema de asistencia visual para el hogar que identifica objetos cotidianos. La Sentry2 podría estar instalada en un lugar fijo de la casa (por ejemplo, en la cocina). Un programa podría utilizar el algoritmo de reconocimiento de 20 objetos para identificar los elementos que se encuentran en el campo de visión (taza, botella, silla, etc.) y proporcionar esta información al usuario mediante una salida de voz, ayudando a personas con dificultades de visión a interactuar con su entorno.