Sentry2 y STEAMakersBlocks
Antes de comenzar se recomienda encarecidamente leer los contenidos anteriores relativos a Sentry2.
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:
- https://tosee.readthedocs.io/zh/latest/Common/Arduino/index.html
- y en https://tosee.readthedocs.io/zh/latest/Sentry2/microPython/index.html
- así como con Mixly, Mind+, MakeCode o Scratch.
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:
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¶
Con este bloque escogeremos el algoritmo de visión que queremos utilizar, de entre los 8 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:
- ID:1 Color
- ID:2 Blob (bloques de color)
- ID:3 Apriltag (etiquetas)
- ID:4 Line (lineas)
- ID:5 Learning (aprendizaje)
- ID:6 Card (tarjeta)
- ID:7 Face (Caras)
- ID:8 20Class (objetos)
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¶
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:
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¶
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
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¶
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:
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):
Tienes toda la información en ID: 6 → Card (tarjetas)
Etiqueta de objeto¶
Nos proporciona la identificación de la etiqueta del resultado obtenido al aplicar el algoritmo de reconocimiento de objetos predeterminados:
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.
Un posible resultado es el siguiente:
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.
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.
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:
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:
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 3DBot¶
Se trata de aplicar el ejemplo anterior al robot 3DBot.
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.
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.
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.
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
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.
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.































