Difference between revisions of "GroundCTRL"

From air
Jump to navigation Jump to search
Line 114: Line 114:
 
Pour permettre un maximum de mouvement de l'image, le bras peut se déplacer en avant et en arrière (sa base est pivotante). Le miroir peut quand à lui bouger de 180° dans les deux axes de rotation. Voici un schéma de présentation du bras:
 
Pour permettre un maximum de mouvement de l'image, le bras peut se déplacer en avant et en arrière (sa base est pivotante). Le miroir peut quand à lui bouger de 180° dans les deux axes de rotation. Voici un schéma de présentation du bras:
   
[[Image:GROUNDCONTROLSchemaBras.jpg|300px|right|thumb|Degrés de liberté du bras]]
+
[[Image:GROUNDCONTROLSchemaBras.jpg|300px|center|thumb|Degrés de liberté du bras]]
   
 
Néanmoins, dans le cadre de ce projet, le miroir bouge seulement d'une dizaine de degrés sur chaque axe. Le reste nous servant de marge pour positionner l'image idéalement pour l'utilisateur.
 
Néanmoins, dans le cadre de ce projet, le miroir bouge seulement d'une dizaine de degrés sur chaque axe. Le reste nous servant de marge pour positionner l'image idéalement pour l'utilisateur.

Revision as of 22:31, 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 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.

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:

- 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:

#!/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’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

Pour pouvoir orienter l'image vers l'utilisateur, nous avons opté pour un système de redirection d'un flux provenant d'un vidéo-projecteur. Au départ, une lentille correctrice devait servir à concentrer le flux devait nous être fournie mais elle ne le fût pas. Nous avons pu obtenir de l'IMAG un vidéo-projecteur suffisamment performant pour effectuer nos expérimentations.

Pour permet une aisance dans nos expérimentations, le système se devait d'être facilement démontable. Nous avons donc fabriqué un bras "fait maison" en y intégrant les servomoteurs fournis par Mr Donsez.

Bras articulé

Le bras en train d'être construit

Vous étions partis sur l'idée un bras fixe mais dès que vous avons après que notre système de serai pas définitif nous nous sommes rapidement orientés vers un bras facilement démontable et adaptable à tout type de scénario.

Vous avons donc choisi de réalisé un bras à partir d'un pied de lampe de bureau en adaptant le bout de celle-ci avec des équerres, elles-mêmes fabriquées sur mesure à partir d'aluminium brut. Une première version de ce bras fût fabriqué mais l'équerre utilisé était trop souple et générait trop de mouvement dans le bras. Une deuxième version fût donc construite pour remédier à un maximum de problèmes.

La deuxième version est donc beaucoup plus satisfaisante, elle est suffisamment souple pour s'adapter à tous les scénarios et fourni des performances acceptables. Nous regrettons néanmoins le fait que l'image à tendance à trembler un peu, ceci pourrait être réglé en réalisant une installation fixe du vidéoprojecteur et de ce système de déviation d'image.

Le bras en action


Pour permettre un maximum de mouvement de l'image, le bras peut se déplacer en avant et en arrière (sa base est pivotante). Le miroir peut quand à lui bouger de 180° dans les deux axes de rotation. Voici un schéma de présentation du bras:

Degrés de liberté du bras

Néanmoins, dans le cadre de ce projet, le miroir bouge seulement d'une dizaine de degrés sur chaque axe. Le reste nous servant de marge pour positionner l'image idéalement pour l'utilisateur.

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

Voici une présentation effectuée après calibrage: /* 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

Fresh Workspace

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

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 */

Partie NFC

Présentation de la technologie NFC par Nokia

Support MeeGo by creating your own Meegon