Tesis


- Por fin he terminado la Tesis!! - digo yo.
- y de qué va tu tesis? - me responden.
Y entonces la cosa se pone difícil ... porque, en ocasiones, me explico como un libro cerrado y las más de las veces la explicación de los detalles hace perder la visión general.

De modo que voy a tratar de explicar, de modo informal, de qué va mi Tesis intentando no liarlo mucho.

El trabajo de la Tesis en sí se compone de varias partes:

  • La primera es la idea general que se propone y se defiende, la parte filosófica sobre De qué va la Tesis?
  • La segunda parte, donde se convierte la filosofía en algo más tangible,  La Implementación., -aquí es donde se describen los árboles con detalle, por lo que se puede perder la visión del bosque-
  • La tercera parte es donde la idea se aplica a problemas reales y se estudia su funcionamiento para defender que la idea es buena, son los Casos de Estudio, -de los que se muestran un montón de vídeos-
  • Por último Los Resultados muestran si hay coherencia en los casos de estudio y cómo se comporta el método propuesto ante las distintas situaciones estudiadas.
  • Y la gran pregunta .. ¿y esto para qué sirve?



¿De qué va la Tesis? - Versión Breve


La Tesis plantea describir las ordenes que guían a un robot de modo incluyan información sobre las implicaciones de cada acción en el contexto general.

De este modo se busca mejorar y sistematizar el proceso de la combinación de las diferentes ordenes que guían al robot para permitir el empleo de acciones de mayor complejidad

El estudio realizado se aplica a la navegación coordinada de múltiples robots, primero mediante simulación y luego verificando los resultados en robots reales.




¿De qué va la Tesis? - Un Resumen Completo




La Tesis se centra en la navegación reactiva de robots basada en la integración de comportamientos.

En ella se propone un modo para aportar de forma sistemática un cierto conocimiento del contexto en el que van a ser aplicadas las diferentes instrucciones que guían el comportamiento del robot, de modo que el robot pueda realizar una mejor evaluación de conjunto de su situación y tomar una mejor decisión de cómo combinar las diferentes instrucciones que estén activadas de forma simultánea.

Al poder hacer uso de la información de contexto asociada a cada instrucción, se busca simplificar el trabajo de integración de las diferentes instrucciones por parte del diseñador y permitir centrar el esfuerzo en el diseño de las instrucciones en lugar de en su integración.

A lo largo de la tesis se propone un método para llevar a cabo la descripción de las instrucciones y su contexto asociado así como un método para combinar las diferentes instrucciones, todo ello enfocado a la navegación segura de los robots por un entorno desconocido.
Así mismo se hace un uso original de múltiples campos de potencial virtuales como base para la descripción del mundo para el robot.

La generalidad de la solución se estudia aplicando el método y la misma función de combinación de instrucciones para navegación segura a cuatro escenarios diferentes:
-          Navegación de un solo robot en un entorno con obstáculos.
-          Navegación de varios robots independientes en un entorno con obstáculos.
-          Navegación de varios robots coordinados en un grupo en un escenario con obstáculos
-     Navegación de varios robots sujetos a una estructura de formación –descentralizada, anónima y no rígida– en un entorno con obstáculos.

Como escenario de mayor complejidad, el caso de la navegación de robots en formación es estudiado en profundidad mediante simulación para diferentes formaciones –línea, columna, circulo, cuña y varías formaciones de puntos discretos–,  y diferente número de robots –de 3 a 30–.

Los indicadores estudiados en simulación –evolución de la distancia del robot a la formación, evolución de la dispersión de los robots entorno a la formación y tiempo necesario para alcanzar una formación estable–  son posteriormente estudiados para su validación empleando robots reales en un conjunto de escenarios más restringido –línea, columna, círculo y cuña para formaciones 3 a 6 robots–.

Los resultados obtenidos –validación de las simulaciones y linealidad con el número de robots en los indicadores de formación– indican la distribución de la complejidad del escenario entre los robots que lo integran, la predictibilidad de las soluciones y su posible extrapolación para casos no estudiados.

La línea de trabajo propuesta en esta Tesis queda abierta a un mayor estudio de los posibles contextos contemplados en el proceso de descripción/decisión, la integración o extensión del método propuesto de navegación reactiva con métodos de planificación de trayectorias o de aprendizaje, así como su aplicación en ámbitos de la robótica diferentes a la navegación.




¿De qué va la Tesis? - Al Detalle

Un robot es básicamente una plataforma mecánica con algunos sensores y guiada por un ordenador, donde el ordenador maneja la parte mecánica de una forma que no sea completamente simple y directa. -algo que distinga al robot de una simple puerta automática-

La cosa es que en el fondo, por simple o complicado que sea el programa del ordenador, el robot actúa moviendo sus partes mecánicas.

Como consecuencia, la forma más extendida de darle ordenes a un robot es describirle cómo mover sus diferentes partes mecánicas  -las partes mecánicas que un robot puede mover se llaman actuadores, ya sean motores, altavoces, luces o cualquier otra cosa-.

Existen dos filosofías principales de describirle al robot cómo moverse:

  • La primera es decirle exactamente y en todo momento por dónde debe ir mediante una ecuación matemática única. Esta forma es la más usada, por ejemplo, en los robots industriales. De este modo el robot se mueve exactamente por donde le han dicho, con una precisión pasmosa, pero tiene un precio: con este método el robot es muy poco adaptable. Cuando surge un imprevisto hay dos alternativas: parar el robot y avisar para que alguien/algo le dé un plan nuevo o ignorar el imprevisto y rezar porque no pase nada.
  • La otra filosofía sigue el principio opuesto: le dice al robot cómo debe comportarse/reaccionar ante los diferentes elementos que pueden surgir a su paso. El resultado es un robot que se adapta constantemente, de hecho lo único que hace es adaptarse, y el camino que sigue el robot surge como la concatenación de esas adaptaciones. El precio que se paga por la posibilidad de adaptarse es que no se sabe con precisión y de antemano por dónde se moverá el robot. Y el que el robot alcance su destino depende en gran medida de lo bien hilados que estén el conjunto de comportamientos que se han usado.
En la Tesis se propone una forma de mejorar la segunda filosofia, el usar una colección de comportamientos. 
Porque cuando al robot se le da un conjunto de comportamientos, cada uno orientado a resolver una pequeña parte del total, al final todos esos comportamientos deben ponerse a trabajar al mismo tiempo. Y cuando hay muchas cosas a tener en cuenta, el conjunto de comportamientos se hace más grande/complejo, por tanto hay que ser muy cuidadoso para que al combinarse todo no pasen cosas inesperadas.

Al combinar los comportamientos, el resultado es que muchas veces cuesta más describir cómo deben combinarse los distintos comportamientos utilizados que describir los comportamientos en sí -que suelen ser bastante directos- con el enorme inconveniente de que la descripción de cómo combinar los distintos comportamientos solo sirve para un conjunto concreto de comportamientos y no se puede reutilizar en otro robot con otros comportamientos.

Lo que se propone a lo largo de la Tesis es una forma de expresar los diferentes comportamientos del robot de modo que se simplifique el proceso de combinarlos, hasta el punto de que la descripción de cómo combinar los distintos comportamientos sea -en ciertos aspectos- independiente del conjunto concreto de comportamientos, y por tanto se pueda reutilizar en otro robot similar.


Filosofía, aquí la cosa se vuelve (más) abstracta...

Bien, la forma más normal de decirle a un robot cómo debe moverse es decirle de forma concreta cómo debe poner en marcha sus actuadores -motores-, p.e. "Motor1 al 75%", o, en lugar de decírselo directamente a los actuadores se le dice al control de actuadores, p.e. "dirección: 25º Norte, velocidad 6m/s"., y el control de actuadores pone en marcha los motores, patas, helices o lo que sea para que el robot se desplace en la dirección y velocidad que le han pedido.

Si bien esta forma de darle las ordenes al robot es bastante razonable -porque en el fondo, se le den las vueltas que se le den, el robot al final va a tener que moverse en una dirección concreta a una velocidad concreta-, es mi impresión que esta forma de darle las ordenes al robot es el origen de que luego cueste tanto describir cómo deben combinarse los distintos comportamientos.

Supongamos que estamos en el control de actuadores del robot y nos llegan las diferentes órdenes que da cada uno de los comportamientos -solo la orden, no sabemos más-. 
Primero nos llega una orden que dice: "Dirección 10º, velocidad 5m/s" e inmediatamente después nos llega otra que dice "Dirección 12º, velocidad 4 m/s" .. bueno esta es fácil: ponemos dirección 11º y velocidad 4.5m/s  y los dos quedan más o menos satisfechos...
Al cabo de un rato nos llegan otro par de ordenes: "Dirección 0º, velocidad 5m/s" y al mismo tiempo, de otro comportamiento. llega " Dirección 180º, velocidad 5m/s"  .. hum.. parece que hay que ir a 5m/s pero en que dirección ??? Como son opuestas, ¿frenamos y nos quedamos quietos? o tomamos de nuevo el termino medio y movemos el robot en dirección 90º?... aunque -90º también esta en el termino medio ... 
Es imposible saber qué decisión es la buena sin más información que ésa. 

Aquí es donde normalmente entra la descripción de cómo combinar los distintos comportamientos. Existen dos formas principales para describir cómo mezclar los comportamientos:
  • Una de ellas es establecer prioridades: El comportamiento A tiene preferencia sobre B, de modo que si se da A, se ignora lo que diga B. Es sencillo, es directo pero tiene a convertirse en un espagueti. Cuando se tienen unos cuantos comportamientos se puede convertir en : A tiene preferencia sobre B , siempre que no se de C porque entonces B tiene preferencia sobre A mientras E y D estén por debajo de un cierto valor, pero si E y A están por encima de este valor hay que aplicar H o J, dependiendo del valor de K.
  • La otra forma de combinar comportamientos es darles un cierto valor a cada uno de ellos y promediar: Aplicamos un 25% de A y un 75% de B. De nuevo es sencillo, directo y presenta problemas. Si uno va e el coche y su la padre le dice "hijo, sigue de frente, es más corto", y su madre dice "hijo, ve a la derecha, es más rápido" lo que es seguro es que no hay que ir en diagonal. Por supuesto podemos establecer una función que dé mas preferencia a un comportamiento u otro en función del estado del robot, de los otros comportamientos, etc... pero de nuevo tenemos que describir la combinación de comportamientos es más complejo que los comportamientos en sí y el resultado sólo sería aplicable a un problema concreto.
Volvamos al control de actuadores del robot y planteemos las cosas de otra forma, de la forma que se intenta plantear en la Tesis.
Nos llega una primera orden que dice "Sería recomendable ir en dirección 0º a 5m/s" e inmediatamente la segunda orden diciendo "Sería recomendable ir en dirección 180º a 5m/s, ir en dirección 0º es peligroso".
¿Hay alguna duda de cómo proceder? podemos ir en dirección 180º o en ±90º, pero seguro que no movemos el robot en dirección 0º. Lo más probable es que moviésemos el robot en dirección 180º, porque alguien lo ha recomendado y nadie ha dicho nada en contra -en dirección ±90º no hay nada en contra, pero nadie lo ha recomendado-.
¿Cual es la diferencia entre esta situación en el centro de control y la anterior ? El contexto, las ordenes están acompañadas de un contexto y por tanto hay más información en cada acción, lo que nos facilita decidir el movimiento final del robot.

En la Tesis se defiende que asociando contexto a las acciones -lo que da lugar a varias "AccionConContexto" por cada "AccionPura" del robot-, y haciendo que cada comportamiento pueda definir varias "AccionesConContexto" se simplifica el proceso de combinación de los diferentes comportamientos para obtener la acción final.
De esta forma, la anterior combinación de comportamientos se convierte en combinar acciones de un mismo contexto y despues combinar el resultado de los diferentes contextos.

Este cambio hace que las funciones de combinación ya no dependan de los comportamientos, sino de los contextos, con lo que es posible mantener a los comportamientos independientes entre sí y reutilizar las funciones de combinación de contextos en todos aquellos problemas que , aunque definan distintos comportamientos, se puedan definir mediante el mismo conjunto de contextos.

Puede parecer que aumenta la complejidad inicial porque hay que definir el contexto, pero ese aumento es despreciable con la reducción de complejidad que se consigue al tener un proceso de combinación mucho más simple.
En cierto sentido la información de contexto ya existía pero no se estaba transmitiendo a lo largo de la cadena de decisión, por tanto no se podía emplear.
De alguna forma, esa información de contexto, o al menos una parte de ella, es la que se emplea en la funciones de combinación clasicas descritas arriba, pero al estar imbricada en los comportamientos hacía que la función de combinación de comportamientos solo fuese válida para un conjunto concreto de comportamientos.


En fin, de eso va la tesis... ahora viene el cómo aplicarlo.
(pero ya mañana)





Aplicación a la Navegación

Para la puesta en práctica de todo el conjunto de ideas hacen falta una serie de elementos, siendo los primeros el cómo describir el mundo y el cómo describir los comportamientos de forma que el robot las pueda entender. -Estas dos descripciones van ligadas según como describamos el mundo, así podremos describir los comportamientos, o según como queramos describir los comportamientos y así tendremos que describir el mundo-
Una vez superada esa primera aproximación quedará el cómo mezclar las acciones del mismo tipo y cómo mezclar las de tipos distintos ... pero para eso primero hay que describir el mundo y los comportamientos individuales.


Descripción de los comportamientos


Un comportamiento es básicamente la forma en la que reaccionamos ante una cierta situación, pudiendo ser la situación más o menos completa - un día de viento, un día soleado de viento,  un día de viento en un barco -, la situación,  el detalle de la situación define nuestra acción, pero no siempre es necesario usar todos los elementos de la situación - un jueves 23 de viento - porque unos son relevantes para la acción y otros no.


De modo que para describir los comportamientos se necesita describir la situación y describir la acción que acompaña a dicha situación - la acción, desde ahora, se refiere ahora a la acción con contexto-.


La descripción de la situación es una evaluación de los elementos con los que se describe el mundo, de modo que dejaré el detalle para más adelante, en la descripción del mundo, y por ahora usaré ideas generales para la situación. -Es siempre peligroso fijar antes la descripción del objeto con el que se trabaja, porque limita/coarta la forma en la que se puede trabajar sobre él, sin embargo es tentador, porque fijada la descripción es más sencillo decidir cómo trabajar-.

Primero veamos la descripción de las acciones, que son el núcleo del trabajo, porque es la mezcla de las acciones de cada comportamiento la que se embarulla y por tanto son las que queremos describir de forma que no se embarullen -son las acciones las que llevan ligado el contexto-.

Descripción de las acciones

Para que sean útiles las acciones tienen que poderse definir de una forma simple y directa, si no, la complejidad de la acción en sí nos dificultará el pensar sobre el conjunto de acciones.

Volviendo a la sala de control de robot, las órdenes del tipo "Sería recomendable ir en dirección 0º a 5m/s" o "No ir en dirección 0º, es peligroso" son sencillas y efectivas. La esencia de cada acción es fácil de entender, resulta fácil el mezclar varias del mismo tipo y luego combinar los resultados de los distintos tipos.
Sin embargo, cuanta mayor información se deposita en las acciones -y no se pierde en el proceso- más fácil es tomar una buena decisión final.

Si sólo nos dicen "Sería recomendable ir en dirección 0º a 5m/s" y "No ir en dirección 0º, es peligroso", si bien ya sabemos -gracias a la información de contexto- que no debemos ir en dirección 0º, lo que no sabemos es en qué dirección sí que podemos ir, ¿Valdrá ir en dirección 30º o vale con dirección 1º ?.

Sin complicar mucho las cosas, conservando la visión intuitiva de estas órdenes puede ampliarse su información diciendo : "Sería recomendable ir en dirección 0º a 5m/s, pero cualquier dirección entre -90º y +90º nos acercara al objetivo" y "No ir en dirección 0º, es peligroso, el obstáculo abarca desde -30º a +30º". 
Con ese tipo de órdenes resulta más fácil decidir, la dirección 0º nos acerca al objetivo, pero las otras también nos acercan, aunque menos. Como sabemos que el obstáculo abarca desde -30º a +30º, significa que es viable tomar cualquier dirección entre -90º a -30º y desde +30º hasta -90º. Al final tomaríamos la  dirección que más nos acerque al objetivo y que no sea peligrosa, es decir +30º o -30º; bueno, -35º o +35º por si acaso-.
Ampliando solo un poco más la información contenida en las acciones hemos pasado, de no tener ninguna dirección que supiésemos que era buena, a tener todo un conjunto de direcciones buenas y haber podido elegir la mejor.


Descripción completa de las acciones


Para navegar con los robots, a lo largo de la Tesis, ha sido suficiente con la cantidad de información descrita hasta ahora.
Cada acción con contexto define donde está su máximo y hasta donde alcanza parcialmente la acción. Para su representación formal, matemática -porque el robot es guiado por un ordenador y éste funciona a base de números- cada acción se define mediante una función de campana modificada, donde se especifica lo que miden las cosas, la posición del centro y cuánto mide de ancho el centro. Sólo una cosa más de las ya introducidas se define: cuanto se considera de importante la acción - es más o menos aconsejable -, para luego poder mezclar mejor las diferentes acciones.

Las acciones que se han definido para guiar la navegación de los robots han sido tres : 
  • "Sería bueno ir.." , Elect(), para aquellas direcciones que ayudan a cumplir el objetivo
  • "No ir, es peligroso", Forbid(), para aquellas direcciones en las que hay un riesgo para el robot y por tanto deben evitarse, por muy buenas que sean.
  • "Limitar velocidad", Brake(), para limitar la velocidad en ciertas direcciones, en las que, aun pudiendo ir, es mejor ir despacio.
Y las tres se definen con la zoma de máximo, el tamaño de las colas y lo alto que es el máximo.

Especificación de cada acción



Mezclando acciones del mismo tipo

La diferente naturaleza de los distintos tipos de acción lleva a que la mezcla de las diferentes acciones de un mismo tipo de mezclen de una forma específica.

Así, las acciones del tipo "Sería bueno ir.." son acciones positivas, por tanto se puede mezclar sumándolas, porque al final el valor más alto sera aquel que mas comportamientos prefieran... sería una elección por votación.
Por otro lado, las acciones del tipo "No ir, es peligroso" o "Limitar velocidad" son de carácter restrictivo, de modo que lo mejor es mezclarlas por combinación de modo que predomine la máxima restricción -si un comportamiento define que ir en dirección 20º tiene un 20% de riesgo y otro comportamiento dice que en 20º hay un 80% , el riesgo de 20º en del 80%-


Combinación de acciones positivas Combinación de acciones restrictivas


Al final lo que se tiene es un mapa con las combinaciones de todas las acciones del mismo tipo, por tanto en el caso de la navegación tenemos 3 mapas finales, uno por cada uno de los tipos de acción.




Mezclando acciones de distintos tipos - Decidiendo la dirección final del robot


Una vez se combinan todas las acciones del mismo tipo es el momento de combinar los distintos tipos de acciones. Esto se hace en base a la naturaleza de los tipos de acciones que hemos definido y el objetivo de nuestro problema -navegación-.


En la Tesis esta combinación se hace en varios pasos:
  • El primero es ver que tan buena es cada dirección independiente, este se hace básicamente multiplicando el inverso del mapa de las acciones de peligro con el mapa de las acciones de recomendación. Así cuando una acción indica peligro al 100% en cierta dirección, la recomendación de esa acción sera multiplicada por 0, con lo que esa dirección tendrá un valor de 0.
  • El segundo paso es ver que cantidad de espacio peligroso ha de cruzarse para llegar a una cierta dirección -  los robots empleados son como coches, no pueden moverse en cualquier dirección, tienen que girar, y si hay un obstáculo en el giro, no se puede girar-
  • El tercer paso es combinar lo buena que es cada dirección, con lo peligroso que es llegar hasta ella con lo que cuesta hacer el giro -ante dos direcciones igual de buenas, la más cercana cuesta menos-.
  • Por último se elige la dirección final del robot mirando el mejor valor del tercer paso: la dirección más buena, a la que sea menos peligroso llegar y la que cueste menos alcanzar.


Así tenemos como se van a mezclando las acciones y se toma la decisión final sin siquiera necesitar saber que acciones son ni como se va a describir el mundo. Eso es bueno porque define el primer objetivo: aislar el proceso de decisión del conjunto particular de comportamientos considerados.

Descripción del mundo 

Realmente el mundo se puede describir de muchas formas, siempre y cuando nos dé estimaciones mas o menos buenas de la dirección de los elementos que hay en el mundo y su distancia,  porque es en esos elementos sobre los que vamos a juzgar las situaciones y las acciones asociadas a cada situación. Esto se debe principalmente a la forma que tenemos nosotros de concebir el mundo, como una colección de elementos sobre los que juzgamos casi individualmente.

El problema de juzgar individualmente los distintos objetos del mundo es que según el mundo se hace más rico -tiene mas objetos- el número de juicios que hay que emitir aumenta y por tanto cuesta más juzgarlo.
Sin embargo en un mundo rico, de cara a la navegación, de los muchos elementos que tenemos que juzgar solo unos pocos son realmente importantes para la decisión final.
Un ejemplo: cuando vamos por la autopista, en un momento de tráfico denso realmente solo son importantes los coches inmediatamente a nuestro alrededor y aquellos que se dirigen hacia nosotros, el coche que esta 4 por detras y 2 a la derecha realmente influye poco.

De modo que en un mundo rico tenemos muchos objetos pero solo unos pocos son importantes.
Si valoramos las situaciones y aplicamos las acciones a cada objeto no va a llevar mucho tiempo y solo unas cuantas de esas acciones serán relevantes, el resto podríamos ignorarlas.
Lo ideal en un caso así es agrupar la información de los muchos objetos de forma que usemos un numero limitado de datos en los que destaquen los elementos más importantes.

¿De que depende cuales son los más importantes ? de la aplicación concreta en la que trabajemos.
Eso implica que el agrupar la información de la mejor forma posible depende del arte de quien este construyendo la aplicación.
Sin embargo existen muchas formas de agrupar información, así que podemos emplear alguna de las ya existentes, pero teniendo en cuanta los elementos que necesitamos para las situaciones y acciones.

Campos de potencial

Una de las formas ya existentes de agrupar la información son los campos virtuales de potencial.
Vistos desde fuera, un campo virtual de potencial sería como tirar una manta sobre un montón de objetos.
Las esquinas desaparecen y solo destacan aquellos elementos mas altos del grupo, y si dejamos una canica en un punto cualquiera de la manta, la canica bajara por el camino mas rápido posible -salvo inercias- , lo que implica que la dirección opuesta es el camino más rápido hacia la cumbre y que las perpendiculares son los caminos que no cambian de altura.


Campo virtual de potencial sobre un grupo de objetos


Este método se usa para la navegación de robots, donde los robots son la canica y el objetivo sería un gran peso en alguna parte de la manta, pero así usado presenta algunos problemas.
Sin embargo el principio es válido, los potenciales virtuales y sus gradientes, los campos virtuales, se construyen mediante una función de la distancia de cada objeto al punto en el que se quiere medir el potencial y el campo.

Lo que queremos agrupar es la información de distancia y dirección de cada objeto del mundo de una forma que destaque algunos objetos sobre otros.
Para esto el potencial es un buen punto de partida: si sumamos todos los cuadrados de las distancias, lo  que más contribuirá al resultado serán las distancias de los objetos que estén más lejos, porque el cuadrado de su distancia sera mayor a la hora de sumarlos. Sin embargo si lo que hacemos es sumar el inverso de la distancia los elementos que más destacarán serán los que tenga una distancia menor, porque su inversa es mayor.

He aquí una forma sencilla de agrupar la información de las distancias de los objetos del mundo, destacando cuales están más lejos en un caso y cuales están mas cerca en el otro. Además, tal como se definen los potenciales, la inversa de su gradiente, el campo, apuntará en la dirección donde se encuentra el agrupamiento de objetos con mayor relevancia

Así, usando potenciales y campos virtuales podemos agrupar todos los objetos del mundo en un solo par de datos: la distancia del grupo de interés -objetos lejanos o cercanos según nos convenga- y la dirección en la que se encuentra.

Potenciales múltiples

Una de las cosas que caracterizan a la Tesis es el uso que hace de los campos de potencial. En general, lo común, es agrupar todos los elementos del mundo en un único potencial, que mezcla obstáculos, robots, objetivos, ...  y luego se navega con alguna variante del método de la canica.

Como lo que se pretende en esta Tesis es agrupar la información se ha optado por mantener separados los diferentes tipos de objetos en diferentes campos de potencial. De esta forma los obstáculos solo se mezclan con obstáculos, los robots con robots, etc.
Es más, según interese se puede tener un campo que agrupe los robots para destacar los más cercanos y otro que también agrupe a los robots pero destacando los más lejanos.
Esto se hace porque la función del campo de potencial es agrupar información, y para tomar mejores decisiones es mejor tener la información clasificada según su tipo -exactamente igual que las acciones con su contexto-

Usando múltiples potenciales, la cantidad de información que maneja el método de análisis es limitado y depende únicamente de cuántos potenciales se consideran necesarios para describir el mundo, independientemente del numero de objetos que haya en el mundo. -Así, el número de decisiones que deben tomarse son las mismas si hay 10 que 100 objetos-




Casos de Estudio

Para demostrar que la idea y su implementación son viables para su puesta en practica, he usado como ejemplo de aplicación la navegación de robots, porque es un campo en el que estoy acostumbrado a trabajar y fue en ese campo donde se forjó la idea inicial.


Una parte de la Tesis defiende que mediante el método propuesto es posible reutilizar el proceso de combinación de comportamientos para diferentes problemas, siempre que el problema se pueda definir bajo el mismo contexto, de modo que el método propuesto se ha usado en varios escenarios distintos:
Como los resultados son bastante vistosos, algunas pruebas se han montado en forma de vídeo (cada imagen lleva a un vídeo)



Navegación de un robot ante un obstáculo
Con 3 acciones y 2 campos -obstáculo y objetivo- podemos guiar un robot hacia un objetivo y evitar los obstáculos :

  • Ve hacia en la dirección del objetivo (y las laterales)
  • No vayas hacia el obstáculo cuando esta cerca
  • Ve hacia los lados del obstáculo cuando estés cerca del obstáculo

1 Robot Solo



Navegación de varios robots independientes
Basta con añadir un campo nuevo -otros robots cercanos- y un par de acciones más a las anteriores
  • No vayas hacia los otros robots cuando estén cerca
  • Ve hacia los lados del otro robot cuando este cerca

4 Independientes



Navegación de varios robots como grupo
Aquí añadimos otro campo más -otros robots lejanos = grupo- y tres acciones
  • Ve en la dirección entre el grupo y el objetivo si los dos están al mismo lado
  • Ve en la dirección del objetivo si estas entre el grupo y el objetivo
  • Frena en la dirección del objetivo cuando estés por delante del grupo -espera a que el grupo te alcance-


Grupo vs Pared

Grupo vs Cuña



Navegación de varios robots en formación
Aquí cambiamos el campo del grupo por el de la formación, que en general es un campo que apunta hacia el punto mas cercano de la formación, y son necesarias ya ocho acciones diferentes para la formación además de las anteriores para  esquivar obstáculos y evitar colisiones con otros robots. 
Además el objetivo se ha convertido en la dirección de movimiento -porque ahora es la formación la que va hacia el objetivo, no lo robots individuales-

Las primeras acciones son parecidas a las del grupo, pero solo para cuando el robot está lejos de la formación,
  • Ve en la dirección de movimiento y parcialmente hacia la formación si estas lejos dela formación
  • Frena en la dirección de movimiento cuando estés por delante de la formación -espera a que la formación te alcance-

Para evitar que dos robots se peleen por el mismo hueco en la formación es necesario establecer algún tipo de prioridad, asi que otra acción:
  • Frena un poco cuando estés a la derecha de la formación y tengas otro robot a tu izquierda

Para que aquellos robots que están cerca, o ya dentro de la formación, se ajusten se usan tres acciones
  • Ve en la dirección de movimiento -para alinearse-
  • Frena en la dirección de movimiento cuando si estás por delante de la formación
  • Limita la velocidad a al 80% del máximo -dejando que los robots de fuera alcancen la formación-

Y por ultimo, para que los robots de dentro de la formación faciliten la entrada a los de fuera, un par más de acciones
  • Muevete ligeramente, sin salirte de la formación, hacia el lado opuesto cuando tengas un robot cerca y a un lado
  • Frena ligeramente en la dirección de movimiento, sin salirte de la formación, cuando tengas un robot cerca y por delante 

Este es el caso de estudio que se ha empleado para hacer un análisis en profundidad, por lo tanto se han hecho muchas, muchas simulaciones de formaciones con distinto numero de robots y con distintas formas, sometiendolas a giros, enfrentandolas a obstáculos y haciendo que cambiasen de forma al vuelo.
Todo para ver que sí, que funciona... y aguanta bastante guerra. Aquí dejo unas cuantas de muestra...

Cambios de Formacion
Inicializaciónes:

7 en Circulo
7 en Columna
7 en Fila
7 en Cuña

9 en Diamante
9 en Sonrisa
11 en Circulo
11 en Columna
11 en Linea
11 en Cuña
20 en Circulo
20 en Columna
20 en Fila
20 en Cuña

Giros:

0.01 rad/s
0.05 rad/s
0.1 rad/s
1 rad/s
0.5 rad/s
1 rad/s
1 rad/s

Obstáculos:

Columna vs Pared
Fila vs Pared
Cuña vs Pared
Circulo vs Pared
Columna vs Columna
Fila vs Columna
Circulo vs Columna



Robots reales

Y para demostrar que el método se puede poner en marcha con robots reales, nada como nada como usar el escenario más complejo de los usados en simulación: la navegación en formación.
Así también se puede demostrar que la simulación esta bien hecha, porque los resultados de las pruebas reales encajan dentro de los resultados de las pruebas en simulación.

3 en Circulo
3 en Columna
3 en Fila
3 en Cuña
4 en Circulo
4 en Columna
4 en Fila
4 en Cuña
5 en Circulo
5 en Columna
5 en Fila
5 en Cuña
6 en Circulo
6 en Columna
6 en Fila
6 en Cuña

Porcierto, estos son los robots, diseñados y construidos para la Tesis. Son sencillos y pequeños, unos 11cm de ancho, para que quepan en el espacio que hay para hacer la pruebas.
Están dirigidos desde un ordenador exterior donde se ejecuta el algoritmo del alto nivel, los robots en sí se preocupan principalmente de mantener la velocidad y orientación pedida desde el ordenador.
Para saber la posición y orientación de cada robot se usan las imágenes de las cámaras del techo -las de los vídeos de arriba- combinadas con unos sensores en las ruedas de los robots.






Resultados

En las simulaciones se puede ver que los robots alcanzan sus objetivos sin chocarse y convergen en sus formaciones, pero es necesario un estudio más intensivo de estos resultados par apoder asegurar que sí, que funciona.


Para poder asegurar con un poco mas de rigor que funciona se han repetido la simulaciones y las pruebas reales muchas, muchas, muchas veces -se ha probado el método en cerca de 100000 robots con configuraciones aleatorias-


Los resultados de todas esas pruebas se han comparado para ver si todos presentaban un mismo comportamiento y así poder asegurar que el método funciona, y para ver eso se han estudiado dos elementos principales : la evolución de la distancia de cada robot hacia su formación a lo largo del tiempo y el tiempo necesario para que los robots alcanzasen una formación estable.


En la evolución de la distancia de cada robot a la formación a lo largo del tiempo se ha podido observar que en promedio la distancia evoluciona a lo largo del tiempo como un decaimiento exponencial, independientemente del tipo de formación o del numero de robots en la formación.


En azul la distancia media de los robots a la formación a lo largo del tiempo, en rosa la desviación


Es más, se observa que también la desviación típica de la distancia de los robots a la formación desciende con un decaimiento exponencial.
Esto indica que no solo los robots se acercan, en promedio, a la formación según avanza la simulación,  sino que la dispersión de los robots entorno a la formación se reduce según pasa el tiempo


Como este decaimiento exponencial se observa en todos los casos estudiados, se ajustan los valores decaimiento para poder establecer una pauta, y el resultado es más que agradable.
Se observa que la constante de tiempo de los decaimientos es lineal con el número de robots empleados y solo en menor grado depende del tipo de formación empleada.
Eso significa que se pueden extrapolar resultados: en los casos donde la forma o el número de robots en la formación no se ha probado se puede, hasta cierto punto, establecer cómo va a evolucionar un robot hacia la formación y cuanto tardará en alcanzarla.


Coeficientes de ajuste del decaimiento exponencial para los diferentes casos

En el análisis del segundo factor, el tiempo que tardan los robots en alcanzar una formación estable, se observa un comportamiento similar. En este caso los datos del tipo necesario se agrupan y la media de tiempo necesaria se observa que también depende linealmente con el número de robots y solo en segundo termino con el tipo de formación.
Eso supone de nuevo que podemos establecer, sin haberlo estudiado de antemano, un valor aproximado de cuanto tiempo va a necesitar un grupo de robots en alcanzar cualquier tipo de formación.

Tiempo medio necesario para alcanzar la formación estable en los diferentes casos


Al estudiar los resultados de los robots reales se observa la misma tendencia, hasta el punto de que los coeficientes de ajuste de las pruebas con robots reales se encuentran en la misma región que en el caso de las simulaciones.


Los coeficientes de ajuste de las pruebas experimentales vs. simulaciones


Tanta tendencia lineal, lo que implica es que el método propuesto es capaz de dividir perfectamente  la complejidad de un escenario -que aumenta con el cuadrado de elementos en el escenario- entre los distintos elementos del escenario, resultando así un conjunto de soluciones lineales con el tamaño del escenario.


¿Porqué es esto importante, útil o relevante ? porque el mundo es un lugar complejo y si los robots tienen que moverse por nuestro mundo es necesario que sean capaces de reducir y repartir esa complejidad o sino el problema se volverá rápidamente inmanejable. -Un mundo con 10 elementos tiene una complejidad de orden 100, un mundo con 100 elementos tiene una complejidad de orden 10000, el grado de complejidad enseguida se hace inmanejable -




¿Y esto para que sirve?

La gran pregunta después de todo esto ....

Bueno, principalmente sirve para poder expresar la ordenes de los robots de una forma más sencilla y reducir el trabajo necesario para ajustar la combinación de diferentes comportamientos (que es repetitivo y suele llevar mucho tiempo)

En parte sirve también como forma de reducir la complejidad del mundo desde el punto de vista del robot, la descripción del mundo reduce la información a una cantidad fija.

Además la aplicación propuesta sirve para poder manejar grupos de robot de forma coherente y fácil, como si fuesen una única entidad, de modo que se puede enlazar con otros métodos de guiado.

Eso, así dicho no termina de dar una buena idea ....
Existe el propósito de que en unas décadas un equipo de robots humanoides pueda enfretarse en un partido de futbol a un equipo de jugadores humanos. En esto hay dos retos: conseguir la destreza suficiente en los robots para que se muevan por el campo y dotar a los robot no solo de capacidad de juego individual, sino de capacidad de juego en equipo.
El contenido de esta tesis es una aportación al segundo objetivo porque traduce el "vamos!, arriba, a defender!!" en algo que una máquina puede entender.

De igual modo es una aportación a cualquier sistema robótico que tenga que tomar decisiones y actuar en consecuencia, porque trabajando sobre la información de contexto ayuda a sistematizar el proceso de decisión.

Pero especialmente es un paso para que nosotros, humanos, podamos interaccionar de forma más natural con los robots, pues podemos transmitirles mejor nuestro conocimiento y que así el robot se comporte de una forma que nosotros consideremos natural.


No hay comentarios: