Microvacuum, un environnement minimaliste en ligne de commande
Ressources :
sources (Linux, Mac)
Note : la compatibilité Python2/Python3 est assurée en modifiant la fonction :
def input_key(msg):
par :
return raw_input(msg) # Python 2
#return input(msg) # Python 3
def input_key(msg):
dans microvacuum.py
#return raw_input(msg) # Python 2
return input(msg) # Python 3
Description :
- le module principal (microvacuum.py)
- un module d'IA
- un fichier texte décrivant l'environnement
- un fichier texte décrivant l'affichage de l'environnement
Le module principal initialise et contrôle l'exécution de la simulation, l'interface utilisateur et l'affichage. Il est possible de définir le module IA, les fichiers descripteurs et les paramètres du système visuel dans l'en-tête de ce module. L'environnement est décrit comme une matrice de nombre. L'agent interagit avec l'environnement par le biais de la classe Robot, contenant différentes fonctions et méthodes pour agir dans l'environnement :
- la position de l'agent est définie par les variables
x
et y
, l'orientation par la variable z
(pouvant prendre pour valeur 0, 1, 2 ou 3 correspondant aux orientations 0°, 90°, 180° et 270°). -
feel(self,x,y)
retourne la valeur de la cellule située aux coordonnées (x,y) par rapport à l'agent
-
see(self)
génère l'image fournie par le système visuel de l'agent
-
move(self,x,y,z)
déplace l'agent (position {x,y} et rotation z).
-
change(self,x,y,id)
remplace la valeur de la cellule située aux coordonnées (x,y) par rapport à l'agent par la valeur id
Les modules d'IA (dans le répertoire
AI
) contiennent les algorithmes permettant à l'agent de fonctionner. Le fichier Min/ai.py est un module minimal, contenant toutes les fonctions et méthodes nécessaires. Les modules RI1 et PRI1 sont des exemples de modules d'IA respectants les principes du modèle Radical Interactionism.- la variable
name
permet de donner un nom au module, qui sera utilisé pour reconnaître les fichiers de sauvegarde.-
intend(self)
est la méthode qui permet à l'agent d'agir dans son environnement. Cette méthode décrit l'interaction entre l'agent et son environnement. Dans cet exemple, l'agent choisi aléatoirement d'avancer, de tourner à droite ou de tourner à gauche. Les cellules de valeur 1 sont ici définies comme non traversables : si l'agent est face à une cellule de valeur 1, il ne peut pas avancer.-
display(self)
permet de retourner un message à afficher sous l'affichage principal.-
getDisplayLine(self,l)
permet d'afficher des informations à droite de l'affichage principal. Le module principal récupère ces informations ligne par ligne (l).-
listCommands(self)
retourne la description des commandes utilisateur propres à ce module IA.-
commandLine(self,args)
permet de traiter les commandes utilisateur propres à ce module IA. args est une liste de chaines de caractères correspondant à la commande et à d'éventuels arguments.-
getAgentSymbol(self)
permet de spécifier l'indice du caractère à afficher pour représenter l'agent (qui sera récupéré dans le fichier de description de l'affichage). Le symbole peut par exemple varier en foction de l'orientation de l'agent ou en fonctions d'états internes.-
load(self,text)
permet de charger des informations issues de la chaîne de caractère text
.-
save(self)
permet de retourner une chaîne de caractère contenant des informations qui seront sauvegardées dans un fichier texte.Le fichier descripteur de l'environnement est un fichier texte situé dans le répertoire
env
. L'environnement est décrit sous la forme de nombres séparés par des espaces. Les fichiers env1.txt
et env2.txt
montrent deux exemples de fichiers descripteurs valides.Le fichier descripteur de l'affichage est un fichier texte situé dans le répertoire
skin
et contient les symboles à afficher pour représenter l'environnement et l'agent. Le fichier doit contenir deux lignes : la première contient les symboles représentant l'agent. Notons que si getAgentSymbol(self) retourne un identifiant supérieur au nombre de symboles, le premier symbole sera affiché. La seconde ligne contient la liste des symboles représentant les cellules de l'environnement. Une cellule contenant le nombre N sera représenté par le Nème symbole de cette liste. Si N est supérieur au nombre de symboles, la cellule sera alors représenté par son propre nombre.Les fichier skin1.txt
et skin2.txt
montrent deux exemples de fichiers descripteurs valides.Utilisation :
une fois dans le répertoire microvacuum, on lance la simulation par la commande :
python microvacuum.py
Le simulateur se lance en mode commande, permettant d'agir sur la simulation. Voici la liste des commandes :
'c [x] [y] [id]': remplacer la valeur de la cellule (x,y) par 'id'
'h': lister les commandes
'load [file]': charger le fichier [file].txt
'm [x] [y] [rz]': changer la position et l'orientation de l'agent par (x;y,rz)
'q': quitter le simulateur
'r': lancer/continuer la simulation
's': avancer la simulation d'un pas
'save [file]': sauvegarder dans [file].txt. Si le fichier existait déjà, il sera écrasé.
'screen [file]': faire une capture d'écran et l'enregistrer dans [file].txt
't' [time]: définir une durée de [time] secondes entre deux pas
'v': afficher/masquer le système visuel
D'autres commandes peuvent être ajoutées par le module IA
La simulation se lance avec la commande 'r'. Une fois la simulation lancée, on peut mettre en pause et retourner au mode commande en pressant 'p', ou quitter la simulation en pressant 'q'