Вы находитесь на странице: 1из 22

PabloMuozMartnez DepartamentodeAutomtica GrupodeSistemasInteligentes

PLEXIL Y EL UNIVERSAL EXECUTIVE

Septiembre de 2009 Actualizado Septiembre de 2012

NDICE

Sistemasde Sistemas deejecucin ejecucin El lenguaje PLEXIL El Universal Executive

Sistemas de ejecucin

Sistemas diseados para interactuar entre el deliberador (ej. planificador) y el soporte de bajo nivel (ej.
lgica de bajo nivel)
Deliberador
Sistema de ejecucin

Tpicamente ocupan el nivel medio en las arquitecturas 3T

Control hardware

PLEXIL y Universal Executive:

Hardware

Desarrollado por el Ames Research Center (NASA)


Inicio del proyecto: 2006 ltima actualizacin: Julio de 2012 (v2.5) Licencia BSD Lenguaje de modelado + ejecutor

NDICE

Sistemas de ejecucin El lenguaje PLEXIL


Nodos Variables y expresiones Condiciones Tipos de nodos Estado de los nodos Acciones de alto nivel Gestin de recursos Comunicacin con el mundo exterior PlexilScript Telemetra

El Universal Executive

El lenguaje PLEXIL

PLan EXecution Interchange Language Valido para sistemas mono o multiagente El plan modelado ser un rbol de tareas Codificacin en XML (a partir de una sintaxis simplificada y un
traductor)

Caractersticas:

Compacto Semnticamente sencillo Determinista (ante la misma secuencia de eventos) Manejo de recursos y del tiempo*
5

Nodos

Elemento fundamental del lenguaje Compuesto por:


Variables: datos internos Datos del nodo: que hace el nodo

nombreNodo: nombreNodo: {{ <variables> <variables> <condiciones> <condiciones> <cuerpo> <cuerpo> }}

Condiciones: control de la ejecucin del nodo

Un nodo puede contener nodos estructura de rbol

Variables y expresiones

4 tipos de datos internos:

Boolean (lgica trivaluada!), integer, real, string

Vectores de un tipo primitivo (uso limitado) Posibilidad de manipular fechas y lapsos de tiempo Visibilidad:

Accesibles totalmente desde el nodo que las declara y sus hijos a no ser que se declare la interfaz Interfaces: In e InOut (slo lectura o lectura-escritura) Formadas por los operadores tpicos: +, -, * y abs(), sqrt() Operadores booleanos: >, >=, ==, !=, &&, || 7 Siempre como resultado un tipo simple

Expresiones:

Condiciones

Controlan cuando puede ejecutarse un nodo, finalizar o las circunstancias en las que lo hace Resultado de evaluar una expresin que puede contener variables o datos del estado de un nodo 7 posibles condiciones:

StartCondition PreCondition EndCondition PostCondition

SkipCondition RepeatCondition InvariantCondition

Tipos de nodos

Cada nodo slo puede ser de un tipo, el cual determinar como se comporta particularmente Seis tipos de nodos:

Empty Assignment Command Update LibraryCall NodeList

raiz: raiz: {{ Reala=1; Reala=1; Realb=3; Realb=3; Realc=2; Realc=2; Realx1; Realx1; Realdiscriminando; Realdiscriminando; NodeList: NodeList: calcularDiscriminando: calcularDiscriminando: { { PostCondition:discriminando>=0; PostCondition:discriminando>=0; Assignment:discriminando=b*b4*a*c; Assignment:discriminando=b*b4*a*c; } } calcularRaiz1: calcularRaiz1: { { StartCondition:calcularDiscriminando.outcome==SUCCESS; StartCondition:calcularDiscriminando.outcome==SUCCESS; SkipCondition:calcularDiscriminando.outcome==FAILURE; SkipCondition:calcularDiscriminando.outcome==FAILURE; Assignment:x1=0b+(sqrt(discriminando)/(2*a)); Assignment:x1=0b+(sqrt(discriminando)/(2*a)); } } raizNegativa: raizNegativa: { { StartCondition:calcularDiscriminando.outcome==FAILURE; StartCondition:calcularDiscriminando.outcome==FAILURE; SkipCondition:calcularDiscriminando.outcome==SUCCESS; SkipCondition:calcularDiscriminando.outcome==SUCCESS; 9 Command:x1=calcularRaizCompleja(a,b,c); Command:x1=calcularRaizCompleja(a,b,c); } } }}

Estado de los nodos

Cada nodo tiene una serie de estados internos


Determinan la situacin actual del nodo Accesibles por su padre, hermanos e hijos Permiten conocer:

Estado de ejecucin (state: inactive, executing, failing...) Puntos de tiempo para un estado (start o end) Estado o valor de salida (outcome: success, failure...) Estado del valor de fallo (si procede) (failure:
post_condition_failed, parent_failed...)

Estado del manejador de comandos (slo nodos de comando) (command_handle: command_success, unknown...)
10

Acciones de alto nivel

Se permite que un nodo tenga un comportamiento definido de alto nivel, similar a un lenguaje de programacin convencional:

Sequence Unchecked sequence Concurrence Try If-then-else While loop For loop

Root:Concurrence Root:Concurrence {{ Integerx; Integerx; Init: Init: x=GetX(); x=GetX(); Commence: Commence: { { Booleanresult; Booleanresult; StartConditionInit.state==FINISHED; StartConditionInit.state==FINISHED; PostConditionresult; PostConditionresult; SynchronousCommandresult=DoIt(x); SynchronousCommandresult=DoIt(x); } } InformSuccess: InformSuccess: { { StartConditionCommence.outcome==SUCCESS; StartConditionCommence.outcome==SUCCESS; inform("Operationsucceeded!"); inform("Operationsucceeded!"); } } InformFailure: InformFailure: { { StartConditionCommence.outcome==FAILURE; StartConditionCommence.outcome==FAILURE; inform("Operationfailed!"); inform("Operationfailed!"); 11 } } }}

Gestin de recursos

Slo se pueden indicar recursos para los nodos de comando Una entidad particular se encargar de su gestin: el arbitrador de recursos Soporta recursos unarios, no unarios, jerrquicos y recursos renovables Un nodo puede usar varios recursos, con una nica prioridad y la cantidad necesaria puede ser dinmica MoverBrazo1: en tiempo de ejecucin MoverBrazo1: {
{ ResourcePriority:10; ResourcePriority:10; Resource:Name="brazo1"; Resource:Name="brazo1"; Resource:Name=energia, Resource:Name=energia, LowerBound=costeMovimiento, LowerBound=costeMovimiento, ReleaseAtTermination=false; ReleaseAtTermination=false; Command:moverBrazo(); Command:moverBrazo();

12

}}

Comunicacin con el mundo exterior

Para conocer el estado del mundo o actuar sobre l hay tres opciones:

Comandos: actan sobre el mundo (asociados a la interfaz de control de bajo nivel)


por defecto su comportamiento es asncrono posibilidad de declarar comandos sincronizados

Lookups: permiten consultar un estado particular del mundo a travs de la interfaz de bajo nivel
consultas sncronas o asncronas, usadas como condiciones de ejecucin de los nodos el tiempo se consulta con lookups
13

PlexilScript

No pertenece al lenguaje como tal Se utiliza para la simulacin de planes Igual que PLEXIL se codifica en XML, usando una sintaxis cmoda (Plexil estndar o PlexilLisp) traducida Permite:

Definir los estados y sus valores (entre ellos el tiempo) Cambiar los valores de los estados en cualquier punto Devolver los resultados de las funciones Devolver las respuestas a los comandos lanzados
14

Telemetra

Posibilidad de interaccionar con el sistema de telemetra La telemetra se simula mediante un archivo similar a un script
Line1:<telemetry_data_name:string><time:real> Line1:<telemetry_data_name:string><time:real> Line2:<telemetrydata> Line2:<telemetrydata>

Tambin se puede indicar parmetros del ejecutor al mundo exterior mediante los nodos update
Update<name>=(<value>|<variable>)[,<name>=(<value>|<variable>)]*; Update<name>=(<value>|<variable>)[,<name>=(<value>|<variable>)]*;

15

NDICE

Sistemas de ejecucin El lenguaje PLEXIL El Universal Executive


El UE y TextExec Ciclos de ejecucin El arbitrador de recursos Mltiples UE Simulador grfico


16

El Universal Executive

El UE es un sistema que interpreta y ejecuta los planes escritos en PLEXIL Dado que el lenguaje es de propsito general, el UE tambin deber serlo El UE como tal es un framework que permite implementar el ejecutor en nuestra propia aplicacin Se compone de:

Ncleo: interpreta y ejecuta el plan Interfaz: define como se comunica con el mundo y el bajo nivel Arbitrador de recursos: componente que gestiona el uso de
recursos
17

El UE y TextExec

Para utilizar el UE se requiere un plan, la definicin de la interfaz correcta as como todos los elementos a controlar El control del framework viene dado por nuestro propio programa de control El TestExec sustituye la interfaz por un interprete PlexilScript Implementa el framework para poder simular planes mediante el plan y un script asociado

18

Ciclos de ejecucin

La ejecucin del UE viene dada en ciclos condicionados por:


Estado interno Eventos del mundo exterior (estado y comandos) Los cambios se propagan en cascada
Atomic Step MicroStep

Quiescence cycle Macro Step Plan execution


19

El arbitrador de recursos

Todo comando que utilice recursos deber pasar el proceso de arbitraje El arbitrador indicar que comandos cumplen las restricciones y lo notificar al UE Los recursos se arbitran durante el quiescence cycle

20

Mltiples UE

Se pueden tener en funcionamiento mltiples UE y que estas se comuniquen entre s


El proceso de comunicacin se basa en manejadores que indican que se debe hacer ante un comando y el paso de mensajes entre diferentes instancias del ejecutor

Funciona a travs del IpcAdapter

21

Simulador grfico

Se pueden visualizar grficamente los planes con Plexil Viewer o LUV (Lightweight Universal Executive Viewer) un visor grfico para UE va TCP/IP desarrollado en Java Se emplean los planes creados y su correspondiente script PlexilScript Adems LUV permite obtener diagramas Gantt

22

Вам также может понравиться