Esta semana en la construcción de la tesis de licenciatura se nos ha dado la tarea de redactar el capitulo de solución propuesta. Esta publicación será dedicada a dicha tarea.
Solución propuesta
El capitulo se encarga de explicar cual será la solución técnica de la investigación.
El objetivo de la investigación es demostrar los beneficios de usabilidad que tiene utilizar un sistema de búsqueda de información de un objeto, utilizando la realidad aumentada para reconocer y mostrar información del producto.
La investigación intenta aportar experimentos para demostrar lo anterior, para realizar estos experimentos se ha decidido construir un sistema de realidad aumentada basado en la búsqueda de información de productos de consumo.
Por esta razón el capitulo de solución propuesta explica de manera técnica el diseño, implementación y la metodología utilizada para construir este sistema.
La metodología utilizada en la construcción del sistema es el desarrollo en cascada.
Se ha decidido seguir esta metodología dado a que el desarrollo en cascada se parece mucho a la manera en la que se desarrolla la clase escolar que se toma en conjunto con la investigación, haciendo que sea más sencillo llevar a cabo la redacción de este documento en conjunto con el desarrollo del software. Otra razón por la cual se ha decidido realizar un desarrollo en cascada es por que no existe un equipo de desarrollo del sistema, el desarrollo se lleva a cabo por una persona y por lo tanto no se necesita una sincronización entre diferentes partes del equipo. En un equipo de desarrollo la persona que desarrolla el código no podrá empezar a hacerlo hasta que el diseñador del sistema haya terminado su trabajo. Esto no es una desventaja en este caso dado que al ser una persona no habrá un tiempo de espera, puesto que no puede empezar otra etapa sin abandonar la anterior.
Herramientas utilizadas
Esta sección se encarga de documentar las herramientas de software que han sido utilizadas en el desarrollo del sistema de la investigación.
El software utilizado hasta ahora:
- Python
- Java
- Android
- Zbar
- Django
- Django Rest
- Opencv
El hardware utilizado hasta ahora:
- Una computadora portátil con procesador Intel Core i3(2.53GHz) y 3GB de memoria RAM. Este ordenador es utilizado para el desarrollo del código y redacción de este documento.Una computadora portátil mini con un procesador
- Intel Atom N2600(2 núcleos a 1.6GHz) y 1GB de memoria RAM. Se utiliza este ordenador como servidor casero para realizar las pruebas del servicio web.
- Una tableta Samsung Galaxy Tab 2 10.1. Se utiliza esta tableta para probar la aplicación móvil y realizar los experimentos con los usuarios.
Diseño del sistema
El objetivo de la investigación es probar que un buscador de información de un producto ofrece una mejor experiencia de usabilidad que una barra de búsqueda común. Sin embargo el objetivo del sistema que es utilizado para realizar los experimentos es ofrecer información sobre el impacto ecológico de los productos. Esta sección se centra en el diseño del sistema, en capítulos posteriores se explican los módulos del sistema que son utilizados para los experimentos y como fueron extraídos del sistema y adaptados.
El sistema se puede ser dividido en tres partes: aplicación móvil, servicio web y módulo de realidad aumentada.
El proceso de búsqueda de información de un producto comienza en el
dispositivo móvil. La aplicación móvil contiene la interfaz gráfica con
la que interactúa el usuario, toda interacción con el usuario se lleva a
cabo en la aplicación móvil. El papel principal de la aplicación móvil
en el proceso de realidad aumentada es mandar al servidor una imagen que
contenga el logotipo o el código de barras del producto del cual se
desea obtener información y dibujar sobre la pantalla del dispositivo
la información gráfica que genere el módulo de realidad aumentada sobre
el producto.
El servidor se encarga de procesar las peticiones
HTTP que provienen de la aplicación del dispositivo móvil, su principal
función es servir de interfaz entre la información del usuario y el
dispositivo móvil, se encarga de guardar, recuperar, eliminar y procesar
algunos datos del usuario necesarios para el funcionamiento de la
aplicación móvil.
En el proceso de realidad aumentada, el
servidor recibe una petición HTTP con una imagen, esta imagen es
trasladada al módulo de visión computacional. El módulo de visión
computacional calcula los descriptores de la imagen y los devuelve al
módulo del servidor. El servidor compara los descriptores con los que se
encuentran en la base de datos, si encuentra un logotipo que se le
parezca devuelve la información relacionada con ese logotipo. La
información obtenida es transmitida a la aplicación móvil por el
servidor.
El módulo de realidad aumentada se encarga de extraer
información de un producto a través de su logotipo y de su código de
barras. Este módulo esta dividido en dos partes una en el servidor que
utiliza la visión computacional para extraer características de una
imagen y asociarla con información en una base de datos, y otra se
encuentra en la aplicación móvil que se encarga de dibujar la
información del producto en tiempo real.
Avances al proyecto EcoAR
En la construcción del código se llevaron a cabo principalmente avances en el servidor web. Gran parte del tiempo se paso leyendo sobre Django y Django-Rest.
Los avances logrados en este proceso fueron los siguientes:
- Se implemento una relacion entre el modelo User por defecto de django y un modelo con mas datos del usuario, con este modelo extendido se construyó un cgi en el servidor para registrar al usuario y verificar que los datos sean correctos
- Se cambiaron algunas vistas a una estructura de clases y se añadieron algunas otras vistas como una estructura de los request que se necesitaran hacer al servicio web
- Se agregó funcionalidad para cambiar la respuesta de la petición HTTP a partir del método de envio
- Se implementó funcionalidad de django-rest para devolver un JSON con datos de productos con una peticion GET
- Se implementó Script para modificar la base de datos usando funcionalidad de django
En la siguiente imagen se muestra un usuario registrado. El modelo de datos parece extender el modelo base de usuario de django, pero en realidad se utilizan un modelo diferente y se unen por medio de reaciones en un serializador de django-rest para recuperar toda la información del usuario.
Liga al repositorio:
https://github.com/MaxHernandez/TesisDeLicenciatura