Des agents ambiants

1 - Objectif

La plateforme SKUAD est une plateforme agent, cela signifie que l’élément central des systèmes que l’on conçoit avec cette plateforme sont des composants logiciels qu’on appelle des agents. Si ce terme ne vous est pas familier vous comprendrez progressivement le potentiel de ce concept dans les tutoriels de ce site. Pour le moment, vous pouvez considérer simplement qu’un agent est une unité de code qui réalise des traitements.

Bien sûr SKUAD n’est pas la première plateforme agent. Il en existe déjà depuis longtemps, et bon nombre des fonctionnalités de SKUAD sont réalisables avec certaines d’entre elles. Aussi, afin que vous compreniez les raisons qui ont motivé ce projet, dans ce guide illustratif nous allons nous limiter à mettre en évidence l’un des aspects qui différencie SKUAD des autres plateformes : la possibilité de concevoir des agents ambiants.

Un agent ambiant c’est un agent qui évolue dans notre environnement. Cela veut dire que ses traitements sont réalisés en temps réel, et que l’agent peut exploiter des équipements physiques. Ces agents se distinguent ainsi des agents purement logiciel dont les interactions se limitent à des échanges de donnée, et des agents simulés qui s’exécutent dans un contexte où le temps est virtuellement accélérés afin de réaliser des simulations.

Nous allons donc mettre en évidence ici la nature « ambiante » des agents SKUAD.

 

2 - Pré-requis

Pour réaliser ces manipulations vous avez juste besoin d’un ordinateur fonctionnant sur n’importe quel système d’exploitation (Linux, Windows ou Mac). Les programmes que nous allons exécuter sont écris en Java. Aussi, si Java n’est pas installé sur votre système vous allez devoir le mettre en place en suivant les directives de la section 3 ci-dessous.

Notez qu’ici nous avons juste besoin du JRE (l’environnement d’exécution Java, voir détail dans la section 3), mais néanmoins nous vous conseillons d’installer la distribution JDK (l’environnement de développement Java) car celle-ci deviendra vite indispensable si vous décidez d’aller un peu plus loin avec SKUAD.

 

3 - Mise en place du JDK
 

4 - Téléchargement de la librairie SKUAD

Maintenant que Java est en place, vous devez télécharger la dernière version de la librairie SKUAD en suivant ce lien : Téléchargement. Comme indiqué sur cette page de téléchargement, vous devrez décompresser l’archive .zip que vous aurez récupéré. Aussi, faites cette décompression dans un dossier que vous allez nommer skuad, c’est ce dossier qu’on appellera le dossier SKUAD. Si vous observez son contenu vous constaterez que le dossier SKUAD contient 3 éléments :

  • readme.txt : un fichier d’information minimaliste sur la version et l’utilisation de SKUAD.
  • lib : un sous-dossier qui contient le fichier de la librairie SKUAD.
  • start.class : le programme de lancement.
 

5 - Une lumière

Nous allons illustrer la capacité des agents SKUAD à interagir avec des dispositifs physiques. Un agent étant un code logiciel, il est bien entendu que cette capacité nécessite une liaison numérique permettant au code d’agir sur l’équipement. Dans la plateforme SKUAD cette liaison est faites par le sous-framework UDA. Concrètement : en bout de chaîne de cette liaison, soit au point de contact avec l’équipement, un montage électronique transcrit l’interaction pour appliquer l’ordre de lecture ou d’actionnement souhaité par l’agent. Pour être à la fois concis et précis, nous emploierons le terme de device pour désigner un dispositif muni de cette extension de transcription de commande.

Dans un prochain tutoriel nous aurons l’occasion d’expérimenter plus fidèlement l’ensemble de cette liaison dispositif physique<->agent à l’aide d’un Raspberry Pi. Mais pour l’heure, et afin que vous soyez tous en mesure de réaliser les manipulations de ce guide initiatique, nous allons plutôt utiliser un device virtuel prenant la forme d’une application qui va représenter une lumière par un dessin dans une fenêtre de l’écran. Il s’agit du programme DLight qui est fournit avec la librairie SKUAD.

Pour lancer l’exécution de ce programme ouvrez une console et placez-vous dans votre dossier SKUAD. Puis tapez la commande suivante :

  > java   start   DLight  

La fenêtre suivante va alors s’afficher :

Il s’agit de la représentation visuelle du device virtuel que vous venez de lancer.
L’ampoule est de couleur bleue pâle, et cela représente une lumière éteinte. Comme vous le constatez cet état ne change pas. Laissez donc ce programme actif dans un coin de votre écran.

 

6 - Un agent

Nous allons maintenant mettre en place un agent qui va manipuler cette lumière. Ouvrez une autre console, placez-vous dans votre dossier SKUAD, puis cette fois tapez la commande suivante :

  > java   start   AgentLightBlink  

Ce programme crée un agent dont le traitement (s’agissant d’un agent on parlera aussi de comportement) consiste à prendre le contrôle du premier device de type lumière présent dans l’environnement, puis d’allumer et d’éteindre successivement cette lumière toutes les 3 secondes. En observant la fenêtre du programme DLight vous devriez voir l’expression de ce comportement.

Comme vous le constatez le device et l’agent évoluent dans 2 programmes distincts. Ils pourraient tout aussi bien être dans un même programme. Où encore fonctionner sur des machines différentes. Cela ne changerait rien dans la mesure ou ces machines restent interconnectées au même réseau local (afin d’assurer l’existence d’une liaison numérique entre l’agent et le dispositif). Vous pouvez aussi à tout moment arrêter l’un des deux programmes puis le relancer, ou arrêter les deux programmes et les relancer dans un ordre différent. Faites également l’expérience de lancer plusieurs programmes DLight, puis d’en arrêter certains, dont celui contrôlé par l’agent. Le simple fait que l’agent et qu’au moins un device lumière soient présents en même temps suffit à ce que le comportement de l’agent puisse pleinement s’exprimer. C’est l’ensemble de ces flexibilités, spatiales et temporelles, qui traduisent la nature « ambiante » des agents SKUAD.

Remarquez enfin qu’a aucun moment il nous a été nécessaire de spécifier une quelconque information de configuration. C’est aussi là une des caractéristiques importantes de SKUAD : son déploiement est zero-config.