Saltar al contenido

Hace un par de semanas que construi un nuevo cuerpo para presencebot, aparte de mejorar un poco su comportamiento. Para resumir dejo un video que he grabado. En realidad quería probar el tema de las etiquetas en youtube, por eso he terminado subiendo este video ;).

Sobre el robot, utiliza el mismo código que la versión anterior de presencebot, sólo he quitado el tema de los ojos porque en esta versión no le he puesto, así que en realidad es mucho más sencillo: un servo pegado a un muñeco, controlado por arduino.

Pero el usar un muñeco en vez de utilizar piezas de mecano parece que le da otro aire. Incluso el movimiento parece más suave de lo que recordaba con la versión anterior.

Después de unas semanas, he logrado avanzar un poco con presencebot. El concepto del proyecto ha cambiado respecto al original y he integrado algunas de las ideas que he comentado anteriormente en el blog: control homeostático y emocional, arquitectura orientada a comportamientos, integración con sensores web. La arquitectura está inspirada en kismet, aunque con muchas limitaciones: no hay visión artificial y el robot es muy sencillo (no ha cambiado respecto a la versión original, sólo tiene un servo con un par de leds y usa el ratón del ordenador como sensor).

El software es completamente nuevo y posee los siguientes módulos:

- comportamientos: realizan la lectura de sensores y la activación de los actuadores. Deberían acoplar entradas y salidas, pero la verdad es que están parcialmente acoplados: se comunican por medio de un espacio de memoria común. En la práctica es cómo un acomplamiento "público", los sensores y actuadores están acoplados, pero los datos están disponibles para el resto del sistema.

- motivación interna: un control homeostático al que he llamado "felicidad". El robot está más contento cuando hay alguien en el ordenador moviendo el ratón, si no detecta movimiento de ratón, la felicidad disminuye. Las acciones del robot están encaminadas a mantener su nivel de felicidad dentro de los niveles óptimos.

- motor emocional: en cada situación, el robot se encuentra en un estado emocional que activa y/o desactivar los comportamientos apropiados. Por ahora es una máquina de estados que depende de la motivavión interna y activa/desactiva en cada estado un conjunto de comportamientos.

- configuración mediante fichero: la relación entre los distintos módulos se hace con un fichero que se carga al inicio a modo de dsl. El uso de un fichero permitirá cargar diferentes personalidades en un mismo robot.

Por ahora el comportamiento del robot es muy sencillo. Reacciona ante el movimiento del ratón y la presencia online en messenger. Si el dueño no está en messenger, se asusta (mantiene la posición con una ligera oscilación) hasta que el dueño aparezca online. Una vez que el dueño está presente en messenger, reacciona al movimiento del ratón. Si detecta movimiento, aumenta la felicidad (aumentando la posición de la cabeza y la iluminación de los ojos). Si hay demasiado movimiento, pasa a un estado sobreexcitado (con un baile especial). Si deja de detectar movimiento de ratón durante un rato, entra en modo de aburrimiento (los ojos parpadean lentamente). Por ahora es un poco esquizofrénico, para hacer pruebas he hecho que reccione muy rápidamente, con lo que pasa de la sobreexcitación al aburrimiento un unos segundos. Para los pocos elementos que tiene, creo que es bastante expresivo (en línea con los vehículos de braitenberg, un comportamiento sencillo parece más complejo de lo que es).

El siguiente paso es conseguir que responda con un mando de la wii, para que reaccione al movimiento tridimensional del mando en vez del movimiento del ratón. También espero conectar un sensor PIR que puede dar algo de juego a las reacciones del robot.

Después de darle la forma inicial a presencebot, me estoy planteando darle una forma más apropiada. No tengo ninguna idea en mente, sólo que es un juguete (aunque no es apto para niños). Una de las formas que me llamó la atención ha sido la luz de noche de ikea para niños:

51515_pe151264_s3

Es una forma bastante suave, con una luz tenue, que me recuerda a nabaztag. Después de hacer la parte inicial, la evolución de este proyecto cada vez se parece más a nabaztag, así que es lógico que pueda tener una forma parecida.

3025951156_5285794b4c_m

Pero acabo de leer en robots.net una historia sobre unos nuevos robots de peluche. No tienen ninguna funcionalidad robótica, son simples peluches con forma de robot, pero nada más verlos (sobretodo tratándose de una historia en robots.net) parecía que tenían algo más de funcionalidad.

3176868167_f9cded9d1b

Así que una opción para darle un cuerpo a presencebot es comprar un peluche o un juguete de plástico y rellenarlo con la forma actual. Intentaré que tenga expresividad por medio de movimientos simples con los servos que tengo y sobretodo, a imagen de nabaztag y el spöka de ikea, jugar con la iluminación para conseguir nuevas formas de expresión. El objetivo es conseguir un juguete sencillo que tenga capacidad de expresión a pesar de su sencillez y con el tiempo intentar darle algo de personalidad robótica.

¿Como afecta la web2.0 a la robótica?

Primero, conviene aclarar que aunque pienso que web2.0 es un término fundamentalmente comercial, sirve para agrupar a una segunda generación de aplicaciones web que ha surgido después de la burbuja .com. Para mí, la principal característica de estas aplicaciones es que están orientadas al usuario (mejor usabilidad gracias a ajax, aceptán la contribución de los usuarios, facilidad para compartir contenidos por medio de mashups y api's).

Aparentemente no tienen nada que ver, pero creo que a partir de la web2.0 se está generando una nueva generación de aplicaciones (puede que se las llame web3.0, pero seguramente tenga otro nombre más original que venda más). Estas aplicaciones pueden influir en la robótica por medio de un factor técnico importante: la disponibilidad en todas partes de datos útiles para la inteligencia artificial. Algunos de los datos que se me ocurren son: relaciones personales en forma de grafo social (redes sociales), geolocalización (móviles con gps, google maps), actualización de estado e intercambio de micro información (twitter), etc.La disponibilidad de esta información, mejorará la llamada web semántica, que en cierto sentido es la evolución de la inteligencia artificial. Así que si la inteligencia artificial mejora, también deberá hacerlo la robótica.

La conexión a internet de forma inalámbrica (wifi) o móvil (umts y 3g) no es algo nuevo, pero hasta ahora no se ha aprovechado en los dos sentidos. Creo que no es sólo que el robot sea controlable desde internet, que nos muestre su estado y podamos enviarle órdenes. También tiene que producirse un intercambio de información en ambas direcciones, el robot debe tener acceso a nuevos tipos de información de su entorno y debería aprovechar otros recursos e ideas, como por ejemplo la realidad aumentada.

Algunos ejemplos sencillos. Aunque estamos lejos de que las máquinas comprendan la información en la wikipedia, se puede aprovechar la inforamación para enseñarla al usuario que la solicite. El mini experimento llamado presencebot, en el que se usa la información de la presencia on-line (a través de messenger) de su dueño para mostrar estados de ánimo del robot.

En definitiva, una de las ventajas de la web2.0 que es el acceso a la información a través de api's publicadas por http es beneficioso para la robótica y habría que plantearse en el futuro los proyectos robóticos con esa posibilidad, para aumentar la utilidad de la robótica.

Acabo de terminar una página específica para presencebot, dónde dejaré las últimas fotos, vídeos y código fuente según vaya avanzando en este mini proyecto.

La página de presencebot es esta.