Le but du projet était de commander deux spots lumineux et des animations sonores par le biais de gestes émis par l'utilisateur. Ma tâche était de développer la partie "reconnaissance des gestes" grâce à un logiciel développer en Java qui interférait avec une caméra Kinect.
2. Sommaire
1) Présentation du projet (objectif)
2) Solutions matériels proposées
3) Phase de recherche
4) Phase de développement
5) Les résultats du travail
8. Choix du matériel 2/3
« Consommation inférieure aux
lampes à incandescences »
DIODE
ÉLECTROLUMINESCENTE
9. Choix du materiel 3/3 : La carte
4 ports séries
Plus grande
Plus puissante
Adapté aux shields
10. La phase de recherche et de réflexion
« Comment interagir par geste avec le système ? »
● Faire bouger le spot en même temps que le bras ?
● Reconnaître des gestes prédéfinis et faire bouger le spot ou
contrôler le lecteur de musique.
Associé chaque geste à une « fonction » et donc a une
commande (« chaîne de caractère »).
Faire une liste des commandes, des fonctions et des
gestes
« Comment reconnaître les gestes de l'utilisateur ?»
11. Comment enregistrer les points ? 1/2
« Sous quel forme enregistrer les positions ? »
(x;y) ?
12. Comment enregistrer les points ? 2/2
4 zones/positions
● Main est au dessus à droite
● Main est au dessus à gauche
● Main est en dessous à droite
● Main est en dessous à gauche
Enregistrer une position tout les instants 't'
→ enregistrer seulement lorsqu'on change de
zone
14. Algorithme principal du programme
Détection et mise en mémoire
des points (x;y)
Un geste est – il détecté ?
Écriture de la variable
« commande »
Envoi de la variable à
La carte Arduino
Non
Oui
A1)A1)
A2)A2)
A3)A3)
A4)A4)
15. A2) La position de la main a t-elle changé ?
Après la mise en mémoire des points.
● La position par rapport à l'épaule a t-elle changé ?
➔ Si oui on ajoute à l'historique la situation.
Sinon on ne fait rien, on retourne au début
de l'algorithme.
16. A2) Détection des gestes
Historique de la position de l'utilisateur
Index Valeurs (x) Valeurs (y)
0
1
2
3
4 mx<ex my>ey
Historique de la position de l'utilisateur
Index Valeurs (x) Valeurs (y)
0
1
2
3 mx<ex my>ey
4 mx>ex my>ey
Historique de la position de l'utilisateur
Index Valeurs (x) Valeurs (y)
0
1
2 mx<ex my>ey
3 mx>ex my>ey
4 mx>ex my<ey
Historique de la position de l'utilisateur
Index Valeurs (x) Valeurs (y)
0
1 mx<ex my>ey
2 mx>ex my>ey
3 mx>ex my<ey
4 mx<ex my<ey
Historique de la position de l'utilisateur
Index Valeurs (x) Valeurs (y)
0 mx<ex my>ey
1 mx>ex my>ey
2 mx>ex my<ey
3 mx<ex my<ey
4 mx<ex my>ey
« mx<ex » signifie :
« la main est à gauche de l'épaule »
17. Les difficultés rencontrées
● Comment connecter les deux Shields à la carte Arduino ?
- Remplacement de la carte Mega par la Uno
- Utiliser 2 cartes Uno (un par shield) ?
- Utiliser des fils électriques ?
- Utiliser le module bluetooth, le shield DMX et MP3 sur une seul
carte Arduino
18. Autres difficultés
● Associé toutes les fonctions à des gestes sans qu'un
geste en engendre un autre (et engendre deux
commandes)
- On a décidé pour les dernières commandes (Volume
Plus et Moins) de dessiner à l'écran de l'ordinateur
(sur Processing) des boutons et de détecter quand la
main de l’utilisateur survole le bouton
20. Logiciel d'ajout de musique
Développer en C# sous
Visual Studio Ultimate 2010
David Bartra
21. Fonctionnalité ajoutée
✔ Prise de photo commander par la tablette et par
Processing.
✔ Mise en veille du système.
✔ Logiciel d'ajout de musique.
David Bartra
22. Ce qu'on pourrait y ajouter
➢ Un boîtier
➢ Le spot mobile bouge en même temps
que le bras de l'utilisateur .
➢ Plus de fonction ?