Kinect2012 : Différence entre versions
(→Séances) |
(→Séance du 04/04/2012) |
||
Ligne 137 : | Ligne 137 : | ||
*Adaptation du code pour simuler les touches d’un clavier : | *Adaptation du code pour simuler les touches d’un clavier : | ||
gestes reconnus : | gestes reconnus : | ||
− | + | ** swipe left associé à la touche gauche | |
− | + | ** swipe right associé à la touche droite | |
− | + | ** swipe up associé à la touche haut | |
− | + | ** swipe down associé à la touche bas | |
Problème : dès qu’un mouvement est reconnu, exemple swipe left, alors le curseur se ballade vers la gauche sans s’arrêter. | Problème : dès qu’un mouvement est reconnu, exemple swipe left, alors le curseur se ballade vers la gauche sans s’arrêter. |
Version du 4 avril 2012 à 20:46
Sommaire
- 1 Liste du matériel
- 2 Présentation
- 2.1 Avancement du projet
- 2.1.1 Objectifs suggérés par les encadrants
- 2.1.2 Réalisations concrètes
- 2.1.3 Séances
- 2.1.3.1 Séance du 08/02/2012
- 2.1.3.2 Séance du 13/02/2012
- 2.1.3.3 Séance du 15/02/2012
- 2.1.3.4 Séance du 20/02/2012
- 2.1.3.5 Séance du 22/02/2012
- 2.1.3.6 Séance du 07/03/2012
- 2.1.3.7 Séance du 12/03/2012
- 2.1.3.8 Séance du 14/03/2012
- 2.1.3.9 Séance du 19/03/2012
- 2.1.3.10 Séance du 21/03/2012
- 2.1.3.11 Séance du 28/03/2012
- 2.1.3.12 Séance du 04/04/2012
- 2.1.4 Résultats
- 2.1 Avancement du projet
Liste du matériel
Présent
- Kinect
A acheter
Présentation
Ce projet a pour objectif de mettre en place un système de choix d'appareil en espace commercial. Il s'agit, sur la base d'un système existant, d'améliorer le système de sélection des produits afin de le rendre plus ergonomique, de pouvoir le paramétrer plus simplement (par un vendeur), eventuellement d'augmenter le nombre de gestes reconnaissable. La situation d'usage pressentie est une catégorie de vente de produits difficilement déplacable par un client, pour des raisons de poids (par exemple un appareil de musculation) ou de taille (par exemple une tente).
Avancement du projet
Objectifs suggérés par les encadrants
- Objectif principal : Améliorer un dispositif de sélection d'articles par gestes
- Objectifs détaillés :
- Passer à la nouvelle version du SDK
- Enlever la calibration du squelette
- Interface pour un utilisateur lambda
Réalisations concrètes
Séances
Séance du 08/02/2012
- Récupération des sources stables de OpenNI,PrimeSense Sensor Module for OpenNI et NITE
- Installation des dépendances requises pour installer OpenNI, PrimesSense et NITE d'après les README
- Compilation des sources
- Essais de compilation de quelques samples en java pour reconnaitre une personne ou une main
- Erreurs dans la compilation => Manque de fichiers JAR ?
Séance du 13/02/2012
- Installation terminé, la Kinect fonctionne et est reconnue.
- Installation de SensorKinect à la place de PrimeSense Sensor qui n’était pas le driver associé à la kinect (avin2-SensorKinect-faf4994)
- Test des samplesfournis avec OpenNi
Séance du 15/02/2012
- Création d'un makefile pour compiler nos projet cpp
- Prise en main de Simpleread (profondeur, largeur, hauteur)
- Développement d'un petit soft "salut ça va" en fonction juste de la position en x,y,z qui marche entre 500 et 800 mm de profondeur
(en dirigeant la main en haut à gauche, le terminal affiche "Salut !", en dirigeant la main en haut à droite, le terminal affiche"ca va")
Séance du 20/02/2012
- Récupération du projet de l'an passé ainsi que le rapport rapport de l’an dernier
- Installation de librairie SDL
- Modification du Makefile afin de pouvoir compiler le projet sur un PC
- Test du programme => fonctionne mis à part petit problème de résolution sur l’image d’instruction
- Regarder les exemples de NITE => rien de concluant pour le moment
- Sur le projet de l’an dernier => pas forcément besoin de psy pose pour calibration mais calibration néanmoins nécéssaire.
Séance du 22/02/2012
- Résolution du problème d'affichage du programme de l’ancien projet, test du programme.
- Calibration automatique avec la nouvelle version de nite (doc, sans “psi” pose)
? comment intégrer Player-sample au projet ?
Séance du 07/03/2012
- Réinstallation compléte de OpenNi, Nite, KinectSensor, ainsi que leurs dépendances respectives et des librairies nécessaires à l'ancien projet car changement d'ordinateur...
- Problème pour lancer les Sample de OpenNi :
Open failed: Failed to set USB interface! Press any key to continue . . .
Résolution : rmmod gspca_kinect
- Création du Makefile pour déveloper avec Nite (Makefile à executer dans Sample Tests du dossier de Nite)
- Aucune idée sur comment aborder l'intégration de NITE au projet de l'an dernier...
Séance du 12/03/2012
- Fonction pour sauvegarder et charger des squelette vers / depuis un fichier trouvée et en attente de test faute de kinect accessible.
Séance du 14/03/2012
- Ajout de la fonction permettant de sauvegarder un squelette
- La fonction de chargement d’un fichier de squelette nous retourne une erreur :
Function was not implemented!
Séance du 19/03/2012
bloqué à Loadcalibrationdatatofile
Séance du 21/03/2012
- Installation de libmagick++-dev pour manipuler des images
- Création du programme permettant de prendre une image et un fichier texte en paramètre
l’image peut être un article du magasin tel qu’une tente, le texte correspond à la description de l’article précédemment cité.
Compilation et utilisation :
- gcc -o image image.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs`
- ./image
Impossible d'ouvrir le fichier ! Utilisation : ./image nomImage.xxx nomFichier.xxx
- ./image tente.JPG description_tente.txt
Séance du 28/03/2012
Réflexions quant à une réelle amélioration du projet :
- Pouvoir calibrer la position d'un objet dans un environnement 3D. Pour l'instant les objets sont définis statiquement dans un tableau du programme. Si on veut changer l'objet de place, il faut que le développeur entre dans les sources et recompose le projet.
- Faire une interface graphique simple en qt en partant un projet/exemple dans qt creator. Cette interface est surtout écrite en qml. Il s'agit d'une grille de rectangle contenant chacun une image. On pourrait ainsi faire un menu avec deux rectangle :
•un menu catalogue •un menu qui lance le projet de l'an passé
Dans le catalogue on aurait une liste de filtres : sport, randonné, camping etc et les images des objets à vendre par décathlon dans une grille de rectangle.
L'exemple dont je parle plus haut est navigable entièrement avec les flèches du clavier. Aussi, on pourrait simuler l'appui sur une touche directionnelle des qu'un mouvement spécifique est reconnu par nite.
Travail réalisé lors de la séance :
- Compréhension du placement des items et de comment le modifier dans le cadre du programme que nous voulons créer. (itemsset.cpp, itemsset.hpp)
- Révision du programme de création des images (presque terminé)
- Le vendeur pourra bientôt, depuis le programme principal de la Kinect, afficher ses 8 images/textes, qu'il aura au préalable placés dans un dossier spécifique. Le programme est appelé lors de de l'initialisation du tableau d'items
Séance du 04/04/2012
- Exemple pour utiliser la Kinect comme une souris trouvé
http://www.keyboardmods.com/2010/12/howto-use-kinect-as-mouse-in-linux.html Ce programme permet de simuler le déplacement d'une souris sous linux via la librairie ioinput
- Adaptation du code pour simuler les touches d’un clavier :
gestes reconnus :
- swipe left associé à la touche gauche
- swipe right associé à la touche droite
- swipe up associé à la touche haut
- swipe down associé à la touche bas
Problème : dès qu’un mouvement est reconnu, exemple swipe left, alors le curseur se ballade vers la gauche sans s’arrêter.
- Commencement de la programmation de l’interface à partir d’un exemple sur QTcreator en Qt Quick (focus), pour l’instant possibilité de mettre plusieurs noms rentrés a la main dans une liste, ainsi que différentes images nommées de la façon suivante: “<nom>+(index+1)+<.extension>”.
- En attente d’une solution pour associer une grille d’image différente pour chaque instance de cette liste.
Projet d’interface pouvant être lancé depuis n’importe quel ordinateur sur lequel QTCreator est installé.