Difference between revisions of "GroundCTRL"

From air
Jump to navigation Jump to search
Line 156: Line 156:
 
===Partie Arduino===
 
===Partie Arduino===
 
/* A COMPLETER */
 
/* A COMPLETER */
  +
  +
[http://appupavatar.com/ Support MeeGo by creating your own avatar]

Revision as of 15:36, 24 April 2012

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 [1]

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.

Students Working

Une fois authentifiée, la personne accdera 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 coeur du projet devait être developpé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.

Principe unifié d'authentification

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:

- Multiplateforme (utilisé sous linux mais diponible pour windows
- Performant (scan des QrCodes intantannément même en étant 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:

#!/usr/bin/python
from sys import argv
import zbar
import socket
# create a Processor
proc = zbar.Processor()
# configure the Processor
proc.parse_config('enable')
# initialize the Processor
device = '/dev/video1'
if len(argv) > 1:
 device = argv[1]
proc.init(device)
...

NFC

Tikitag reader

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'execution 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 servo-moteurs est disponible ici : http://vimeo.com/37984555 /* A COMPLETER */

Arduino

/* A COMPLETER */

Code

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

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

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

Liens externes

/* A COMPLETER */

Partie Coeur

/* A COMPLETER */

Partie OpenCV

/* A COMPLETER */

Partie Arduino

/* A COMPLETER */

Support MeeGo by creating your own avatar