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.

No hay comentarios: