• Aucun résultat trouvé

8.3 Présentation informelle de la plateforme opérationnelle

8.3.3 Prototype d’illustration des fonctionnalités pour le projet IKKY

Pour illustrer les possibilités de la plateforme opérationnelle et plus particulièrement celles du plugin, nous avons développé une application utilisant ses fonctionnalités prin-cipales.

8.3.3.1 Ajout des roues encodeuses à la plateforme opérationnelle

Les rotacteurs haptiques sont des roues encodeuses (des potentiomètres numériques sans butée) dont le crantage (le nombre de crans lorsqu’on tourne la roue) et la résistance (la résistance à la rotation) sont réglables. Un rotacteur haptique à deux niveaux est un dispositif présentant deux étages de rotacteurs haptiques partageant le même axe. Le rotacteur du premier niveau servira à effectuer des réglages grossiers, tandis que le rotacteur du second niveau servira à effectuer des réglages fins (par exemple, pour la cible

d’altitude du pilote automatique, le niveau grossier changera les centaines de pieds tandis que le niveau fin réglera pied par pied).

Ces dispositifs n’étant pas disponibles à des fins de recherche (exclusifs actuellement aux grosses séries ou aux constructeurs automobiles) nous avons remplacé les rotacteurs haptiques à deux niveaux, par deux roues encodeuses simples.

L’intérêt de la gestion informatique de l’entrée réside en la possibilité d’insertion d’une fonction de transfert, et permet donc d’ajuster la sensibilité de rotation en fonction de l’accélération ou de la vitesse de rotation.

Pour pouvoir ajouter les roues encodeuses, nous nous sommes servis d’une interface

Phidget1 ainsi que de potentiomètres infinis. Phidget fournit une libraire permettant

l’accès à des composants électroniques passifs, via l’interface de conversion analogique nu-mérique. Outre le code permettant l’instanciation des objets Java de l’interface (les pilotes

selon la figure 3.5), il a fallu réaliser un modèle de périphérique virtuel, que nous

présen-tons partiellement en figure 8.2. L’interface ayant 8 emplacements, nous avons utilisé les

deux premiers emplacements et doublé ce modèle (les 2 roues encodeuses sont identiques).

updadeValueSensor1 ::Sensor1Changed

deltaSensor1ValueCalculator

{int deltaTeta1 = sensor1Value - oldSensor1Va if(deltaTeta1>20){deltaTeta1 = 0;} if(deltaTeta1<-20){deltaTeta1 = 0;} } validityTimer1_ [ 500 ] deltaTeta1ChangeEventRaiser E-> raiseEvent deltaTeta1(deltaTeta1) <sensor1Value> <deltaTeta1> <sensor1Value> <deltaTeta1> <oldSensor1Value> <sensor1Value> <oldSensor1Value> <oldSensorValue> <oldOldSensor1Value> <sensor1Value> <deltaTeta1> <oldSensor1Value>

Figure 8.2 – Périphérique virtuel du phidget de roue encodeuse

Le périphérique logique des roues encodeuses consiste seulement en une fonction de transfert propre à chaque zone sensible, il n’y a pas de représentation informatique pré-vue. Le projet étant encore en cours au moment de la rédaction de ce manuscrit, nous n’avons pas encore de spécification de ces fonctions de transfert. Pour les besoins de la

démonstration, elles consistent en un gain constant de 100 et de 1, permettant de changer les centaines et les unités de l’altitude de l’aéronef dans la simulation.

8.3.3.2 Interface et interactions du prototype

La figure8.3 présente la fenêtre JavaFX de notre prototype d’illustration de

fonction-nalités.

Figure 8.3 – Application illustrative des fonctionnalités de la plateforme opérationnelle Le groupe de gestion de l’application (numéroté 1 en bas) contient le bouton « Start ». Au lancement de l’application, tout est désactivé, le bouton « Start » devient actif dès que la tablette se connecte au contrôleur central. Lorsqu’on appuie sur « Start », le contrôleur crée les modèles ICO qui gèrent le comportement des différents groupes de widgets. Ils vont envoyer des messages à la tablette pour activer les widgets et désactiver le bouton « Start », et s’abonner aux paramètres de X-Plane nécessaires.

Le groupe de gestion de l’altitude et de la radio (numéroté 2 à gauche) contient un Slider, un Textfield et un bouton Update. Le Slider permet de changer instantané-ment l’altitude de l’aéronef sur X-Plane. Lorsqu’on active le bouton Update, après environ 500 ms le TextField affiche la fréquence de la radio de l’aéronef. Les roues encodeuses permettent aussi de changer la fréquence de la radio, que l’on verra s’afficher directement dans le cockpit.

Le groupe de gestion de la lumière (numéroté 3 au centre) : Il contient une lampe et deux boutons « ON » et « OFF ». La lampe s’allume et les boutons s’activent en fonction de la lumière d’atterrissage de l’aéronef présent sur X-Plane. Les boutons

permettent d’allumer ou d’éteindre cette lumière. On peut voir un oculus tourner à côté des boutons lorsqu’on a appuyé dessus, bien que la valeur de la lampe n’ait pas encore changé.

Le groupe d’affichage de la vitesse (numéroté 4 à droite) : Il contient l’indicateur de vitesse, qui affiche en temps réel la vitesse de l’aéronef.

Le groupe de gestion des paramètres de X-Plane (numéroté 5 en haut) : Il contient un bouton Send et deux TextField :

Le premier va contenir le nom d’un paramètre de X-Plane (exemple : sim/flight-model/position/local_x), et le deuxième la valeur.

Lorsqu’on entre le nom d’un paramètre et qu’on appuie sur Send, le deuxième TextField va afficher la valeur du paramètre.

Lorsqu’on entre le nom et la valeur, le paramètre sera modifié sur X-Plane avec la valeur entrée, la valeur dans le deuxième TextField est remplacée par « Sent ! ». Si plusieurs tablettes sont connectées, seule celle sur laquelle le bouton a été appuyé reçoit les modifications du deuxième TextField.

Ce prototype permet d’illustrer les fonctionnalités offertes par la plateforme opéra-tionnelle et notamment :

• La possibilité d’utiliser sur la plateforme des capteurs non informatiques tels que les potentiomètres

• L’abonnement à des paramètres internes à la simulation dans X-Plane

• La demande et la mise à jour de la valeur de paramètres internes à la simulation dans X-Plane

• La modification de la valeur de paramètres internes à la simulation dans X-Plane • La possibilité d’envoyer des informations à une machine responsable de l’interaction

ou à toutes les machines (tablettes tactiles sur l’architecture de la figure8.1)