Movilidad en JADE

Este enlace no tiene del todo que ver con el tema del blog pero si con la asignatura por la que se empezó.
El contenido de las diapositivas se debe de completar con la información que se encuentra en la wiki de programación JADE, http://programacionjade.wikispaces.com/.
Esta wiki es muy útil para todos los que necesiten iniciarse en la programación en JADE, dispone de ejemplos muy explicativos. Es necesario agradecer a todos los compañeros de este y de otros años que han ayudado a hacerla y mejorarla.



Resumen

A continuación podemos ver el resumen de lo que va de blog hasta ahora para poder presentarlo en clase a nuestros compañeros.

RoboCup, educación e investigación

Cuando empezamos el blog no teníamos pensado incluir más de una entrada dedicada a la RoboCup, pero finalmente han sido cuatro, unas más que otras. Esto se debe a varios motivos: por ejemplo la información acerca de sistemas multiagente para simulación es muy específica, podemos encontrar algunos sistemas multiagente muy concretos, realizados en su mayoría como proyectos de investigación, pero, no nos interesaba hablar de sistemas tan concretos, ¿de que nos valdría explicar de manera técnica esos sistemas si ya lo hace el articulo perfectamente? Otro tipo de información que encontramos es la que habla de implementar sistemas pero sin ejemplos de cómo hacerlo, dando consejos, describiendo la problemática, era quizás, más interesante pero aun así faltaba “algo”. Ese algo lo encontramos al empezar a leer sobre la RoboCup, hay poca información, pero en la que hay, se nota la ilusión de los que participan.

Hemos escrito sobre la RoboCup más que de otros temas porque es una iniciativa que motiva. Por ejemplo, no es lo mismo programar un algoritmo basado en reglas ver cómo funciona por consola, que hacerlo y ver cómo funciona en RoboCode compitiendo con otros robots. Quizás al principio ilusione lo mismo pero cuando se empiezan a hacer las pruebas, como mínimo, es más entretenido. A muchos participantes les motiva que se trate de un juego, una competición, pero realmente lo que están consiguiendo son nuevos algoritmos, mejores algoritmos que benefician a su equipo de fútbol pero también a todas las áreas en las que se puedan reutilizar. Otra muestra de la motivación es que se hayan desarrollado más competiciones, en otros campos (no a todos nos interesa el fútbol), o que incluso haya cabida para las ideas de los más pequeños.

Existen grupos que participan año tras año, que disponen de librerías para que el cambio de miembros no implique un paso atrás, para que siempre se pueda mejorar. El uso de librerías que implementan las funciones básicas (conexión con el servidor, visión…) consigue que las implementaciones del resto de algoritmos mejore gradualmente.

También hemos apreciado que los grupos de la RoboCup no solo evolucionan en miembros y implementaciones, sino que amplían sus objetivos participando en más secciones de la RoboCup e incluso en otras competiciones.

La RoboCup aporta motivación e ilusión, a la hora de desarrollar, investigar, estudiar y enseñar.


La foto se puede encontrar en Picasa en el álbum RoboCup 2009 Graz_BackStage que pertenece a spacemiracle y está bajo licencia Creative Commons.

Conclusiones sobre Microsoft Robotics Studio

Después de probar algo más el entorno y de leer mucho hemos decidido dar nuestras conclusiones sobre si Microsoft Robotics Studio permite o no la programación de sistemas multiagente.

Desgraciadamente el probar a fondo el entorno ha sido imposible en tan poco tiempo, tarea pendiente pues por lo poco que hemos visto parece un entorno entretenido e interesante. Se necesita un nivel alto de desarrollo para poder probar la comunicación, que era lo que más nos interesaba. Por lo que nuestras conclusiones se basaran sobre todo en las lecturas realizadas.

Este entorno permite la programación de robots en distintos lenguajes como pueden ser C#, Visual Basic entre otros. Lo de los lenguajes es porque si se puede desarrollar un algoritmo que permita proactividad y reactividad en esos lenguajes podremos incluir dicho algoritmo en nuestro robot y por lo tanto podrá considerarse un robot proactivo y reactivo. Podemos concluir que este entorno nos permite la creación de robots reactivos y proactivos, puede ser tan simple como que al detectar una colisión con un sensor de presencia cambie el sentido de la marcha.

La comunicación entre los robots de la Robocup es a través de sonidos. Un robot puede oír lo que dice otro, el árbitro y el entrenador, siempre que este a menos de una distancia determinada. Por lo que si el entorno permite el uso de sensores de sonido la comunicación puede darse. Microsoft Robotics Studio nos permite incluir distintos sensores a nuestro robot, por ejemplo el Lego Mindstorm dispone de un sensor de sonido (que mide decibelios), el Nao de Aldebaran Robotics dispone de un sensor de sonido que puede reconocer la voz, también dispone de conexión wifi por lo que ya podríamos considerar la comunicación a otros niveles. Microsoft también nos proporciona el Speech SDK. Mediante el cual podemos hacer que nuestros programas reconozcan órdenes así como que nos respondan hablando, necesitaremos crear una gramática para determinar que mensajes se van a reconocer.

Teníamos desde un principio reactividad y proactividad dadas por la pericia del programador, y tenemos también comunicación ya sea emitir un sonido en unos decibelios adecuados, más complejo como palabras de una gramática o mediante paquetes a través de una conexión wifi. El entorno integra diferentes funcionalidades y da distintas facilidades al programador, el hecho de que nuestro sistema sea un sistema multiagente o no, dependerá de nuestra pericia e ideas a la hora de programar.

Presentación de Microsoft Robotics Studio

En el último post hablamos de las competiciones que componen la RoboCup y descubrimos que Microsoft nos facilita un entorno de desarrollo que se utiliza en dichas competición. Este entorno es el Microsoft Robotics Studio.

Ahora nos toca averiguar si realmente este entorno tiene algo que ver con el desarrollo de sistemas multiagente. Por lo que hablamos anteriormente podemos deducir que los robots simulados pueden cumplir las características de un agente (reactivo, proactivo y sociable), sin necesidad de cumplir ningún estándar. Intentaremos probarlo con una pequeña implementación. Pero primero presentaremos el entorno.

Microsoft Robotics Studio es un entorno basado en Windows para el control y la simulación de procesos robóticos. Permite escribir rutinas software que controlan el comportamiento del robot. Se puede utilizar con muchas plataformas robóticas, lo más común es que tan solo se necesite instalar el hardware y sus drivers. Podremos interactuar con el robot mediante lenguajes de la plataforma .NET o mediante interfaces web.

Microsoft Robotics Studio no solo nos facilita la programación de robots, sino que dispone también de un simulador 3D que permite simular lo que haría un robot con tu programa. Dispone de dos paquetes adicionales para simular competiciones de sumo y fútbol.

Hasta ahora parece que estamos publicitando Microsoft. Aun no lo hemos probado a fondo pero las primeras impresiones han sido muy buenas.

Hemos instalado la edición Express pues no disponemos de licencia de la edición Standard, y para una prueba puntual consideramos que no merece la pena adquirirla.

La instalación es sencilla y disponemos de un tutorial y ejemplos que podemos seguir en la web de Microsoft. El entorno de pruebas 3D es muy impresionante, podemos grabar movimientos de la cámara para poder apreciar el funcionamiento del robot. Dispone de distintas vistas para poder percibir detalles físicos de los objetos del entorno y el robot, como podemos ver en la imagen.

Por ahora es todo lo que podemos contar, en el siguiente post esperamos poder concretar si lo consideramos un entorno de desarrollo en el que se pueden programar agentes o no.


RoboCup


Quizás por el nombre del post se podría pensar que nos estamos saliendo un poco del tema del blog, pero no es así. Si, en la RoboCup hay robots, pero en la RoboCup también hay simulación y todo ello con agentes.

Hagamos las cosas con un poco de orden, en primer lugar deberíamos describir qué es la RoboCup. Pues la RoboCup es una iniciativa de educación para promover los avances en inteligencia artificial. La primera RoboCup se celebra en 1997 pero la idea surge años antes. El objetivo que se marca la RoboCup es que en el año 2050 se pueda desarrollar un equipo de robots humanoides completamente autónomos que puedan ganar, de acuerdo con las reglas oficiales de la FIFA, contra el ganador de la copa mundial de fútbol. Parece un objetivo imposible, pero si observamos detenidamente la velocidad a la que avanza el desarrollo de sistemas puede ser más que factible.

Lo que realmente nos ha llamado la atención es que la RoboCup ha comenzado como una competición de fútbol pero han surgido otras ideas, más serias (no sé si es el adjetivo adecuado), que se están llevando a cabo en estos momentos y que ya forman parte de la RoboCup. RoboCupJunior una iniciativa educacional para estudiantes jóvenes. RoboCupRescue, su propósito es evaluar estrategias de rescate que den soporte en situaciones de emergencia en una catástrofe simulada. La RoboCupRescue no solo es para agentes software sino también para robots de rescate que compiten en escenarios copiados de desastres reales. Y la RoboCup@Home, en esta no hay simulación, se intenta promover el desarrollo de robots que ayuden a las personas en la vida diaria.

RoboCupSoccer se compone de varias ligas, una de ellas la de simulación y el resto de competición con robots. En un principio la liga de simulación era en 2D pero posteriormente, desde 2005, se le añade la categoría en 3D.

Es importante destacar que cada jugador es un agente autónomo e inteligente que: procesa la información sensorial, evalúa su sistema de control y envía las acciones al simulador (movimiento y comunicación). La información visual se corresponde con la pelota, una serie de marcas que definen el campo y por supuesto los otros jugadores. Que un agente sepa en qué posición se encuentra es algo realmente complicado, los algoritmos para situarse en el campo tan solo guiándose por la marcas que podemos ver o no, es muy difícil. Otro de los aspectos más complicados son los algoritmos de comunicación y coordinación de los distintos agentes, ¿de qué nos vale si todo el equipo corre hacia la pelota? En resumen un jugador tiene debe de tener razonamiento, poder manejar el conocimiento, aprender y razonar. Un equipo debe de tener coordinación grupal, planificación y comunicación.

Es normal que los equipos compitan a varias ligas, por ejemplo si un equipo compite en simulación quiera probar los algoritmos que ha desarrollado con robots para poder experimentar físicamente.

Existen otras competiciones parecidas al a RoboCup, como la RobotStadium en el que se simula una competición con la reglas de la RoboCup. Microsoft tiene su propia competición y ha desarrollado su propio entorno de desarrollo Microsoft Robotics Studio, Microsoft ha sido uno de los grandes patrocinadores de la RoboCup.

RoboCup ha aportado y aporta mucho a la investigación de sistemas multiagente e inteligencia artificial, el desarrollo de nuevos algoritmos, la constante necesidad de mejora son factores que alimentan la investigación. El hecho de que cada vez existan más competiciones, más ligas es un síntoma de que se está evolucionando y de que aún quedan campos en los que explorar.

Simulación de sistemas sociales con agentes

Una de las aplicaciones de la tecnología de agentes es la simulación de fenómenos sociales. La teoría de agentes software facilita el modelado de los aspectos organizativos y de comportamiento de los individuos de una sociedad. Un agente puede representar un individuo en una sociedad, que percibe y reacciona ante los eventos de su entorno de acuerdo a su estado mental, y que interacciona con otros individuos.

Los fenómenos sociales son altamente complejos, pues están constituidos por complejas redes de interacción e interdependencia mutua. La simplificación de los modelos es delicada, pues muchos factores interactúan con el fenómeno que se trata de explicar. También existen tendencias sociales que pueden variar, la población evoluciona demográficamente y esto también tiene repercusiones y modifica el entorno. Todos estos factores contribuyen a que un sistema social sea altamente dinámico y complejo. Por lo tanto difícilmente modelable mediante un sistema tradicional.

Existen distintos sistemas sociales para los que podemos considerar más útiles la simulación basada en agentes, como por ejemplo cuando los modelos matemáticos pueden formularse pero no resolverse o cuando existen problemas para los que se pueden construir modelos pero hay parámetros y configuraciones variables que pueden cambiar de muchas formas. Los modelos basados en agentes pueden esclarecer la estructura de la solución e ilustrar propiedades dinámicas del modelo.

Basándonos en lo anteriormente mencionado podemos concluir que son necesarios amplios conocimientos de sociología para poder modelar un sistema social, pero también son necesarios amplios conocimientos informáticos para hacerlo. Una solución a estos problemas es proporcionar a los sociólogos herramientas para modelar los sistemas mediante agentes software. Por ejemplo el INGENIAS Development Kit (IDK) que facilita el modelado y posteriormente la simulación de sistemas sociales.