ROBÓTICA

Seguimiento facial con ARDUINO UNO, por Ademir Bermúdez

Artículo redactado por Ademir Bermúdez, colaborador de Revista de Robots

Ademir Bermúdez es investigador de la Universidad Gerardo Barrios de El Salvador, imparte conferencias a nivel internacional y es CEO de ESROBOTICA

Profesor Ademir Bermudez

En el mundo de la robótica y la inteligencia artificial (IA), en el afán los seres humanos de interactuar con máquinas para realizar diferentes tipos de actividades, se han ido desarrollando diferentes métodos para la interacción entre humanos y robots. De este modo se ha avanzado en la imitación de movimientos, reconocimiento de colores e identificación de sonidos, así como el reconocimiento patrones con figuras e incluso la identificación de caras y sus diferentes estados de ánimo. Todo ello es gracias a los diferentes tipos de lenguaje de programación y la complejidad del mismo, desde programación inicial en Lego, Arduino, Python, Open CV y hasta ROS entre otros.

Seguimiento facial con ARDUINO UNO, por Ademir Bermudez

Con una cámara para Arduino, Raspberry o desde la cámara del pc somos capaces de llevar a cabo proyectos asociados a un robot, como es el caso de sacar fotos, reconocer patrones de rostro y colores. En el siguiente artículo hablaremos de algunas de las herramientas que existen en la actualidad, desde las más básicas hasta las más complejas que nos permitirán realizar reconocimientos faciales a través de la inteligencia artificial.

Dentro de la familia de la serie A (00-07) en este articulo tomaremos como ejemplo el robot Astro cod: A07 es un robot que se encuentra en desarrollo, pero que nos servirá para realizar pruebas con la cámara, tanto para realizar fotos como para realizar ejercicios de reconocimiento del rostro.

Versión 1:

Con un sensor de movimiento podemos hacer que el robot tome una foto de seguridad. Para lograrlo necesitaremos:

  • Arduino Uno (o MEGA)
  • Cámara digital (ejemplo Arducam OV2640).
  • Jumper Hembra-Macho.
  • Bocina de 8 ohm 0.25w (versión 2)
  • Mini servo MG 90S (versión 2)
  • Cámara Pixi2 (versión 3)
Revista de automatización industria
Recibe gratis nuestra Revista de Robótica

Utilizaremos el modelo OV2640, pero existen muchos modelos válidos. Con la librería ARDUCAM, descargaremos la librería y se colocará en la dirección de librerías de Arduino. En memorysaver.h especificaremos el modelo de cámara a utilizar, que en este caso el OV2640 se desactivarán los demás modelos. Es necesario tener acceso como administrador para poder realizar el cambio, del mismo modo que se puede realizar el cambio antes de colocar el archivo en la dirección de las librerías. Acto seguido abriremos el programa llamado ARDUCAM_HOST V2 y seguido abriremos el software Arduino y en «ejemplos» debe aparecer:

«Archivos – ejemplos – Arducam – mini – Arducam_mini_2MP_ov2640_functions»

El código de ejemplo es para tomar fotos desde la cámara OV2640, posteriormente detectaremos objetos con ella. Antes de enviar el código a Arduino debemos tener claro que el ejemplo se basa en conexiones predeterminadas para un Arduino Uno, una vez conectado los pines como aparece en la imagen y establecido el puerto COM en Arduino y se envía

Pines:

En la cámara son VCC, GND, CS( pin 7), MISO (pin 12), MOSI (pin 11) y SCK (pin 13), SDA ( pin A4), SCL (pin A5)

Hay que mencionar que las conexiones son para un Arduino Uno registrado y posteriormente enviamos el código a la placa Arduino. Seguido abrimos el programa Arducam Host_v2, especificamos el puerto de conexión, su frecuencia y se presiona OPEN. Para guardar las fotos se debe marcar la opción Save imagen y si desea cambiar la ruta donde se guardan las fotos se presiona PATH, luego se toman las fotos con capture. La cámara al ser de dos megapíxeles no es de alta calidad pero funciona para nuestro proyecto y la ubicaremos en la cabeza del robot educativo.

Cámara OV2640:

Es muy amigable con la mayoría de los microcontroladores ARM y RISC de gama baja como STM32, ESP32, en comparación con la interfaz MIPI, sólo los procesadores de gama alta admiten dicha interfaz de cámara. La característica más importante de OV2640 es el codificador JPEG de hardware, que apaga la potencia de procesamiento y reduce el uso de huella de memoria de los microcontroladores. Una imagen típica en formato 1600×1200 RGB565/YUV ocupa un espacio de RAM de 3,66 MB, mientras que una imagen decente de formato JPEG solo ocupa 150KB, casi x25 relaciones de compresión.

Con una resolución de imagen más baja o una mayor relación de compresión, el tamaño de la imagen JPEG de salida será aún menor, que se puede almacenar y procesar fácilmente en memoria RAM interna de microcontroladores. ¡Es enorme!

En conclusión, una interfaz de cámara amigable, una buena calidad de imagen, un potente ISP en chip con codificación JPEG, hace que el sensor de imagen OV2640 sea único y popular para aplicaciones de cámara IoT en todo momento. Con lo visto hasta el momento podemos decir que nuestro robot únicamente saca fotos y las guarda en una ruta específica, como punto de introducción está bien, pero debemos hacer que el robot no solo tome fotos si no que reconozca patrones de movimientos. Para lograrlo pasaremos a la versión que por medio de Arduino y Python, el robot pueda imitar los movimientos de las personas y sea la cámara la que los detecte y los pueda replicar.

Versión 2:

Ahora le podremos movimiento al cuello con el mini servo y un sonido con la bocina.

Versión 3:

Seguimiento facial con Arduino y Python 3.9 con Open cv

Artículo redactado por:

  • Ademir Bermúdez Aguilar

Revista de Robots te recomienda:

Esta Web utiliza Cookies para mejorar tu experiencia. Si las aceptas, asumimos que estás de acuerdo con ellas. OK Leer Más