Skip to content
Snippets Groups Projects

DSL pour Robotique en Essaim

Valeurs possibles pour chaque éléments de la description de l'environnement :

  • Sync := Permet de définir le type de synchronisation.
    • FSYNC -> Full synchrone
    • SSYNC -> Semi synchrone
    • ASYNC -> Asynchrone

exemple :

Sync := ASYNC 
  • Space := Permet de définir l'espace dans le quel vont évoluer les robots.
    • R -> une seul dimension
    • Rm -> millefeuille d'une dimension, correspondant par exemple a x routes paralelles
    • R2 -> plan
    • R2m -> millefeuille de plan, correspondant a des plan sur plusieurs etages
    • Ring n -> correspond a un anneau Z/nZ

exemple :

Space := Ring 5
  • Byzantine := Permet de déclarer le nombre de Byzantins ou directement les robots qui le sont via leur id.
    • x -> un entier correspondant à la proportion de Byzantins
    • [id1;id2;id3] -> liste d'entier correspondant aux id des Byzantins
exemple : Byzantine := [1;2;7;8]
  • Rigidity: Défini si le robot peut etre interrompu lors de son déplacement - Rigide -> Le robot finit sont déplacement avant de recommencer un cycle LCM - Flexible f -> f est une variable est correspond a la distance minimal que le robot va parcourir avant de pouvoir etre interrompu et commencer un nouveau cycle LCM
Rigidity := Flexible delta 

Couleur : Red; Blue; Yellow; Green; Purple; Orange

  • Robot := Permet de definir des champs privés et publiques pour le robot, il est necessaire de lister les éléments privés puis les éléments publiques
    • Private : Champ 1; Champ 2; ...
    • Public : Champ 3; Champ 4; ...

Les champs sont définis par l'utilisateur, et peuvent prendre des valeurs ou non. exemple :

Robot := Private :  Temperature; Coordonnee [5;1.8]
         Public : Id; Batterie
  • Sensors := Permet de définir les capteurs des robots, et les fonction de degradations sur informations reçues Default :
    • Range : Correspond à la distance de vue des robots
      • F Byzantinull -> Le robot à une range ilimité
      • Limited d -> range limité à un delta
      • K_Rand d k -> range limité à un delta + capable de voir k robots au dela de delta choisie rand
      • K_enemy d k -> range limité à un delta + capable de voir k robots au dela de delta choisie par un ennemie
    • Opacity: Correspond à l'opacité des robots
      • Opaque -> les robots derrières un autre robot ne sont pas visibles
      • Transparent -> les robots derrières un autre robot sont visibles
    • Multiplicity : Correspond à la détection de la multiplicité et la ditance de detection
      • No -> les robots ne detectent pas la multiplicité
      • Weak -> les robots detectent si il y a 1 ou plusieurs robots
      • Strong -> les robots detectent le nombre exacte de robots
      • Local -> detection a leur position
      • Global -> detection sur toutes les positions observés

On peut aussi utiliser les capacités/champs renseignés en PUBLIC dans Robot

exemple:

Sensors := Range : Limited 5; Multi : Weak Local; 
           Opacity : Opaque;
           Batterie : (fun x -> if x > 50 then 100 else 50);
  • ActivelyUpdate := Permet de définir les champs de robots qui vont pouvoir etre modifié par le robogram, Location est par defaut.
ActivelyUpdate := Light