Saltar al contenido

Es posible que los robots del futuro no tengan la forma que esperamos, puede que tengan formas y funciones inesperadas. En xkcd me encontré hace unos días una viñeta que lo expresa gráficamente con un poco de humor:

  • Sarah, ven conmigo si quieres vivir! Han envíado un robot asesino para matarte!
  • Esto aqui para salvarte. Puede que no sea tan fuerte y rápido como una máquina pero luchare para mantenerte viva.

La robótica se encontrará con dos tendencias: por un lado es más fácil y natural interactuar con robots de forma humanoide, pero por otra parte ciertos problemas se resuelven mejor con diseños y formas específicos que no son humanoides. Roombas frente a asimos.

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.

1

Un recurso interesante para el control de un robot es el control homeostático. Según la RAE, la definición de homeostasis es:

1. f. Biol. Conjunto de fenómenos de autorregulación, que conducen al mantenimiento de la constancia en la composición y propiedades del medio interno de un organismo.

2. f. Autorregulación de la constancia de las propiedades de otros sistemas influidos por agentes exteriores.

En robótica, significa básicamente mantener una variable dentro de un rango aceptable de valores mediante algún tipo de mecanismo de autocontrol. El ejemplo más sencillo es el control del nivel de las baterías dentro de un rango apropiado. Cuando el robot detecta que el nivel de baterías es demasiado bajo, se disparan los mecanismos apropiados para mantener el nivel de energía. Si nuestro robot es capaz de buscar la estación de recarga, se pondá a buscarla para recargarse, otros robots sin esa capacidad, pueden entrar en un modo de funcionamiento de bajo consumo. Por el contrario, si consigue recargarse y llegar a un nivel alto, entonces abandonará la estación de recarga y continuará con otras tareas, cambiando su comportamiento de acuerdo con el nivel de baterías.

En una arquitectura híbrida reactiva-deliberativa, una forma de implementar un mecanismo homeostático es la activación de los comportamientos adecuados a cada situación. Continuando con el ejemplo de las baterías, si el nivel es muy bajo, se puede activar el comportamiento "buscar estación de recarga". Cuando el nivel se ha restablecido, entonces se pueden activar otros comportamientos adecuados a la misión del robot.

El robot kismet del MIT usa un sistema homeostático en una parte de su sistema emocional. Las emociones están controladas parcialmente por unas motivaciones internas ("drives" en inglés) que funcionan en modo homeostático. Las motivaciones internas (interacción social, estimulación y fatiga) pueden estar en régimen normal, saturado ó insuficiente y de acuerdo con estos niveles, el sistema emocional reacciona con los mecanismos apropiados. Por ejemplo, si la fatiga está saturada, el robot puede activar los sistemas emocionales de enfado ó cansancio. Una descripción más detallada del sistema emocional incluyendo el control homeostático se encuentra en el libro Designing Sociable Robots de Cynthia Breazeal.

El control homeostático se puede anidar en varios niveles. Por ejemplo, un robot que intenta mantener un buen nivel de señal de comunicación con una estación central y que además mantiene un nivel de estrés de falta de comunicación que aumenta con el tiempo. En un primer momento tiene el comportamiento adecuado para mantener el nivel de comunicación. Pero si no consigue restablecer el nivel adecuado, el nivel de estrés aumentará provocando que al final se tomen otro tipo de medidas que pueden ser más arriesgadas, cómo adentrarse en terreno inexplorado, o más conservadoras, cómo quedarse quieto emitiendo una señal de auxilio.

Resumiendo, añadir un control homeostático a un robot es interesante para conseguir que ciertas propiedades vitales (nivel de batería, nivel de señal de comunicación) se mantengan en un nivel apropiado. Pero no sólo se puede usar este tipo de control con propiedades medibles, sino que puede ser interesante establecer el control sobre otras propiedades intangibles que pueden formar parte del control "emocional" de un robot.