GroundCTRL




 * UE/Module: Projet innovant de RICM4 option CM
 * Enseignant: Didier Donsez (avec le support gracieux de TagSys)
 * Élèves: 3 RICM4 	L. Dauvergne, F. Levêque, R. Ngouala. Voir la page de suivi ici

Description
L'idée de GroundCTRL est de projeter sur le sol d'un hall d'accueil de bâtiment des informations contextuelles au pied des personnes qui entrent dans le bâtiment. Les informations affichées seront l'emploi du temps du jour avec les emails de la personne ainsi qu'un flux de type Twitter. Par défaut, un message de bienvenue s'affiche sans que l'utilisateur est besoin d’être authentifié.

Pour s'authentifier, un personne a besoin de s'enregistrer dans une base de donnée. Elle pourra ensuite s'identifier grâces aux technologies suivantes: RFID UHF, NFC, QRCode.



Une fois authentifiée, la personne accédera a ses informations pendant un certain temps (20-30 secondes). Ensuite, le système retournera dans son état initial et une nouvelle personne pourra s'authentifier.

Ce projet a été réalisé dans un esprit de modularité et compatibilité du système conçu avec de futures extensions (du point de vue logiciel ou matériel).

Base
Au départ, le cœur du projet devait être développée en Java. Pour des raisons de flexibilité dans le développement et l'utilisation de notre logiciel, nous avons progressivement opté pour réaliser notre programme principal à base d'un script PHP avec l'aide de Javascript et Ajax.

/* A COMPLETER */

Méthodes d'authentification
Dans un but de simplicité et d'évolution du système, nous avons opté pour un système d'authentification flexible. D'un coté nous attendons sur un port et de l'autre, différents programmes écrits dans différents langages envoient les données qu'il récupèrent (les identifiants utilisateur) sur le port correspondant. L'application principale peut ainsi afficher une information personalisée à l'utilisateur.



QrCode
Pour l'authentification par QrCode, nous avons choisi d'utiliser une variante en Python du programme Zbar. Zbar nous a permit, contrairement à d'autres lecteurs de QrCode que nous avons essayé, de bénéficier des avantages suivants:

- Multiplate-forme (utilisé sous linux mais disponible pour windows - Performant (scan des QrCodes instantanément, même ceux qui sont peu visibles) - Flexible (Scan aussi bien des codes barres que des QrCode)

Pour nous permettre de pouvoir renvoyer les QrCode sur un port, nous avons du implémenter un script qui effectue le travail. Voici un extrait du script ci dessous:

NFC
Pour les Tag NFC, nous avons utilisé le matériel prêté par Mr Donsez. Il s'agit d'un capteur Tikitag (maintenant connu sous le nom de Touchatag), fabriqué à par d'un capteur ACR 122U (fabriqué par ACS, voir ici).

Pour l'utiliser, nous avons adapté un programme Java réalisé par Mr Donsez. Ce dernier nous permet maintenant de récupérer l'identifiant du tag NFC et de le renvoyer sur le port associé au programme.

La reconnaissance des tags NFC se fait très rapidement et ne pose aucun souci.

Il faut néanmoins faire attention aux librairies utilisées sous Ubuntu. Notre lecteur RFID n'arrivait pas à être reconnu sous Ubuntu. Nous avons longtemps cherché avant de trouver la solution ci dessous qui consistait à manuellement pointer les librairies que nous utilisons "pcsc_tools". Ceci est du au fait que par défaut, l'API Java cherche libpcsclite.so dans les dossiers /usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64. Cependant, sous Ubuntu, elle se situe dans le dossier /lib.

Nous avons donc pu résoudre notre problème en choisissant l'une des commandes suivantes:

-Déplacer la librairie: sudo ln -s /lib/libpcsclite.so.1 /usr/local/lib64/libpcsclite.so

-Définir la librairie à l’exécution du programme: java -Dsun.security.smartcardio.library=/usr/local/lib/libpcsclite.so TestSmartCardIO

-Rechercher le fichier dans /lib dans le code: File libPcscLite = new File("/lib/libpcsclite.so.1"); if (libPcscLite.exists) { System.setProperty("sun.security.smartcardio.library", libPcscLite.getAbsolutePath); }

Il va de soit que la troisième solution est la moins adaptée car elle n'est pas robuste en cas de changement de plate-forme.

RFID
/* A completer par Rolly */

Interface
/* A Completer par Rolly */

Contrôle de l'image
/* A COMPLETER */

Bras articulé
La première expérimentation avec le système de servomoteurs est disponible ici : http://vimeo.com/37984555 /* A COMPLETER */

Arduino
/* A COMPLETER */

OpenCV
/* A COMPLETER */

Récupération des informations
/* A COMPLETER */

Emplois du temps
/* A COMPLETER */

Mails
/* A COMPLETER */

Twitter&Co
/* A COMPLETER */

Code
Nous mettons à disposition le code que nous avons écrit pour le projet dans l'archive suivante. /* A COMPLETER */

Méthode de travail
Pour mener à bien notre projet, nous avons utilisé le logiciel Kunagi, qui permet de mettre en place facilement et rapidement la méthode de travail Scrum, ceci nous a permet de nous rappeler les différentes tâches qu'il restait à faire tout au long du projet.

Ce logiciel est entièrement Open-Source, ce qui est très positif face aux logiciels qui coûtent plusieurs milliers d'euros et dont nous n'avons pas l’utilité.

Matériel
/* A COMPLETER */

Prété par Polytech
/* A CORRIGER */
 * 1 Mac mini (Non utilisé)


 * 1 Webcam PS3


 * 1 projecteur longue focale (Toujours en attente au 06/03/2012, emprunté le 20/04/2012 au responsable des services informatiques de l'IMAG)


 * 1 lecteur NFC Tikitag


 * 4 Mirroirs IKEA


 * 1 lecteur RFID UHF longue distance (lecteur Impinj R420 prété par TagSys) - Géré par Rolly


 * Quelques tags NFC


 * Arduino + 2 servomoteurs rapides et puissants + miroir + pan/tilt servo bracket pour diriger le faiseau (si intensité lumineuse trop faible) ** voir Face Tracking with a Pan/Tilt Servo Bracket

Prêté par les étudiants

 * 1 Bras articulé avec fixation pour pouvoir utiliser les servo-moteurs convenablement mais avec une forte contrainte de portabilité du système - Géré par Léopold

Logiciels & Technologies utilisées

 * OpenCV


 * Arduino


 * Eclipse


 * Ajax


 * Javascript


 * PHP

Liens externes
/* A COMPLETER */

Partie Coeur
/* A COMPLETER */

Partie OpenCV
/* A COMPLETER */

Partie Arduino
/* A COMPLETER */

Partie NFC
Présentation de la technologie NFC par Nokia

Support MeeGo by creating your own Meegon