De Decker Claudine Faure Julie Gouit Benjamin Helbling Allan 4ème année Informatique et Réseaux, INSA Toulouse Tuteur : Thierry Monteil jeudi 30 mai 2013 I. Présentation du projet › › › 1. Définition du sujet 2. Conduite de projet 3. Scénarii › › › › › 1. Présentation de Blender 2. Présentation de Morse 3. Capteurs/Actionneurs 4. Scénario mis en œuvre 5. Bilan sur les outils › › › › › › 1. Communication Morse-Frameself 2. Fonctionnement de Morse 3. Interface côté Morse 4. Problèmes rencontrés 5. Sensor 6. Collector/Dispatcher › › › › › 1. Présentation 2. Fonctionnement 3. Règles Drools 4. Testeur Framself 5. Bilan II .Morse/Blender III. Interface IV. FRAMESELF V. Wiimotes 2 « Réalité virtuelle et interaction avec des Wiimotes » Objectifs : › Contruire, représenter et interagir avec un monde virtuel Sujet « Création de capteurs et actionneurs dans l'appartement virtuel du laas afin de mettre en oeuvre divers scenarii » 3 ADREAM 4 Diagramme de Gantt 5 Objectif : Sécuriser un appartement Scenarii envisagés : 6 OU 7 Capteur de pression au sol 8 9 Scenario retenu 10 Blender : › Logiciel open source, performant, léger et multiplateforme 11 12 Morse : Modular OpenRobots Simulation Engine Environnement : Blender Intelligence : Scripts python 13 Robots : Capteurs : › Thermomètre, caméra, position Actionneurs : › Son, lumière, mouvement 14 15 16 Un actionneur : Son (On/Off) Script morse appelle la fonction Sound de Blender 17 18 19 20 21 Script du scenario 22 Simulation du scenario (carte de l’appartement du LAAS) 23 Données envoyées par le thermomètre 24 Données envoyées à l’alarme 25 Bilan sur les outils utilisés : › Blender : très puissant mais difficile à prendre en main › Morse : très bon outil pour simuler la robotique mais encore en développement › Python : Découverte du langage 26 1. Communication Morse - FRAMESELF Pourquoi faire communiquer Morse et FRAMESELF ? Quel intérêt ? Comment le faire ? 27 1. Communication Morse - FRAMESELF Morse Morse Interface Java FRAMESELF FRAMESELF 28 Comment fonctionne Morse Envoi de message : port 4000 - Tout ce qui est relatif à la simulation 60000, 60001, ... - Tout ce qui est relatif aux capteurs et aux actionneurs Possibilité d'utiliser telnet 29 Interface côté Morse Utilisation de sockets Java en entrée et sortie Découpage du String reçu en paramètre stockage de l’id et de sa valeur dans une Hashmap 30 Problèmes rencontrés Fermeture des sockets, mais non bloquant à l'instar de telnet Format des messages : {"x": 0.3566, "pitch": -0.0001023715} Utilisation d'expressions régulières 31 Sensor Création d'une classe Sensor Renvoie un Event interprété par Collector Permet la traduction entre Morse et Frameself Informations contenues : › Nom du capteur › Valeur › Emplacement › Catégorie 32 Collector Transmet les Events reçus de la partie morse à FRAMESELF sur 127.0.0.1:5000 Dispatcher Recoit les Actions de FRAMESELF sur 127.0.0.1:6000 et les transmet à la partie morse sous forme textuelle 33 Présentation Logiciel d'autonomic computing Génère une IA pour un système Compatible universellement : OS et software, grâce au Java 34 Fonctionnement 35 Règles Drools Règles claires, i.e. non ambigües et compréhensibles par tous Utilise le chainage avant (méthode de déduction) Règles partant de prémisses pour en déduire de nouvelles conclusions Pars de données disponibles pour extraire davantage de données 36 Règles Drools rule "add TemperatureHigh" when Event($id: id, category == "Temperature", $value: value, Integer.parseInt(value) >= 40, $location: location) then Symptom symptom = new Symptom(); symptom.setCategory("TemperatureHigh"); symptom.setValue($value); symptom.setLocation($location); symptom.setTimestamp(new Date()); symptom.setExpiry(new Date (System.currentTimeMillis()+4000)); insert(symptom); end 37 Règles Drools rule "add RingAlarm rfc" when Symptom(category == "TemperatureHigh", $locationPres: location) Symptom(category =="AlarmStateOff",location==$locationPres) then Rfc rfc = new Rfc(); rfc.setCategory("RingAlarm"); rfc.setValue("0"); rfc.setLocation($locationPres); rfc.setTimestamp(new Date()); rfc.setExpiry(new Date(System.currentTimeMillis()+4000)); insert(rfc); end 38 Testeur FRAMESELF 39 Bilan Outil très puissant et très simple d'utilisation Permet en quelques règles de créer une IA complète Bonne découverte de l'autonomic computing 40 Utilisation de wiimotes API wminput (utilisation la bibliothèque cwiid) Possibilité d'utiliser wmgui (interface graphique, plus précis) 41 wminput : › mappage par défaut insuffisant › fichier de configuration › contrôle du robot avec la wiimote et le nunch Exemple de mappage Plugin.nunchuk_stick2btn.Up = KEY_UP Plugin.nunchuk_stick2btn.Down = KEY_DOWN Plugin.nunchuk_stick2btn.Left = KEY_LEFT Plugin.nunchuk_stick2btn.Right = KEY_RIGHT 42 Cadre : cahier des charges, partage des tâches Aspects moins scolaires : Blender, Wiimotes, ... Découverte de nouveaux langages nouveaux logiciels Contact avec les chercheurs 43 Axes de réflexion › Approfondissement des notions › Ecriture de jmorse (Java Morse) › Création de capteurs/ actionneurs › Réécriture du script wiimote 44 Remerciements › Thierry Monteil, pour nous avoir guidé et › › › › proposé un sujet réellement intéressant Pierrick Koch, pour sa disponibilité Mamoun Gharbi, pour ses conseils Madhi Ben Alaya, pour sa réactivité Sami Hamadouche, pour son ouverture 45