Se trata de una aplicación de realidad aumentada que captura imagen desde una cámara, y con un código ArUco se muestra una imagen superpuesta a este código.
Esta aplicación estará gestionada por unos microservicios que reparten las diferentes tareas necesarias para su ejecución. El objetivo es poder desplegarlas en contenedores Docker sobre un orquestador (principalmente Kubernetes) en uno o varios dispositivos.
Se han desarrollado dos versiones de la aplicación. La primera, mas simple y solo de uso local sin usar contenedores, usa sockets para la comunicación entre los servicios. La segunda, que usa protocolo HTTP para la comunicación. Esta segunda versión es la principal y la que si se ha preparado para ejecutarse en contenedores y poder desplegarse en Kubernetes, aunque también puede ejecutarse en la maquina de forma local.
El código del proyecto se encuentra publicado en https://github.com/Enriquelp/App_RA.
Video Capturer: Este microservicio se encarga exclusivamente de la captura video (sin sonido) desde una cámara web y de su posterior envio a las siguientes dos tareas (Feature Communicator y Filter Selector). Hace uso de la libreria OpenCV orientada a la visión por computador.
Se puede configurar la resolución del video y los fotogramas por segundo (FPS).
Video Generator: Cumple la misma función que el Video Generator pero enviando un video pregrabado en bucle, facilitando la ejecución de la aplicación si no se dispone de webcam.
Feature Communicator: Inicia la linea de detección de elementos (códigos ArUco). Recibe el video y lo transforma a blanco y negro para enviárselo a la tarea de detección de elementos.
ArUco Tracker: Busca códigos ArUco en el video recibido por el Feature Communicator, obteniendo sus identificadores y coordenadas asociadas para enviarlas al servidor de visualización.
Filter Selector: Inicia la linea de visualización, aplicando un filtro de desenfoque y , posteriormente, manda el video modificado al servidor de visualización.
Visualizer: Recibe el video modificado (del Filter Selector) y el identificador con las coordenadas de ArUco (del ArUco Tracker) para realizar la representación de una imagen 2D en tiempo real. Si no recibe datos de los dos al mismo tiempo, muestra una imagen que indica que no hay señal.
La versión de sockets muestra el video generado por cada servicio en una ventana creada por openCV, y la versión HTTP solo muestra el video final en el navegador, en la ruta por defecto, http://localhost:5003/visualizer