Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS EXACTAS Y NATURALES DEPARTAMENTO DE COMPUTACIÓN Ejecución de controladores discretos sintetizados a partir de una especificación de alto nivel para un robot modelo Lego NXT y EV3 Tesis presentada para optar al título de Licenciado en Ciencias de la Computación Julio M. Arro Fritzler Co-Directores: Nicolás D’Ippolito Mariano Cerrutti Buenos Aires, 2014 EJECUCIÓN DE CONTROLADORES DISCRETOS SINTETIZADOS A PARTIR DE UNA ESPECIFICACIÓN DE ALTO NIVEL PARA UN ROBOT MODELO LEGO NXT Y EV3 El objetivo de esta tesis es la implementación de técnicas para la generación e imple- mentación de controladores discretos utilizando como framework de trabajo la herramienta MTSA aplicado en agentes autónomos utilizando como unidad de control versiones de Lego NXT y EV3 que permiten el armado de prototipos de manera simple y sencilla en los cua- les se puede evaluar el comportamiento de controladores sintetizados. Así mismo mostraré cómo es posible cambiar los modelos permitiendo re configurar los controladores de manera automática sin necesidad de incurrir en la re escritura de los mismos. El modelo planteado para cada actor involucrado en el problema, consistirá en máqui- nas con transiciones etiquetadas (LTS) con propiedades descriptas con lógica lineal tem- poral que caracterizan las propiedades de seguridad y liveness SGR(1) sobre dominios con fallas. Se modelará el problema utilizando como prototipo un robot LEGO MINDSTORM NXT y EV3. Este tipo de robots provee numerosas ventajas a la hora de crear prototipos tan- gibles. A lo largo de esta tesis se describirá en detalle la implementación del modelo en el entorno MTSA incluyendo las extensiones desarrolladas sobre la herramienta para dar soporte a la robótica y demostrando la calidad de los controladores utilizados y la adapta- bilidad a cambios de configuración de los sistemas intervinientes abriendo las puertas para futuros desarrollos combinando robótica con técnicas de síntesis de controladores. Palabras claves: Síntesis, Control, Cambio de Configuración, Robot planar, LTS, FLTL. I ENACTMENT OF A DISCRETE CONTROLLER SYNTHETIZED FROM A HIGH LEVEL SPECIFICATION TO BE USED WITH A LEGO NXT Y EV3 ROBOTS pending... Palabras claves: Controller Synthesis, Change of Configuration, Planar Robot, LTS, FLTL. II AGRADECIMIENTOS Esta tesis esta dedicada especialmente a Mercedes, a mis padres, al equipo de LaFHIS y a todos los que me han brindado su apoyo y motivación para poder lograr este objetivo tan anhelado. III Índice general 1.. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Controladores LTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2. Soporte Enactment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3. Presentación de los casos de estudio . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.4. Resumen de contribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.5. Estructura de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.. Fundamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1. El Mundo y la Máquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2. Sistemas de Transición Etiquetados . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3. Lógica Lineal Temporal de Flujos (Fluent Linear Temporal Logic) . . . . . . . 7 3.4. Problemas de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.5. Dominios falibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.6. Procesos de Estados Finitos (FSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.. Herramienta MTSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1. Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2. Análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.. Motivación Extensión MTSA Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2. Enactors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.3. Controller / Scheduller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.4. Framework Enactment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.5. Extensiones – Construcción y registro . . . . . . . . . . . . . . . . . . . . . . . . 22 5.6. Enactors Útiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.. Lego Mindstorm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.2. LEJOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.3. Construcción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.4. Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.5. Implementación driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.5.1. Comunicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.5.2. Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.6. Entorno para pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.7. Robustez – Estadísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.7.1. Medición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.7.2. Escenario de pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.8. Cantidad de operaciones realizadas satisfactoriamente . . . . . . . . . . . . . . 39 6.8.1. Escenario: Luz día . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 IV 6.8.2. Escenario: Tubo fluorescente . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.8.3. Escenario: Luz incandescente . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.8.4. Escenario: Oscuridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.8.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.. Casos de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.1. 1 robot - Ida y vuelta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.2. Evitando caminos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.3. No puede realizar 2 giros a la izquierda . . . . . . . . . . . . . . . . . . . . . . . 48 7.4. Posiciones con recuperación ante falla . . . . . . . . . . . . . . . . . . . . . . . . 50 7.5. 2 robots enemigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.6. Evidencia de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8.. Discusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 1. INTRODUCCIÓN En los últimos años ha surgido una prometedora técnica de producción automática de controladores mediante especificaciones declarativas reemplazando la escritura manual de programas. En la presente tesis utilizaré esta técnica garantizando la seguridad por cons- trucción, la especificación de objetivos de progreso a través de fórmulas fltl sobre dominios falibles y laadaptabilidad a cambios de configuración. La declaración de las propiedades en la construcción de los controladores es expresada en una lógica lineal temporal (LTL). Los modelos basados en eventos han sido creado con éxito en numerosas oportunidades utilizando este subconjunto de lógicas, expresando de manera eficiente las propiedades que se espera sean satisfecha por el sistema. Para la construcción del modelo planteado utilizaremos dos tipos de propiedades prin- cipales, las relacionadas con la seguridad (safety) en las que se espera que una caracterís- tica valga siempre durante la ejecución del sistema y las propiedades relacionadas con el progreso (liveness) que especifican, si se cumple un conjunto de presunciones con infinita frecuencia, debe cumplirse un conjunto de objetivos con infinita frecuencia. A lo largo de la tesis expondré casos de estudios utilizando un agente construido con tecnología Lego que efectuará diversas actividades regido por los controladores sintetizados producto de los mo- delos construidos con la herramienta MTSA. Los controladores conseguidos con ésta técnica podrían ser adecuados para procesos de misión crítica donde pueden expresarse en el dominio de las lógicas temporales lineales, que es descripto con juegos de reactividad generalizada con propiedades de seguridad (SGR(1)) sobre dominios falibles. Como parte del desarrollo y mejora de los sistemas, los cambios de configuración son re- queridos constantemente y al mantenerse de manera declarativa las especificaciones de los controladores, la técnica de producción automática de programas permite realizar los cam- bios en los controladores sin necesidad de realizar la re codificación de forma manual por debajo de la especificación garantizando las propiedades expresadas inicialmente. Adicio- nalmente el refinamiento de las propiedades de progreso y seguridad genera nuevas versio- nes de controladores que satisfacen estas propiedades siempre y cuando los mismos existan. El objetivo de esta tesis es demostrar la aplicabilidad de las técnicas mencionadas en un entorno donde se puede modelar con el robot Lego Mindstorm NXT y EV3, con sus ventajas en la construcción de agentes utilizando este tipo de robots y donde el mismo desarrollará su misión en un ambiente determinado como por ejemplo un edificio, industria, casa, etc. Para esto el agente transitará por un ambiente construido con caminos e intersecciones. Demostraré como se puede reconfigurar los modelos para que el agente pueda evitar de- terminados caminos o solicitar que se asegure transitar otros. Así mismo demostraré cómo puede el modelo interactuar con otros agentes o con mecanismos de reposicionamiento, todo esto con la habilidad de reconfiguración prácticamente automática mediante la generación sistemática de controladores basados en el proceso de síntesis evitando incurrir en la re 1 1. Introducción 2 escritura manual de los mismos. 2. MOTIVACIÓN 2.1. Controladores LTS Los controladores creados a través de la síntesis de modelos basados en juegos del tipo SGR(1) poseen un comportamiento que puede expresarse con una máquina de estados con transiciones etiquetadas, donde el conjunto de transiciones se puede dividir en aquellas que son controlables como son las operaciones o comandos que se envían al robot, y las transi- ciones no controlables como son las señales que se reciben de sensores del robot. A medida que el controlador transita su ejecución es necesario que el mismo no ingrese en estados indeseables. Asegurar que cualquier interacción del controlador con su ambien- te o agentes externos no permita estados indeseados requiere de un análisis profundo en muchos casos analizando las situaciones de error, corrigiéndolos y poniéndolos a prueba aunque sin asegurar que los mismos se vean resueltos en su totalidad. Esta situación se torna aún más crítica si de la ejecución del controlador dependen vidas humanas. Adicionalmente el cambio de requerimientos o aspecto de alguna de las condiciones es- tablecidas pueden provocar un re-trabajo en la construcción del controlador teniendo que volver a analizar y re construir corriendo el riesgo de incorporar nuevos fallos al controla- dor. Analizaré mediante los casos de estudio cómo la herramienta MTSA permite especi- ficar objetivos de progreso y condiciones de seguridad de forma que la síntesis produzca controladores correctos por definición. Mostraré como estos controladores pueden aplicarse directamente en la robótica utilizando como ejemplo robots Lego NXT y EV3 a través de la plataforma de integración “Enactments”. Adicionalmente mostraré como los cambios de en- torno y re definición del modelo puede ser aplicables automáticamente a la re configuración del controlador cambiando rápidamente el comportamiento del robot. 2.2. Soporte Enactment En este trabajo se describirá la extensión desarrollada al entorno de modelado MTSA para que la misma permita la ejecución de controladores sintetizados y que los mismas se puedan comunicar con diversos dispositivos. A lo largo de la tesis mostrare los detalles en la construcción de la extensión, como se incorporan nuevos dispositivos externos a la herra- mienta y el ambiente de ejecución de controladores dentro de la herramienta MTSA. 2.3. Presentación de los casos de estudio Los casos de estudios presentados desarrollan modelos que inician desde un compor- tamiento simple del agente sobre un ambiente específico y luego aplicaré cambios en la configuración del mismo para generar ambientes más sofisticados generando controladores 3 2. Motivación 4 que respondan a las especificaciones dadas. Estos casos de estudios se basarán en activida- des que realizará el agente construido quien se desplazará a través de un mapa que simula una configuración de un ambiente determinado, realizando sus acciones según los compor- tamientos especificados en cada caso. Describiré en los modelos presentados la construcción del modelo y los resultados obtenidos. 2.4. Resumen de contribuciones La principal contribución de esta tesis es mostrar cómo es posible construir controlado- res mediante la síntesis de modelos LTS, poniendo a prueba los mismos en robots y cómo los cambios en alguno de los aspectos del modelo permiten la generación de nuevos contro- ladores de forma automática. Para esto se incluye en las contribuciones de este trabajo el desarrollo del soporte para los robots Lego NXT y EV3 donde los mismos incluye los contro- ladores de bajo nivel, comunicación junto con el análisis de performance y confiabilidad. Así mismo este trabajo incluye el co-desarrollo de la extensión Enactment a la herra- mienta MTSA que sirve como plataforma de ejecución y comunicación entre los controlado- res sintetizados y dispositivos externos. Los casos de estudios presentados pondrán a prueba los controladores sintetizados en un ambiente de ejecución donde permitirán evaluar su comportamiento observando el desem- peño del robot cumpliendo las actividades deseadas y planteando como los cambios de con- figuración las características modeladas pueden ser soportadas por la técnica de síntesis permitiendo la generación automática de nuevos controladores evaluando esta característi- ca deseable. 2.5. Estructura de la tesis La presente tesis contiene la siguiente estructura. En principio se darán las prelimi- nares y fundamentos teóricos. Luego se describirá la extensión “Enactment” desarrollada para la herramienta MTSA. Para poder validar los trabajos realizados se describirá deta- lladamente la construcción de un robot basado en Lego NXT, donde se incluirá los esfuerzos realizados en distintas áreas de la robótica. 3. FUNDAMENTOS 3.1. El Mundo y la Máquina Comenzamos por ofrecer nociones acerca de la visión general de la ingeniería de reque- rimientos. En particular, presento el punto de vista de ingeniería de requerimientos de Zave y Jackson [Jac95a, Jac95b, ZJ97] y de Letier y Van Lamsweerde [vLL00, Lam01]. Ambos puntos de vista están de acuerdo en que la distinción entrelos problemas del Mundo y la so- lución de Máquina es fundamental para comprender si la máquina resuelve correctamente el problema en cuestión. De hecho, el efecto de la máquina en el mundo y las suposiciones que hacemos acerca de este mundo son fundamentales para el proceso de toma de requeri- mientos. El problema define una parte del mundo real que queremos mejorar mediante la construcción de una máquina. Por lo general, incluye algunos de los componentes que inter- actúan con el mundo siguiendo normas y procesos conocidos. Por ejemplo, una herramienta de perforación, un brazo de robot o las reglas para el procesamiento de productos que entran en una línea de producción (véase la Figura 3.1). Por otra parte, se espera que la solución de la máquina pueda resolver el problema. Por ejemplo, el ejemplo de la Figura 3.1 muestra que la célula de producción debe iniciar el procesamiento de los productos, solo si están disponibles en la bandeja de entrada. De hecho, la sentencia inTray[p]→ get.InTray[p] muestra que se espera que el brazo del robot debe recoger los productos de la bandeja en el caso de que estén listos para ser procesados. Por último, los fenómenos compartidos son una parte común entre el problema mundo y la solución máquina. Por lo tanto, define la interfaz donde la máquina interactúa con el mundo, representada como la intersección de los dos conjuntos en la Figura 3.1. La máquina se hace referencia en el contexto de síntesis como el controlador, se utilizará uno u otro término en función del contexto Podemos referirnos al problema mundo como el modelo de entorno. Fig. 3.1: World and Machine Phenomena Las sentencias que describen los fenómenos, tanto del mundo y como la máquina puede variar en alcance y forma [Jac95a, PM95]. Las sentencias pueden ser en modo indicativo u optativo [optative mood]. En [vL09], las sentencias que describen el sistema se caracterizan por ser descriptivas y prescriptivas. Sentencias descriptivas representan propiedades sobre el sistema que son independien- tes de cómo se comporta el sistema. Las sentencias descriptivas están en modo indicativo. 5 3. Fundamentos 6 Las sentencias prescriptivas afirman propiedades deseables que pueden estar presentes o no. De hecho, las sentencias prescriptivas deben ser aplicadas por los componentes del sistema. Naturalmente, las declaraciones prescriptivas pueden cambiar, fortaleciéndose / debilitándose o incluso eliminadas mientras que no se puede tornar descriptivas. Como se mencionó anteriormente, los estados pueden variar en su alcance. Tanto las sentencias prescriptivas como también descriptivas pueden referirse a características de la máquina que no son compartidas con el mundo. Otras sentencias pueden referirse a fenóme- nos compartidos por la máquina y el mundo. Más precisamente, una propiedad de dominio es una sentencia descriptiva sobre el problema mundo. Estas se deben tener independien- temente del comportamiento del sistema. En este trabajo llamamos Modelo Ambiente, al conjunto de propiedades de dominio para un problema particular. Un supuesto de ambiente es una sentencia que podría no suceder [may not hold] y debe ser satisfecha por el ambiente. Un requisito de software, o Requisito para abreviar, es una sentencia prescriptiva a ser aplicadas por la máquina, independientemente de cómo se com- porta el problema mundo y deben ser formuladas en términos de los fenómenos compartidos entre la máquina y problema mundo. Siguiendo [vLL00, Lam01] decimos que una acción es supervisada / controlable si tal acción es supervisada / controlable por la máquina. Podemos referirnos a acciones supervi- sadas como acciones no controlables, ya que están controlados por el ambiente. 3.2. Sistemas de Transición Etiquetados Vamos a describir y fijar una notación para los sistemas de transición etiquetados o La- beled Transition Systems (LTS) [Kel76], que son ampliamente utilizados para el modelado y análisis del comportamiento de los sistemas concurrentes y distribuidos. LTS es un siste- ma de transición de estados donde las transiciones se etiquetan con acciones. El conjunto de las acciones de un LTS se llama su alfabeto para la comunicación y las interacciones que el sistema modelado puede tener con su entorno. Definición (Sistema de Transición Etiquetado) [Kel76]) Sea States un conjunto universal de estados, Act un conjunto universal de etiquetas. Un Sistema de Transición Etiquetado (LTS) es una tupla E = (SE, AE,∆E, sE0), donde SE ⊆ States es un conjunto finito de estados, AE ⊆ Act es un alfabeto finito, ∆E ⊆ (SE × AE ×SE) es una relación, y s0∈SE es el estado inicial. Dado (s,`, s′) ∈ ∆E decimos que ` esta activo desde s en E. Decimos que un LTS E es determinístico si (s,`, s′) y (s,`, s′′) estan en ∆E implica que s′ = s′′. Para un estado s deno- tamos ∆E(s) = {` | (s,`, s′) ∈ ∆E}. Dado un LTS E, podríamos referirnos a su alfabeto como αE. Definición (Composición en Paralelo) Sea M = (SM , AM , ∆M , sM0) y E = (SE, AE,∆E, sE0) LTSs. Una Composición en Paralelo ‖ es un operador simétrico que E‖M es el LTS E‖M = (SE ×SM , AE ∪ AM , ∆, (sE0 , sM0)), donde ∆ es la relación mas pequeña que satisface las siguientes reglas, donde ` ∈ AE ∪ eAM : (s,`,s′)∈∆E ((s,t),`,(s′,t))∈∆ `∈AE\AM (t,`,t′)∈∆M ((s,t),`,(s,t′))∈∆ `∈AM\AE (s,`,s′)∈∆E , (t,`,t′)∈∆M ((s,t),`,(s′,t′))∈∆ `∈AE∩AM 3. Fundamentos 7 Definición (LTS Legal) Dado E = (SE, AE,∆E, sE0), M = (SM , AM ,∆M , sM0) LTSs, y AEu ∈ AE. Decimos que M es un LTS Legal para E con respecto a AEu , si para todos (sE, sM) ∈ E‖M sucede lo siguiente: ∆E‖M((sE, sM))∩ AEu =∆E(sE)∩ AEu Intuitivamente, un LTS M es una LTS Legal para y LTS E con respecto a AEu , si pa- ra todos los estados en la composicón (sE, sM) ∈ SE‖M los contiene, una acción ` ∈ AEu es deshabilitada en (sE, sM) si y solo si esta esta también deshabilitada en sE ∈ E. En otras palabras, M no restringe E con respecto a AEu . Definición (Trazas) Considere un LTS E = (S, A,∆, s0). Una secuencia π= `0,`1, . . . es una traza en E si existe una secuencia s0,`0, s1,`1, . . ., donde para todo i tenemos (si,`i, si+1) ∈∆. Definición (Estados Alcanzables) Considere un LTS E = (SE, AE,∆E, s0). Un estado s ∈ SE es alcanzable (desde el estado inicial) en E si existe una secuencia s0,`0, s1,`1, . . ., donde para cada i tenemos (si,`i, si+1) ∈ ∆ y s = si+1. Nos referimos a el conjunto de todos los estados alcanzables en E como Reach(E). A traves de esta tesis vamos a limitar la atención a aquellos LTSs E donde todos sus estados s ∈ SE, s son alcanzables. 3.3. Lógica Lineal Temporal de Flujos (Fluent Linear Temporal Logic) Lógica lineal temporal (LTL) es ampliamente usada para describir el comportamiento de requerimientos [GM03, vLL00, LvL02, KPR04]. La motivación para escoger un LTL de flu- jos es que este provee un framework uniforme para especificar propiedades basada en esta- dos en modelos basados en eventos [GM03]. Fluent Linear Temporal Logic (FLTL) [GM03] es una lógica linear-time temporal para razonar acerca de flujos. Un flujo Fl es definido por un par de conjuntos y un valor Booleano: Fl= 〈IFl,TFl,InitFl〉, donde IFl ⊆ Act es el conjunto de acciones iniciadoras , TFl ⊆ Act es el conjunto de acciones finalizadoras y IFl ∩TFl = ;. Un flujo puede ser inicializado con trueo f alseindicado por InitFl. Toda acción ` ∈ Act in- duce un flujo, a saber ˙̀= 〈`, Act \{` } ,false〉. Finalmente, el alfabeto de un flujo es la unión de sus acciones iniciadoras y finalizadoras. Sea F el conjunto de todas los posibles flujos sobre Act. Una fórmula FLTL es defini- da inductivamente usando los conectores Booleanos estándards y operadores temporales X (next), U (strong until) de la siguiente manera: ϕ ::=Fl | ¬ϕ |ϕ∨ψ |Xϕ |ϕUψ, donde Fl ∈F . Introduciremos ∧, F (eventually), y G (always) como una comodidad sintácti- ca. Sea Π el conjunto de trazas infinitas sobre Act. La traza π = `0,`1, . . . satisface un flujo Fl en la posición i, denotado como π, i |= Fl, si y solo si uno de las siguientes condiciones es válida: InitFl ∧ (∀ j∈N ·0≤ j ≤ i → ` j ∉ TFl) ∃ j ∈N · ( j ≤ i∧` j ∈ IFl)∧ (∀k ∈N · j < k ≤ i → `k ∉ TFl) Dada una traza infinita π, la fórmula que satisface ϕ en la posición i, denotada como π, i |= ϕ, es definida como se muestra en la Figura 3.2. Decimos que ϕ se cumple en π, denotado como π |= ϕ, si π,0 |= ϕ. Una fórmula ϕ ∈ FLTL es cierta si un LTS E (denotado como E |=ϕ) si éste es cierto en toda traza infinita producida por E. 3. Fundamentos 8 π, i |=Fl , π, i |=Fl π, i |= ¬ϕ , ¬(π, i |=ϕ) π, i |=ϕ∨ψ , (π, i |=ϕ)∨ (π, i |=ψ) π, i |=Xϕ , π,1 |=ϕ π, i |=ϕUψ , ∃ j ≥ i ·π, j |=ψ∧∀ i ≤ k < j ·π,k |=ϕ Fig. 3.2: Semántica para el operador de satisfacción 3.4. Problemas de control El problema de síntesis de control consiste en producir automáticamente una máquina que restringe la ocurrencia de eventos controlados basada en la observación de eventos que han ocurrido. Cuando se despliega en un entorno apropiado esta máquina asegura la sa- tisfacción del conjunto de objetivos de sistema provistos. La satisfacción de estos objetivos depende de la satisfacción de las presunciones por parte del entorno. En otras palabras, damos una descripción del entorno, presunciones, objetivos de sistema y un conjunto de ac- ciones controlables. Una solución para el problema de control basado en eventos es encontrar una máquina cu- yo comportamiento concurrente al entorno que satisfaciendo las presunciones satisface los objetivos. Definimos el problema de síntesis de control para modelos basados en eventos de la si- guiente forma: Dada una LTS que describe el comportamiento del entorno, un conjunto de acciones controlables, un conjunto de fórmulas FLTL para las presunciones del ambiente y un conjunto de fórmulas FLTL para los objetivos de sistema, el problema de control LTS consiste en encontrar una LTS que restringe sólo la ocurrencia de acciones controlables y garantiza que la composición paralela del ambiente con dicha LTS estará libre de deadlocks y que, si las presunciones de ambiente son satisfecha, satisfacerá también los objetivos de sistema. Definición (Control LTS) Dada una especificación de un entorno en forma de una LTS E, un conjunto de acciones controlables Ac y un conjunto H de pares (Asi,G i) donde Asi y G i son fórmulas FLTL especificando presunciones y objetivos respectivamente, la solución al problema de control LTS ε=< E,H, Ac > consiste en encontrar una LTS M de forma que M sobre el conjunto de acciones controlables Ac y el conjunto de acciones no controlables Ac es un entorno legal para E, E‖M se encuentra libre de deadlocks, y para cada par (Asi,G i ∈ H) y para cada traza π en E‖M se cumple que si π |= Asi entonces π |=G i. Ahora definimos el problema de control SGR(1) que es computable en tiempo polinomial. Tiene base en los problemas GR(1) y de seguridad pero en un contexto de modelado basado en eventos. Requerimos que el modelo del entorno E sea una LTS determinística para ase- gurar que el controlador observación completa del estado del entorno. Requerimos que H sea (;, I), (As,G) donde I es un invariante de seguridad de la forma äρ las presunciones As son una conjunción de subfórmulas FLTL de la forma ä♦φ, el objetivo G es una conjunción de subfórmulas FLTL de la forma ä♦γ y ρ, φ y γ son una combinación booleana de Flujos. 3. Fundamentos 9 Definición (Control LTS SGR(1)) Un problema de control LTS ε =< E,H, Ac > es SGR(1) si E es determinístico y H = (;, I), (As,G) donde I = äρ, As = ∧ni=1ä♦φi,G = ∧mj=1ä♦γ j, y ρ, φ y γ son una combinación booleana de Flujos. 3.5. Dominios falibles Consideramos una técnica que permite la síntesis de controladores aún en entornos que exhiben fallas. Esta técnica toma el nombre de síntesis con fallas. Por lo general no puede controlarse a un entorno malicioso para conseguir los objetivos de sistema. De todas formas, proponemos nociones realistas de equidad que permiten a los controladores comportarse de la forma esperada por ejemplo para el caso en el que deberían intentar repetir una acción hasta conseguir una respuesta exitosa. Distinguimos a las fallas de otras acciones de la siguiente manera, para cada problema de control definimos un conjunto de triplas try− response (prueba, respuesta), una tripla de ésta característica captura la relación entre acciones controlables y sus reacciones de éxito o fracaso. Se precisa que 1) la acción "try"sea controlable, 2) todas las acciones pertenecien- tes a una tripla try− response sean únicas con respecto a otras triplas del conjunto, 3) un reintento no ocurra antes de una respuesta 4)las respuestas ocurran solamente como resul- tado de un intento, 5)existe como máximo una respuesta por cada intento y 6) la decisión de fallar o tener éxito no sea forzada por otras acciones, con lo que la falla está habilitada sí y sólo sí el éxito está habilitado. Definición (Try-Response) Dada una LTS M = (SM ,LM ,∆M , sM0) donde LC ⊆ LM , decimos que un conjunto T = (tryi, suci, f ail i) es un conjunto try− response para M si se cumplen las siguientes condiciones para todo i: 1. tryi ⊆ LC, suci, f ail i ∈ L \ LC y suci 6= f ail i 2. Para todo j 6= i, tryi, suci, f ail i ∩ tryi, suci, f ail i =; 3. ¬( ˙f ail i ∨ ˙suci)W ˙tryi 4. ä( ˙tryi ⇒©(¬ ˙tryiW( ˙f ail i ∨ ˙suci))) 5. ä(( ˙f ail i)∨ ˙suci)⇒©(¬( ˙f ail i ∨ ˙suciW ˙tryi)) 6. Para todo s ∈ SM , f ail i está habilitado para s sí y sólo sí suci está habilitado para s La técnica presentada demanda una noción de equidad más fuerte, que describa la pre- sunción de que si se ejecuta un intento con infinita frecuencia se debe conseguir un éxito con infinita frecuencia. Esta noción de equidad reforzada está, de hecho, fuertemente vincu- lada con la estructura de los modelos del entorno y el controlador. Lo que se precisa es que, para cada estado global (un estado de E‖M), un tryi sucede con infinita frecuencia, f ail i no sucede con infinita frecuencia. Una forma más intuitiva de expresarlo sería pensar que la decisión de fallar es equitativa e independiente del estado del controlador o el entorno. La siguiente definicón captura esta noción de equidad reforzada. Requiere que para cada transición etiquetada con un try, si es tomada con infinita frecuencia luego success sucede con infinita frecuencia antes del próximo try. 3. Fundamentos 10 Definición (t-strong fairness) Dada una LTS M y un try-response T para M, una tra- za π ∈ tr(M) es t-strong fair (fuertemente t-equitativa) con respecto a M y T si para todo (tryi, suci, f ail i) ∈ T y para todas las transiciones t = (s, tryi, s′) vale que: π′ |= ä♦try′i ⇒ ä♦(¬tryiUsuci), donde π′ = ε′|LM∪{trybi }, ε ′ = ε|[s.tryi .sb/s.tryi .trybi ,sb], y ε es una ejecución de M tal que ε′|LM =π. Cabe notarse que w|A es la proyección de la palabra w sobre el alfabeto A y que w[v/vb] es el resultado de reemplazar en w todas las ocurrencias de v con vb. Hace falta extender la noción de equidad aún más para cumplir la noción intuitiva de que las presunciones del entorno deben ser independientes de las fallas, particularmente porque la elección de una falla o de un éxito puede entenderse como no-determinística dado que abstrae la verdadera causa del éxito o fracaso. Formalizamos esta noción de la siguiente forma, restringimos las trazas de interés a aque- llas que satisfacen que las presunciones deben poder cumplirse con infinita frecuencia sin observar fallas, o, más precisamente, que si el controlador intenta con suficiente frecuencia, entonces no sólo tendrá éxito, sino que tendrá éxito a la vez que satisface todas las pre- sunciones. Esto es, que si las presunciones y las fallas son verdaderamente independientes, intentar la acción con suficiente frecuencia garantiza que en algún punto luego de un inten- to, ninguna falla sucederá en tanto no se hayan satisfecho todas las presunciones. Definición (Strong Independent Fairness) Dada una LTS M y un try-response T para M y A un conjunto de fórmulas FLTL, una traza π ∈ tr(M) se dice Strong Independent Fair (de equidad reforzada independiente) respecto de A si para todo (tryi, suci, f ail i) ∈ T y parato- da transición t = (s, tryi, s′) vale que π |=ä♦try′i ⇒ä♦((¬tryiUsuci)∧( ∧n i=1(¬( ∨n j=1 f ail j)W A i))), donde π′ = ε′|LM∪trybi ,ε ′ = ε|[s.tryi .sb/s.tryi .trybi ,sb], y ε es una ejecución de M tal que ε ′|LM =π. Formalizamos a continuación el problema de control bajo las condiciones de equidad arriba presentadas. Toma el nombre de problema de control con éxito recurrente (recurrent success control problem). Para todas las trazas que sean de equidad reforzada independien- te garantiza propiedades generales de seguridad y progreso que son del tipo GR(1). Exten- demos el problema de control SGR(1) definido en 3.4 introduciendo fallas y expectativas sobre la equidad del ambiente. Definición (Recurrent Success) Dado un problema de control SGR(1) LTS L =< E,H,Lc > y un try-response T para L , la solución del problema de control de éxito recurrente R =< L ,T > consiste en encontrar un LTS M tal que M con acciones controlables Lc y no controla- bles Lc es un entorno legal para E, E‖M no contiene deadlocks y para cada par (Asi,G i) ∈ H, para cada (tryi, suci, f ail i) y para cada traza de equidad reforzada independiente π en M‖E vale que si π |= Asi entonces π |=G i. 3.6. Procesos de Estados Finitos (FSP) Hasta ahora, hemos descripto LTSs (MTSs) definiendo sus componentes, ej. estados, acciones, relaciones de transición (requeridos y posibles), y el estado inicial. Esta represen- tación es válida para LTSs (MTSs) con pocos estados. Sin embargo, esta representación se torna impráctica cuando trabajamos con LTSs (MTSs) extensos. Por esta razón, usamos un 3. Fundamentos 11 proceso simple llamado denotado algebra de Procesos de Estados Finitos (FSP) que expeci- fican textualmente un LTSs [MKG97, MK06]. FSP es una especificación de lenguaje con una bien definida semántica en términos de LTSs (MTSs), que provee de manera concisa una forma de describir un LTSs. Cada expre- sión FSP E puede ser mapeada en un LTS (MTS) finito, usaremos lts(E) para denotar el LTS (MTS) que le corresponde. A continuación discutiremos brevemente la sintaxis FSP. Como un ejemplo, en la Figura 3.3, mostramos el código FSP de un proceso de cocción de cerámica. En FSP, los nombres de procesos comienzan con mayúsculas y las acciones comienzan con minúscula. El código para la cocción de cerámica define 2 procesos FSP, uno mode- la el proceso que simplemente esta en espera, llamado f sp(IDLE), y otro proceso llamado f sp(DOMAIN). Adicionalmente, f sp(DOMAIN) define los procesos auxiliares f sp(COOK ING), f sp(COOKED), y f sp(OH). Los procesos auxiliares son locales para el proceso FSP de la forma que han sido definidos. f sp(DOMAIN) es definido usando la acción y el operador f sp(−>) junto a la recursión. Por ejemplo, el proceso se encuentra definido para comenzar ejecutando indistintamente f sp(idle) quedándose en este o f sp(cook) que comienza con el proceso de f sp(COOK ING). Fig. 3.3: FSP Example FSP soporta numerosos operadores para la composición como la composición en paralelo de LTS y MTS, o la fusión de MTSs [FDB+10]. El operador para composición en paralelo, denotado como f sp(||) es definido para preservar la semántica de la composición en pa- ralelo de LTS presentado en 3.2. Así, dados dos procesos FSP f sp(P) y f sp(Q), tenemos que: f sp(lts(P||Q)=lts(P)||lts(Q)). Los procesos FSP processes que son definidos mediante la composición de dos proce- sos no auxiliares son llamados procesos compuestos y sus nombres contienen el prefijo f sp(||). Así la composición en paralelo de los procesos FSP f sp(IDLE) y f sp(DOMAIN) es f sp(||IDLEDOMAIN = (IDLE||DOMAIN)). Finalmente, un FSP posee un número de palabras reservadas que son usadas antes de la definición de un proceso y estas forzan al MTSA a desarrollas operciones comple- jas sobre el proceso. Por ejemplo, el comando, f sp(minimal), indica que MTSA construya el LTS/MTS minimal respetando fuertemente la semántica equivalente y la instrucción, f sp(deterministic), instruye para que MTSA construya el LTS minimal con respecto a su traza. También el FSP permite definir propiedades FLTL. Un flujo que marca aquellos esta- dos donde la cerámica es cocinada puede ser expresado en FSP con el siguiente código: f sp( f luentCooking =< cook, f inishedCooking > initiall y0). f sp(Cooking) se encuen- tra inicialmente en falso, este se torna verdadero con f sp(cook) y este se torna falso nueva- mente cuando ocurre f sp( f inishedCooking). 3. Fundamentos 12 Sumarizando, FSP provee el soporte requerido para especificar LTSs and FLTL formu- las. Dicho soporte es requerido para expresar el modelado del entorno y los objetivos del controlador. 4. HERRAMIENTA MTSA MTSA (Modal TRasition System Analyzer) es una herramienta que da soporte a la cons- trucción, análisis y elaboración de Modal Trasition Systems (MTS) [DFCU08]. Para los propósitos de esta tesis se usará la herramienta para cubrir los siguientes requerimientos: Modelado: Creación de los modelos donde se define el comportamiento esperado del robot, entornos y las propiedades esperadas del sistema. Se utilizará la extensión a la sinta- xis FSP que permite describir propiedades como fórmulas FLTL y controladores como un conjunto de propiedades de progreso, seguridad, acciones falibles, controlables y no controlables Síntesis: Creación de controladores sintetizados a partir de las propiedades especificadas componiendo con el entorno permitiendo que el controlador satisfaga los objetivos de progreso y seguridad Ejecución: Ambiente donde pondremos en ejecución el controlador sintetizado que contro- lará e interactuará con los componentes del sistema configurados 4.1. Construcción La herramienta MTSA permite describir modelos se a través de una extensión del len- guaje de Procesos de Estados Finitos (FSP). FSP es un lenguaje centrado en la construcción por composición de modelos complejos. FSP incluye varios operadores tradicionales para describir modelos de comportamiento, como puede ser el prefijo de acción (−>), elección (|),composición secuencial (;), composición paralela (||) y mezcla. La semántica de composición permite que dadas dos descripciones parciales del mismo componente, el operador de composición devuelve una MTS que combina la información provista por las descripciones parciales originales. Aun cuando los operadores composicio- nales permiten la construcción de MTS complejas, construir los modelos a ser compuestos sigue siendo una tarea dificultosa de intenso trabajo que requiere un grado considerable de experiencia. Con el fin de facilitar esta tarea, MTSA provee la funcionalidad que permite sintetizar modelos de comportamiento de forma automática a partir de las especificaciones declarativas de los requerimientos, escenarios y casos de uso. La palabra clave constraint de MTSA se usa en conjunción con las propiedades de se- guridad (safety) formalizadas haciendo uso de Lógica Lineal Temporal de Flujos (FLTL). Para una declaración de tipo constraint MTSA construye automáticamente el modelo de MTS que caracteriza a todos los modelos LTS libres de deadlock que satisfacen la fórmula FLTL. Al sintetizar y mezclar los modelos MTS obtenidos con definiciones FLTL, se puede construir de forma iterativa una MTS que caracteriza a la cota superior de los sistemas de 13 4. Herramienta MTSA 14 comportamiento esperados. La palabra clave abstract de MTSA puede aplicarse a procesos FSP. Su semántica es tal que el modelo resultante es la MTS de menor refinamiento que garantiza el comporta- miento requerido por los procesos FSP. Esta palabra clave, utilizada en conjunción con los procesos FSP que modelan el comportamiento descripto en la especificación del escenario, provee una MTS que caracteriza a todas las implementaciones que satisfacen dicha especi- ficación (i.e. la cota inferior del comportamiento esperado del sistema). 4.2. Análisis Luego de las actividades de modelado del sistema, el análisis pasa a ser una actividad importante que puede brindar información relevante acerca del dominio del problemacomo de la solución. Esto permite poder validar si las características modeladas son acordes a al problema a modelar. La herramienta brinda soporte a varios tipos de análisis, comenzando por la inspección de modelos MTS y a través de la construcción automática de representaciones visuales de los modelos MTS escritos usando FSP. La inspección queda sujeta al tamaño del modelo, esta limitación puede mitigarse haciendo uso de los operadores de minimización y oculta- miento. Si bien la inspección y animación no permiten una exploración exhaustiva de los mo- delos MTS, MTSA implementa un número de técnicas de análisis automáticas para éste propósito. En particular, MTSA permite verificar si un modelo MTS satisface una propie- dad expresada en FLTL. Un modelo MTS caracteriza un conjunto de implementaciones, de las cuales algunas pueden satisfacer la propiedad siendo verificada y algunas pueden vio- larla. Mientras que un Modelo MTS M puede caracterizar a un conjunto extremadamente grande, potencialmente infinito, de implementaciones, verificar una propiedad en M con model checking se reduce a dos verificaciones tradicionales de FLTL. Finalmente, MTSA permite verificar si un modelo es libre de deadlocks. Al igual que en el caso de model chec- king para propiedades FLTL, el resultado de esta verificación tiene uno de tres valores: o bien todas las implementaciones exhiben deadlocks, o bien todas son libres de deadlock o bien hay una combinación de implementaciones que exhiben deadlocks y otras que no. 5. MOTIVACIÓN EXTENSIÓN MTSA TOOL Con el propósito de poder vincular la robótica a ésta herramienta, se ha desarrollado una extensión llamado “Enactment” que es un framework abierto, extensible y con una API que permite ejecutar controladores sintetizados brindando interacción con componentes ex- ternos como por ejemplo robots. En este trabajo se ejecutaran controladores sintetizados a partir de la especificación que describe un juego SGR(1) sobre dominios falibles. La habilidad de ejecución de controladores sintetizados o Enactment es una necesidad a desarrollar aportando nuevos aspectos de conocimiento. Esta nueva extensión ayudará a observar y monitorear los modelos pudiendo aplicarse tareas de refinamiento sobre las especificaciones de los controladores construidos, como así también las técnicas empleadas en su construcción y la forma en que las especificaciones se ajustan los contextos. Las representaciones de un problema utilizando sintaxis de procesos finitos las realiza- mos comúnmente mediante un sistema de transiciones etiquetadas. En la sintaxis utilizada separamos aquellas transiciones controlables de las no controlables. A partir de esto relacio- namos mensajes de control con las transiciones controlables y con los mensajes de entrada para un agente. Luego los mensajes de estado se corresponden con las transiciones no con- trolables en la especificación y mensajes de salida del agente. Por ejemplo como transiciones controlables o mensajes de control pueden ser comando primitivos para indicar una acción al agente como ser “mover hacia adelante”, por otro lado un mensaje claro de estado o transi- ción no controlable puede ser “baja batería” del agente. En esta tesis trabajare con modelos en los cuales de todo estado saldrán o todas transiciones controlables o todas no controlables evitando estados donde existe una combinación entre ambos tipos de transiciones. En un es- tado particular, no controlable, podría suceder que exista más de una transición de salida, una representando un mensaje de estado, otra representando un mensaje de timeout para expresar la posibilidad de que una máquina no responda en un lapso razonable de tiempo. C U control status C U request timeout C U request repl y timeout Fig. 5.1: Transición entre estados controlables y no controlables: control-estado (izq.), request-timeout (centro), request-timeout,reply(der.) Un subconjunto de las transiciones no controlables está relacionado al modelo de fa- llas, indicando estados en los cuales una transición puede suceder pero con cierta noción de equidad. Estas transiciones del modelo de falla deben capturar un comportamiento no sis- temático, independiente entre sí que va a dar lugar (eventualmente) a la ejecución de otra transición en ese mismo estado. La tripla (try, success, fail) permite representar la na- turaleza falible pero no sistemática del robot como por ejemplo (r1.turnRight, r1.sucess, r1.lost). 15 5. Motivación Extensión MTSA Tool 16 5.1. Arquitectura El módulo MTSA Enactment ha sido diseñado con el fin de poder cubrir las necesidades de extensibilidad, flexibilidad y ejecución de modelos. La arquitectura propuesta permite la incorporación de nuevas extensiones a la herramienta mediante la implementación y regis- tros de Enactors. Los Enactors son las unidades funcionales del entorno de simulación. Las mismas interactúan entre sí y con el ambiente mediante eventos/suscriptores. Las simula- ciones son orquestadas por un Scheduler determinado. El mismo es una especialización de Enactor y es el responsable de escoger las acciones disponibles regidas por el controlador basado en una política determinada. Las simulaciones son ejecutadas en la herramienta con un entorno especialmente diseñado donde puede el usuario puede darle seguimiento mediante una interfaz gráfica. 5.2. Enactors Dentro del entorno de ejecución de controladores sintetizados o “Enactment” definimos como Enactor a todo agente activo con capacidades de interacción con sus pares escuchan- do y emitiendo eventos. El componente de ejecución respeta un esquema de comunicación asíncrona y con un grado de abstracción suficiente para permitir controlar y monitorear los distintos agentes del entorno. Se puede pensar que cada Enactor expone una API. Los méto- dos públicos son equivalentes a los mensajes de control y los eventos disponibles equivalen a los mensajes de estado. Puede suceder que el vínculo entre un mensaje en el dominio de control discreto y su contraparte en el dominio real oculte información. En esta tesis se implementará una relación directa entre las transiciones controlables como mensajes de control y estos tendrán su equivalente a primitivas que se enviarán mediante un canal de comunicación inalámbrica al agente quien ejecutará la instrucción. Cada vez que la interfaz de comunicación recibe un mensaje proveniente del robot, el adaptador (enactor) lo interpre- ta y produce un evento que contiene información relacionada a la transición no controlable (mensaje de estado). En la figura 5.2 se representa la relación entre el modelo utilizado para construir la especificación del controlador y su implementación. C representa a los estados controlables en el modelo y U representa a los no controlables. c representa a la implementación del con- trolador en el entorno de ejecución y a representa al enactor en calidad de adaptador entre los mensajes del entorno de ejecución y los del dominio del componente (potencialmente) externo al entorno de ejecución. Se ve como las transiciones en el modelo se corresponden con los mensajes de control y estado en el entorno de ejecución. 5. Motivación Extensión MTSA Tool 17 C U c a enact enact controllable non− controllable control status Fig. 5.2: Relación de ejecución entre el modelo y los componentes de ejecución La relación entre la implementación en la tecnología correspondiente y el modelo se muestra en la figura 5.3 representando al componente de ejecución como e para indicar que se está hablando de un objeto Enactor que se ejecuta dentro de la herramienta. Según la arquitectura escogida las transiciones controlables y no controlables se relacionan con lla- madas a función y eventos respectivamente. C U c e enact enact controllable non− controllable APIcall event Fig. 5.3: Relación de ejecución entre el modelo y la implementación final de los componentes de ejecución Por otro lado buscando la expansión en la interacción de un Enactor con un agente como muestrala figura 5.4, se plantea el siguiente esquema arquitectónico en el cual se cuenta con un robot Lego Mindstorm NXT o EV3 (representado por r) donde el Enactor e que resi- de dentro del entorno de ejecución de la herramienta se comunica con el agente r enviando mensajes de control a través del canal de comunicación inalámbrico (Bluetooth) y el mismo envía de regreso mensaje de estado que son interpretados como eventos por parte del Enac- tor e. Dentro de los modelos que trabajan con técnicas de control continuo, se puede plantear dentro de la relación de los modelos basados en eventos y el componente de ejecución, la ejecución del bloque de control continuo representado con par <control, status>. Este plan- teo expone la adaptación de este tipo de técnicas de ejecución y otros esquemas de control en sistemas embebidos que suelen utilizar máquinas de estado finito para representar su comportamiento como muestra la figura 5.5. 5. Motivación Extensión MTSA Tool 18 Fig. 5.4: Relación Enactor y MTSA Fig. 5.5: Mensaje control y estado del Enactor 5.3. Controller / Scheduller Los Controllers o Schedullers son una clase especial de Enactor dentro del entorno de ejecución de Enactment. Por cada instancia de ejecución existe solo un tipo de Controller. El mismo es el responsable de implementar la estrategia de selección de las transiciones controlables. Pensamos en estrategias cuando tenemos situaciones en las cuales desde un estado controlable especifico parten 2 o más transiciones controlables. Recordamos que en 5. Motivación Extensión MTSA Tool 19 la presente tesis se cubre únicamente los casos en que las de los estados solo parten transi- ciones controlables o no controlable únicamente. Un Scheduller especifica alguna estrategia en particular de selección de transiciones controlables. Como estrategias entendemos por ejemplo seleccionar del conjunto de transi- ciones controlables una al azar. Otra estrategia puede resumirse como escoger la primera transición de una lista ordenada bajo algún criterio determinado. Una vez establecido el Scheduller a utilizar en la ejecución el mismo se encargará de implementar la estrategia de selección a lo largo de toda la ejecución. Como todo Enactor, el Scheduller escucha los eventos del entorno emitidos por otros Enactors, y por cada nuevo estado controlable selecciona del conjunto de transiciones controlables aquella que satisface las reglas de la estrategia inherente. 5.4. Framework Enactment Como se ha mencionado anteriormente, la extensión Enactment hace referencia al en- torno de ejecución para controladores sintetizados que interactúan con los componentes Enactors. Este entorno es contenido dentro de la extensión co-construida en la presente te- sis junto al trabajo realizado en [Cer14] que consiste en el componente de simulador de la herramienta MTSA. El entorno de simulación consta de las siguientes partes: El controlador sintetizado producto del modelo LTS Enactors seleccionados de la lista de componentes registrados mediante la interfaz de extensión Scheduller seleccionado para definir la estrategia a seguir El usuario tiene la habilidad de seleccionar las partes intervinientes en la simulación ingresando por el menú de MTSA Enactment->Options Fig. 5.6: Menu Enactment En la sección de opciones de Enactment (figura 5.7) se despliega la lista de Enactors registrados como extensión de la herramienta. En la sección 5.5 se describe el mecanismo de registro de Enactors y Schedullers. 5. Motivación Extensión MTSA Tool 20 Fig. 5.7: Menu Enactment Una vez que se seleccionan los actores intervinientes en la ejecución del controlador, el usuario indica el comienzo de la misma mediante la opción ubicada en el menú Enactment- >Run Fig. 5.8: Menu Enactment Run Al comenzar la ejecución se despliega el entorno gráfico de control y monitoreo de la ejecución. Como se aprecia en la figura el entorno se divide en 3 partes. Sección 1 barra de herramientas con opciones para pausar y detener la ejecución, controles de visualización del grafo de progreso. En la sección 2 y principal la herramienta despliega un grafo de progreso de ejecución. El mismo representa con círculos los estados por los cuales la ejecución recorre y con arcos las transiciones disponibles. El estado vigente en la ejecución se encuentra colo- reado de azul y el estado inicial coloreado de gris. En la sección 3 se encuentra la consola de notificaciones. Aquí se despliega información detallada acerca del avance de la ejecución. 5. Motivación Extensión MTSA Tool 21 Fig. 5.9: Enactment Simulation Windows Internamente el componente de ejecución MTSAEnacmentSimulation da lugar a la ini- cialización de los Enactors seleccionados para la instancia de ejecución. Las instancias son obtenidas a través EnactorFactory del conjunto de Enactors disponibles registrados me- diante el mecanismo de registro de extensiones utilizando Spring Beans. En 5.5 se describe en detalle este mecanismo. Cada instancia de Enactor se ejecuta utilizando su propio hilo de proceso. Una vez obtenidas las instancias de los Enactors, el componente de ejecución obtiene la instancia del Scheduller escogido de la lista de Schedullers registrados en la he- rramienta utilizando un mecanismo similar a los Enactors basando en Spring Beans. En la sección 5.5 se describe en detalle este mecanismo. Obtenida todas las instancias intervi- nientes, se procede a realizar las subscripciones a eventos entre los Enactors y el Scheduller como los grafica la figura 5.10. Fig. 5.10: Scheduller - Enactors subscription Cuando una ejecución es iniciada, el controlador comienza en su estado inicial y los Enactors participantes de la ejecución son notificados, en particular el Scheduller quien es el que escoge la primera acción controlable según la estrategia que este implemente. Una vez escogida la transición el Scheduller actualiza el estado del controlador y notifica a los Enactors subscriptos. Cada Enactor escucha los eventos emitidos por el Scheduller y a la vez pueden emitir eventos relacionado con transiciones no controlables. Al momento de re- gistrar los enactors, se puede especificar bajo que etiqueta queda establecido cada comando que el enactor es capaz de reaccionar y bajo qué etiquetas se establece las acciones que el enactor tiene la habilidad de emitir. Estas etiquetas corresponderán a la definición de las transiciones controlables y no controlables del controlador sintetizado. 5. Motivación Extensión MTSA Tool 22 5.5. Extensiones – Construcción y registro La extensión del framework de Enactment puede realizarse mediante la incorporación de nuevos Enactors o nuevos Schedullers. Los Enactors son aquellos agentes quienes acep- tarán transiciones controlables y podrán disparar transiciones no controlables al controla- dor. El desarrollo de nuevas extensiones del framework se realiza mediante la extensión de clases abstractas y luego el registro en un archivo de configuración xml de la herramienta MTSA. Dado que el lenguaje escogido para la escritura de la extensión en Java, las exten- siones deben escribirse en este lenguaje, la menos los componentes que implementan las interfaces. Debido a que los mensajes son potencialmente asincrónicos, se ha propuesto utilizar un esquema basado en eventos. Este esquema nos permite mantener desacoplada la interac- ción entre los distintos agentes del entorno. Para esto se presentan 2 clases relacionadas con la recepción de eventos representando las situaciones en que se reciben mensajes de control y la emisión de eventos representando el caso en que se envían mensajes de estado. Tendremos un componente de ejecución que tendrá la composición de estas 2 clases. public abstract class TransitionDispatcher<Action> { public synchronized void addTransitionEventListener(ITransitionEventListener<Action> listener){ ... } protected void fireTransitionEvent(Action action) throws Exception{ ... } } Fig. 5.11: Objecto de emisión de mensajes (TransitionDispatcher) En la figura 5.11se presenta el resumen de la clase abstracta de emisión de mensajes. La figura describe el mecanismo de subscripción en la cual un listener que implemente ITran- sitionEventListener puede registrarse para recibir los mensajes de un enactor mediante addTransitionEventListener. Debido a que los enactors extiende TransitionDispacher pueden disparar mediante fireTransitionEvent las acciones a sus subscriptores. Como se aprecia en la definición, el tipo de dato que define la acción Action es abstraído siguiendo el patrón de diseño heredado por la construcción de MTSA que no fija que tipo de dato primitivo es una acción utilizando en este caso “Java Generics”. 5. Motivación Extensión MTSA Tool 23 public interface ITransitionEventListener<Action> { public void handleTransitionEvent(TransitionEvent<Action> transitionEvent) throws Exception ; } Fig. 5.12: Objecto de recepción de mensajes (ITransitionEventListener) En la figura 5.12 se describe la interface que define el mecanismo en la cual los imple- mentadores recibirán los eventos TransitionEvent mediante el llamado al método handle- TransitionEvent. La clase abstracta Enactor es la responsable de ser el actor funcional principal de una simulación dentro del entorno Enactment. La misma extiende a TransitionDispatcher lo cual significa que otros objetos que implementan ITransitionEventListener podrán subs- cribirse a sus eventos. También esta clase implementa ITransitionEventListener, lo cual quiere decir que puede subscribirse a los eventos de otros Enactors. Adicionalmente la clase implementa Runnable para tener la habilidad de poder ejecutar cada instancia de Enactor bajo su propio hilo de ejecución. Este diseño permite soportar la comunicación asincrónica no bloqueante en la interacción del modelo basado en eventos. public abstract class Enactor<State, Action> extends TransitionDispacher<Action> implements ITransitionEventListener<Action>, Runnable { ... } Fig. 5.13: Clase Enactor (Enactor) Como se explicó en el capítulo anterior, una clase especial de enactor son los contro- llers. Los mismos se describe bajo la clase abstracta BaseController quien extiende a Enactor incorporando funcionalidad de control sobre los estados del controlador sintetiza- do puesto en ejecución y a su vez ante los eventos que sucede en la ejecución puede tomar decisiones basado en la estrategia takeNextAction(). Este método es abstracto y es deber de los implementadores de BaseController dar la especificación a este método definiendo su comportamiento característico. 5. Motivación Extensión MTSA Tool 24 public abstract class BaseController<State, Action> extends Enactor<State, Action> { ... public BaseController(String name, LTS<State, Action> lts, Set<Action> controllableActions) { ... } .. public abstract void takeNextAction() throws Exception; ... } Fig. 5.14: BaseController Las implementaciones de referencias que se proponen inicialmente son TakeFirstCon- troller quien implementa una estrategia de simplemente tomar la primera acción contro- lable disponible y RandomController quien se encarga de tomar aleatoriamente la acción controlable. Cualquier futura estrategia de controlador que se desee incluir en la herramien- ta debe extender BaseController y registrarse en el archivo de configuración de contexto de MTSA como se describe más adelante. Las extensiones de enactors relacionadas a los componentes externos que aceptan como instrucciones acciones controlables deben extender a la clase abstracta Enactor. La mis- ma se recomienda que defina en su constructor la definición de las acciones controlables y no controlables que el Enactor podrá interpretar y enviar como notificación al controlador. Como se ha mencionado anteriormente no se especifica el tipo de dato que es una acción y se define en la clase Enactor como un tipo genérico y aquellos enactors concretos deben respetar este diseño. En este trabajo se ha implementado el enactor NXTRobot quien implementa la inter- faz con el robot Lego NXT. Para este trabajo se especificó el siguiente conjunto de coman- dos o acciones controlables y no controlables: sucess, failure, lost como parte de las no controlables de estado y follow, turnLeft, turnRight, turnAround y calibrar como las controlables. Dado el esquema de comunicación propuesto basado en la respuesta bajo un conjunto de acciones de estado (sucess, failure, lost) se ha definido este comportamiento bajo un adaptador de robot RobotAdapter el cual extiende a Enactor. El robot Lego NXT extiende a RobotAdapter asegurando que al menos el conjunto de las acciones no contro- lables que tendrá serán este conjunto tal como indica el siguiente código. public class NXTRobot<State, Action> extends RobotAdapter<State, Action> { ... } Fig. 5.15: NXTRobot El enactor NXTRobot como muestra la figura 5.15 recibe en su método primitiveHand- leTransitionEvent los mensajes de acciones de transición del controlador y los mapea con 5. Motivación Extensión MTSA Tool 25 los follow, turnLeft, turnRight, turnaround asignados y delega la comunicación con el robot a través de NXTRobotComm. Esta clase que se encuentra en un nivel inferior en el stack implementado establece la comunicación mediante Bluetooth con el dispositivo basado en una búsqueda o especificación mediante un identificador proporcionado. Es esta clase la encargada de codificar los comandos provenientes de NXTRobot y transmitirlos al agente externo y recibe los estados del robot y notificando a NXTRobot quién este último codifica en Action y dispara de regreso el evento pertinente de estado al controlador. Para poder registrar un nuevo enactor que extiende a Enactor en la herramienta MTSA, es necesario registrar el mismo en el archivo de contexto de configuración ltsa-context.xml. El mismo se encuentra dentro del classPath de la herramienta. Se debe agregar una sección xml bean donde se le asigna un “id” único y se hace referencia a la clase que se desea incor- porar. Luego se mapean las acciones y parámetros de configuración según se especifique en la firma del constructor de la clase en cuestión. El siguiente es un ejemplo se puede observar como se incorpora un nuevo enactor con id nxt1: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config/> <!-- Enactors --> <bean id="nxt1" class="ar.uba.dc.lafhis.enactment.robot.NXTRobot"> <constructor-arg index="0" value="NXT Robot"/> <constructor-arg index="1" value="success"/> <constructor-arg index="2" value="fail"/> <constructor-arg index="3" value="lost"/> <constructor-arg index="4" value="follow"/> <constructor-arg index="5" value="turnLeft"/> <constructor-arg index="6" value="turnRight"/> <constructor-arg index="7" value="turnAround"/> <constructor-arg index="8" value="calibrar"/> <constructor-arg index="9" value="0016531b6519"/> <constructor-arg index="10" value=""/> </bean> Cabe destacar que pueden haber múltiples instancias del mismo enactor con diferente id. Con este registro ya puede observarse el enactor en la lista disponible para las simula- ciones como se muestra en la siguiente figura 5.16: 5. Motivación Extensión MTSA Tool 26 Fig. 5.16: Enactment Options Para el registro de nuevos controladores que implementan BaseController o derivados se debe ingresar un nuevo registro “bean” en el archivo de configuración de contexto ltsa- context.xml donde se especifica su id y la referencia a la clase del nuevo controlador. En el cuerpo del tag se especifica los parámetros de firma del constructor. En el ejemplo se observa el registro de los controladores TakeFirstController. <!--Controller Enviroments / Schedulers--> <bean id="controllerScheduler" class="ar.uba.dc.lafhis.enactment.TakeFirstController"> <constructor-arg index="0" value="Take First Controller"/> </bean> 5.6. Enactors Útiles Para facilitar las actividades de análisis, seguimiento y depuración de las simulaciones en el entorno Enactment, se han desarrollado lo siguientes Enactors:” Counter Enactor enactor que sirve de contador de acciones que transcurren en una simu- lación. Permite poder llevar estadísticas de ejecución UI Controller controlador que permite mediante una interfaz gráfica que el usuario pueda manualmente controlar las acciones que se desarrollan en la simulación. A medida 5. Motivación Extensión MTSA Tool 27 que la simulación transcurre el controlador notifica al usuario las acciones que éste toma conocimiento y actualiza con las acciones que el usuario tiene disponibles para continuar con la simulación 6. LEGO MINDSTORM Lego Mindstorm es un juego de robótica fabricado por la empresa Lego, el cual posee elementos básicos de las teorías de robótica que permite la construcción de robots de forma sencilla gracias al ensamblado de las piezas tradicionales de esta firma, sumado a compo- nentes como motores paso a paso, sensores y una unidad de control programable. Todos los componentes son fácilmente ensamblables y combinables y los mismos son de una calidad destacable permitiendo la configuración en tiempo de record sorteando la mayoría de las problemáticas triviales que la electrónica y robótica presentan. Al momento de la escritura de esta tesis Lego presenta los modelos RCX, NXT y EV3. Esta tesis se concentra en el modelo NXT y de forma experimental con el modelo EV3. 6.1. Hardware El hardware está compuesto por las múltiples piezas de construcción tradicionales de Lego de las cuales no entraré en detalle y los componentes de robótica que caracterizan a esta versión. A continuación una breve descripción del hardware disponible en la versión Lego NXT Fig. 6.1: Lego Hardware Unidad de procesamiento Unidad de control programable. La misma es re configu- rada con una imagen provista por el entorno Lejos el cual permite controlar el hardware utilizando una API bajo el lenguaje JAVA. Los desarrollos del presente trabajos están cons- truidos utilizando esta arquitectura abierta. 28 6. Lego Mindstorm 29 Fig. 6.2: Lego Unidad Control Servomotores Los servomotores no son simples motores, ya que tienen una doble fun- ción. En primer lugar, podemos hacer que se muevan a una determinada velocidad o con determinados ángulos, pero además, también pueden actuar como sensores de rotación Fig. 6.3: Lego Servomotor Sensor de sonido El sensor de sonido incorpora un pequeño micrófono, permitiendo así que se pueda programar un robot para que pueda reaccionar ante señales acústicas Fig. 6.4: Lego Sonido Sensor de contacto El sensor de contacto incorpora un pequeño pulsador, con lo que, por ejemplo, se podría crear un pequeño parachoques que detectara si el robot ha impactado con algo que tiene delante. 6. Lego Mindstorm 30 Fig. 6.5: Lego Contacto Sensor de distancia El sensor de distancia es capaz de medir distancias de 7 a 1,80 metros, aportando a nuestro robot una capacidad de visión muy interesante. Funciona al igual que la visión de los murciélagos, a través de ultrasonidos. Fig. 6.6: Lego Distancia Sensor de color El sensor de color es capaz de distinguir 3 niveles de colores (RGB), es decir, rojo, verde, y azul. Este sensor es utilizado en el presente trabajo para el seguimiento de las líneas en mapa. El sensor de Color NXT funciona de la siguiente manera: Se conecta a un puerto de sensores del NXT mediante un cable NXT normal y hace uso del protocolo digital de comunicaciones I2C. El Número de Color calculado por el sensor se refresca aproximadamente 100 veces por segundo. Este sensor incorpora tres LEDs (RGB: red, gren ,blue) de distinto color que iluminan la superficie cuyo color desea detectarse. Se mide la intensidad que esta superficie refleja para cada uno de los colores y , Mediante el valor de la intensidad relativa reflejada de cada uno de los colores, el sensor de color calcula un Número de Color, que es el valor que se devuelve al programa NXT. El sensor de color RGB se puede utilizar en tres Modos: Modo sensor de color, usando el software estándar, puede detectar seis colores: negro, blanco, rojo, verde, azul y amarillo Modo lámpara: es posibe controlar los LED’s del sensor como verde, rojo y amarillo 6. Lego Mindstorm 31 Modo de sensor de luz: En este modo, actúa como el sensor de luz antigua: devuelve un valor de 0-100 donde 0 es más oscuro, y el 100 es más brillante. En este modo, también es posible elegir un LED de color deseado (de nuevo, rojo, azul o verde) 6.2. LEJOS Dado que Lego provee un entorno propietario cerrado para la programación de la uni- dad de control del Lego es necesario realizar una re configuración de la unidad de control reemplazando su sistema operativo si se quiere desarrollar aplicativos utilizando otras he- rramientas o lenguajes como por ejemplo Java. Para el desarrollo de los drivers se ha escogido utilizar Lejos que es una pequeña má- quina virtual Java que se instala en la unidad de control Lego y permite el desarrollo y ejecución de aplicativos escritos en Java dentro de esta unidad de control. Lejos expone una API que permite el control del hardware provisto por Lego. 6.3. Construcción Para poder ejecutar los casos de estudios propuestos en esta tesis utilizando los robots Lego NXT y EV3 fue necesario construir los agentes autónomos físicos. Por motivos de prac- ticidad y evitando incorporar variables adicionales a los modelos planteados como ser la resolución de la posición de los robots, he tomado la decisión de utilizar modelos que se ubi- can en el terreno siguiendo un camino mediante la lectura del terreno utilizando un lector óptico RGB. El modelo del agente construido consta de un sistema de tracción basado en 2 servo- motor, que mediante las ruedas de tracción, permiten el control direccional del agente. En el frente central se ubica el lector óptico que sensa constantemente el terreno en busca de variaciones de color identificando si el lector se encuentra sobre el camino, fuera del camino o en algún punto de interés como ser una intersección. El cuerpo del agente consta de la unidad de control programable donde reside el driver encargado de ejecutar los algoritmos de control y comunicación con el controlador sintetizado. A continuación se aprecia las unidades construidas para el modelo Lego NXT: 6. Lego Mindstorm 32 Fig. 6.7: Robot NXT Y el modelo construido para el modelo Lego EV3: Fig. 6.8: Robot EV3 - Frente 6. Lego Mindstorm 33 Fig. 6.9: Robot EV3 - Atras 6.4. Driver Para que el robot construido para ejecutar las pruebas de concepto pueda interpretar y ejecutar las instrucciones primitivas que recibe del controlador sintetizado y a su vez pueda reportar de regreso el estado del mismo es necesario el desarrollo de un driver que es ejecu- tado por la unidad de control del Lego. Este driver consiste en un aplicativo que es ejecutado por Lejos y es el encargado de: Calibración Al iniciar el driver el mismo ejecuta una secuencia de calibración de los sensores. El objetivo del mismo obtener las lecturas de referencia según el ambiente donde se realizará la ejecución. Comunicación La comunicación con el controlador es a través de Bluetooth. El driver inicia el canal de comunicación con el controlador y es por este que recibe los comandos a ejecutar y el driver reporta las condiciones de estado del mismo. Primitivas las primitivas son los comandos que el robot podrá ejecutar y los mismos son implementados por el driver. Estas primitivas tienen una relación directa con las acciones controlables del modelo. Ejemplo de las primitivas implementadas: • Follow • TurnRight • TurnLeft • TurnAround Informar cuando se haya alcanzado el objetivo deseado. Por ejemplo avanzar por una línea hastaun cruce determinado. Informar condiciones de error como ser que por alguna razón el robot se haya perdido o algún inconveniente relacionado con el hardware como por ejemplo batería baja. La figura 6.10 describe la arquitectura propuesta para el adaptador enactment y el driver instalable en la unidad de control del agente: 6. Lego Mindstorm 34 Fig. 6.10: Arquitectura Enactor NXT y Driver 6.5. Implementación driver La arquitectura del driver se basa en un diseño de 2 capas. La primera de bajo ni- vel NXTDriverComm encargada de la comunicación, control de los motores de tracción y lectura a través del lector óptico. La capa superior NXTDriver es responsable de la codifi- cación y ejecución de los comandos devolviendo al controlador sintetizado, mediante el canal de comunicación establecido, los mensajes de estado de ejecución. Adicionalmente esta úl- tima capa es la encargada de ejecutar la rutina de inicialización que incluye la calibración del sensor de color sobre el terreno. Esta calibración guía al usuario mediante la interfaz gráfica que la unidad de control Lego provee para que ubique el lector sobre el camino, fue- ra de camino e intersecciones con el fin de tomar los valores del terreno y poder con estos últimos nutrir a los algoritmos de control. El esquema de funcionamiento sigue el comportamiento “maestro-esclavo”. El agente recibe las instrucciones enviadas del controlador sintetizado, el agente ejecuta la instrucción y retorna el valor de estado. El siguiente esquema temporal representa un flujo de ejecucion: 6. Lego Mindstorm 35 Fig. 6.11: Esquema secuencia entre el adaptador y el driver 6.5.1. Comunicación La comunicación entre el agente y el controlador sintetizado se realiza mediante un canal Bluethooth. Lego NXT y EV3 provee un dispositivo Bluethooth incorporado en su unidad de control. El canal establecido es del tipo serial y el protocolo de comunicación definido sigue los siguientes lineamientos: Paquetes de longitud fija de 2 bytes representados por enteros Los paquetes que envia el controlador sintetizado respetan la siguiente codificacion definidos en RobotDriverCommCommands: • follow • turnLeft • turnRight • turnAround Los comandos listados son de longitud fija y los mismos no poseen parametros asocia- dos. 6. Lego Mindstorm 36 Los codigos definidos para los mensajes de respuesta son los siguientes: • sucess • fail • robotLost • unsupportedCommand Los mensajes de respuesta son de longitud fija y no poseen parametros adicionales. 6.5.2. Control Los comandos implementados en esta tesis que equivalen a los mensajes de control pro- venientes del controlador sintetizado. Los mismos como se ha mencionado anteriormente son: follow, turnRight, turnLeft, turnArround. Las rutinas se basan en el caso del follow en trasladar al robot a través del camino desde una intersección de inicio hacia otra intersec- ción. Para los comandos de turnRight, turnLeft y turnArround los algoritmos de control se encargaran de rotar al robot hacia la derecha, izquierda y 180 grados respectivamente. Cabe destacar que esta rotación adicionalmente tiene en cuenta la re ubicación del ro- bot nuevamente en la posición de intersección. Esto no es un detalle menor dado que debe tener en cuenta la geometría del robot construido y dado que el sistema de posicionamiento solo se basa en la lectura del sensor óptico, el mismo no debe perder el control de donde se encuentra el camino y la intersección. Dado esta dificultan, los algoritmos implementa- dos constantemente obtienen las lecturas del sensor a medida que se ejecuta la rotación del robot y dado el movimiento angular, decide cuando el mismo se encuentra nuevamente alineado sobre el camino. Como último paso se re ubica el robot sobre la intersección infor- mando el estado de completitud de la instrucción. Acerca del algoritmo de seguimiento del camino el algoritmo implementado utiliza téc- nicas de control continuo para controlar el avance del agente en función de las lecturas que se toman sobre el lector óptico. Dada la naturaleza de éste último las lecturas que se obtienen incluyen un ruido considerable que debe filtrarse e implementar mecanismos de tolerancia con el fin de no tomar decisiones equivocadas acerca de la posición del robot. El algoritmo implementado para el seguimiento de línea se basa fundamentalmente en el control continuo utilizando las lecturas del lector RGB que censa regularmente la super- ficie. Los valores obtenidos alimentan a la función de ajuste 6. Lego Mindstorm 37 offset = (linea + suelo)/2; constante_ajuste = velMax/(suelo-offset); ... error = color_lectura - offset; ajuste = constante_ajuste * error; Motor.A.setSpeed(Math.round(velMax + ajuste)); Motor.C.setSpeed(Math.round(velMax - ajuste)); Fig. 6.12: Algoritmo de control seguimiento camino El ajuste se aplica a las velocidades de rotación del motor izquierdo y derecho de mane- ra inversa. Adicionalmente mitigar el control de ruido en la lectura de colores se incorporó tolerancia al momento de reconocer si el agente se encuentra fuera del camino. En caso que el robot se encuentra fuera de camino, se implementó un algoritmo de re- cuperación que intenta realizar determinados movimientos en una cierta heurística con el fin de poder reestablecer al lector del agente sobre el camino. En caso que esta heurística falle el agente reporta un mensaje de estado robotLost que es transmitido al controlador sintetizado. Se ha presentado dificultades adicionales sobre el entorno donde el agente desempe- ñaba las instrucciones siendo las fuentes de luces ambientales el principal responsable en introducir ruido en las lecturas obtenidas llevando al agente a perder la posición sobre el terreno reportando un estado de falla (robotLost). En la sección Robustez 6.7 se detalla las mediciones con resultados estadísticos acerca de las puestas en ejecución del agente en el terreno utilizando distintos ambientes. De las lecturas obtenidas se han podido observar la injerencia de la fuente de luz en el ambiente como responsable de la eficacia del agente en poder reconocer correctamente la ubicación sobre el terreno. 6.6. Entorno para pruebas Los casos de estudios desarrollados en esta tesis han sido construidos en base a un en- torno descripto por una superficie donde una serie de caminos dibujados por líneas negras por donde el agente transitará. Adicionalmente se encuentran una serie de puntos de pa- rada donde el agente realizará las paradas indicadas con un color que se diferenciará del fondo del mapa y de los caminos. La traza propuesta describe una serie un cuadrado interior con puntos de paradas en sus esquinas y con caminos circulares de inicio y fin desde cada uno de los puntos de parada como indica la siguiente figura 6.13: 6. Lego Mindstorm 38 Fig. 6.13: Mapa Infinito 6.7. Robustez – Estadísticas La robustez del diseño planteado por el hardware subyacente puede ser medida en uno de sus aspectos por la ejecución satisfactoria por parte del robot de las instrucciones primi- tivas. La ejecución y performance de las operaciones dependen de la correcta lectura de los sensores, en especial para los casos de estudios planteados en este trabajo depende directa- mente del sensor óptico utilizado para el reconocimiento del camino. Se realizaron una serie de pruebas para determinar cuan eficiente es el lector óptico y cuan robusto es el robot a la hora de reconocer los caminos e intersecciones del mapa. Debido a que la luminosidad del ambiente tiene un impacto directo en el rendimiento del sensor óptico, se han tomado las muestras para distintos escenarios lumínicos: luz día luz tubo fluorescente incandescente oscuridad 6.7.1. Medición La medida utilizada para evaluar la performance del lector ha sido cantidad de opera- ciones primitivas realizadas (follow, turnRight, turnLeft, turnAround). 6.7.2. Escenario de pruebas El escenario escogido para el ensayo es una configuración de un “mapa infinito”. El mis- mo tiene como particularidad que
Compartir