jueves, 22 de abril de 2010

Actualización..

Bien, después de bastante tiempo, hemos conseguido mover la aspiradora de forma remota.
Como dijimos en la anterior entrada, hace poco logramos establecer una conexión entre el iPhone y el servidor de roombo!. Pues bien, tras integrar el servidor en nuestro código, empezamos a trastear con la aspiradora.

Todo movimiento que hace la aspiradora se basa en dos acciones: girar un ángulo "α" y moverse en línea recta y hacia delante una distancia "d". Este modo de funcionamiento será correcto siempre y cuando no haya ningún obstáculo de por medio, como es el caso.
La obtención del ángulo y la distancia es muy sencilla, puesto que nosotros establecemos las coordenadas del punto al que queremos mover la aspiradora, y conocemos la posición actual de ésta (por medio del GPS), con lo cual se trata simplemente de resolver un triángulo rectángulo, como puede verse a continuación:

Además, hemos de mencionar que para el cálculo de esos dos parámetros hemos considerado que la aspiradora, después de realizar cualquier movimiento, vuelve a su posición inicial (ángulo = 0º), la cual se tomará como referencia siempre que tenga que girar.

Siguiendo en la misma línea, queremos comentar que para realizar las pruebas, no hemos podido hacer uso del GPS, ya que dentro del laboratorio apenas coge señal, sino que hemos introducido nosotros unas coordenadas al programa y a través del cliente (que será el que se ejecute en el iPhone) le hemos enviado las coordenadas de destino a la aspiradora. Y voilà, nuestra Roomba comenzó a girar para más tarde avanzar hacia delante como esperábamos.

Sin embargo, el objetivo del proyecto es que la aspiradora pueda manejarse dentro de un entorno que vamos a definir nosotros. Éste será una de las pistas de deporte de nuestra escuela, de las que hemos tomado las coordenadas de sus cuatro esquinas para poder más tarde llevarlas a nuestra aplicación iPhone, en la que simularemos este campo.

Finalmente, en cuanto a la aplicación iPhone, ya tenemos terminada la vista de configuración, que mostramos en la anterior entrada. Hemos estado trabajando para que se puedan guardar los datos de configuración y así no tener que introducir la IP y puerto cada vez que querramos usar la aplicación. Así que en los próximos días comenzaremos a trabajar en la última parte de nuestro proyecto, que se basa en obtener las coordenadas de el punto en el que se ha tocado la pantalla y enviarlas al servidor de roombo!.

A partir de ese momento nos dedicaremos a ir puliendo pequeños detalles que nos gustaría perfeccionar.

Por ahora eso es todo. Para la revisión de la semana que viene esperamos poder llevar un video que muestre todos nuestros avances hasta ahora.
Un saludo!!!



domingo, 18 de abril de 2010

Otro avance¡


Bien, como dijimos en la anterior entrada, hemos realizado avances en la parte correspondiente al iPhone.
En este sentido, nuestro primer objetivo era lograr una conexión iPhone-Servidor Web, lo cual hemos conseguido utilizando sockets.
En nuestro caso, la aplicación cliente será la que corra sobre el iPhone, mientras que ejecutaremos el servidor en el NetBook que irá conectado a la aspiradora.
Tenemos que mencionar que para que el iPhone pueda establecer una conexión con el ordenador, éste último necesita disponer de una conexión a internet o en su defecto una conexión Ad-Hoc a través de WiFi, lo cual aun no hemos probado, pero que tenemos pensado hacer.

Una vez conseguido eso, era momento de empezar a diseñar la interfaz gráfica de nuestra aplicación. Para ello, hemos escogido una plantilla para apliaciones tipo "Flip-side view".
Este tipo de aplicaciones disponen únicamente de dos vistas: una principal, que será la que veamos cuando la aplicación comience y otra secundaria, a la que accedemos mediante un pequeño icono en la vista principal. Al pulsar sobre ese icono, la primera vista da un giro de 180º sobre sí misma y nos muestra la segunda (Es como si vieramos la parte de atrás de la vista principal).
El contenido de la vista principal será "el arena" donde se moverá nuestra aspiradora, y en ella podremos elegir que ésta se mueva a una posición simplemente tocando sobre un determinado punto la pantalla.

Sin embargo, nuestro primer objetivo en lo que se refiere al diseño de la interfaz ha sido la vista secundaria, la cual es más sencilla y se compone de varios UILabel, UITextField...
En la siguiente imagen podeis ver una captura de ésta y comprobareis que esta vista será la que utilicemos para configurar los parámetros de conexión.



jueves, 1 de abril de 2010

Avances

Nuestro proyecto va tomando el "roombo"...

Después de mucho tiempo sin volver a actualizar el blog, aquí está nuestra segunda entrada, en la que os vamos a mostrar el progreso del proyecto hasta hoy.
Bien, tras atravesar varias dificultades, hemos conseguido cerrar completamente nuestro primer objetivo, el cual os recordamos que consistía en:
  • Establecer una comunicación con la Roomba
  • Establecer una comunicación con el módulo GPS
  • Parchear datos obtenidos del GPS
  • Integrar todo lo anterior en una misma aplicación
Para establecer comunicación con la aspiradora, nos resultó esencial el código proporcionado por Jorge Cancela. Este código hacía uso de un módulo Bluetooth para la aspiradora (Rootooth) para comunicarse con ella. Además, en ese código vienen definidos ya diferentes movimientos, lo cual, a pesar de no ser muy complicado, nos quita una carga de encima.

Otro punto que ya hemos cubierto es la comunicación y parcheado de datos del GPS. Este ha sido uno de los puntos màs complicados que hemos abordado hasta el momento, puesto que hemos tenideo que documentarnos mucho sobre el manejo de puertos serie, así como el funcionamiento de dispositivos GPS y el tipo de datos que estos proporcionan.
Así, hemos conseguido escribir un programa que es capaz de establecer una conexión con el GPS, leer los datos que éste nos envía y parchearlos adecuadamente, para conseguir nuestras coordenadas en el formato ECEF (Earth-Centered, Earth-Fixed). ECEF es un sistema cartesiano de coordenadas cuyo centro está en el centro de masa terrestre.
Más abajo puede verse una captura con un ejemplo de los datos parcheados una vez obtenida la cabecera "GPGGA" recibida del GPS.
Pues bien, esto NO es todo por el momento. Hemos realizado avances importantes en la parte que corresponde al iPhone, los cuales mostraremos en la siguiente entrada, que publicaremos antes de que acabe la semana.