Programmation du robot Lego MindStorms à l'aide du grafcet
Par Yann Pineau
Lionel.Marce@univ-brest.fr
Laboratoire Langages et Interfaces pour Machines Intelligentes (LIMI)
Université de Bretagne Occidentale
 |
Introduction.
|
Le robot Lego MindStorms est à la base un jouet dédié
aux enfants, mais déjà, beaucoup de développeurs passionnés,
en ont fait un outil de travail. Cette page html a pour but de presenter
le travail réalisé par laboratoire de l'équipe LIMI
sur la programmation du robot a l'aide du langage grafcet. L'idée
de cette réalisation est partie de Mr Lionel Marcé, qui a
proposé a ses étudiants de maitrîse (année 1999-2000)
de réaliser un TER sur ce sujet.
Cette page décrit les différents outils utilisés
et le travail réalisé, qui ont permis la mise en oeuvre de
cette application.
Un exemple de fonctionnement est présenté à la
fin de ce document.
 |
Présentation des différents outils.
|
EG7+
EG7+ est un éditeur de programmes grafcet. Il a été
réalisé pour l'université de Bretagne occidentale
(Brest) par Philipe Le Parc et Marc Alix (Equipe LIMI du département
informatique). Le programme original EG7, a été réalisé
par Laurent Pastorelli, Université de Nice Sophia Antipolis. Ce
logiciel produit un fichier au format .gt, qui est issu du travail mené
par l'équipe LIMI sur les langages pivots publics.
GRAFSIG
Ce programme a pour but la transformation d'un programme au format
.gt issu du programme EG7+, en un ensemble d' équations Signal.
Le résultat est la production d'un fichier au format .SIG contenant
des équations signal correspondantes.
SIG
Ce programme est un compilateur signal de l'IRISA. Il permet la vérification
du programme et surtout la génération d'un code C nécessaire
à la programmation du robot par le systeme d'exploitation LegOS.
Comme il existe plusieurs syntaxes du code signal, il est nécessaire
de se procurer un traducteur. En effet, Grafsig génère un
code signal au format H2, alors que la version de signal utilisé
ici prend en entrée un fichier .SIG de systaxe V4. Pour la compatibilité
on utilise donc un traducteur de code H2 en code V4 (sigH2V4).
LegOS
LegOS est un compilateur C vers le langage du RCX (boitier de commande
du robot LEGO). Il à été dévelloppé
par Markus L. Noga en Octobre 1998. Vous pouvez le télécharger
sur le site http://www.noga.de/legOS/.
Ce site contient toutes les informations concernant son fonctionnement.
 |
Travail réalisé pour adapter le code signal.
|
CompilSL
Ce petit programme a été écrit pour traduire le
code C généré par le programme signal, en une code
C compatible avec le systéme LegOS. Il a été réalisé
au laboratoire LIMI. Il exécute un script awk pour l'adaptation
du code, puis exécute directement la compilation en code RCX par
appel aux routines du compilateur LegOS.
 |
Exemple de fonctionnement.
|
Description
Cette exemple est executable sur le modèle roverbot du robot
mindstorms.
Ce programme grafcet fait avancer le robot vers l'avant. Lorsque sa
moustache droite percute un obstacle il recule puis tourne sur lui même.
Le temps de recul ainsi que le temps de rotation durent environ deux secondes.
Le même processus est réalisé lorsqu'il percute un
obstacle avec sa moustache droite.
Lorsque le robot recule vers la droite, la variable "test" prend la
valeur 1, et lorsqu'il tourne vers la gauche, la variable "test" prend
la valeur 0. Cette variable sert à sauvegarder le dernier sens de
rotation. Elle est utilisée lorsque les deux moustaches percutent
un obstacle simultanément. Dans ce cas le robot tourne dans le même
sens que sa dernière rotation.
Grafcet sur eg7+
Compilation du code et chargement dans le RCX
La compilation est exécutée par l'intermédiaire
d'une interface graphique appelée outilimi. Après la compilation,
un petite interface s'ouvre. Elle permet le chargement du code dans le
RCX.
 |
Liens
|