Validation d’applications pour les Legos Mindstorms LABORIE Sébastien Validation d’applications pour les Legos Mindstorms Responsables : Yves LEDRU et Lydie du Bousquet Laboratoire : Logiciels, Systèmes et Réseaux
PLAN Introduction : Contexte et Problématique I – Le robot Lego Mindstorms 1. Description 2. Robot autonome ou communicant 3. Positionnement du robot II – L’application robotique 2. Spécification JML 3. Algorithme d’évitement d’obstacles 4. Les différents résultats Conclusion
CONTEXTE Laboratoire Logiciels, Systèmes et Réseaux ADELE DRAKKAR PLIAGE VASCO STORMS-BD SIGMA Etude des Logiciels Architectures Logicielles Spécification Validation par le test
PROBLEMATIQUE (1/3) Environnement de travail : Robot Lego Mindstorms : Commandé par un ordinateur (le RCX) qui peut être programmé en Java. Java Modelling Langage (JML) : Langage de spécification formelle.
PROBLEMATIQUE (2/3) But du projet : Expérimenter l’utilisation de JML en combinaison avec les Legos Mindstorms. Spécifier en JML et réaliser en Java une application qui illustre bien l’utilisation de propriétés.
PROBLEMATIQUE (3/3) Intérêts du projet : Expérimenter JML sur une application robotique. Spécifier en JML des contraintes réelles et objectives. Illustrer par des expérimentations le respect de ces contraintes.
I – Le robot Lego Mindstorms
Robotic Command eXplorer (RCX) Capteur d’intensité de lumière DESCRIPTION (1/3) Port infrarouge Robotic Command eXplorer (RCX) Capteur d’intensité de lumière Capteur de contact
DESCRIPTION (2/3) Le RCX est composé d’une machine virtuelle Java (JVM). Lego Java Operating System (LeJos) permet : L’implémentation de programmes Java. Le chargement de programmes Java sur le RCX.
DESCRIPTION (3/3) Conclusion : LeJos offre tous les outils nécessaires à : L’implémentation de divers algorithmes. La réalisation d’une application robotique.
Robot autonome ou communicant (1/5) Robot autonome : Tous les algorithmes sont chargés sur le RCX. Robot communicant : 2 applications s’exécutent simultanément. Robot autonome : Obligation d’avoir du JML sur le RCX.
Robot autonome ou communicant (2/5) Problème : LeJos applique de la « compilation croisée » } LEJOSC LEJOSC JAVA JLMC JMLC JAVA JAVA
Robot autonome ou communicant (3/5) Solution : Ecrire les librairies manquantes. Conclusion : Réflexion et concertation sur cette solution. Abandon de l’idée de mettre du JML sur le RCX.
Robot autonome ou communicant (4/5) Robot communicant : Obligation de rechercher l’antenne. 3 solutions : Connaissance de la position de l’antenne. Rotation du robot. Antenne placée au-dessus de l’environnement du robot.
Robot autonome ou communicant (5/5) Limite de la solution choisie : Antenne infrarouge Déviation limite (35 degrés ~) Portée limite (8 mètres) Robot
Positionnement du robot (1/2) Système élaboré pour notre « navigateur »
Positionnement du robot (2/2) Avantages : Permet de connaître l’état de déplacement du robot. Certains évènements extérieurs sont pris en compte. Permet de limiter l’imprécision. Conclusion : Ce « navigateur » nous offre une certaine précision. L’imprécision inhérente au robot existera toujours.
II – L’application robotique
Description (1/2) Obstacles Environnement
Description (2/2) Propriétés à respecter : Eviter les obstacles. Ne pas sortir de l’environnement.
Spécification JML (1/3) Exemple de code JML : /*@ @ public invariant (\forall int i; i>=0 && i<Obstacles.size(); @ Obstacles.get(i) instanceof Cadre || @ Obstacles.get(i) instanceof Cannette;) @*/ Public void Algorithme(…) {…}
Spécification JML (2/3) Spécification de différentes contraintes en JML : Contraintes liées au programme : Les obstacles sont soit : l’environnement. les cannettes.
Spécification JML (3/3) Contraintes liées à l’environnement : Il existe un seul et unique environnement. Les cannettes sont dans cet environnement. Les cannettes ne doivent pas se superposer. Le chemin du robot doit être assez large.
Algorithme d’évitement d’obstacles (1/4) Première étape : Découpage du terrain en zones.
Algorithme d’évitement d’obstacles (2/4) Deuxième étape : Construction d’un graphe d’arêtes. Graphe d’arêtes 1 2 3 5 4 6 7 6 7 9 8 9 8 10 3 4 7 8 1 10 2 5 6 9
Algorithme d’évitement d’obstacles (3/4) Troisième étape : Sélection d’un chemin dans le graphe. 3 4 7 8 1 10 2 5 6 9
Algorithme d’évitement d’obstacles (4/4) Quatrième étape : Sélection des points milieux des arêtes.
Les différents résultats (1/3) Environnement ARRIVEE Chemin à effectuer
Les différents résultats (2/3)
Les différents résultats (3/3) Contrôle des différentes contraintes spécifiées en JML : Chemin assez large Chemin trop étroit En JML : //@ ensures ( assezLarge(\result) ) public Arete getPlusLongueADroite() {…}
CONCLUSION (1/2) JML un bon outil pour spécifier différents types de contraintes. Mise en évidence des propriétés JML avec l’application robotique. Imprécision inhérente au robot.
CONCLUSION (2/2) Différentes évolutions de notre étude : Amélioration de l’algorithme de recherche de chemin. Utilisation du capteur d’intensité de lumière. Amélioration du positionnement du robot. Améliorer l’interaction Robot-Ordinateur. Diversifier le type des obstacles.