320 likes | 467 Views
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
E N D
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 1. Description 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.
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.
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.