Jugar a "piedra, papel o tijeras" contra una app de visión artificial basada en IA

Un robot que juega a "piedra, papel, tijeras" - Parte 2/3

Una app de visión artificial como adversario simulado por ordenador

¿Cómo se consigue que un robot juegue a "piedra, papel o tijeras"? Sebastian Trella —aficionado a la robótica y bloguero— ha dado un paso decisivo para responder a esta pregunta. Para ello, ha utilizado el sistema integral de cámaras inteligentes IDS NXT. Este sistema abarca todo el flujo de trabajo, desde la captura y etiquetado de imágenes para el entrenamiento de redes hasta la creación de aplicaciones para la evaluación, así como la ejecución de dichas aplicaciones. En la parte 1 de nuestra historia le explicábamos cómo Sebastian había logrado que el sistema reconociera gestos mediante el procesamiento de imágenes asistido por IA y entrenar, con ello, las redes neuronales pertinentes. El siguiente paso era procesar los gestos reconocidos mediante una aplicación de visión artificial de desarrollo propio.

Procesamiento posterior de los datos gráficos evaluados

El desarrollo de la aplicación es la segunda fase del proyecto y, por así decirlo, el paso clave para que sea posible jugar contra un adversario simulado por ordenador. Esta aplicación utiliza los resultados de la IA entrenada. La IA constituye el contrincante, que "realiza" aleatoriamente uno de los tres gestos predefinidos y lo compara con el que realiza a continuación el jugador. Seguidamente, decide quién ha ganado o si se ha producido un empate. La cámara es, por tanto, la interfaz encargada de capturar los gestos del jugador, y la app de visión artificial la encargada de reproducirlos en la pantalla.

Al igual que el entrenamiento de las redes neuronales, la app se ha desarrollado en el AI Vision Studio IDS lighthouse, basado en la nube. El editor de código basado en bloques —similar, entre otros, al entorno de programación gráfica gratuito Scratch— ha facilitado enormemente el trabajo a Sebastian: "Gracias a LEGO® MINDSTORMS® y a otros productos diversos de robótica, ya estaba familiarizado con la programación de apps de visión artificial con Scratch/Blockly, por lo que me fue relativamente fácil empezar. La interfaz de programación es prácticamente idéntica, así que ya tenía muy asimilada la lógica. Desarrollar una aplicación de visión artificial asistida por IA en una cámara IDS NXT o una secuencia de movimientos para un robot es prácticamente la misma tarea, porque la programación funciona exactamente igual".

Últimos ajustes directamente en la cámara

Sin embargo, representar texto en imágenes constituía un nuevo reto para Trella: "Los robots que he programado hasta ahora han entregado siempre los resultados a través de una consola, por lo que incorporar los resultados de la app de visión artificial directamente a la imagen de la cámara era algo totalmente nuevo para mí". En este contexto, a Sebastian le ha sorprendido especialmente la posibilidad de editar la aplicación tanto en la nube como en la propia cámara, y también lo cómodo que le ha resultado ejecutar tareas de desarrollo en dicha cámara y la potencia de su hardware. "Los pequeños cambios realizados en el código pueden probarse directamente en la cámara sin necesidad de compilarlo todo de cero en la nube. El entorno de programación funciona de forma muy fluida y estable". Sin embargo, Sebastian ve todavía margen de mejora a la hora de depurar errores en el dispositivo embebido, especialmente en lo que respecta a la sincronización de dicho dispositivo con el sistema en la nube tras realizar ajustes en la cámara.

Por el contrario, Trella ha descubierto una prestación "increíble" —según sus propias palabras— en la interfaz de sitio web de la cámara. Se trata de la interfaz de usuario Swagger UI, un kit de herramientas de código abierto para documentar y probar la interfaz REST integrada, con ejemplos incluidos. Esto le ha facilitado mucho el trabajo, y también le ha permitido formular algunas sugerencias para seguir optimizando el sistema IDS NXT: "Sería estupendo disponer de módulos conmutables para poder comunicarse con sistemas robóticos de terceros; esto permitiría 'coprogramar' el brazo robótico directamente desde el entorno de programación de la app de visión artificial. Además, no habría que tirar tanto cable entre el robot y la cámara y se simplificaría el trabajo de desarrollo. Aparte de esto, también he echado en falta la posibilidad de importar archivos gráficos directamente a través del entorno de programación; en estos momentos esto solo se puede hacer vía FTP. En mi aplicación, por ejemplo, habría mostrado la imagen de un trofeo para el ganador".

Y ahora ¿qué?

"Desarrollar la app de visión artificial ha sido muy divertido y os estoy muy agradecido por haberme dado la fantástica oportunidad de 'jugar' con un hardware tan interesante", afirma Sebastian. El siguiente paso es analizar más detenidamente las opciones de comunicación entre la app y el brazo robótico y realizar las pruebas pertinentes. El objetivo de ello es conseguir que el adversario virtual no solo muestre sus gestos en la pantalla, es decir, en la imagen de la cámara, sino que los haga realmente a través del brazo robótico. Este es el último paso necesario para poder jugar realmente a "piedra, papel o tijeras": que el robot cobre vida.

Continuará...

Encontrará información sobre la instalación en nuestro manual (solo para usuarios registrados).