Reconnaître des gestes via un téléphone
Hi,
Je demande sans grand espoir, mais on sait jamais.
Quelqu'un connaîtrait une librairie pour reconnaître des gestes via un smarphone (accéléromètre).
En gros, j'aimerais pouvoir savoir si on bouge le téléphone de droite à gauche ou de bas en haut par exemple.
De préférence une librarie pour smartphone, mais une librairie ou un code pour accéléromètre de base, ça m'aiderait.
J'ai trouvé que des pdf qui expliquaient théoriquement comment s'y prendre, mais ça relève plus des mathématiques pures qu'autre chose.
Thanks.
image non contractuelle
Quel(s) OS ?
Sinon, les SDK de iOS et d'Android te permettent de savoir quels mouvements sont fait. J'ai pas vraiment les références en tête, mais c'est possible.
Sous Android, je crois que c'est les imports android.hardware.Sensor.* qui font ça. Sous iOS je sais plus du tout.
Ouai, mais ça te permet juste de récupérer les données brutes de l'accéléromètre.
Ça permet pas de déterminer des gestes et les reconnaître.
C'est bien plus complexe que ça, je pensais que c'était quelque chose de facile mais en réalité, c'est pas à la portée de tous.
J'ai trouvé une librairie "wiigee", mais totalement nulle pour une l'utilisation que je veux en faire.
Pour ceux que ça intéresse, d'après cette étude
http://www.cs.zju.edu.cn/~gpan/publication/2009-UIC-gesture.pdf
Y'a plusieurs algo FDSVM, DTW,...etc
"Facile", tu récupères tes données accélérométrique dans des variables, et tu compares. Sous Android t'as trois données normalement, x,y, z. En fonction du mouvement demandé tu fais ton calcul:
Dabord tu calibres l'accéléromètre en stockant les (x y z) de départ, et dès qu'une nouvelle position est détectée (Dx, Dy, Dz) tu calcules la différence de coordonnées de ces deux points.. Exemple:
Si x - Dx < 0 c'est aller vers la gauche, sinon c'est la droite
Si y - Dy < 0 c'est aller vers l'avant, vers larrière sinon
Si z - Dz < 0 c'est aller vers le bas, le haut sinon
Si tu remplaces 0 par autre chose (-10, -200, 20...) ce sera la sensibilité que tu changeras
Et tu peux mixer ces trois calculs (vers le haut et a droite, vers le bas et la droite, vers l'arrière et la gauche etc...) Et bien sûre tout ça sous Android, si tu passes par une appli Java que tu codes toi même..
Ensuite si tu veux vraiment pas te casser la tête à réécrire ce genre de code des centaines de fois, tu crées une classe que tu utiliseras pour tes futures applications..
Peur d'être HS et remballé violement mode activated
en théorie ça aurait été ça, mais c'est bien plus complexe :)
L'accéléromètre génére du bruit et les données qu'ils donnent ont souvent de grosses erreurs. Il faut donc appliquer toutes sortes de filtres pour "adoucir" la courbe des données reçues.
Ce qui fait que pour un mouvement tu peux avoir des accélérations très éloignées
Oui ça c'est sur, mais j'ai vraiment simplifié le truc, et dans le cas de diminuer les "erreurs du capteurs" ça devient une toute autre histoire.. (Je me rappelle du cours d'informatique sur la correction des erreurs de capteurs/récépteur....)
puis les gestes ne sont jamais parfaits, ce qui fait qu'il est difficile de différencier un geste horizontale d'un geste verticale (en pratique évidemment).
Il faut utiliser des algos de classification. J'ai essayé celui de wiigee et naive Bayes, mais j'ai pas été convaincu.
Mais monsieur sait de quoi il parle :) Au temps pour moi, je pensais que tu cherchais vraiment du basique sans vouloir aller dans les tripes du sujet, parce que j'admets que dans ce cas là, a devient carrément autre chose..
C'est pour faire quoi au final? Sous quel OS, et quel smartphone? :)
là j'étudie la possibilité de dev une app iphone/android. En réalité, l'os n'a pas d'importance, ils sont tous équipés d'un accéléromètre, donc l'algo pourra s'appliquer à n'importe quel smartphone.
Ca serait pour faire un petit jeu avec des gestes un peu comme une wiimote, mais genre pas plus de 4 gestes.
Et je suppose que ces gestes doivent être précis quoi.. Je vois, dans tout les cas, comme j'avais l'habitude de le faire, si jamais tu trouves vraiment rien là dessus, codes le toi même, quittes à rater 200fois, au moins quand t'y seras arrivé tu comprendras un peu plus le principe, et c'est toujours mieux que de prendre quelque chose déjà tout fait
Oui je sais, même si c'est chiant :p
Pas forcément précis, mais avec un taux de reconnaissance proche de 99%. Et surtout, qu'il me dise quand il a pas reconnu un geste par exemple.
Mais je crois bien que je vais devoir mixer et faire un truc perso de toute manière :/
Sinon, ça se fait plutôt bien avec un couple Arduino / centrale inertielle compatible Arduino. C'est du C-like, mais faut le matos qui va avec.
Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.
En accédant à ce site, tu acceptes nos conditions d'utilisation.