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.