Control Robótico inspirado en los principios de la neurociencia José Vicente Berná-Martínez, Francisco Maciá Pérez Departamento de Tecnología Informática y Computación, Universidad de Alicante. San Vicente del Raspeig. España. {jvberna, pmacia}@dtic.ua.es http://www.dtic.ua.es Resumen. En este artículo se presenta un modelo de sistema de control robótico inspirado en el sistema neurorregulador humano que permite aplicar los principios funcionales y organizativos de los sistemas biológicos a los sistemas robóticos. También se justifica y propone las tecnologías idóneas para la implementación de esta propuesta, en concreto los servicios. Para ejemplificar la propuesta se realiza la instanciación del modelo para el control de sistemas robóticos autónomos móviles por entornos abiertos y dinámicos, mostrando la viabilidad tanto del modelo como de las tecnologías escogidas para su implementación. 1. Introducción La robótica es un campo en el que convergen un gran número de factores como la rápida evolución de las tecnologías hardware y software utilizadas, la necesidad de interdisciplinaridad de los desarrolladores, la gran diversidad de tareas y misiones a realizar o los factores sociales, económicos y políticos que la rodean [1]. Estos factores se ven multiplicados por la evolución en el uso de robots, ya que tradicionalmente los robots han sido utilizados en entornos industriales perfectamente controlados, estáticos e ideados especialmente para el desarrollo de la actividad robótica, y en la actualidad la robótica también está siendo ampliamente utilizada para multitud de otras tareas profesionales o personales en entornos dinámicos y abiertos y por usuarios no expertos [2]. Esto implica que el número y heterogeneidad de sistemas robóticos crece constantemente y que al no existir modelos, metodologías, tecnologías, estándares o herramientas homogéneas y ampliamente difundidas, estos sistemas son resueltos en muchas ocasiones de forma ad-hoc, siendo cada vez más distantes entre sí, con incompatibilidades, carentes de interoperabilidad y difíciles de mantener a medio y largo plazo, ya que hardware y software están fuertemente acoplados y las modificaciones o alteraciones de sistemas son costosas y exigen reprogramar parte o la totalidad del sistema [1]. Por tanto es necesario proponer enfoques novedosos que mantengan desacoplados la parte física de la parte lógica en un robot, que permitan la creación rápida y ágil de sistemas robóticos complejos manteniendo su escalabilidad y flexibilidad para la adaptación y mantenimiento, que permitan la interacción de sistemas robóticos con 84 J.V. Berná & F. Maciá entornos reales y con otros sistemas robóticos, y por supuesto, que permitan a los robots exhibir un comportamiento inteligente, entendiendo la inteligencia como el comportamiento que exhibiría un humano al realizar la misma tarea [1], todo ello manteniendo una estructura y filosofía común de todos los elementos que forman un sistema robótico sea cual sea su complejidad [3]. Con este propósito, en este artículo realizamos la propuesta de sistemas de control basándonos en el funcionamiento y organización del sistema neurorregulador humano y su implementación mediante el uso de servicios. La combinación de ambos enfoques nos permite unir las ventajas del control complejo junto con los beneficios software del paradigma de servicios. A continuación, en este trabajo se presentan las siguientes secciones: en la sección 2 se encuentra el estado del arte donde revisaremos varias de las principales propuestas entorno a los sistemas de control bioinspirados y la filosofía principal de funcionamiento y modelado de sistemas biológicos; en la sección 3 realizaremos la propuesta del modelo de sistema de control inspirado en el funcionamiento y organización del sistema neurorregulador humano; en la sección 4 justificamos el paradigma software seleccionado para la implementación; en la sección 5 realizamos la instanciación del modelo para el sistema de control de navegación en robots autónomos móviles; en las sección 6 se muestre el análisis de resultados de las pruebas; por último en la sección 7 se establecen las principales conclusiones y las líneas futuras de trabajo que de este artículo se desprenden. 2. Estado del Arte Un sistema robótico se compone de un sistema físico y un sistema de control. El sistema de control debe actuar sobre la parte física para lograr alcanzar un objetivo, como moverse en un terreno, realizar una soldadura precisa, recolectar objetos o limpiar en una zona determinada. Existe un enorme conjunto de enfoques a la hora de diseñar un sistema de control el cual debe capturar el estado del mundo, decidir qué acción realizar y llevarla a cabo con los recursos físicos de los que dispone. Uno de los enfoques que actualmente está siendo utilizado es el basado o inspirado en la biología, ya que el sistema neurorregulador biológico es un sistema de control de un cuerpo físico mostrando similares circunstancias que un sistema robótico [4] y, sobre todo, porque se persigue que los robots se comporten de forma inteligente, entendiendo inteligencia como un comportamiento similar al humano [5]. Existen dos grandes visiones a la hora de extraer las características del sistema biológico, la visión deliberativa y la visión reactiva. La visión reactiva toma una decisión en función de la interpretación del mundo real que se tiene en cada instante. La visión deliberativa afronta un problema razonando sobre un modelo del mundo, reglas o representaciones del conocimiento antes de afrontar una decisión. En los sistemas de tipo reactivo se aborda el problema mediante un mecanismo de selección de acción (ASM), definido tradicionalmente en etología como el problema de conmutación de comportamiento o selección de acción [6]. En un robot esto implica que varios módulos de comportamiento son implementados y que se selecciona el comportamiento más adecuando según las circunstancias [7]. Este tipo Control Robótico inspirado en los principios de la neurociencia 85 de mecanismos permite un comportamiento emergente oportunista que no está codificado en la lógica de control pero que surge de la interacción de los módulos de comportamiento y los de selección de comportamiento [8]. Este enfoque permite tener en consideración aspectos tan profundos del comportamiento como la ética [9] o aspectos tan prácticos de ingeniería como utilizar técnicas modernas para su implementación en forma de sistema distribuido [10] posibilitando así la escalabilidad y difusión del sistema. Mediante un enfoque cognitivo podemos representar el conocimiento haciendo uso de estructuras, memorias, reglas o modelos. Esta visión ha permitido construir frameworks centrados en la representación del conocimiento como ACT-R [11], Soar [12], Icarus [13] o PRODIGY [14]. Uno de los aspectos centrales en este tipo de sistemas es cómo acceder a cada tipo de información como el estado del entorno, las decisiones, la memoria o el aprendizaje, lo cual caracteriza y diferencia cada propuesta. Otra de las grandes diferencias en cada sistema es como implementa sus habilidades, es decir, si utiliza procesos embebidos que realizan una función o si estas funciones están contenidas en forma de conocimiento que forma parte de los elementos del sistema. Las arquitecturas deliberativas poseen ventajas en entornos predecibles, pero requieren de un modelo preciso del mundo, de las acciones y sus efectos para que los sistemas puedan deliberar y tomar decisiones [14]. Las arquitecturas reactivas son ventajosas en entornos dinámicos e impredecibles, pero requieren del conocimiento necesario para tomar una decisión en cualquier situación y no todas son conocidas durante su diseño [8]. Uniendo ambas posturas existen propuestas hibridas que aprovechan los beneficios de ambas visiones, utilizando para ello arquitecturas de diversas capas que ubican cada funcionalidad a distinto nivel. Por ejemplo, en [15] se presenta una arquitectura hibrida que define 4 niveles: toma de decisión, comportamiento, análisis de comportamientos y comunicaciones hardware. En [16] se presenta una arquitectura estructurada en tres niveles, deliberativo, reactivo y nivel de comunicaciones. O en [17] la arquitectura está dividida en dos grandes capas, la deliberativa responsable de la planificación, y la capa reactiva encargada de ejecutar las acciones planificadas. Cada propuesta establece una división en niveles adecuada a los propósitos del sistema que están resolviendo. Todas estas propuestas dejan patente la idoneidad de buscar mecanismos similares a los biológicos para desarrollar sistemas de control robóticos que buscan un acercamiento al comportamiento humano pero mediante propuestas incompatibles y alejadas entre sí. Además ponen de manifiesto las dos características fundamentales de los sistemas biológicos, la capacidad de deliberación y la capacidad de reacción, llegando a la conclusión de que ambos mecanismos han de integrarse para lograr comportamientos más complejos que requieran de ambas tendencias. Del estudio de las diversas propuestas se desprenden las siguientes características generales sobre los sistemas de control robótico: Las aplicaciones de control deben ser modulares para permitir la reutilización de código y desarrollos rápidos. La lógica de control debe ser independiente del hardware. El hardware proporciona las capacidades pero el software desarrolla las habilidades. 86 J.V. Berná & F. Maciá El soporte para comunicaciones debe proporcionarlo el framework donde se desarrolla la aplicación ocultando los detalles a la inteligencia del robot. Los componentes deben ser capaces de comunicarse asíncronamente transmitiendo valores y no referencias para poder ser distribuidos e independientes. Los componentes deben poder ser enlazados dinámicamente, utilizando aquellos módulos que sean necesarios incluso en tiempo de ejecución. Las técnicas reactivas aprovechan las características del entorno real. Las técnicas deliberativas permiten inferir conocimiento que no se encuentra implícitamente en el entorno. Estos sistemas bioinspirados parten del estudio del comportamiento y de la estructura del sistema nervioso biológico. Centrándonos en el sistema neurorregulador humano se puede describir que el sistema nervioso es una compleja red de estructuras nerviosas que controlan la actividad del organismo. Funcionalmente el sistema nervioso recoge, procesa y transmite señales nerviosas a través de diferentes estructuras con el fin de controlar actividades tanto somáticas como autónomas, es decir, algunas actividades son completamente reactivas y no se posee control sobre ellas, mientras que para otras puede existir un cierto o total razonamiento. A primera vista, las actividades que el sistema nervioso desarrolla pueden parecen contradictorias como la ejercida por el sistema simpático y parasimpático, responsables de la activación o relajación de la actividad interna, pero son en su conjunto las que regulan, por ejemplo, la actividad visceral y del medio interno [18]. El sistema nervioso está constituido por diferentes centros nerviosos repartidos por el todo el organismo. Estos centros producen estados de regulación más o menos complejos. Cada uno de estos centros además posee una actividad propia. Estos estadios de regulación están jerarquizados los unos respecto de los otros. Los centros menos evolucionados se encuentran localizados en la periferia mientras que los centros más integradores se localizan a nivel central. Las funciones reguladoras presentan dos grandes niveles de control: un nivel de regulación intrínseca constituida por centros nerviosos lo suficientemente desarrollados como para organizar una actividad motora de base que permite que los órganos en los que están situados puedan tener una cierta autonomía funciona; y un nivel de organización extrínseca, constituido por estructuras ganglionares y el sistema nervioso central, que permiten organizar una regulación intra o interórganos [19]. El sistema nervioso se ha formado mediante un proceso de evolución que ha durado miles de años en el cual se han ido agregando centros de control al sistema neurorregulador de forma que estos nuevos elementos modulan, controlan, mejoran, inhiben, suprimen o sustituyen las funcionalidades subyacentes [20] [21]. Este desarrollo se realiza de forma incremental, añadiendo elementos al sistema nervioso y especializando áreas nerviosas [22]. Estos nuevos centros de control además se han organizado como nuevas capas del sistema nervioso [23]. Además de los centros nerviosos de control, es sistema neurorregulador también ve afectada sus funciones por el efecto del llamado cerebro hormonal. En la vida real la influencia difusa de éste sistema, llamada neuromodulación, modifica la intensidad y exactitud de las acciones del los centros de control, modificando el comportamiento final del sistema [24]. Control Robótico inspirado en los principios de la neurociencia 87 Es la suma de todas las influencias de las estructuras reguladoras la que desencadena un comportamiento, acción, reacción o estabilización del sistema completo, sin que sea un centro concreto el encargado de producir una acción sino la interacción de todos ellos y la suma de todas sus influencias la que causa el comportamiento global [18]. Además posee una naturaleza distribuida y compleja, donde cada centro lleva a cabo su control de forma autónoma, produciendo un comportamiento emergente resultante de la suma de las acciones de cada uno de los elementos que integran el sistema. Además la actividad de los centros de control pueden ver modificada su actividad debido a la influencias de los neurotransmisores. Para modelar este comportamiento es necesario utilizar paradigmas que nos puedan aportar la suficiente riqueza expresiva para poder reflejar todas las características descritas. Es en este contexto donde el paradigma de agentes ofrece un elevado nivel de abstracción, adecuado para tratar la complejidad del problema [16] [25] [26] [27]. Los sistemas multi-agente proporcionan un marco de trabajo capaz de aportar suficiente capacidad expresiva para abordar el modelado de estos sistemas distribuidos, teniendo en cuenta el comportamiento emergente y la posibilidad de modificar la estructura del modelo según se logren nuevos avances o conocimiento del sistema, ya sea por innovaciones tecnológicas o avances en la investigación. Aunque no existe un acuerdo en cuanto a la definición exacta de agente, sí existe consenso respecto a los elementos diferenciadores a destacar, o al menos, en alguna de las propiedades que debe cumplir [28] [29]: autonomía, debe ser independiente, proactivo y con un conjunto de objetivos; aprendizaje, posibilidad de adaptarse al entorno; razonamiento, puede ser reactivo, proactivo o híbrido; memoria, capacidad de recordar necesaria para aprender y razonar; sociabilidad, debe poder cooperar no sólo con otros agentes; comunicación, capacidad de entenderse con otros agentes, de percibir el entorno y de actuar sobre él; seguridad, garantizar un funcionamiento correcto, evitando interacciones indebidas y reaccionar adecuadamente ante eventos desconocidos. Si observamos estas características, son comunes a las que exhiben los centros de control del sistema nervioso. Además de éstas, puede tener otros atributos como movilidad, modularidad, escalabilidad y veracidad, aunque no son estrictamente necesarios. Nuestro modelo se valdrá de estas propiedades para describir el funcionamiento del sistema neurorregulador humano. 3. Modelado del Sistema Neurorregulador Humano De forma general, el sistema neurorregulador humano está formado por una serie de centros neurorreguladores autónomos situados a lo largo del sistema nervioso. Estos centros de control reciben información desde los elementos de sensorización biológicos (señales aferentes, AS), procesan dicha información produciendo nuevas señales (señales internas, IS) que son retransmitidas a otros centros y tras varios procesamiento similares son producidas señales de respuestas (señales eferentes, ES) que son enviadas a los elementos de actuación [30] [31]. La figura 1 muestra un ejemplo esquemático de este funcionamiento, desde la percepción de nuestro sentido de la vista hasta, por ejemplo, la acción de mover una mano. Cada centro de control realiza una función concreta dentro del sistema y sus señales causan influencias o 88 J.V. Berná & F. Maciá intentos de cambio en el resto del sistema. El control no está centralizado en ninguno de ellos, sino que está distribuido a lo largo de todos los centros de control y la interacción de todos ellos son los que causan las modificaciones del sistema y su interacción con el entorno. c IS AS AS cc cc IS IS cc IS IS cc cc IS IS cc cc ES IS IS cc-centro de control AS-señal aferente ES-señal eferente IS-señal interna Fig. 1. Representación del sistema neurorregulador como un conjunto de centros de control que procesan y retransmiten señales entre ellos. Nuestro modelo va a recoger este funcionamiento mediante un sistema formado por agentes que denominaremos elementos u entidades funcionales (ef) ya que cada una de estas entidades aportará una funcionalidad al sistema, donde cada centro es modelado como un agente independiente que realiza una funcionalidad de igual forma que un centro de control biológico. El modelo propone que el sistema de control robótico, al igual que el neurorregulador humano, está compuesto por un conjunto de centros de control, donde cada uno desarrolla una funcionalidad concreta, y que es la suma de todas estas acciones las que produce un comportamiento emergente complejo Basándonos en el sistema de acción y reacción descrito en [25] podemos describir los elementos que forman un sistema robótico mediante la estructura: (1) SR MS , RRS , MS I RRS Donde SR representa al sistema robótico completo, MS define al sistema mecánico, RRS al sistema regulador robótico compuesto por todas las entidades funcionales y MS IRRS representa la interfaz entre ambos sistemas, básicamente el complejo sistema de conexiones y señales aferentes, internas y eferentes. La interfaz se define mediante la estructura: MS (2) I RRS , , Donde Σ representa el conjunto de estados posibles del sistema. Γ identifica el conjunto formado por las posibles intenciones de acciones en el sistema por parte de las entidades funcionales. Como hemos comentado ya, las entidades funcionales no tienen un control completo del sistema y tienen que combinar sus objetivos de forma que el resultado de cada acción es representada como una intención de actuación sobre el sistema. Y finalmente, P es el conjunto de todas las posibles acciones que el sistema regulador robótico puede realizar sobre el sistema mecánico destinadas a modificar su estado. Cada entidad funcional trata de modificar el estado del sistema realizando acciones sobre él. Estas influencias o intentos de acción se define como: (3) 1 , 2 ,..., n Donde cada γi es una lista de pares formados por una señal y su valor, es decir: Control Robótico inspirado en los principios de la neurociencia i sig 1 , val 1 , sig 2 , val 2 ,..., sig Card ( C ) , val Card ( C ) 89 (4) En este caso, el conjunto C se corresponde con la unión de los conjuntos de señales eferentes, aferentes e internas que circulan en el sistema ESASIS. Cuando un centro no desee modificar el sistema, aportará la influencia vacía γ0. Esta influencia actuará como el elemento neutro del conjunto Γ de forma que podrá ser aportada por cualquier ef cuando no se desea modificar el estado del sistema. Para que el estado del sistema en un momento dado cambie a un nuevo estado, es decir, para que evolucione, es imprescindible que las ef que lo componen realicen acciones. Éstas lo logran ejecutando tareas sobre dicho sistema. El conjunto de todas las posibles acciones que pueden ser desempeñadas sobre un determinado sistema puede definirse como la fórmula "(5)" y cada una de las acciones se describe como la fórmula "(6)". (5) p1 , p 2 ,..., p k nombre , pre , post (6) Donde nombre es una expresión de la forma f(x1,x2,…xk) y cada xi es una variable autorizada para aparecer en las fórmulas pre y post. pre/post son conjuntos de fórmulas tipo g(a1,a2,…,an) donde g es un predicado de n variables y cada ai son constantes o variables. pre describe las condiciones que deben verificarse para ejecutar la acción y post se refiere al conjunto de influencias que se producen al ser ejecutadas las acciones. Para nuestro sistema de control robótico definiremos dos acciones ps y p0. (7) s SetSignalV alue() , True (), Value () (8) 0 EmptyTask (), True , 0 En la fórmula “(7)” SetSignalValue() tendrá como entrada una lista τi y como salida los resultados de la fórmula Value(). La fórmula Value() establece el nuevo valor a la señal de cada uno de los pares indicados en la lista τi especificada en la acción. La acción “(8)” define la acción vacía que actuará como elemento neutro respecto al estado del sistema. Esta acción vacía siempre podrá llevarse a cabo y no alterará el estado del sistema ya que proporciona la influencia vacía. Debido a que todos los elementos funcionales del sistema actúan de forma simultánea igual que en el sistema neurorregulador humano, se producirán diferentes influencias a la vez y por tanto definiremos la unión de estas influencias Γ como la función que combina las influencias y aportaciones de los ef. Esta función se encarga de proporcionar un vector de influencias a partir de las influencias que cada elemento proporciona Γ: ΓnΓ. El conjunto de todas las entidades funcionales del sistema robótico constituirá lo que denominaremos el sistema regulador robótico RRS, ya que todas ellas son las encargadas de controlar la actividad física y cognitiva del robot como si del sistema neurorregulador biológico se tratase valiéndose de las señales aferentes y eferentes que posee. Cada elemento funcional recibe una serie de señales aferentes (ASef), estas señales aferentes puede provenir tanto del sistema mecánica MS como de otros elementos funcionales ef, la procesa y retransmite los resultados de nuevo (ESef) hacia otros 90 J.V. Berná & F. Maciá elementos funcionales o el sistema mecánico. El conjunto de todos las entidades funcionales que componen el sistema regulador robótico se define como: (9) RRS ef 1 , ef 2 ,..., ef n Cada ef será representada mediante una arquitectura PDE (percepcióndeliberación-ejecución) a la cual se le incorpora capacidad de memorización para que sea capaz de mantener su estado interno y obtener así un funcionamiento similar al biológico. La figura 2 muestra un representación de la estructura interna de cada elemento funcional. Fig. 2. Representación gráfica de una entidad funcional y los elementos que la componen. La estructura de cada entidad funcional será descrita utilizando la estructura: ef ef , S ef , Percept ef , Mem ef , Decision ef , Exec ef (10) Donde Φef corresponde al conjunto de percepciones; Sef es el conjunto de estados internos; Perceptef proporciona información a la entidad funcional sobre el estado del sistema; Memef dota a la entidad funcional con la capacidad de ser consciente de su propio estado; Decisionef selecciona la siguiente tarea a ejecutar; Execef representa la intención que tiene la entidad funcional de actuar sobre el sistema. Para una entidad funcional, la percepción representa la capacidad de clasificar y distinguir estados del sistema que regula, aquella información que a él le interesa. La percepción se define como una función que asocia un conjunto de valores, llamados percepciones o estímulos, con un conjunto de estados del sistema Perceptef:ef, por lo que la percepción está asociada con los posibles estados del sistema y se expresa como =Percept(σ). El conjunto de posibles percepciones asociadas con un determinado ef se define como Φef=<1, 2,…,n>, donde cada i está compuesto por una lista de pares (señal,valorSeñal) igual que se definió anteriormente, y por extensión también se define la percepción vacía 0 como una lista de pares nula que se producirá cuando un elemento funcional no sea destino de ninguna señal aferente u origen de una eferente. El conjunto de señales eferentes a una entidad funcional será el conjunto de todas las señales producidas hacia el sistema, es decir ASIS. Cada entidad funcional tiene un estado interno que puede recordar, lo que le permite comportamientos más complejos. El conjunto de estados internos de una determinada entidad funcional se define como Sef=〈s1,s2,…,sn〉. En el caso de nuestro sistema regulador robótico consiste en una lista de pares (señal, valorSeñal) de todas las señales internas de ef. Control Robótico inspirado en los principios de la neurociencia 91 La función de decisión define una tarea según la percepción del estado del sistema, junto con su experiencia en el pasado, determinada por su estado interno Decisionef:ef SefP, por lo que se puede definir que la acción que decide realizar la entidad funcional es p=Decision(,s). Dadas las acciones definidas anteriormente para el sistema, Decisionef puede devolver la acción ps y p0: Decision ef ( , s ) ( SetSignalV alue ( FundD ef ( , s )) (11) si PreD ef ( , s ) True Decision ef ( , s ) p 0 si PreD ef ( , s ) False PreDef(,s) define la precondición que ha de cumplirse para ejecutar SetSignalValue() en función de la percepción y el estado interno PreDef:Φef×SefBoolean, y FunDef(,s) asocia a una percepción y estado interno con la influencia que la entidad funcional ejerce en el sistema FunDef:efSefΓ. La función de memorización asocia un estado interno de la entidad funcional con su actual percepción del entorno y su experiencia pasada Memef:efSefSef. La función de memorización al igual que la de decisión actúa cuando se cumple una precondición por lo que Memef(,s)=FunMef(,s) si se cumple PreMef(,s), y en caso contrario se produce s0, el estado vacio o estado neutro, no actualizándose el estado interno de la entidad funcional. FunMef(,s) asocia un nuevo estado interno con una percepción en un determinado estado interno anterior FunMef:Φef×SefSef. Una vez la entidad funcional ha determinado qué acción tomar, debe ejecutarla. Las acciones sobre el sistema se realizan mediante la función de ejecución definida como Execef:PefΓ, por lo que γef=Execef(p, ef). Teniendo en cuenta las definiciones realizadas hasta ahora, la función Execef queda definida como Execef(p, ef)=post si se cumple pre(ef), en caso contrario se produce la influencia neutra γ0. Por último, el sistema mecánico (MS) se define mediante el conjunto de todos los dispositivos físicos tanto sensores (S) como actuadores (A) que lo forman ASD=〈a1,a2,…,an,s1,s2,…,sm〉 junto con la función de reacción que describe cómo reacciona el sistema robótico frente a las influencias, MS=〈ASD,ReactMS〉. En el caso concreto del sistema robótico no es necesario modelar el comportamiento de la función React ya que la respuesta del sistema robótico la obtenemos directamente del robot ya sea real o simulado y en ella intervienen las propias leyes físicas que lo rigen. Aunque estamos modelando el sistema de control, éste debe obtener respuestas del sistema físico que controla y no de un modelo abstracto de robot. De esta forma evitamos modelar mundos de forma parcial, dejando que el sistema interaccione directamente con la realidad que le rodea y no con entidades genéricas. Dado que el sistema persigue mediante la ejecución de acciones transformar el estado del sistema a un nuevo estado, dicha transformación se contemplará como la reacción del sistema ante los intentos de influencia de los distintos elementos, es decir React:Γ. El nuevo estado del sistema puede obtenerse como refleja la función “(12)”: (12) ( t 1) Re act ( t ), 1 , 2 ,..., n La influencia vacía constituye el elemento neutro del operador React. Dado que la ejecución de la acción vacía proporciona la influencia vacía, ésta también puede 92 J.V. Berná & F. Maciá considerarse como el elemento neutro, ya que no causará cambio de estado del sistema. La dinámica del sistema quedaría definida por el nuevo estado del sistema σ(t+1) más el estado interno de todos los centros de control sn(t+1)=Memn(n(t),sn(t)), siendo n(t) la percepción en cada instante de cada centro (Percept(σ(t))). En la figura 3 puede verse una representación gráfica del modelo descrito y su interacción con el sistema físico. Fig. 3. Sistema de control formado por varia ef e interactuando con el sistema mecánico a través de de la unión de todas sus influencias. Nuestro modelo no realiza una división entre actividad reactiva o deliberativa como tampoco la hace el sistema neurorregulador humano. Cada centro desarrolla una actividad que puede ser de un tipo u otro o incluso híbrida. Ésta posibilidad nos la proporciona el paradigma de agentes. Esto permite que el modelo aproveche las ventajas de los enfoques y técnicas en ambos ámbitos. De igual forma el modelo no contempla las comunicaciones como el intercambio de información por valor entre ef, y será el framework seleccionado el responsable de establecer los mecanismos adecuados para ello. También contempla la naturaleza distribuida del sistema biológico y su funcionamiento general: tener centros especializados en cada tarea y que sea la unión de las acciones sencillas las que aporte un comportamiento emergente complejo (Brooks, 1986). 4. Paradigma Software de Implementación Del modelo propuesto se desprenden una serie de requerimientos que condicionan el paradigma software escogido para la implementación. Estos son: Control Robótico inspirado en los principios de la neurociencia 93 4.1 Autonomía Cada uno de los centros de control posee un carácter autónomo, está percibiendo el estado del mundo, o aquella parte del estado del mundo, en el que está interesado. Esta percepción se puede realizar sobre el mundo exterior o sobre el estado de otros centros. Tienen por tanto un carácter autónomo y por tanto el funcionamiento del sistema es asíncrono, ya que cada elemento aportará sus propias influencias que podrán ejercer cambios o no en el mundo o en otros elementos. 4.2 Flexibilidad Nuestro modelo requiere para su implementación de máxima flexibilidad, es decir, poder modificar, añadir o eliminar elementos y sus relaciones tal que nos permita modificar el comportamiento emergente resultante. Igual que ha ocurrido en el sistema nervioso y su evolución a lo largo de los años, cada vez que se añade una nueva funcionalidad, se mejora un comportamiento o cambian los requisitos del sistema, las interconexiones son alteradas, aparecen nuevos centros, algunos centros son desactivados o sus influencias tienen un menor calado. 4.3 Desacoplamiento Este desacoplamiento se ha de producir en dos aspectos. Por un lado permitir el desacoplamiento funcional entre entidades, es decir, el paradigma software ocular los detalles de la capa de comunicaciones entre los elementos, permitiendo establecer relaciones libremente bien definidas y permitir el carácter asíncrono del sistema. Por otro lado también debe permitir la independencia del hardware subyacente, ya sean recursos computaciones o dispositivos de sensorización o actuación. De esta forma un sistema de control podrá ser empleado en un robot sea cual sea su hardware, modificando únicamente los elementos funcionales que lo forman y sus interconexiones. 4.4 Reutilización La plataforma de desarrollo debe permitir reutilizar código. Cada entidad funcional será implementada de forma independiente y después enlazada en un sistema integral, y por tanto, debe permitir poder utilizar los módulos en las aplicaciones que sean susceptibles de ello. 4.5 Interoperabilidad Por la naturaleza distribuida del sistema y las características anteriores, el sistema de comunicaciones debe permitir establecer relaciones entre módulos que puedan estar físicamente ubicados en distintos nodos. De esta forma se permitiría contemplar 94 J.V. Berná & F. Maciá funcionalidades que no hayan sido desarrollados por un mismo grupo, aumentando las posibilidades de aprovechamiento del know how de muchos investigadores. 4.6 Tecnología Concretamente en nuestro trabajo, utilizaremos una Arquitectura Orientada a Servicios (SOA) debido a que los principios de esta arquitectura se alinean perfectamente con los requerimientos demandados por nuestro modelo [32] [33]. Las características que comúnmente se resaltan de los servicios son [32] [33] [34]: ser entidades autónomas y auto-contenidas de grano grueso, abstractas, reusables, duraderas, con contratos perfectamente definidos, interoperables, componibles, débilmente acopladas, descubribles, alineadas con el negocio e interoperables. Es por todo ello que las SOA nos aportan en nuestro modelo conceptual los principios arquitectónicos que nos permiten paliar algunos de los mayores hándicaps que encontramos en robótico como son el fuerte acoplamiento entre los niveles lógicos y físicos o la rigidez de los sistemas ante los cambios o evolución de la robótica. Además, el basarnos en un paradigma tan extendido y estudiado nos permite valernos de la experiencia de la comunidad SOA para extraer soluciones basadas en buenas prácticas y propuestas exitosas. 5. Pruebas y Validación Para la validación de nuestra propuesta hemos implementado varios comportamientos sobre robots autónomos móviles siguiendo el modelo propuesto. El proceso de implementación consiste en descomponer los comportamientos deseados en las tareas fundamentales que se han de realizar y describir cada una de ellas haciendo uso del modelo, caracterizando cada una de las funciones que lo componen y las relaciones entre ellos, determinando las señales aferentes y eferentes de cada entidad funcional. Los sistemas móviles son de especial interés cuando son tratados en entornos abiertos y dinámicos, precisamente porque en dichos entornos la cantidad, calidad y exactitud de información a la que se verán sometidos los sistemas de control es incierta, además de no poder contemplar todas las posibles situaciones y circunstancias en las que el robot puede verse inmerso y por lo tanto no se pueden desarrollar modelos completos del mundo para que el sistema de control sea capaz de ofrecer una respuesta ante cualquier estímulo. Otros de los motivos para abordar este tipo de sistemas es que pueden ser altamente variables, es decir, pueden utilizar distintos sistemas motrices (patas, ruedas, cadenas) distintos sistemas sensoriales, múltiples algoritmos para estimación de posición, cálculo de rutas, etc., lo que implica que pueden variar las fuentes de información y por tanto se requiere de una gran flexibilidad y adaptabilidad del sistema. También es posible alterar los comportamientos deseados, como el desplazamiento a través del entorno, búsqueda de objetivos, evasión de obstáculos y peligros, etc., lo que implica que intervienen un mayor o menor número tareas. En nuestro trabajo hemos abordado dos comportamientos: Comportamiento1 (B1) - el desplazamiento por el entorno desde un punto de origen hasta un punto de destino, y Comportamiento2 (B2) – el desplazamiento por el entorno con la evasión Control Robótico inspirado en los principios de la neurociencia 95 de obstáculos. Como veremos, dada las características del modelo, B2 será implementado mediante la incorporación de nuevos elementos sobre B1. Para nuestro sistema hemos contemplado un robot genérico dotado de dos actuadores (rueda derecha y rueda izquierda) de los cuales podemos obtener la posición actual de la rueda (sensor codificador de eje), una brújula digital que indica la dirección actual y un sensor frontal para la detección de obstáculos (fig. 4-a). En el análisis funcional del comportamiento hemos dividido cada una de las tareas del robot en una entidad funcional, independizando y desacoplando cada terea de las demás ya que cada entidad será ejecutada de forma independiente. El análisis de C1 produce los siguiente elementos (fig. 4-b): Sensorización, entidad encargada de monitorizar los dispositivos sensores; Interpretación, entidad responsable de traducir los valores obtenidos por la sensorización a datos consistentes (por ejemplo números flotantes a números con dos decimales); Situación, elemento encargado de utilizar los datos de la interpretación para obtener una estimación de la posición del robot (en este caso posición en el entorno, pero podrían ser ostras estimaciones como la posición de un brazo robótico o posicionamiento relativo); Razonador, elemento encargado de determinar cuál es la misión a desempeñar, en este caso dirigir al robot desde el punto A hasta el punto B; Planificador, entidad responsable de planificar la ruta del robot; Movimiento, entidad responsable de obtener en función de la planificación, cuál es el siguiente movimiento a realizar por el robot; Personificación, responsable de transformar el tipo de movimiento en función de los estructura física del robot (por ejemplo, avanzar se transformaría en mover las dos ruedas hacia adelante); Actuador, elemento encargados de adaptar y transmitir ordenes a los dispositivos actuadores. Fig. 4. a) Esquema del robot utilizado para pruebas. b) ef que componen el comportamiento B1. c) ef que componen el comportamiento B2 resaltando aquellos elementos añadidos. El análisis del comportamiento B2 incorpora sobre los ef de B1 los ef que aparecen destacados en las fig. 4-c.: elementos Sensorización para el control para el sensor de distancia, elementos Interpretación de esta sensorización, un nuevo elemento llamado Restricción responsable de calcular donde se encuentra el obstáculo en función de los 96 J.V. Berná & F. Maciá datos interpretados del sensor, y un nuevo elemento Planificador que modifica la planificación del sistema B1 (que no tiene en cuenta obstáculos) evadiendo los posibles obstáculos encontrados por el ef de Restricción. Cada uno de los ef que forma el sistema de control desarrolla funciones concretas, sencillas y desacopladas de otras funciones, por ejemplo, Situacion estima la posición actual utilizando técnicas de odometría, Interpretación traducen codificadores de eje a distancias recorridas en función del diámetro de las ruedas, etc. Separar cada una de las funciones del sistema en un ef añade la propiedad de que al modificarse una característica, por ejemplo el diámetro de una rueda, esta modificación solo produzca cambios en los menos elementos posibles, manteniendo la independencia del resto del sistema, y además que para construir nuevos sistemas podamos reutilizar los elementos existentes facilitando así un desarrollo rápido y de bajo coste. Las técnicas escogidas para implementar cada funcionalidad son sencillas, aunque puede utilizarse cualquier otro algoritmo. a) Target b) Target Fig. 5. a) Imagen del robot simulado ejecutando B2. b) Imagen del robot Lego ejecutando B2. La implementación de cada entidad se ha realizado utilizando la plataforma Microsoft Robotics Developer Studio (MRDS) ya que provee un entorno de desarrollo integrado .NET para el diseño, ejecución y depuración de aplicaciones robóticas escalables, concurrentes y distribuidas, además de facilitar características como la coordinación de servicios, monitorización, configuración, despliegue y reutilización (Johns & Taylor, 2008). Esta plataforma nos permite implementar cada entidad funcional en forma de servicio con un bajo acoplamiento y un comportamiento similar al expresado en el modelo. Además también posee un buen entorno para la composición de aplicación indicando que servicios formarán parte de sistema y como se interconectan entre ellos. Para las pruebas hemos utilizado el simulador de MRS y robots Lego, precisamente porque tratamos de mostrar la capacidad de adaptación de los sistemas de control a cualquier tipo de robot, aunque sus dispositivos no sean los más eficientes. En la figura 5 se puede apreciar una vista del robot simulado a) y el robot Lego b) ejecutando el comportamiento B2. Tanto para un sistema como el otro, Control Robótico inspirado en los principios de la neurociencia 97 ambos se comportan como describe B2 ya que el control es independiente de la parte física. 6. Resultados Tras la implementación de los servicios y la composición del sistema de control, podemos observar como el robot, tanto real como simulado, es capaz de llevar a cabo los comportamientos descritos. Si el sistema utiliza los servicios de B2, además este desplazamiento se produce evitando los posibles obstáculos en la trayectoria. Pasar de B1 a B2 solo implica añadir más servicios al sistema sin modificar ninguno de los anteriores, lo cual solo afecta a la composición de la aplicación de control utilizando uno u otros servicios. Esta modificación se realiza fácilmente en MRDS, ya que la composición de servicios simplemente implica indicar que servicios van a arrancarse y como se interconectan entre ellos. Pasar del robot simulado al robot real solo implica modificar los servicios de sensorización y actuación, conectándolo a un dispositivo simulado o a un dispositivo real, permaneciendo el resto del sistema de control constante. Además la implementación del control utilizando diversos dispositivos es muy sencilla, pues el servicio de sensorización básicamente no cambia y solo hay que establecer la conexión con el driver adecuado para acceder a un sensor de ultrasonidos, un sensor láser o un sensor de contacto. Igualmente podemos utilizar distintas ruedas para el desplazamiento sin que afecte al resto de elementos del sistema, solo modificando el cálculo de distancias recorridas en función del diámetro de las ruedas. Esto permite un total desacoplamiento entre hardware y software, y entre los propios elementos software. El sistema tiene la particularidad de que cada elemento opera a la frecuencia que su propia funcionalidad requiere. Por ejemplo, los servicios encargados de monitorizar los codificadores de eje de cada rueda utilizan ciclos de 50ms para obtener el estado del codificador. Estos datos se transfieren a los servicios superiores pero si dicha información no implica cambios (por ejemplo, el robot no se ha movido), los servicios de Situación o Planificación no producirán nuevos resultados. Igualmente, el servicio de Razonamiento arranca el sistema cuando la posición actual y la deseada no son iguales (no se ha alcanzado el destino) pero durante la ejecución, mientras que la posición de destino no se altere, no emitirá más ordenes hacia los servicios de Planificación hasta que no se alcance el destino y detenga las acciones o se especifique un nuevo punto de destino (figura 6). Cada servicio es independiente, utiliza su propia frecuencia de trabajo, su ejecución puede influir o no en el resto del sistema y el funcionamiento es completamente asíncrono, utilizando el paso de mensajes entre cada servicio. En la gráfica de la figura 6 podemos observar la actividad del robot cuando está en reposo, se le indica que debe alcanzar un objetivo OB1, lo alcanza y vuelve a estar en reposo, se le vuelve a indicar otro objetivo OB2, y lo alcanza de nuevo y queda en reposo. Los estados de reposo indican cuando el robot está quieto, o bien porque no se le ha indicado un objetivo o porque ya lo ha alcanzado. Las fases de "OB1" y "OB2" indican cuando el robot está buscando una posición de destino. Los resultados muestran como los servicios que mantienen contacto más directo con las capas 98 J.V. Berná & F. Maciá hardware, como los de sensorización mantienen una actividad intensa, aunque no se esté produciendo movimiento, ya que estos servicios son autónomos y proactivos, su misión es obtener constantemente el estado de los sensores, en este caso codificadores de eje de cada rueda. También se muestra como los servicios de actuación no entran en funcionamiento hasta que no existe una objetivo. También se puede apreciar como la actividad es menor cuanto más se alejan los servicios de la capa física, es el caso del servicio de Razonamiento. Este servicio solo actúa para iniciar el sistema cuando se busca un objetivo y para pararlo una vez alcanzado. Este efecto es el consiguiente al tratarse de una arquitectura híbrida, donde los servicios que están en contacto con la capa hardware implementan una lógica más reactiva, mientras que los servicios destinados a la planificación, razonamiento o situación, implementan una lógica más de tipo cognitivo (razonando sobre la situación actual aportada por los servicios inferiores antes de emitir una influencia). Otra particularidad es que al tratarse de servicios cada uno de ellos puede ubicarse, en un caso extremo, en un nodo distinto de red. Esto permite que los servicios con mayor carga de procesamiento puedan residir en computadoras con mayores recursos, mientras que los servicios de sensorización o actuación, que prácticamente reciben y emiten señales desde y hacia los dispositivos físicos puedan residir en dispositivos embebidos ubicados en el propio hardware o muy cercano a éste. ST Target 1 ST Target 2 Re 0 Cognitivo ST Pl Mo Si 10 5 0 Em Inc Inl 10 Reactivo 5 0 10 5 0 ST - Standby, robot espera un nuevo objetivo Inr Acl Acr Sec Sel Ser Target 1/2 - robot moviéndose hacia objetivo Fig. 6. Grafica que muestra la actividad de cada centro durante el comportamiento B1. La actividad se mide en número de mensajes emitidos por segundo. Se muestre la actividad durante las búsqueda de dos objetivos. Aunque por simplicidad no se muestran otras gráficas, los resultados obtenidos para B2, tanto en el simulador como robots reales siguen los mismos patrones de Control Robótico inspirado en los principios de la neurociencia 99 comportamientos que el mostrado en la figura 6, permitiendo al robot realizar desplazamientos a través de terrenos desconocidos con total soltura y con la única información que es capaz de percibir sus sensores. Comparando este sistema con otros basados en selección de acción, nuestra propuesta presenta la ventaja de que no es necesario tener un conocimiento expreso de la situación para discernir sobre que comportamiento es necesario seleccionar, ya que todos los comportamiento están en ejecución a la vez y es el resultado de todas las acciones lo que lleva al cumplimiento de la misión. Respecto a otros esquemas deliberativos presenta la ventaja de no requerir complicados modelos del mundo o procesos complejos para inferir conocimiento, ya que es suficiente con identificar cuáles son las tareas que se realizan y ubicar cada una de ellas en un servicio. Tampoco necesitamos estar considerando para ello el sistema completo, solo hay que conocer para cada servicio, de donde provienen sus señales aferentes y hacia donde se encaminan sus señales eferentes. 7. Conclusiones En este trabajo se ha razonado sobre la idoneidad de buscar enfoques basados en la biología para diseñar sistemas de control robótico que permitan asimilar el comportamiento de los sistemas robóticos a los de los seres humanos. Además de la necesidad de que estos sistemas puedan ser implementados mediante paradigmas y tecnologías que faciliten los ciclos de desarrollo, despliegue y mantenimiento mediante propiedades como la reutilización de código, la composición ágil de aplicaciones o la posibilidad de distribuir el sistema sobre diversos nodos en función de los requerimientos hardware de la lógica de control. Hemos propuesto un modelo de sistema de control inspirado en los pilares funcionales del sistema neurorregulador humano, caracterizando los centros de control mediante un marco formal basado en sistemas multi-agente. Tener un modelo formal nos permite poseer un referente común para la construcción de cualquier sistema de control robótico. Este modelo contiene las ventajas de las arquitecturas tanto reactivas como deliberativas pues es un modelo híbrido como el sistema neurorregulador humano. También se ha justificado la necesidad de utilizar un paradigma software que permita implementar las características del modelo, sin añadir nuevas tecnologías o frameworks, aprovechando las ya existentes. En este caso se ha seleccionado los servicios, pues la naturaleza del modelo es distribuida los servicios han demostrado su madurez y capacidad en otros entornos como el e-business, además de adaptarse perfectamente a la estructura de las entidades modeladas. Se ha proporcionado una implementación concreta del modelo para el control de sistemas móviles en entornos abiertos y dinámicos. Esta implementación permite demostrar la viabilidad en la instanciación del modelo, la flexibilidad tanto del modelo como de la tecnología seleccionada para su desarrollo, permitiendo incorporar más o menos centros para modificar el comportamiento o permitiendo variar los dispositivos que son controlados, ya sean virtuales o reales. 100 J.V. Berná & F. Maciá Durante las pruebas, el modelo exhibe las características propias del sistema regulador, donde los centros que permanecen en contacto con los dispositivos físicos mantienen una actividad constante (reactivos), mientras que los centros de control que exhiben funcionalidades más cognitivas solo entran en funcionamiento cuando las circunstancias lo requieren (deliberativo). Este comportamiento asíncrono además de ser una característica de los sistemas biológicos, también es una de las necesidades fundamentales en los sistemas de control robótico. En la actualidad nos encontramos trabajando en dos grandes líneas. Por un lado estamos aumentando el catálogo de servicios disponibles para proporcionar funcionalidad, como el mapeado de entornos, la corrección de error de posicionamiento mediante integración de varias medidas y el reconocimiento de patrones en imágenes. Por otro lado, también estamos investigando sobre la incorporación de técnicas que incorporen la neuromodulación sobre el sistema. Este neuromodulación no modifica una funcionalidad sino que la altera haciéndola prioritaria o secundaria en la actividad del sistema. La neuromodulación exige de la participación de más centros de control que no aportan una funcionalidad en sí, sino que potencian o inhiben a los centros ya participantes del sistema. 8. Referencias. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Bekey, G., Ambrose, R., Kumar, V., Lavery, D., Sanderson, A., Wilcox, B., Yuh, J., Zheng, Y. (2008). Robotics. State of the art and future challenges. Imperial College Press. IFR Statistical Department. (2010). World Robotics: Service Robots 2010. Berná-Martínez, J. V., Maciá-Pérez, F. (2010). Model of Integration and Management for Robotic Functional Components Inspired by the Human Neuroregulatory System. IEEE International Conference on Emerging Technologies and Factory Automation 2010. Bilbao-Spain. Brooks, R. A. (2002). Flesh and machines. How robots will change us. Pantheon. Langley, P., Laird, J. E., Rogers, S. (2009). Cognitive architectures: Research issues and challenges. Cognitive Systems Research, 10-2, pp.141-160. Elsevier. Redgrave, P., Prescott, T.J., Kurney, K. (1999). The basal ganglia: a vertebrate solution to the selection problem?. Neuroscience 89:1009–1023. Arkin, R. C. (1998). Behavior-Based Robotics. The MIT Press. Brooks, R. A, (1986). A robust layered control system for a mobile robot. IEEE Journal of Robotics and Automation, 2(1), 14-23. Arkin, R.C. (2008). Governing lethal behavior: embedding ethics in a hybrid deliberative/reactive robot architecture. Proc. 3rd ACM/IEEE international conference on Human robot interaction. Bullo, F., Cortes, J., Martinez, S. (2009). Distributed Control of Robotic Networks: A Mathematical Approach to Motion Coordination Algorithms. Princeton University Press. Anderson, J. R., Bothell, D., Byrne, N. D., Douglass, S., Lebiere, C., Qin, Y. (2004). An integrated theory of the mind. Psychological Review, 111, 1036–1060. Laird, J. E. (2008). Extending the Soar cognitive architecture. Proc. of the artificial general intelligence conference. Memphis, TN: IOS Press. Langley, P., Messina, E. (2004). Experimental studies of integrated cognitive systems. Proc. of the performance metrics for intelligent systems workshop Control Robótico inspirado en los principios de la neurociencia 101 14. Carbonell, J. G., Knoblock, C. A., Minton, S. (1990). PRODIGY: An integrated architecture for planning and learning. In K. Van Lehn (Ed.), Architectures for intelligence. Hillsdale, NJ: Lawrence Erlbaum. 15. Zhou, T., Fan, X., Yang, S. (2010). Path planning for mobile robots based on hybrid architecture platform. Computer and Information Science, 3(3), pp 117-121. 16. Posadas, J. L., Poza, J. L., Simo, J. E., Benet, G., Blanes, F. (2008). Agent-based distributed architecture for mobile robot control. Engineering Applications of Artificial Intelligence, 21, pp. 805-823. 17. Li, C., Bodkin, B., Lancaster, J. (2009). Programming Khepera II Robot for autonomous navigation and exploration using the hybrid architecture. Proceedings of the 47th Annual Southeast Regional Conference.. 18. Noback, C. R., Strominger, N. L., Demarest, R. J., Ruggiero, D. A. (2005). The Human Nervous System. Structure and Function. Williams & Wilkins. 19. Furness, J. B (2006). The Enteric Nervous System. Blackwell Publishing. 20. Jackson, J. H. (1958). Evolution and dissolution of the nervous system. In J. Taylor (Ed.), Selected writings of John Hughlings Jackson, 2, pp. 45–75. London: Staples Press. (Original work published 1884). 21. Le Doux, J. (1995). The Emotional Brain. Emotion: clues from de brain. Annual Review of Psychology, 46, pp. 209-235. 22. Berntson, G. G., Boysen, S. T., Cacioppo, J. T. (1993). Neurobehavioral organization and the cardinal principle of evaluative bivalence. Annals of the New York Academy of Sciences, 702, 75-102. 23. Gallistel, C. R. (1982). The organization of action: a new synthesis. Psychology Press. 24. Arnold, A. P., Etgen, A. M., Fahrbach, S. E., Rubin, R. T., Pfaff, D. W. (2009). Hormones, Brain and Behavior. Academic Press. 25. Ferber, J. (1999). Multi-Agent Systems. An Introduction to Distributed Artificial Intelligence. Addison-Wesley. 26. Weiss, G. (1999). Multiagent Systems: A Modern Approach to Distributed Artificial Intelligence. The MIT Press. 27. Macia-Perez, F., Garcia-Chamizo, J. M. (2006). Mobile Agent System Framework Suitable for Scalable Networks. Kybernetes. The International Journal of Systems and Cybernetics, 35, 688-688. Emerald. 28. Engström, H., Kummeneje, J. (1997). ABBility: Agent Technology and Process Control. Department of Computer and Systems Science. University of Stockholm. 29. Mas, A. (2005). Agentes Software Y Sistemas Multi-Agente: Conceptos, Arquitecturas y Aplicaciones. Pearson. 30. Garcia-Chamizo, J. M., Macia-Perez, F., Soriano-Paya, A., Ruiz-Fernandez, D. (2003). Simulation of the Neuronal Regulador of the Coger Urinary Tract Using a Multiagent System. LNCS, Springer-Verlag, 2687, 591-598. 31. Ruiz-Fernandez, D., Garcia-Chamizo, J. M., Macia-Perez, F., Soriano-Paya, A. (2004). Modeling the Distributed Control of the Lower Urinary Tract Using a Multiagent System. Lecture Notes in Artificial Intelligence, 3131, 104 -114. 32. Erl, T. (2005). Service-Oriented Architecture (SOA): Concepts, Technology, and Design. Prentice Hall. 33. Marks, E. A., Bell, M. (2006). Service-Oriented Architecture. A planning and Implementation Guide for Business and Technology. Wiley. 34. SOA Reference Model. OASIS. (Online) Available at: http://docs.oasis-open.org/soarm/v1.0/soa-rm.pdf. Septiembre, 2011. 35. Johns, K., Taylor, T. (2008). Professional Microsoft Robotics Developer Studio. Wrox.