1 Arquitectura y funcionalidad de SALSA presentado por Marcela Rodríguez [email protected] Noviembre, 2004
2 Contenido Cómputo Ubicuo Agentes Arquitectura de SALSA Sistema basado en SALSA API de SALSA Hola Mundo de SALSA
3 Definiciones “La creación de ambientes saturados de computación y comunicación inalámbrica, integrados en forma natural a la actividad humana” M. Satyanarayanan “…realza el uso de la computadora, ya que hace posible que muchas computadoras estén disponibles en un ambiente físico, y a la vez, de forma invisible al usuario.” Mark Weiser Cómputo Ubicuo
4 Características Extiende la capacidad computacional al entorno del usuario La información está presente en todas partes en forma de dispositivos de todas escalas conectados en red Muchos dispositivos conectados Lo mas transparente posible para el usuario. “omnipresencia” de la computación Cómputo Ubicuo
5
6 Términos relacionados Realidad aumentada Cómputo penetrante Computadora invisible (o que desaparece) Computación conciente del contexto Computación proactiva Inteligencia ambiental (AmI) Cómputo Ubicuo
7 Computación Conciente del Contexto Contexto Cualquier información que caracteriza una situación relacionada a la interacción entre usuarios, aplicaciones y el ambiente que nos rodea [Dey y Abowd, 2000] Sistema Conciente del Contexto Software que se adapta de acuerdo a su ubicación de uso, a la colección de objetos y personas cercanas, así como a los cambios a dichos objetos a través del tiempo [Schilit y Theimer 1994]. Cómputo Ubicuo
8 Inteligencia Ambiental Cómputo Ubicuo Ubiquitous Computing PDA Cell Phone Red AD HOC (c) LAN (a ) Laptop Server Printer INTERNET PC Server Access Point PC WLAN (b) Laptop Access Point Red AD HOC (d ) HCI Context-aware Computing IM Client Initialize and Register Perception Reasoning Action X Y SS3SS2 SS1 notify() Agent Artificial Intelligence AmI
9 Características de AmI Reactivity Opportunistic access Case Base Reasoning Autonomous Agents Neural Networks Effortless interactions Presentation of services Distributed Mobility Interoperability Scalability Heterogeneity Cómputo Ubicuo
10 Motivación de SALSA Agentes autónomos para abordar algunas de las complejidades del cómputo ubicuo Agentes autónomos como una abstracción de diseño de sistemas ubicomp Necesidades de herramientas (arquitecturas, middleware, frameworks, etc.) para el desarrollo iterativo de ambientes ubicuos Cómputo Ubicuo
11 Agentes Autónomo Es una entidad encapsulada que resuelve problemas y exhibe las siguientes propiedades: –Proactividad, Reactividad, Comportamiento colaborativo, Movilidad Tiene la capacidad de decidir qué acciones ejecutar y cuándo ejecutarlas de acuerdo con el contexto de la situación Agentes
12 Agentes en Ubicomp Agentes como asistentes personales, actúan en representación de usuarios, representan dispositivos (proxy a dispositivos), proporcionan servicios e información relevantes a la actividad del usuario, Esconden una funcionalidad compleja al usuario. Agentes
13 Ciclo de vida de los agentes SALSA
14 Arquitectura de SALSA 3. Middleware SALSA
15 CHIS (“Context-aware Hospital Information System”) Location-estimation
16 CHIS (“Context-aware Hospital Information System”)
17 Ventajas del Directorio de Agentes Servicios “yellow-pages” y “white-pages” Guarda la configuración del ambiente Facilita su recuperación LDAP (Lightweight Directory Access Protocol ) –Proporciona acceso cliente-servidor a directorios en red –Permite buscar, leer, agregar, borrar, y actualizar un directorio Directorio de Agentes
18
19 Tutorial de SALSA
20 Contenido Creación de Agentes Comunicación Eventos de SALSA Derivando Contexto Secundario Atributos de los Agentes Directorio de Agentes Instalación
21 Tipos de Agentes SALSA Tipos de agentes que se pueden crear según su funcionalidad: –Agente que representa a un usuario –Agentes que ofrece o representa un servicio –Agente que envuelve una funcionalidad compleja del sistema, que requiere ser transparente al usuario Creación de Agentes
22 Comunicación de los Agentes Las modalidades de comunicación entre agentes son: –Comunicación a través del Broker (los agentes perciben información de otros agentes y actúan comunicándose por medio del Broker (servidor de MI) –Comunicación directa (p.ej. un agente percibe información de un sensor y la comunica a otro agente directamente, por privacidad) Creación de Agentes
23 1.Crear los siguientes componentes del Agente: A) Razonamiento: Extender la clase SALSA.Reasoning y sobreescribir el método think(EventObject ev) B) Acción: Extender la clase SALSA.Action y sobreescribir el método execute() NOTA: En este primer ejemplo de un agente SALSA, la Percepción y comunicación, se realiza a través de MI utilizando el Cliente Jabber de SALSA. Creación de Agentes Pasos para crear un Agente
24 2.Se extendiede la clase SALSA.Agent class MyAgent extends Agent 3.En el constructor del agente se inicializan sus atributos y componentes: –Especificar la dirección Jabber de este agente, poniendo el atributo JabberID attributes.setJabberID(agent@ServJabber) –Especificar el cliente Jabber jc=new JabberClient(serv,pto,nombre,pwd) Creación de Agentes (con comunicación via el Broker) … Pasos para crear un Agente
25 –Crear una instancia del componente de Razonamiento –Activar el agente invocando el método activate(razonamiento,clienteJabber) Crear una instancia del Agente MyAgent myAgent=new MyAgent() Creación de Agentes (con comunicación via el Broker)
26 Componente de Razonamiento Creación de Agentes Se extiende de ReasoningSe sobreescribe método think() con la lógica del razonamiento Se invoca la acción(es)
27 Componente de Acción Creación de Agentes Se extiende de ActionSe sobreescribe método execute()
28 Agente Hola Mundo Creación de Agentes (con comunicación via el Broker)
29 Contenido Creación de Agentes Comunicación Eventos de SALSA Derivando Contexto Secundario Atributos de los Agentes Directorio de Agentes Instalación
30 Comunicación mediante el Broker Una acción de un agente puede requerir comunicación con otros agentes para: Negociar por un servicio Solicitar información Comunicar información percibida desde un sensor o dispositivo del ambiente Enviar su presencia que indique su estado actual Actualizar su componente de razonamiento (**movilidad) Comunicación
31 Negociar por un servicio Comunicación
32 Solicitar Información Comunicación
33 Comunicar información de un sensor Comunicación
34 Comunicación mediante el Broker El componente de Acción (clase Action) provee de métodos de comunicación Se envían mensajes XML a través del Broker Cuando el agente recibe un mensaje, el componente de Razonamiento recibe un evento que indica el tipo de mensaje y contiene al mensaje Comunicación
35 Recepción de un mensaje public class AgentDirectoryReasoning extends Reasoning { public void think(EventObject ev){ SALSA.Events.Event event=(Event)ev; if(event.getType()==event.ArriveRequestEvent) { Utilidades.Parser p = new Utilidades.Parser(event.xml);//PARSEO DE MENSAJE XML: String tipoRequest=p.getTag("type"); //SE OBTIENE EL TIPO INFO. SOLICITADA String to=p.getAtt(p.raiz,"from"); //SE OBTIENE QUIEN ENVIO EL MENSAJE String ldap_info = retrieveLDAP(); //RECUPERA INFORMACION DEL DIRECTORIO LDAP //LA ACCION DEL AGENTE ES ENVIAR LA INFORMACION DE LDAP acting.act(new AgentDirectoryAction(to,tipoRequest,ldap_info)); } Comunicación mediante el Broker Se verifica qué tipo de evento se generó El método think() recibe un evento indicando el tipo de información recibida Se analiza el mensaje
36 Envío de un mensaje public class AgentDirectoryAction extends SALSA.Action{ String ldap; //informacion del directorio de Agentes String to; String type; public AgentDirectoryAction(String to,String type,String ldap) { this.ldap=ldap; this.to=to; this.type=type; } public Object execute(){ sendResponse(to,"",type,ldap); return null; } Comunicación mediante el Broker El método execute() contiene la acción(es) a ejecutar
37 Métodos de Comunicación public class HelloWorldAction extends Action{ public Object execute(){ sendCommandRequest("mapa@jabber","","desplegar", " emergencias "); sendNotificationInfo("display@jabberClient","","mapa_no_disponible", " emergencias "); sendRequest("da@jabber","","UsersAndServices"," mi "); sendResponse("agente@jabber","","UsersAndServices",ldap_info); sendDataSensor("paciente","","glucose"," 80 "); return null; } Comunicación mediante el Broker
38 Métodos de Comunicación Comunicación mediante el Broker
39 Métodos de Comunicación Comunicación mediante el Broker
40 Contenido Creación de Agentes Comunicación entre Agentes Eventos de SALSA Derivando Contexto Secundario Atributos de los Agentes Directorio de Agentes Instalación
41 Eventos de SALSA
42 Contenido Creación de Agentes Comunicación entre Agentes Eventos de SALSA Derivando Contexto Secundario Atributos de los Agentes Directorio de Agentes Instalación
43 Contexto Secundario Derivando Contexto Secundario XSL medio 40 30 fiesta
44 Derivando contexto secundario public class HelloWorldReasoning extends Reasoning { public void think(EventObject ev){ //Se crea instancia de SecondaryContext y se especifica el arch.xsl //que contiene las reglas para derivar contexto SecondaryContext sd=new SecondaryContext(xsl); //Se especifican las variables contextuales sd.setContextualVariable("nivelLuz"); sd.setContextualVariable("nivelRuido"); sd.setContextualVariable("noPersonas"); //Se deriva contexto String xmlSecondaryContext=sd.derive(ev); //Se analiza xmlSecondaryContext...... } Derivando contexto secundario
45 Analizando un mensaje xml Clase Parser del paquete Utilidades: Utilidades.Parser p = new Utilidades.Parser(event.xml);//PARSEO DE MENSAJE XML: String contexto=p.getTag(“contexto"); //SE LEE VALOR DE ETIQUETA CONTEXTO String tipo=p.getAtt(p.raiz,“type"); //SE LEE VALOR DE ATRIBUTO Derivando contexto secundario
46 Contenido Creación de Agentes Comunicación entre Agentes Eventos de SALSA Derivando Contexto Secundario Atributos de los Agentes Directorio de Agentes Instalación
47 Atributos del Agente
48 Contenido Creación de Agentes Atributos de los Agentes Comunicación entre Agentes Eventos de SALSA Derivando Contexto Secundario Atributos de los Agentes Directorio de Agentes Instalación
49 AgentDirectory ad=new AgentDirectory((“AD@pc- coolab5"); ad.register(agentito1,"user"); //Solicitudes al directorio de agentes ad.requestAllServices(); ad.requestByService(); ad.requestServicesByArea(); Directorio de Agentes
50 Contenido Creación de Agentes Atributos de los Agentes Comunicación entre Agentes Eventos de SALSA Derivando Contexto Secundario Atributos de los Agentes Directorio de Agentes Instalación
51 Incluir en classpath: –SALSA.jar (API para crear agentes) –Client.jar (API para crear un cliente jabber) –Utilidades.jar (API para parsear doc XML) Instalar un servidor Jabber: Timp Management Console 0.9.40, para Windows, http://www.tipic.comhttp://www.tipic.com Instalación
52 Percibiendo de sensores/dispositivos Creación de Agentes
53 …Percibiendo de sensores/dispositivos Creación de Agentes Este agente no percibe, ni se comunica via el broker