Pour suivre ce tutoriel, vous aurez besoin des éléments ci-dessus:
Lorsque le gateway sera relié à votre ordinateur, les deux parties du système pourront communiquer et permettre de le traitement des données émises par la carte WaspMote.
Ces deux logiciels n'ont à priori pas besoin d'être installés, il suffit juste de décompresser les archives téléchargées et lancer les applications. Pour plus d'informations, référez vous à la référence des éditeurs.
Faites attention car il y a plusieurs liens de téléchargements selon l'architecture et/ou le système d'exploitation. Choisissez le bon et reportez vous ici pour leur configuration sur Eclipse.
Les configurations suivantes sont obligatoires pour que tout fonctionne correctement:
Sur Windows, les cartes ne sont reconnus qu'après avoir installé leurs pilotes normalement disponibles dans le dossier "drivers" de l'archive WaspMote que vous avez téléchargé. Pour un autre OS ou plus d'informations, référez vous à la référence des éditeurs.
Sur Eclipse, les APIs ne sont utilisables que si elles sont installées parmis les bibliothèques utilisateurs. Ces dernières configurations sont expliquées par les étapes suivantes:
Dans cette partie, nous pourrons enfin commencer le projet. Les codes présentés évoluent au fur et à mesure que l'on avance dans les fonctionnalités. Et c'est parti!
Tout d'abord il nous faut un support pour afficher notre production. Ce sera essentiellement la classe Main qui comme illustré hérite de frame.
Mais si nous nous arrêtons là, nous n'aurons qu'une fenêtre de fond noire. Pour dessiner, nous allons
maintenant faire de l'OpenGL en faisant appel aux fontionnalités de JOGL.
Pour cela nous allons modifier la classe Main et développer deux nouvelles classes, Renderer qui va
se charger de gérer notre environnement OpenGL et une classe Cube qui va simplifier le dessin d'un cube.
L’assemblage de ces classes se résume ainsi, une fenêtre du Main initialise son canvas et le lie à un Renderer
qui dans sa méthode display se charge de dessiner un Cube qui s’affiche à l’ecran.
Cependant pour le faire bouger, rendez vous à la partie suivante.
Dessiner un cube en 3D c'est super, mais l'animer c'est encore mieux. C'est ce que nous allons voir avec les touches claviers avant d'utiliser une mannete (je vous rassure, ce n'est pas la dualshock).
Pour animer notre cube à l'écran, bonne nouvelle, car nous n'aurons pas besoin de créer une nouvelle classe... ou si. En fait cette classe sera interne à la classe Main vu qu'elle va se charger de gérer les évenement claviers. Ainsi en appuyant sur une touche prédéfinie, nous allons modifier les valeurs des angles de rotations enregistrées par le Renderer. Notre classe Main devient alors :
Maintenant que nous sommes certains que notre cube peut s'animer, essayons de le contrôler à distance.
La carte Waspmote dispose d'un accéléromètre dont nous allons récupérer les valeurs à chaque instant.
Pour se faire, grace à l'IDE WaspMote preparons notre carte selon nos besoins avec le programme suivant:
Pour plus d'informations relatives à l'utilisation des cartes Waspmote, c'est aussi ici.
Nous pouvons ensuite vérifier la transmission:
Récupérer les valeurs c'est bien, mais notre objectif est de les traiter dans notre application.
D'où la nécessité d'une autre classe chargée de recevoir les valeurs transmises par la carte.
Elle sera nommée Accelerometer et devra aussi pouvoir modifier les valeurs angulaires de rotation
enregistrées par le Renderer. Sur ce rentrons dans le vif du sujet sans plus tarder.
Encore un détail et c'est bon, la classe Accelerometer est fonctionnelle mais nous ne l'avons pas encore liée au reste de l'application. En fait c'est simple, il suffit juste de rajouter cette ligne dans le Main.
Voilà c'est fini, cependant rien ne vous empêche d'aller plus loin. Votre imagination est votre seule limite.
Afin de mieux se rendre compte des mouvements effectués, il serait interressant de fabriquer
une petite boite où insérer la carte Waspmote. Cela protége la batterie et permet d'éviter aussi
le contact direct avec les mains.
La réalisation de ce cube n’est qu’une petite partie des possibilités réalisables avec la 3D. Une adaptation pour rubik’s cube pourrait être une des possibilités de suite à cette application. Différents évènements peuvent être implémentés sur les différents axes des cubes afin de pouvoir les déplacer entre eux pour résoudre ce casse tête. L’algorithme de résolution du rubik’s cube peut être également développé pour résoudre le problème automatiquement et mettre une intelligence artificielle pour déplacer le groupe de cube afin de le reconstruire. Cela peut aboutir à un jeu où l’objectif serait de reconstituer le rubik’s cube avec une aide si le joueur est bloqué.
Il serait possible d’améliorer les manipulations de l’utilisateur sur le cube. L’utilisateur aurait la possibilité de modifier le cube en sélectionnant une face afin d’effectuer des transformations comme un étirement et obtenir un pavé. La possibilité d’agrandir l’objet, d’ajouter des objets pour créer différentes formes ou de réaliser des coupes.
Ce tutorial a été rédigé par Amadou Ada DIENE et Erwann KASSIS, étudiants de 3ième année de Licence en Ingénierie Informatique à l'Université de Bretagne Occidentale, à la suite d'un projet de Janvier 2013, encadré par M. Ahcène BOUNCEUR. Il porte sur la réalisation d'une boite en 3D ainsi qu'à la façon de pouvoir l'animer, notamment avec l'accéléromètre d'un contrôleur sans fil.
Alors si vous avez déjà voulu faire de l'OpenGL en Java, ou utiliser une carte WaspMote de Libelium sans trouver d'explications sur le sujet, ce tutoriel est fait pour vous! Et même si ce dernier ne couvre pas tous les aspects souhaités par le lecteur, il constitue cependant une bonne introduction dans les domaines cités ci-dessus.