martes, 2 de marzo de 2010

Bienvenidos

Pero, ¿qué es esto?

Éste será el blog que utilizaremos como bitácora a lo largo del desarrollo de nuestro proyecto, al que, inicialmente, hemos llamado "roombo!" (¿roombo!?, ¿por qué roombo!?). Aquí iremos publicando entradas durante los próximos meses mostrando los avances que vamos obteniendo, así como cualquier tipo de problema que nos surja, referencias a documentos que utilicemos y alguna entrada que resulte un poco "didáctica".

¿Y vosotros quiénes sois?

Somos Eduardo González y Jesús Hernández, estudiantes de tercero en la ETSIT de la UPM y procedentes de Santa Cruz de Tenerife y Salamanca, respectivamente.
Entre nuestros intereses, podemos destacar el gusto por las nuevas tecnologías y todo lo relacionado con ello...lo cual no quita que nos encante salir y disfrutar de la "independencia" que nos ofrece vivir fuera de casa mientras seamos estudiantes.
Visto así parecemos las personas más simples del mundo, pero entendemos que no todo el mundo quiere leer una biografía de cada uno de nosotros en esta bitácora, con lo que por ahora lo dejamos así.

¿roombo!?

roombo! es el nombre de nuestro proyecto. Se trata de un simple juego de palabras, teniendo en cuenta que nuestro trabajo se va a centrar en el control de la aspiradora Roomba de la empresa i-Robot, mediante un dispositivo iPhone, con el cuál podremos definir el rumbo de ésta.

Vale, pero no me queda nada claro qué es lo que haréis exactamente...

Paciencia, aquí te lo explicaremos más profundamente.
Como hemos mencionado antes, nuestro proyecto se centra en el control a distancia de una aspiradora iRoomba utilizando un dispositivo iPhone.
Esta aspiradora despertó mucho interés cuando empezó a comercializarse ya que, por un precio no excesivamente alto, cualquiera podía disponer de un pequeño robot doméstico, con sus sensores, motores...Precisamente esto fue lo que hizo que pronto se empezase a indagar sobre la forma de controlar este robot, obtener información de los sensores...
Este interés hizo que la misma empresa que fabricó el robot, añadiese más tarde a éste un pequeño puerto serie por el cual se le podían mandar instrucciones a la aspiradora.
Esta SCI (Serial Command Interface) será la que utilicemos para comunicarnos con la aspiradora.

Junto con ese añadido, publicaron un documento en el cual se muestra el funcionamiento de esta interfaz, además de todos los comandos que podemos mandar a nuestra aspiradora.
Para mandar instrucciones a la aspiradora, nosotros utilizaremos un NetBook, el cual irá conectado a la aspiradora aprovechando el puerto serie que éste tiene.

Nuestro objetivo es que, mediante un programa en el ordenador, gestionemos las órdenes que nos llegan desde el iPhone vía WiFi y se las pasemos a la aspiradora.
Este programa además deberá tener en cuenta la posición actual de la aspiradora, lo cual pretendemos conseguir mediante un módulo GPS USB que conectaremos al NetBook. Con las coordenadas actuales de la aspiradora y las que se reciban del teléfono, nuestro programa deberá generar un determinado número de órdenes (mover X centímetros, girar Y grados) para que la aspiradora se mueva a la posición indicada en el iPhone.

Por tanto, nuestro proyecto consta esencialmente de dos partes:
  • La primera y más importante se centra en la creación de un programa que corra sobre Windows y sea capaz de mandar órdenes a la aspiradora Roomba a través del puerto serie del ordenador. Además este programa deberá gestionar el módulo GPS.
  • La segunda parte la constituye la aplicación para el iPhone. Ésta constará de una interfaz simple en la cual podremos ver la "arena" en el que la aspiradora se moverá. De esta forma, tocando sobre un determinado punto de la pantalla, estaremos indicando a la aspiradora que se mueva hasta esa posición.
El iPhone mandará la información sobre la posición al NetBook mediante WiFi.



¿Disponéis de todo el material?

Sí. Aquí os presentamos un listado de todo el hardware que utilizaremos:
  • NetBook proporcionado por el DIE
  • iMac para el desarrollo de la aplicación del iPhone.
  • módulo GPS USB proporcionado por el departamento
  • cable para la comunicación serie con la aspiradora
  • iPhone (será totalmente prescindible hasta el final del proyecto)
Y software:
  • entorno de programación para C (en principio hemos elegido Eclipse)
  • entorno de programación xCode (en el iMac)
En cuanto a recursos tales como libros de consulta, documentos, librerías... estamos utilizando los siguientes (esta lista se irá ampliando a lo largo de estos meses):
  • "Desarrollo de una interfaz multimodal para un robot domótico móvil. Control por voz y mando a distancia¨. P.F.C. de don Jorge Cancela González, Ingeniero de Telecomunicación por la ETSIT UPM. Proporcionado por el departamento.
  • "El lenguaje de programación C. Segunda Edición" . Brian W. Kernighan y Dennis M. Ritchie, Editorial Pearson.
  • http://roomba.pbworks.com/. Recurso web donde encontramos como realizar una interfaz serie para conectar nuestro ordenador con la aspiradora.
  • Roomba SCI Specification Manual. Hoja de especificaciones de la SCI de Roomba.
  • Hackingroomba.com. Sitio web donde encontramos una librería Java en la que están implementadas todas las órdenes que se pueden enviar a la aspiradora, además de facilitar la conexión con la Roomba a través de un puerto serie.
  • http://www.gpstk.org/. Proyecto Open Source que consiste en un conjunto de librerías y aplicaciones que podremos utilizar para controlar el módulo GPS.
Todo parece muy bonito, pero, ¿realmente es viable?

Es el primer proyecto de este tipo que realizamos, por lo tanto estamos un tanto "verdes" en cuanto a planificación y establecimiento de prioridades. Pero por otra parte nos encontramos muy motivados y con ganas de que esto siga adelante.
Para ello, necesitamos establecer ciertos objetivos primordiales, que serán los primeros que debemos alcanzar.
En este sentido, nos parece fundamental lograr nuestra primera comunicación con la aspiradora. Es decir, nuestro primer punto a cubrir será el control de la aspiradora desde el ordenador, mandando órdenes simples a ésta y observando si se mueve de acuerdo a ellas.
Tras ello, nos "meteremos" con el módulo GPS. En este punto nos interesa averiguar cómo funcionan este tipo de dispositivos, qué tipo de datos se obtiene de ellos y cómo podemos procesar esos datos. Una vez sepamos todo esto, pensaremos en alguna forma de "traducir" las coordenadas que nos proporcione el GPS a instrucciones que pueda interpretar la aspiradora.
Todo lo anterior lo integraremos en una sola aplicación y comprobaremos si el robot se mueve hacia donde especifiquen las coordenadas del GPS.
De ser así, pasaremos a la última parte: el diseño de la aplicación para el iPhone. Esta parte la describiremos más adelante, puesto que también hay que ir siguiendo diferentes pasos (obtener comunicación con un PC, interpretar coordenadas según dónde hayamos pulsado en la pantalla...)

Ésta será a grandes rasgos nuestra "hoja de ruta" a seguir durante estos meses.