Site ELEC344/ELEC381

Partie interactive du site pédagogique ELEC344/ELEC381 de Télécom ParisTech (occurrence 2010).

Catégories

Quand l'incroyable se produit

Après quelques essais infractueux, je m’étais un peu résigné sur cette histoire de filtre de Kalman.

Mais là ce soir, dans un éclair d’espérance, j’ai relu mon code. Après la correction d’une erreur de signe, d’une erreur de calcul (je faisais la somme d’une matrice et de sa transposée « en place », très mauvaise idée …) et avec un pas de discrétisation plus petit, mon filtre s’est soudainement mis à marcher.

Yeeepeee !

Si, si !  et même que le changement des paramètres de covariance influe de manière à peu près logique sur le système. Si je fais trop confiance aux gyros, j’ai un petit effet « flamby inertiel » (lhélico tourne un peu plus loin qu’il aurait dû et revient un peu après le mouvement pour se trouver au bon endroit) mais si je fais trop confiance aux accelerometre/magnétomètre, il reprend un peu la tremblotte (comme sans filtre en fait).

Il faut encore que je comprenne comment régler la puissance de la correction sur l’offset des gyros, même si ça marche vraiment pas trop mal pour le moment.

Normalement, on va essayer de voir ce que ça donne demain mercredi sur un vrai vol : L’helicoptère devrait être attaché par des cordes de sorte qu’il ne puisse pas trop se déplacer mais en laissant de la marge sur son assiette pour voir si notre asservissement fonctionne.

Je vous aurais bien montré des vidéos de la visualisation de l’orientation de la carte mais je n’ai pas d’iPhone 3GS :’( (ou d’autres outils de prises de vue animées non propriétaires)

Quand Wheely devient iWheely

Alors, en parallèle du reste, ces derniers jours j’ai aussi finalisé l’application iPhone et le serveur relais en Python. Voici un petit résumé de la joyeuse situation : L’application iPhone fournit des boutons pratiques (pause et connexion) et une IHM sympa (du moins du point de vue de son créateur) pour visualiser la consigne de pilotage données par l’accéléromètre (avec filtrage passe bas pour lisser et une dead zone pour envoyer facilement une consigne « ne bouge pas). Le serveur TCP Python lui attend une connexion de la part de l’application iPhone, typiquement au travers d’un réseau Wifi (ad-hoc ou pas). Il ouvre ensuite une liaison bluetooth profil SPP (RFCOMM), via la fabuleuse bibliothèque lightblue, vers Wheely, et lui transmet les consignes perçues de la part de l’iPhone.

En bref, toute la partie pilotage via iPhone-Wifi-Laptop-Bluetooth du robot est a priori bouclée. Il reste à s’occuper du traitement des consignes coté robot. J’ai aussi fait des tests de portée du Bluetooth, qui sont largement concluants, puisque on obtient une portée de 15m à vue, 10m derrière un mur. Tout ça pour dire que la vie est belle, ou iBelle devrais-je dire.

Wheely et son appli iPhone

Ces derniers jours j’ai pu avancer sur l’application iPhone. Voici le résultat obtenu :

Application iPhone

Voici les key-features :

  • L’application se lance et s’utilise en mode landscape, plus adapté au pilotage
  • Elle relève les valeurs de l’accéléromètre
  • Elle les confie à un filtre passe bas qui smoothise tout ça
  • Elle rescale les valeurs pour obtenir facilement un truc entre -1  et 1 pour la consigne de virage et la consigne d’avant/arrière
  • Elle met à jour une petite IHM faite vite fait sous photoshop pour visualiser avec le mouvement du curseur rouge la consigne qu’on transmet
  • Elle est pausable, ce qui bloque les valeurs de consigne et permettra de remuer son iPhone sans se préoccuper des mouvements du robots

En bref, il reste à faire la partie bluetooth qui permet de se connecter au robot et de lui transmette les valeurs de consigne. Mais ça ce sera pour plus tard, le moment venu, pour l’instant j’en reste là sur le développement de l’appli, les tests de déplacement du curseur étants satisfaisants. Puis bon, il y a pas mal d’autres choses plus urgentes !

Wheely : Acquisition des valeurs d’accel sur l’appli iPhone

Ce dimanche, j’ai continué à débroussailler le chemin pour l’appli iPhone.

Cela a consisté à essayer de récupérer au sein d’une application les valeurs recueillies par l’accéléromètre.

J’ai trouvé des exemples de code sur le site developer d’Apple. Mais ça a été plus compliqué que prévu, vu que ça ne se passait pas comme prévu. En trifouillant le code, j’ai finalement  réussi à faire une appli qui – en pratique – détecte une secousse du téléphone.

Prochaine étape : Filtrer et calibrer les valeurs d’accélération sur chacun des axes spatiaux pour animer des jauges. A ce stade là, il ne restera plus que l’implémentation du bluetooth pour communiquer les valeurs de ces jauges.

Wheely : Site et pistes pour l’app iPhone

À ce jour j’ai avancé sur deux points. D’une part le site du projet qui nous permettra d’expliquer la façon dont nous aurons conçu notre petit Wheely, et d’autre part l’application iPhone qui visera à le piloter à distance via l’accéléromètre combiné à une liaison Bluetooth.

En ce qui concerne le site internet, j’ai hésité entre un certain nombre de solutions possible. J’ai fini par en proposer une à mon groupe qui n’est pas très originale puisque un autre groupe l’a déjà adoptée : il s’agit de DokuWiki. J’ai donc procédé à l’installation, configuration et hébergement du site de Wheely. Nous essaierons de le remplir dans les temps à venir. Le wiki semble tout indiqué face à la dimension collaborative du projet.

En ce qui concerne l’application iPhone la tâche a été plus complexe. L’idée étant de ne pas payer une licence développeur Apple à 99$ pour pouvoir coder l’application. J’ai donc googlé un certain nombre de sites avant d’enfin trouver un article très intéressant. Grace aux quelques astuces qui y sont mentionnées, j’ai pu compiler mon application sous Xcode et la loader sur mon iPhone jailbreaké via un petit coup de scp. Résultat fascinant : un Hello World sur iPhone. Mais bon, ça m’a permis de me chauffer.

Désormais, et avec une priorité secondaire, je vais essayer de faire joujou avec l’accéléromètre et le bluetooth pour avancer un peu sur le travail qui sera à fournir en fin de projet lors de la mise en liaison bluetooth du robot. Pour le bluetooth, le Game Kit Framework du SDK iPhone semble intéressant.