450 likes | 572 Views
Réalité virtuelle et interaction avec des wiimotes. Projet tuteuré 2012-2013. jeudi 30 mai 2013. De Decker Claudine Faure Julie Gouit Benjamin Helbling Allan 4 ème année Informatique et Réseaux, INSA Toulouse. Tuteur : Thierry Monteil. Plan. I. Présentation du projet
E N D
Réalité virtuelleet interaction avec des wiimotes Projet tuteuré 2012-2013 jeudi 30 mai 2013 De Decker Claudine Faure Julie Gouit Benjamin Helbling Allan 4ème année Informatique et Réseaux, INSA Toulouse Tuteur : Thierry Monteil
Plan • I. Présentation du projet • 1. Définition du sujet • 2. Conduite de projet • 3. Scénarii • II .Morse/Blender • 1. Présentation de Blender • 2. Présentation de Morse • 3. Capteurs/Actionneurs • 4. Scénario mis en œuvre • 5. Bilan sur les outils • III. Interface • 1. Communication Morse-Frameself • 2. Fonctionnement de Morse • 3. Interface côté Morse • 4. Problèmes rencontrés • 5. Sensor • 6. Collector/Dispatcher • IV. FRAMESELF • 1. Présentation • 2. Fonctionnement • 3. Règles Drools • 4. Testeur Framself • 5. Bilan • V. Wiimotes
I. Présentation du projet • « 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 »
I. Présentation du projet • ADREAM
I. Présentation du projet • Diagramme de Gantt
I. Présentation du projet • Objectif : Sécuriser un appartement • Scenarii envisagés :
I. Présentation du projet Capteur de pression au sol
I. Présentation du projet • Scenario retenu
II. Morse / Blender • Blender : • Logiciel open source, performant, léger et multiplateforme
II. Morse / Blender • Morse : Modular OpenRobots Simulation Engine • Environnement : Blender • Intelligence : Scripts python
II. Morse / Blender • Robots : • Capteurs : • Thermomètre, caméra, position • Actionneurs : • Son, lumière, mouvement
II. Morse / Blender • Un actionneur : Son (On/Off) • Script morse appelle la fonction Sound de Blender
II. Morse / Blender • Script du scenario
II. Morse / Blender • Simulation du scenario (carte de l’apparte-mentdu LAAS)
II. Morse / Blender • Données envoyées par le thermomètre
II. Morse / Blender • Données envoyées à l’alarme
II. Morse / Blender • 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
III. Interface 1. Communication Morse - FRAMESELF • Pourquoi faire communiquer Morse et FRAMESELF ? • Quel intérêt ? • Comment le faire ?
IV. Interface 1. Communication Morse - FRAMESELF Morse Morse Interface Java FRAMESELF FRAMESELF
III. Interface 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
III. Interface 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
III. Interface 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
III. Interface 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 • Catégorie • Valeur • Emplacement
III. Interface 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
IV. FRAMESELF Présentation • Logiciel d'autonomic computing • Génère une IA pour un système • Compatible universellement : OS et software, grâce au Java
IV. FRAMESELF Fonctionnement
IV. FRAMESELF 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
IV. FRAMESELF 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
IV. FRAMESELF Règles Drools rule "addRingAlarmrfc" when Symptom(category == "TemperatureHigh", $locationPres: location) Symptom(category =="AlarmStateOff",location==$locationPres) then Rfcrfc = 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
IV. FRAMESELF Testeur FRAMESELF
IV. FRAMESELF 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
V. Wiimotes • Utilisation de wiimotes • API wminput (utilisation la bibliothèque cwiid) • Possibilité d'utiliser wmgui (interface graphique, plus précis)
V. Wiimotes • 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
Conclusion • Cadre : cahier des charges, partage des tâches • Aspects moins scolaires : Blender, Wiimotes, ... • Découverte de nouveaux langages - nouveaux logiciels • Contact avec les chercheurs
Conclusion • Axes de réflexion • Approfondissement des notions • Ecriture de jmorse (Java Morse) • Création de capteurs/ actionneurs • Réécriture du script wiimote
Conclusion • 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