Difference between revisions of "Tabletop"

From air
Jump to navigation Jump to search
 
(40 intermediate revisions by 4 users not shown)
Line 1: Line 1:
  +
[[Image:Interieur_table.jpg|right|200px|thumb|AIR NFC Tabletop]]
[[File:Logo_AIR_TableTop.png|right|upright=0.5]]
 
  +
[[Image:Logo_AIR_TableTop.png|right|upright=0.5]]
  +
  +
'''Suite à l'exposition Experimenta, de nombreuses photos vont arriver!'''
  +
 
* UE/Module: Projet innovant de RICM4 option CM
 
* UE/Module: Projet innovant de RICM4 option CM
 
* Enseignant: Didier Donsez
 
* Enseignant: Didier Donsez
* Elèves RICM4: Christophe Havard (chef de projet), Renaud Collin, Sebastien Skorupski
+
* Elèves RICM 5: Christophe Havard (chef de projet) - havard.christophe[AT]gmail.com, Renaud Collin - ren.collin[AT]gmail.com, Sebastien Skorupski
  +
* Intervenants externes : Elsa Neves ([http://fr.wikipedia.org/wiki/Institut_de_la_Communication_et_des_M%C3%A9dias ICM Grenoble])
   
 
==Introduction==
 
==Introduction==
  +
Le tabletop est une table '''tactile''' '''interactive''' d'environ 60". La technologie employée est dite "'''multipoint'''", c'est-à-dire qu'elle permet à un nombre important d'utilisateur d''''interagir en même temps'''.
   
  +
Cette table fonctionne avec un Mac Mini et 2 systèmes d'exploitation : Mac OSX et Windows 7.
Les technologies utilisées sont Flash (AS3) pour le codage de l'application, NFC pour l'identification et le paiement des utilisateurs.
 
  +
Les applications clientes peuvent être développées sur plusieurs technologies dont :
  +
* Java (MT4j)
  +
* Flash AS3 (TUIO library)
  +
* Python (PyMT)
  +
* etc
  +
  +
La table est également équipée d'un''' lecteur NFC''' type ACR122.
   
 
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]
 
Présentation commerciale du projet : [http://air.imag.fr/mediawiki/images/6/60/AIR_NFC_TableTop.pdf AIR_NFC_TableTop]
   
  +
Les actualités du projet en anglais sur [http://youforkmywife.wordpress.com/ notre blog]
 
   
 
==Objectifs==
 
==Objectifs==
 
Les objectifs du projet sont
 
Les objectifs du projet sont
 
# de réaliser la partie matériel d'un tabletop à faible coût
 
# de réaliser la partie matériel d'un tabletop à faible coût
# d'évaluer les canevas de développement d'IHM multipoint (Flash/Android, C#/.NET/Windows7)
+
# d'évaluer les canevas de développement d'IHM multipoint (Flash/Java/C#/.NET/Windows7)
 
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)
 
# de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)
# d'utiliser la technologie NFC (Near Field Communication) pour permettre aux utilisateurs de s'identifier et payer via leur téléphone mobile
+
# d'utiliser la technologie NFC ([[Near Field Communication]]) pour permettre aux utilisateurs de s'identifier et payer via leur téléphone mobile
   
 
Ces informations peuvent être injectées dans un monde virtuelle d'avatars. Inversement, les capteurs et les usagers peuvent être simulés et représentés dans le monde réel augmenté. Pour cela, vous utiliserez [http://diasuite.inria.fr DiaSuite].
 
   
 
==Table Tactile==
 
==Table Tactile==
===Equipement===
+
===Matériel===
* Table en verre IKEA (60")
+
* Table en verre [http://www.ikea.com/fr/fr/catalog/products/40134347/ IKEA Granas] (60")
 
* Miroir
 
* Miroir
 
* Mac Mini
 
* Mac Mini
 
* Videoprojecteur short-throw
 
* Videoprojecteur short-throw
  +
* 10 [http://dx.com/p/ir-48-led-infrared-illumination-light-for-night-vision-dc-12v-500ma-15235 Illuminateur IR]
* Illuminateur IR
 
 
* Webcam PS3 modifiée (IR filter removed & visible light bandpass filter added)
 
* Webcam PS3 modifiée (IR filter removed & visible light bandpass filter added)
 
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)
 
* Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)
Line 36: Line 47:
   
 
===Installation matérielle===
 
===Installation matérielle===
- La surface vitrée de la table est recouverte de papier calque afin de capter l'image du vidéo projecteur.
+
* La surface vitrée de la table est recouverte de papier calque afin de capter l'image du vidéo projecteur.
- Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.
+
* Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.
- Un miroir est placé de telle sorte à renvoyer l'image du vidéo-projecteur vers la surface vitrée
+
* Un miroir est placé de telle sorte à renvoyer l'image du vidéo-projecteur vers la surface vitrée
- Des lampes infrarouges sont placés à l'intérieur de la table afin de diffuser des ondes infrarouge vers la surface vitrée.
+
* Des lampes infrarouges sont placés à l'intérieur de la table afin d'illuminer la surface vitrée par en-dessous.
- La webcam est pointée vers la surface vitrée.
+
* La webcam est pointée vers la surface vitrée.
- Des pièces de cartons sont découpés et placées autour de la table afin de la protéger de perturbations extérieures.
+
* Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).
   
 
<gallery>
 
<gallery>
  +
Image:Interieur_table.jpg| AIR NFC Tabletop 5
 
Image:TableTop 02.jpg|AIR NFC TableTop 1
 
Image:TableTop 02.jpg|AIR NFC TableTop 1
 
Image:TableTop 05.jpg|AIR NFC TableTop 2
 
Image:TableTop 05.jpg|AIR NFC TableTop 2
 
Image:TableTop 03.jpg|AIR NFC TableTop 3
 
Image:TableTop 03.jpg|AIR NFC TableTop 3
  +
Image:TableTop 06.jpg|AIR NFC TableTop 4
 
</gallery>
 
</gallery>
   
 
===Installation logicielle===
 
===Installation logicielle===
  +
* Construction des interfaces logicielles : [http://www.mt4j.org/mediawiki/index.php/Main_Page MT4j].
* CCV (Community Core Vision) [http://ccv.nuigroup.com CCV]
 
  +
MT4j est un framework Java fournissant des briques logicielles de base et permettant de construire des interfaces riches.
  +
<gallery>
  +
Image:MT4j MTShell.jpg|MT4j - Multitouch Shell
  +
Image:MT4j_WaterScene.png|MT4j - Water scene
  +
Image:MT4j_Touchtail.jpg|MT4 - Dessin
  +
</gallery>
   
  +
* Tracker : CCV 1.4 (Community Core Vision) [http://ccv.nuigroup.com CCV]
  +
Le tracker permet de l'image filmée par la caméra en points de contacts exploitables par l'ordinateur.
  +
Plus précisément, le tracker récupère les coordonnées des points de contacts par synthèse d'image, convertit ces coordonnées au format [http://www.tuio.org/?specification TUIO] et les envoie sur un socket de l'ordinateur.
 
<gallery>
 
<gallery>
 
Image:Test1.png|Community Core Vision
 
Image:Test1.png|Community Core Vision
 
</gallery>
 
</gallery>
   
===Premières Démos===
+
===Videos de demos===
  +
* [http://www.youtube.com/watch?v=X1zus6saCcM Application Puzzle]
 
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech Test Application "Fire"]
 
* [http://www.dailymotion.com/video/xgpobl_test-application-fire-air-nfc-tabletop_tech Test Application "Fire"]
 
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech Test Application "Water"]
 
* [http://www.dailymotion.com/video/xgpobm_test-application-water-air-nfc-tabletop_tech Test Application "Water"]
 
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech Test Application "Paint"]
 
* [http://www.dailymotion.com/video/xgpobr_test-application-paint-air-nfc-tabletop_tech Test Application "Paint"]
   
  +
== Module NFC ==
  +
=== Communautée ===
  +
Information sur la librairie open-source [http://www.libnfc.org/ libnfc]
  +
  +
[http://code.google.com/p/libnfc/downloads/list Téléchargement de la librairie libnfc]
  +
  +
[http://www.libnfc.org/api Documentation sur l'API]
  +
  +
[http://www.libnfc.org/community Forum de la librairie]
  +
  +
[http://sberfini.developpez.com/ Tutoriel sur l'utilisation de NFC sur Androïd]
  +
  +
=== Matériel===
  +
* ACR122 NFC reader : [http://www.nfc-reader.com/acr122-drivers.php drivers sur nfc-reader.com] ou [http://acs.com.hk/index.php?pid=drivers&id=ACR122U]
  +
  +
* Nokia 6131 NFC : [http://www.nokia.fr/support/support-produits/nokia-6131-nfc Support en ligne]
  +
  +
=== Environnement Matériel: Nokia 6131 NFC ===
  +
[http://www.forum.nokia.com/info/sw.nokia.com/id/ef4e1bc9-d220-400c-a41d-b3d56349e984/Nokia_6131_NFC_SDK.html Nokia 6131 SDK]. Le SDK propose deux type d'installation : sous forme d'une plugin eclipse ou d'un framework
  +
  +
=== Environnement Logiciel : libnfc ===
  +
Ce document est basé sur le fichier README-Windows.txt disponible dans l'archive libnfc-1.4.2 [www.libnfc.org]
  +
  +
====Prérequis====
  +
Afin de pouvoir interagir avec l'ACR122 les logiciels suivants doivent-être téléchargés:
  +
* [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download MinGW-w64 compiler toolchain]
  +
* [http://sourceforge.net/projects/libusb-win32/ LibUsb-Win32 0.1.12.2]
  +
* [http://www.cmake.org CMake 2.6 ]
  +
* [http://code.google.com/p/libnfc/downloads/list libnfc]
  +
  +
====Installation====
  +
Testée sous Windows XP/SP3 32 bit.
  +
  +
* Installer MinGW .!!!Attention!!! La documentation officielle indique qu'il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card).
  +
* Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :
  +
- clic-droit sur le poste de travail/propriétés
  +
- Dans l'onglet avancé, cliquer sur Variables d'environnements
  +
- Modifier la variable PATH
  +
* Décompresser l'archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C'est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.
  +
* Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)
  +
* Installer CMake : Choisissez l'option "Add Cmake to the system PATH" pendant l'installation afin que CMake soi accessible depuis MinGW
  +
* Extraire l'archive libnfc archive versc:\NFC\libnfc-src
  +
* Lancer un éditeur de texte et copier les instructions suivantes :
  +
cd c:\NFC\libnfc-build
  +
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src
  +
mingw32-make
  +
cd ..
  +
* Sauvegarder le fichier dans C:\NFC\make.bat
  +
* Exécuter make.bat
  +
* Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32
  +
  +
===Créer son programme===
  +
Il n'est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc.
  +
Pour compiler il faut éditer le fichier de configuration CMakeList.txt :
  +
# Placer le fichier .c dans c:\NFC\libnfc-src\examples
  +
# Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET
  +
# Exécuter make.bat depuis c:\NFC\
  +
Le fichier exécutable se trouve dans libnfc-build\examples
  +
  +
====Utiliser des librairies supplémentaires====
  +
Prenons l'exemple des sockets sous windows, afin de permettre la compilation d'un programme les utilisant il faut (en plus de l'inclusion de <winsock2.h>) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d'expliciter les librairies à utiliser, de manière similaire à celle-ci:
  +
IF(WIN32)
  +
TARGET_LINK_LIBRARIES(monProgramme ws2_32)
  +
TARGET_LINK_LIBRARIES(monProgramme nfc)
  +
TARGET_LINK_LIBRARIES(monProgramme nfc-utils)
  +
ENDIF(WIN32)
  +
Source complète : [[File:CMakeLists.txt]]
  +
  +
== Blazeds ==
  +
[http://opensource.adobe.com/wiki/display/blazeds/BlazeDS Blazeds] est un composant open source permettant d'accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur.
  +
[http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html Getting start with Blazeds]
   
 
== Liens externes ==
 
== Liens externes ==

Latest revision as of 16:55, 7 October 2015

AIR NFC Tabletop
Logo AIR TableTop.png

Suite à l'exposition Experimenta, de nombreuses photos vont arriver!

  • UE/Module: Projet innovant de RICM4 option CM
  • Enseignant: Didier Donsez
  • Elèves RICM 5: Christophe Havard (chef de projet) - havard.christophe[AT]gmail.com, Renaud Collin - ren.collin[AT]gmail.com, Sebastien Skorupski
  • Intervenants externes : Elsa Neves (ICM Grenoble)

Introduction

Le tabletop est une table tactile interactive d'environ 60". La technologie employée est dite "multipoint", c'est-à-dire qu'elle permet à un nombre important d'utilisateur d'interagir en même temps.

Cette table fonctionne avec un Mac Mini et 2 systèmes d'exploitation : Mac OSX et Windows 7. Les applications clientes peuvent être développées sur plusieurs technologies dont :

  • Java (MT4j)
  • Flash AS3 (TUIO library)
  • Python (PyMT)
  • etc

La table est également équipée d'un lecteur NFC type ACR122.

Présentation commerciale du projet : AIR_NFC_TableTop


Objectifs

Les objectifs du projet sont

  1. de réaliser la partie matériel d'un tabletop à faible coût
  2. d'évaluer les canevas de développement d'IHM multipoint (Flash/Java/C#/.NET/Windows7)
  3. de réaliser une application pour une table de restaurant (affichage des plats, commande, addition, enquête de satisfaction ...)
  4. d'utiliser la technologie NFC (Near Field Communication) pour permettre aux utilisateurs de s'identifier et payer via leur téléphone mobile


Table Tactile

Matériel

  • Table en verre IKEA Granas (60")
  • Miroir
  • Mac Mini
  • Videoprojecteur short-throw
  • 10 Illuminateur IR
  • Webcam PS3 modifiée (IR filter removed & visible light bandpass filter added)
  • Lentille grand angle (m12/0.5mm mount, 1.8mm, angle of view = 170°)
  • RFID Reader (ACS ACR 122 RFID reader)
TableTop schema.jpg

Installation matérielle

  • La surface vitrée de la table est recouverte de papier calque afin de capter l'image du vidéo projecteur.
  • Le bord supérieur de la table est percé afin de pouvoir fixer un support pour le vidéo-projecteur.
  • Un miroir est placé de telle sorte à renvoyer l'image du vidéo-projecteur vers la surface vitrée
  • Des lampes infrarouges sont placés à l'intérieur de la table afin d'illuminer la surface vitrée par en-dessous.
  • La webcam est pointée vers la surface vitrée.
  • Des plaques en bois sont découpées et placées autour de la table afin de la protéger des perturbations extérieures (lumière notamment).

Installation logicielle

  • Construction des interfaces logicielles : MT4j.

MT4j est un framework Java fournissant des briques logicielles de base et permettant de construire des interfaces riches.

  • Tracker : CCV 1.4 (Community Core Vision) CCV

Le tracker permet de l'image filmée par la caméra en points de contacts exploitables par l'ordinateur. Plus précisément, le tracker récupère les coordonnées des points de contacts par synthèse d'image, convertit ces coordonnées au format TUIO et les envoie sur un socket de l'ordinateur.

Videos de demos

Module NFC

Communautée

Information sur la librairie open-source libnfc

Téléchargement de la librairie libnfc

Documentation sur l'API

Forum de la librairie

Tutoriel sur l'utilisation de NFC sur Androïd

Matériel

Environnement Matériel: Nokia 6131 NFC

Nokia 6131 SDK. Le SDK propose deux type d'installation : sous forme d'une plugin eclipse ou d'un framework

Environnement Logiciel : libnfc

Ce document est basé sur le fichier README-Windows.txt disponible dans l'archive libnfc-1.4.2 [www.libnfc.org]

Prérequis

Afin de pouvoir interagir avec l'ACR122 les logiciels suivants doivent-être téléchargés:

Installation

Testée sous Windows XP/SP3 32 bit.

  • Installer MinGW .!!!Attention!!! La documentation officielle indique qu'il faut sélectionner MinGW-w64 afin que MinGW puisse avoir accès aux librairie PCSC (Smart Card).
  • Ajouter les répertoires suivant à votre PATH : c:\MinGW64\bin;c:\MinGW64\x86_64-w64-mingw32\lib32;c:\MinGW64\x86_64-w64-mingw32\include. pour ce faire :

- clic-droit sur le poste de travail/propriétés - Dans l'onglet avancé, cliquer sur Variables d'environnements - Modifier la variable PATH

  • Décompresser l'archive libusb-win32-bin dans c:\Program Files\LibUSB-Win32. C'est dans ce répertoire que CMake cherchera LIBUSB lors de la compilation.
  • Lire le libusb-win32-bin-README contenu dans le dossier bin afin de savoir où copier les deux fichiers .dll et .sys (dépend de votre architecture...)
  • Installer CMake : Choisissez l'option "Add Cmake to the system PATH" pendant l'installation afin que CMake soi accessible depuis MinGW
  • Extraire l'archive libnfc archive versc:\NFC\libnfc-src
  • Lancer un éditeur de texte et copier les instructions suivantes :
 cd c:\NFC\libnfc-build
 cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release c:\NFC\libnfc-src
 mingw32-make
 cd ..
  • Sauvegarder le fichier dans C:\NFC\make.bat
  • Exécuter make.bat
  • Copier le fichier c:\NFC\libnfc-build\libnfc\libnfc.dll vers c:\windows\system32

Créer son programme

Il n'est pas possible (à ma connaissance) de compiler directement un fichier utilisant la librairie nfc. Pour compiler il faut éditer le fichier de configuration CMakeList.txt :

  1. Placer le fichier .c dans c:\NFC\libnfc-src\examples
  2. Editer examples\CMakeLists.txt et ajouter le nom du fichier .c dans la section SET
  3. Exécuter make.bat depuis c:\NFC\

Le fichier exécutable se trouve dans libnfc-build\examples

Utiliser des librairies supplémentaires

Prenons l'exemple des sockets sous windows, afin de permettre la compilation d'un programme les utilisant il faut (en plus de l'inclusion de <winsock2.h>) utiliser la librairie ws2_32. Là encore il faudra éditer le fichier de configuration CMakeList.txt afin d'expliciter les librairies à utiliser, de manière similaire à celle-ci:

   IF(WIN32)
       TARGET_LINK_LIBRARIES(monProgramme ws2_32)
       TARGET_LINK_LIBRARIES(monProgramme nfc)
       TARGET_LINK_LIBRARIES(monProgramme nfc-utils)
   ENDIF(WIN32)

Source complète : File:CMakeLists.txt

Blazeds

Blazeds est un composant open source permettant d'accéder à des objets distant via une application Flex. Pour son fonctionnement blazeds se base sur un serveur Tomcat côté client et côté serveur. Getting start with Blazeds

Liens externes