lunes, 26 de mayo de 2008

Robots como Sistemas Multiagente

Coordinar los movimientos de un robot con múltiples grados de libertad es un problema que se complica a medida que el número de articulaciones y la complejidad de sus maniobras crecen.

El problema de realizar una maniobra en robots complejos puede enfocarse como un problema de coordinación multi-objetivo. Se modela el problema como un sistema multi-agente, y para una buena solución se usaran técnicas de aprendizaje por refuerzo.


Esquema con las articulaciones de un robot y sus grados de libertad

Se intenta formalizar el concepto de maniobra como un conjunto de movimientos coordinados orientados a la consecución de un objetivo global por medio de objetivos locales, es decir, la coordinación de un sistema multiagente. El movimiento de un solo motor de forma individual en un instante de tiempo no sería una maniobra. Siendo así una maniobra, el movimiento conjunto de todos los motores o actuadores del cuerpo del robot durante un tiempo “suficiente” para lograr un objetivo. Una maniobra global puede estar compuesta de submaniobras siempre y cuando haya un objetivo para cada subconjunto de movimientos.

Esto da lugar a un problema clásico de optimización multiobjetivo con objetivos contrapuestos, es decir, la optimalidad de algunas inclinaciones de partes del cuerpo se contraponen a la optimalidad de otras durante algunos intervalos de tiempo, lo cual las hace competir y bloquearse entre ellas, este fenómeno produce lo que se llama una descoordinación motora que puede traducirse en bloqueo u oscilaciones.

Un ejemplo sería el caso de ponerse en pie partiendo de estar tumbado de espaldas.


Se puede plantear como un problema de coordinación multiagente donde cada parte del cuerpo es un agente que intenta maximizar alguna función local para optimizar una función global y compite por uno o más recursos que son las articulaciones que están directamente relacionadas con él. Entonces el problema es la optimización de una función global mediante la coordinación de un sistema multiagente. Cada agente tiene que colaborar para lograr dicho objetivo global.

Cada parte del cuerpo del robot tiene un vector de orientación asociado. Y el objetivo global se define, entre otras cosas, por una orientación dada en los vectores del robot. Así tendremos un agente por cada uno de los vectores del robot. Que tendrá que calcular su propia orientación a partir del inclinómetro localizado en la espalda del robot. La información que reciben todos los agentes del sistema es la misma, y es el estado de todas las articulaciones del sistema y la orientación del inclinómetro. La manera en la que cada agente actúa sobre las articulaciones del robot determina la dinámica de acción del sistema multiagente.

Tendríamos dos opciones:
1. Cada agente actúa solo sobre sus articulaciones adyacentes intentando maximizar el objetivo global.
2. Cada agente actúa solo sobre sus articulaciones adyacentes intentando maximizar su objetivo local.

De esta forma, sobre cada articulación competirían uno o dos agentes, haciendo más sencilla la política de asignación de recursos. La solución es un sistema multiagente cooperativo donde es necesario aprender la función de coordinación, que es precisamente la que se utilizara para realizar una maniobra en particular.


Cooperación de agentes en la maniobra ponerse en pie.

El tema parece un enfoque interesante sobre los SMA relacionado con los agentes físicos. Esperemos a vosotros también os lo parezca.

Saudos, Bubal