SENsysDL: Simulación cooperativa en entornos distribuídos

David Araujo Rodríguez (2004)

Labein
Resumen
El presente trabajo estudia las diferentes soluciones para la implementación de un prototipo de control de simulaciones numéricas multifísica en un entorno distribuido. En el análisis, se estudian algunas posibilidades de simulación cooperativa, así como las herramientas de conexión distribuida de aplicaciones. Finalmente, tomando como referencia una herramienta middleware, una herramienta de simulación comercial, y un simulador desarrollado para su uso aquí, se desarrolla un prototipo de control distribuido de simulaciones, integrando distintas tecnologías.
El título del proyecto es simulación cooperativa en entornos distribuidos. ¿A qué se refiere?
En ocasiones, para obtener los modelos finales multifísica, se deben pasar por distintos simuladores hasta obtener el resultado final. Esto implica que el resultado obtenido de una simulación será a su vez, tras algunas modificaciones, la entrada de la siguiente simulación. Esto no siempre se puede controlar en tiempo real, pues en ocasiones las simulaciones son muy costosas en tiempo. Con ésto estamos introduciendo ya el concepto de entorno distribuido: un ambiente cooperativo en el que equipos dispersos geográficamente actúen como uno solo.
¿Cuáles son las motivaciones de esta aplicación?
En primer lugar, las simulaciones mediante simuladores comerciales requieren el pago de costosas licencias, lo que hace poco aconsejable tener todos los simuladores en todos los equipos en los que se quiera realizar una simulación multifísica.
Atendiendo a ésto, tampoco resulta muy eficiente trasladar físicamente los resultados de una simulación obtenidos en un equipo, al siguiente que intervenga en la simulación. De este modo, se pretende construir un "puente" entre estos simuladores comerciales, de modo que los resultados obtenidos mediante éstos se puedan compartir virtualmente.
Los objetivos que se han marcado para la realización del prototipo se resumen en cinco:
  • Construir una capa distribuída para la aplicación SENsys, de modo que la simulación cooperativa se pueda hacer realmente en un entorno distribuído.
  • Se pretende que el prototipo sirva para múltiples plataformas y usuarios.
  • No debemos restringir el uso del prototipo al entorno distribuido, sino que debe ser posible una utilización local del mismo.
  • Además de recoger los resultados de las simulaciones, el prototipo debe ser capaz de lanzarlas y controlar cuando finalizan.
  • Finalmente, se deberá mostrar una representación gráfica del modelo que esté en curso.

Atendiendo a los objetivos marcados, y tras realizar un estudio de las alternativas que se plantean, se decide utilizar para el desarrollo del prototipo las siguentes tecnologías:
El lenguaje de programación Java, de libre distribución, que permite: multiplataforma y multiusuario. Sin instalación. Interactuar con el código que se desarrolle en C o C++, gracias a la tecnología JNI que incorpora java.sun.com
La herramienta de IONA ORBacus, adquirible tras un periodo de evaluación, pero disponible de forma gratuita para Java gracias a una serie de librerías jar www.orbacus.com
La librería gráfica JGL, de libre distribución, que permite trabajar con gráficos de una forma muy similar a OpenGL, a partir de código en Java. www.cmlab.csie.ntu.edu.tw/~robin/JavaGL
Puesto que las simulaciones numéricas multifísica no facilitan el control en tiempo real, y dado que este proyecto se pretende aprovechar para el proyecto europeo IMAGE, de control de simulaciones aeronáuticas.
Se ha diseñado también un simulador de la variación de la velocidad del viento, controlable en tiempo real, y que se controlará con la propia aplicación, además de proporcionar otra interfaz de conexión ajena al prototipo.
El prototipo se ha desarrollado siguiendo una estructura cliente-servidor, en base a una arquitectura en tres niveles. En el nivel de presentación podemos distinguir dos tipos de interfaces: La interfaz principal, donde además de presentar al usuario todas las operaciones disponibles, se visualizará la representación gráfica de los modelos. Las interfaces de diálogo, fruto de peticiones por parte del cliente a través de la interfaz principal, y que servirán para mantener un feedback con el usuario, recoger y mantener datos e informar al usuario del estado de las operaciones pedidas.
En el nivel de lógica del negocio destacan:

  • El servidor de nombres, servicio proporcionado por la tecnología ORBacus, que permite mantener un puerto seleccionado abierto en el servidor, a través del cual el cliente enviará peticiones a éste.
  • El servidor, alojado en el host en el que se activa el servidor de nombres y encargado de recibir peticiones de clientes y reenviarlas en su caso a los clientes correspondientes.
  • Los clientes, que envían peticiones al servidor como respuesta a peticiones por parte del usuario y reciben a su vez peticiones redireccionadas desde el servidor.

Destaca además la conexión de la arquitectura expuesta con el prototipo SENsys, desarrollado en C++ y compilado como librería de enlace dinámico, gracias a una interface creada en C++ que permite a través de la tecnología Java Native Interface acceder a los métodos de SENsys, tanto en los clientes como en el servidor, dependiendo del modo en el que se trabaje, local o distribuido.
En cuanto al nivel de datos, el prototipo trabaja con tres tipos de ficheros:

  • Ficheros intermedios de SENsys, en los que se almacenan las características del modelo, y que se compartirán entre los clientes y el servidor, además de obtenerse a partir de ellos los datos útiles para la visualización del modelo.
  • Ficheros de configuración, almacenados en el servidor, y que contienen información sobre qué simuladores están disponibles en cada cliente.
  • Por último, el prototipo trabaja con ficheros almacenados en el servidor, que contienen la contraseña de acceso que se contrastará con la proporcionada por cada cliente en su caso, con el fin de autorizar o no las operaciones correspondientes.

El diseño del prototipo conlleva una serie de beneficios a la hora de trabajar con el prototipo.
Todas las utilidades necesarias, a excepción del intérprete de java, están incluidas en el fichero del prototipo, tanto el cliente como el servidor. Esto implica que no se necesita instalación alguna para trabajar con el prototipo en las plataformas que soportan el intérprete de java, ni para trabajar en modo local ni en modo distribuido.
El modo de lanzar tanto servidor de nombres como servidor y clientes es a través de ficheros de configuración, en los que basta modificar correspondientemente la dirección ip y el puerto donde se alojará el servidor. Posteriormente, la ejecución por un lado de cada cliente, y por otro del servidor de nombres y del servidor en este orden, por otro, pondrá el prototipo en funcionamiento.
Por último, el prototipo funciona de modo concurrente, lo cual significa que las peticiones de los clientes al servidor se atienden sin bloquearlo. Además, los clientes no se bloquean mientras controlan una simulación.
Finalmente, podemos concluir:
En cuanto al análisis realizado, por un lado la importancia del manejo y adecuación de resultados parciales dentro de una simulación multifísica resulta trascendente, así como la necesidad de realizar estas adaptaciones de un modo automático aunque interactivo, y distribuido.
Los servicios a los que una aplicación de este tipo debe dar respuesta, se centran en la seguridad y administración de la misma, sin olvidar los servicios no funcionales o de control del conjunto de la aplicación.
Por último, el abanico de soluciones middleware que posibilitan una solución distribuida es enorme, pero clasificable en cuatro grandes grupos, CORBA, HLA, JAVA y Otros. Por tanto, las bases de la arquitectura desarrollada para dar respuesta a esta necesidad descrita se centran en:

  • Proporcionar una capa distribuida a la aplicación encargada de adaptar las colaboraciones entre simuladores.
  • Controlar efectivamente las simulaciones, atendiendo a su inicio y finalización en tiempo real, aun cuando los eventos sean asíncronos.
  • Visualizar las principales características de los modelos en curso.
  • Desarrollar el proyecto de un modo extensible y reutilizable, de forma que sirva para su adecuación a la ingeniería aeronáutica.
  • Contribuir a esta adecuación mediante el desarrollo de un simulador de la variación de la velocidad del viento, controlable tanto por el prototipo como de forma externa a él.

 

 

Herramientas y tecnologías usadas 
Java
IONA ORBacus
librería gráfica JGL
Bibliografía especialmente relevante
-----
Links especialmente relevantes
java.sun.com
www.orbacus.com
www.cmlab.csie.ntu.edu.tw/~robin/JavaGL

 

 

 


web3D-ehu  última revisión: September 05, 2005