jueves, 29 de mayo de 2008

Se acabó!!

Bueno, se acabó lo que se daba. Aqui os dejamos un resumen de todo lo escrito en este blog...



viernes, 23 de mayo de 2008

Dentro del Simulador

En posts anteriores, comentábamos cómo lanzar el simulador y los tipos de agentes que intervenían. Hoy vamos a ver las partes en que se divide el simulador y cómo se comunican entre sí. También veremos cómo se comunican los agentes y las acciones que pueden realizar.

RoboCupRescue Simulation System

El simulador es un sistema de tiempo real distribuido compuesto por varios módulos. La comunicación entre estos se lleva a cabo a través de una red. Los módulos pueden ejecutarse en distintos ordenadores, distribuyendo de esta manera la carga computacional. Los módulos de que consta son:
  • Sub-simuladores: son varios sub-módulos, cada uno de los cuales simula un desastre concreto. Por ejemplo, existe un módulo dedicado a simular la expansión del fuego por los edificios.
  • RoboCupRescue agents: los agentes se pueden considerar como módulos que se comunican a través de la red con el Kernel. Son los agentes que los desarrolladores deben implementar, como por ejemplo, los equipos de extinción o las ambulancias.
  • Kernel: maneja las comunicaciones entre los módulos y la simulación.
  • Geographical information system (GIS). Provee las condiciones iniciales del espacio de desastre (la ciudad).
  • Viewer o visualizador: nos ofrece una visualización del estado de la ciudad en tiempo real.
En la siguiente figura, sacada del manual del simulador, se aprecian los distintos módulos:


El espacio del desastre se modela mediante orientación a objetos, compuesto por los edificios, las carreteras y los humanos. Cada uno tiene propiedades como su posición, un identificador único, etc. Existen objetos que no se pueden mover (ríos, carreteras, edificios) y objetos de tipo Humanoid (equipos de rescate o civiles).

Agentes de rescate

Los agentes controlan las acciones de los objetos que acabamos de ver. Así, el objeto pasa a ser un objeto controlado: son los civiles, equipos de ambulancia, brigada de incendios, policía, y centros para los tres últimos. Un agente que controla las acciones de un objeto ambulancia se denomina agente ambulancia. Los agentes se denominan por tanto, según el objeto que controlan.
Para tomar decisiones, perciben las circunstancias que les rodean (cognición) mediante la información "visual" que reciben del kernel, deciden la acción que deben tomar según se hayan programado, y lo envían al kernel. Además, los agentes pueden comunicarse entre sí asíncronamente.
Según el tipo de agente que sea, tendrá distintas facultades para su cognición y acciones. Reciben información "visual" mediante la capacidad sentir, e información "auditiva" mediante la capacidad oír. Las acciones que pueden efectuar son mover, rescatar, cargar, descargar, extinguir y despejar. Otras acciones son las capacidades say y tell. En el siguiente cuadro, sacado del How to Develop a RoboCupRescue Agent, se muestran las capacidades de cada tipo de agente:


Por último, los agentes se comunican con el kernel a través de una red mediante un protocolo específico (RCRSS protocol). Este protocolo utiliza a su vez el UDP.

viernes, 16 de mayo de 2008

¿U-la información?

Cuando elegimos la Robocup Rescue como tema del blog de la asignatura, no lo hicimos únicamente por lo interesante del mismo (todos los temas propuestos nos resultaron atrayentes en extremo…), sino porque creíamos que habría suficiente información disponible como para no tener que dedicar mucho tiempo a su búsqueda.

Pero parece ser que esta liga de simulación no es tan popular o importante como pudieramos pensar

La página oficial de la Robocup Rescue es bastante arcaica en cuanto a tecnología, una página estática y no excesivamente trabajada, tan sólo disponible en inglés y donde es complicado buscar información. Básicamente se limita a enlazar las páginas de las competiciones que se van celebrando, por lo general no muy elaboradas, y a mostrar los resultados de las mismas. Es de suponer que un grupo de ingenieros que se pelan con sistemas multiagente para resolver simulaciones de catástrofes, no deberían tener excesivos problemas para hacer una página a la altura de las circunstancias, más organizada y acorde a la importancia de su contenido.

O puede que quizás su contenido no sea tan importante. La Robocup Rescue nació a partir de la Robocup, la competición de robots jugadores de fútbol -un decir, no son Zidanes aunque algo le pegan; ojo al portero haciendo el espagar. Pero no fue una cosa inmediata. Se llevan haciendo ligas de robots futbolistas desde 1993, y no fue hasta el 2001 cuando a alguien se le ocurrió que quizás estaría bien dedicar parte de los esfuerzos a que los robots hiciesen algo útil.

Por otra parte, las ayudas para desplazamiento a las competiciones no siempre se dan. En el 2007 directamente no hubo y en ediciones anteriores o estaban limitadas o no se mencionan, con lo que suponemos tampoco se dieron. En el 2006 desde la organización se informó de que cada equipo dispondría de su propia red WLAN para trabajar, pero se les instó a que cada uno llevase sus propios cables y switches. Esto hace pensar que el presupuesto no es muy allá, ya sea por falta de sponsors o por cualquier otro motivo. El caso es que con la publicidad que hacen con su página no me extraña que esta competición no la conozca demasiada gente, mientras que la Robocup Soccer no hay edición que no salga en algún programa de televisión, ya sea de noticias, zapping o similar.

Por último, y como dato más escalofriante, si buscas Robocup Rescue en Google, sale como sexta entrada este blog (!!!) aparecido hace menos de un mes y con el endiablado ritmo de actualización de un post semanal. Y no descartamos subir más puestos con esta entrada...

viernes, 9 de mayo de 2008

La RoboCup Rescue como Sistema Multiagente

Observando las definiciones de Sistema Multiagente que tenemos de las primeras semanas de clase se hace evidente el porqué la RoboCup Rescue debe ser un SMA.

A continuación mostraremos algunas de las características que tienen los SMA y que la RoboCup Rescue Cumple:

“Conjunto de agentes autónomos, generalmente heterogéneos y potencialmente independientes, que trabajan en común resolviendo un problema…”. En la RoboCup Rescue existen los agentes: bomberos, policías, ambulancias y civiles. Todos estos agentes son:

  • Heterogéneos y potencialmente independientes: realizan tareas distintas
  • Trabajan en común resolviendo un problema: todos los agentes unen sus acciones para resolver un estado de emergencia. Quizás se podría matizar que los agentes civiles forman parte del objetivo de los otros agentes (deben ser rescatados) y no son parte de la solución en sí, pero si forman parte del SMA en cuestión.

“… cada agente tiene información o capacidades incompletas para resolver el problema…”. En la RoboCup Rescue ningún agente tiene la capacidad de resolver el problema por sí solo. Por lo tanto, para que todos los agentes consigan el objetivo común deben:

  • Compartir o comunicar su conocimiento: en la RoboCup Rescue cada agente debe compartir su conocimiento para que sus acciones en conjunto sean más eficientes. Un bombero, por ejemplo, podría “reclutar” a otros bomberos para sofocar un incendio.
  • Tener capacidad de tomar la iniciativa: un agente debe informarse o seguir buscando zonas en las que pueda colaborar, ya sea apagando incendios o rescatando civiles.

Existen otras muchas características de los SMA que se cumplen en la RoboCup Rescue, pero cuando profundicemos un poco más en su funcionamiento quizás volveremos a tocar este tema.

viernes, 2 de mayo de 2008

El Simulador Rescue

Buscando datos sobre la RoboCup-Rescue, nos hemos dado cuenta de la poca información que existe acerca del proyecto y de los programas que utiliza. Pero hablaremos más acerca de ello en otro post.

Lo que vamos a ver hoy es cómo instalar y ejecutar el simulador Rescue Simulator. Lo podéis encontrar en la página de la RoboCup-Rescue, en la sección Sourceforge. Este simulador está formado por los simuladores de civiles, tráfico e incendios, todos ellos conectados por un Kernel; y por los agentes que interpretan el papel de policías, bomberos y ambulancias. Estos agentes son los que se deben implementar para la competición que el jurado evaluará.
Tras bajaros el paquete y descomprimirlo, hay que compilar el kernel y los simuladores. Para ello nos dirigimos al directorio programs y compilamos con make.
Ahora ejecutaremos el simulador. Esto lanzará una plataforma con el kernel y los simuladores en varios terminales, y un visualizador en 2D hecho en java. Bajo el directorio boot, escribimos:
./all.sh
Veremos algo como esto:


Con este comando ejecutaremos el simulador con el mapa que viene por defecto (Kobe). Los mapas están en el directorio map, si queremos cambiarlo solo hay que añadir el nombre del mapa:
./all.sh Foligno
y lanzará el simulador con el mapa Foligno. Vemos que la simulación está compuesta por calles, edificios y círculos de varios colores. Los azules son la policía, los rojos los bomberos y los blancos las ambulancias. Los civiles son los verdes. Un agente tiene puntos de vida, y cuando llegan a cero (es decir, el agente muere) el círculo se vuelve de color negro. Los edificios en llamas pasan del gris al naranja, hasta el negro (totalmente carbonizados).
Por ahora no vemos mucho movimiento en el mapa, pero eso es porque no hemos lanzado los agentes de rescate todavía. En la línea de comandos escribimos:
./sampleagent.sh
y los civiles comenzarán a pedir ayuda. Veremos también como los agentes de rescate se dirigen a sofocar incendios o ayudar a los civiles. Por el momento esto es lo básico para comenzar si queréis hacer algo en la Rescue Agents Competition. Ahora solo queda realizar una buena implementación de los agentes para obtener la mayor puntuación posible.

Hoy hemos visto la plataforma que se utiliza para lanzar los agentes en el simulador Rescue, sus diferentes componentes y las clases de agentes que interactúan en él. En breve comentaremos por qué consideramos esta plataforma un sistema multiagente y la idoneidad de utilizar agentes en el problema que trata.

jueves, 24 de abril de 2008

La RoboCup Rescue y los SMA

Hoy hablaremos sobre qué es la RoboCup-Rescue y su relación con los sistemas multiagente.
El proyecto RoboCup-Rescue surgió con la motivación de mejorar los sistemas de asistencia, rescate, toma de decisiones, evaluación de daños, etc., en situaciones de emergencia o desastre. Sus iniciativas se dividen en dos grupos:
  • El RoboCupRescue Simulation Project. Está subdividido en Virtual Robots, en donde se puede emular el comportamiento de robots reales con ayuda del simulador USARSim; y Agents Simulation, cuyo propósito es simular desastres en un entorno virtual y diseñar agentes inteligentes que deben responder a ellos.
  • Los desafíos para robots en el proyecto Real Robots. Son pruebas para evaluar robots en entornos físicos, con las que se pretende mejorar la investigación en este ámbito y la colaboración entre los desarrolladores.
En este blog nos centraremos en todos los aspectos que toquen los sistemas multiagente. Veremos qué herramientas se utilizan, qué usos se les dan, cómo se desarrollan los agentes en el proyecto, etc. En las siguientes entradas, por tanto, comenzaremos a ver más en profundidad cómo utilizan los sistemas multiagente en la RoboCup-Rescue.

Por último os dejamos un vídeo del German Open, celebrado esta semana para la RoboCup anual, en el que vemos competir a los robots para superar obstáculos y tratar de rescatar a los muñecos que representan las víctimas.



RoboCup-Rescue

jueves, 17 de abril de 2008

Introducción

Bueno muchachada, aquí empieza la andadura de este blog sobre la RoboCup Rescue, una competición nacida a partir de la RoboCup, una liga de equipos de fútbol compuestos por robots, cuyo objetivo es mejorar las labores de rescate en situaciones de desastres urbanos (terremotos, incendios,...), tanto con la utilización de robots como con la planifiación y organización de las labores de rescate.

El blog nace a partir de la asignatura de Sistemas Multiagente de Ingeniería Informática de la ESEI de Ourense. La idea es investigar de qué va la RoboCup Rescue y opinar acerca de ella, y eso es lo que haremos por el bien de nuestro expediente académico.

Nos vemos.


Un robotejo usado en la RoboCup Rescue