• Aucun résultat trouvé

CHAPITRE 7 RÉALISATION DE LA PLATEFORME D’ÉTUDES IPAD

7.3 Outils intégrés

Outre les interfaces graphiques, différents outils ont été intégrés / développés pour le logiciel afin de permettre les différentes fonctionnalités qu’offre le logiciel ibNav pour le système de communication, la gestion de la base de donnée et la visualisation.

7.3.1 Mise en place de la communication UDP / TCP

Les librairies « open source » AsyncSocket et AsyncUDPSocket ont été utilisées afin de gérer la communication UDP et TCP du projet ibNav. Elles permettent facilement d’établir une communication client dans ces deux protocoles. La réception des données a été configurée afin de fonctionner en multitâche, dans une tâche fonctionnant en arrière-plan ne dérangeant ainsi pas l’interface graphique et les autres fonctionnalités de l’application.

La tâche pour la réception des données TCP a la plus haute priorité afin d’assurer une réception à 50 Hz. Ceci est important puisque les données sont uniquement sauvegardées au niveau de l’iPad (même si dans le futur elles seront sauvegardées également dans une carte microSD).

Concernant la communication UDP, à la fin de chaque trame reçu du système ibNav par l’iPad « maître » (communication TCP), ce dernier envoi, si la fonctionnalité est activé, les trames UDP en « broadcast » afin que tous les iPad reliés sur le réseau soit capables de recevoir les données brutes ou calculés. Les iPad « esclaves » ne peuvent cependant pas interagir avec le système ibNav, uniquement l’iPad « maître » permet de modifier les configurations.

7.3.2 Mise en place d’une base de données

Le Framework CoreData a été utilisé pour la base de données, il permet d’utiliser une base SQL directement à partir de commandes en objective-C. Elle contient 4 entités différentes (voir Figure 7.8) et une dizaine d’interaction avec la base de données ont été implémentés.

Figure 7.8 Schéma SQL de la base de données SQL du projet ibNav

Les différentes interactions sont les suivantes :

• lors du premier démarrage de l’application, celui-ci crée la base de donnée pour l’entité CONFIG et ses dérivés IMU et RAWDATA. La configuration prendra le nom de « General » et contiendra les configurations de base pour chaque IMU. Cette configuration ne peut être modifiée par la suite, l’utilisateur peut cependant la copier sous un autre nom et la modifier directement avec l’interface de l’iPad. Si celle-ci existe déjà, l’application chargera uniquement la configuration « General »;

• copier, supprimer, rechercher et créer une configuration;

• lorsque l’utilisateur ajoute un enregistrement à la base de données, l’algorithme enregistre la date, le commentaire et calcul le nombre d’IMUs présents dans le fichier. Par la suite il

calculera le nombre de trame pour chaque IMU, cette information est très utile pour la librairie permettant d’afficher les graphiques.

Remarque : La base de données est en constante évolution, elle sera nettement plus importante lorsque l’application sera finalisée. Les différentes interactions ont cependant été implémentées et il est assez simple maintenant de l’utiliser et de poursuivre le développement.

7.3.3 Réalisation d’une interface 2D / 3D utilisant la librairie OpenGL puis

Unity3D

Cette partie a déjà été discutée à la section 7.2.4. L’idée serait dans le futur d’implémenter le modèle 3D créé sous 3Ds Max (voir Figure 7.9) au niveau d’unity3D afin de visualiser les capteurs en mouvement.

Figure 7.9 Modèle 3D du projet ibNav développé sous 3Ds Max

7.3.4 Réalisation d’une librairie pour la création de graphiques

Pour le projet ibNav, nous avons créé des librairies pour iOS permettant d’afficher des données sous forme de courbes fonctionnant tout aussi bien en temps réel qu’en post- traitement. Ces librairies se nomment « GraphView » et « GraphViewRealTime ».

L’utilisation est très simple. Il faut premièrement initialiser les variables en indiquant la couleur et l’unité de chacun des axes. Par la suite deux fonctions seront appelées lorsque l’on souhaite actualiser le graphique, une indiquant la taille total des données à afficher et l’autre contenant le tableau de données.

Il est donc nécessaire pour l’affichage en temps réel d’avoir une tâche en arrière-plan fonctionnant à une certaine fréquence (idéalement 10 Hz) permettant d’actualiser les données. Pour l’utilisation en post-traitement il faut également spécifier la valeur minimale et maximale de l’axe X.

Au démarrage de la tâche principale de la librairie, celle-ci va vérifier premièrement si les valeurs des axes sont cohérentes et calculer la valeur maximale et minimale pour l’axe Y. Elle va ensuite dessiner le cadriage en X et en Y en prenant en compte la taille du graphique puis les axes en prenant en compte l’unité et les données que l’on veut afficher.

Les courbes vont par la suite être dessinées en respectant un pas dependant du nombre de données que l’on souhaite afficher. En effet dans le mode post-traitement, on peut avoir de nombreuses données (1 heure d’enregistrement donnerait 180 000 données) et les graphiques font une longueur maximale de 540 pixels. Il n’est donc pas utile de dessiner des données qui ne peuvent être visibles. La librairie prend donc en compte le nombre de pixels pouvant être affichés à l’écran et si par exemple il y a 300 données pour 1 pixel, l’application affichera uniquement le minimum et maximum de ces 300 points.

7.3.5 Mise en place de diverses API

Au niveau du projet ibNav, l’API Dropbox et Mailcore2 ont été implémentées :

• la première permet de partager des fichiers de l’application de manière automatique. Ces fichiers peuvent être sur le Dropbox de l’application ou être partagés sur n’importe quel Dropbox d’un utilisateur;

• la deuxième API permet d’envoyer des courriels, celle-ci a été modifiée afin de permettre d’envoyer des fichiers joints aussi bien que des images intégrées. A ce jour, cette librairie n’a pas entièrement été implémentée sur ibNav mais elle l’a été sur le projet iMetrik Show Case (voir section 8.2.2).