viernes, 22 de agosto de 2008

Diseño de la aplicación

Buenas,

a fin de que el lector obtenga una idea mental del funcionamiento de ARBOT añadiré algunos diagramas.

La aplicación esta compuesta por un cliente (la interfaz de usuario) y un servidor (ejecuta los modos de funcionamiento sobre el robot), como se muestra en el dagrama de despliegue.




Entre ellos intercambian los siguientes mensajes:


En el diseño del diagrama de clases se utiliza la técnica de especialización, de forma que conforme se va bajando en la jerarquía se van definiendo clases abstractas más específicas hasta la implementación de cada modo de forma concreta. Esta propiedad, aparte de dar una visión clara de la clasificación de cada uno de los modos de funcionamiento dentro de la jerarquía, permite extender las clases de forma sencilla, lo que facilita implementar futuros modos. Por otro lado también permite una mayor reutilización del código, ya que se evita tener métodos repetidos en varias clases. A continuación se muestra el diagrama desarrollado:

Esto es todo por ahora,

saludos!!

jueves, 21 de agosto de 2008

Estado del arte: posibilidades de la realidad aumentada

Buenas,

al documentarme sobre el estado del arte para la memoria me he topado con proyectos alucinantes que usan realidad aumentada. Puesto que no estaban en relación con el tema del proyecto (videovigilancia y robots) no los incluí en la memoria, pero como me llamaron la atención no podía evitar mencionarlos por aquí. Seguro que agradan la vista a los interesados en el tema:

Eye Of Judgement: juego de rol para playstation, donde a partir de unas cartas generan todo un escenario de batalla con criaturas en 3D aumentando la realidad.



Camspace: proyecto que a partir de diferentes objetos recrea toda serie de dispositivos para jugar a cualquier juego (vídeo muy recomendado).



PARIS (Personal Augmented Reality Immersive System): proyecto en el que generan todo un sistema de realidad virtual a partir de ralidad aumentada para implantes de prótesis:



Augmented Reality and Information Visualization: un sistema de visualización de gráficos estadísticos en 3D con realidad aumentada:



Living Augmented Reality: todo el interior de una habitación generado con realidad aumentada:



Neon Racer: juego de naves sobre una pantalla-tablero:



Genesis: proyecto donde se genera un escenario aumentado haciendo uso de un proyector y marcas visuales. El argumento es un juego que emula ser "Dios" y construir un mundo.



ARlego: guia de autoayuda para el montaje de diferentes prototipos con el Lego Mindstorm mediante realidad aumentada.



Y como estas, hay muchísimas aplicaciones vistosas hechas con realidad aumentada. En mi opinión, hoy por hoy la mayoría de proyectos son de investigación, pero solo es cuestión de tiempo que esta tecnología se empleé en el uso cotidiano de determinadas tareas, ya que como habréis visto, tiene infinidad de posibilidades. El primer campo sin duda será el mundo de los videojuegos por ser el más comercial, pero para mí lo más impactante son las nuevas formas de interacción persona-ordenador que se pueden plantear a partir de proyectos como Camspace.

Saludos y espero que os haya gustado.

miércoles, 6 de agosto de 2008

Ha nacido ARBOT!!!

Salvo pequeños detalles, ya se puede dar por concluida la implementación de este proyecto que he bautizado como ARBOT (Augmented Reality roBOT).



En esta última versión, se han añadido las siguientes características:

En el cliente:

- Loading y pintado de mapas, actualizando sobre éste la posición del robot en tiempo real y la posición según el odómetro para observar visualmente la desviación que corrige el uso de calibración por marcas visuales.

- Añadidos dos botones de ZoomIn y ZoomOut para agrandar el mapa.

- Añadida una sección de estadísticas, donde se muestra: nº frames que se han observado, nº frames usados para recalibrar, distancia (en mm) que se ha recalibrado, rotación (en grados) que ha recalibrado. (Actualmente en esta parte calculo esta información en el cliente, pero tengo que cambiarlo al servidor y enviarla dentro de los paquetes de información, pues hay frames que el servidor procesa pero no llegan al cliente, ya que tiene una tasa de frames más baja para no saturar la red.)

En cuanto al servidor, se han probado las estrategias el uso de marcas para navegar sobre mapas daba diversos problemas inexplicables, y tras darle vueltas y vueltas he dado con solución: "en cambiar las ArActions (GoTo(x,y)) por comandos a bajo nivel(move(), setVel, setHeading()...) para tener un mayor control y conocimiento de los comandos que se le están mandando al robot en todo momento" y ahora funciona correctamente.

En mi opinión esta quedando bastante chulo, en cuanto pueda subo unas capturas y algunos vídeos para que lo podáis ver y opinar.

Como comentaba, salvo pequeños detalles, en breve empezaré con la memoria cerrando el ciclo de implementación, pero eso no significa que vaya a olvidar el blog, si no que realizaré artículos con información interesante o curiosa que me vaya encontrando en la redacción de la memoria, ya que la idea de hacer este blog tiene como objetivos:

-Que mis tutores (u otros interesados) puedan hacer un mejor seguimiento de los avances.
-Compartir el conocimiento adquirido con el mundo.
-Que esta información quede inmortalizada por si en el futuro pudiera ayudar a otros proyectos sobre la materia, ya que son varios los que me han escrito preguntando dudas, o comentandome que les ha encantado la iniciativa y la aplicarán a proyectos futuros.

Por cierto, os podeis suscribir a las RSS si estais interesados ;)


Saludos!!

viernes, 1 de agosto de 2008

Video en el cliente

Ya tengo el vídeo en la parte del cliente.

Tras hacer pruebas, como cabía de esperar la tasa de frames por segundo es reducida pero aceptable, pues el limitado procesador del robot tiene que realizar a la vez las tareas de manejar el robot, procesar cada frame por Artoolkit plus y comprir cada frame en jpeg para enviarlo. Aun así, se obtiene mayor tasa que las que se obtienen con programas como VCN para conexión remota.

En cuanto a la calidad de imagen, es bastante aceptable, los frames se envian al 60% de su calidad original con una resolución de 640x480 (abajo una muestra de un frame) en escala de grises para minimizar el coste del flip vertical que hay que realizarles y el procesamiento del artoolkit plus. El usar compresión por frames independientes permite obetener un video de calidad, que no se degrada con el movimiento o con los cambios de escena como pasa con formatos de videoconferencia.


Por otro lado, se han añadido 3 radio button para que el cliente pueda elegir el tamaño de frame.