Aller au contenu

Supprimer la gravité sur l'accéléromètre


Recommended Posts

Bonjour,

Le contexte:

Cela fait maintenant 1 mois que je suis actuellement en train de développer une application sur android 1.6 (je sais, je pourrai passer au moins en 2.0 mais c'est un critère qui m'a été imposé), cette application permettrai de dessiner un graphiti sur un mur virtuel, en suivant le mouvement du bras. Exemple, si je fais un cercle avec mon bras, smart-phone en main, sur mon écran se dessinera un cercle.

Le principe:

Récupérer les valeurs de l'accéléromètre. Si j'ai une accélération, je peux en déduire une vitesse, et si j'ai une vitesse, je peux en déduire une position. Et grâce a une position, je peux déssiner sur mon canevas.

Lorsque mon smart-phone, HTC G1, est en position immobile à plat sur une table, j'obtient les accélération suivantes:

accé.X ~ 0.

accé.Y ~ 0.

accé.Z ~ 9,8 (gravité).

Jusqu'ici tout va bien.

Problème:

Lorsque je bouge mon G1, évidemment la force de gravité s'étale sur les 3 axes selon l'orientation du smart-phone.

Il est donc indispensable de filtrer la gravité sur les 3 axes.

Mais comment?

Questions:

- Dois-je utiliser une filtre passe-bande ou autre?

si oui, j'aimerais bien avoir un exemple, parce-que j'ai déjà essayer de multiple technique, en vain...

- Est-ce plutôt géométrique?

Avec des projection, rotation de matrice, encore une fois, j'ai passer plusieurs jours de calculs, en vain...

- Connaissez-vous une application qui reconnait le mouvement du smart-phone?

je ne parle pas seulement de l'orientation, du genre labyrinthe.

- Ou finalement, est-ce réellement possible de reconnaitre le mouvement du smart-phone dans un espace virtuel?

Merci, pour la moindre petite information.

Lien vers le commentaire
Partager sur d’autres sites

Le problème c'est que sans gyroscope tu n'as pas d'information sur le mouvement de rotation appliqué par l'utilisateur.

Donc si celui-ci incline et déplace le telephone de manière à avoir une acceleration de 9.8m/s sur un axe tu n'as aucun moyen de savoir si c'est bien le mouvement de l'utilisateur ou si c'est la gravité qui fait son boulot.

En gros une telle application ne pourrait marcher que si l'utilisateur garde le smartphone dans une inclinaison figée lorsqu'il déplace l'appareil. Dès qu'il le pivotera dans le mouvement alors c'est foutu car tu n'a aucun moyen suffisamment précis pour connaitre ce mouvement d'inclinaison.

C'est pour ça qu'on a les gyroscope ( dans la manette Wii, l'iPhone4, etc)

Lien vers le commentaire
Partager sur d’autres sites

Merci Le_Poilu !

Je possède un gyroscope et donc je peux récupérer les rotations.

Et justement j'aimerai savoir comment différencier la force de gravité et le force exercée par l'utilisateur.

As-tu une idée de calcul ou un exemple?

Lien vers le commentaire
Partager sur d’autres sites

il y a un gyroscope sur le G1 ? sur les 3 axes ?

Quand bien même si tu fais une telle appli elle sera incompatible avec pas mal de telephones qui aujourd'hui ne sont pas équipés de la sorte de ce que j'en sais.

Là comme ça je ne vais pas pouvoir te donner de formule magique mais plutot un principe.

A partir du moment où tu connais l'angle imposé par l'utilisateur dans ton mouvement (grâce au gyroscope) tu sais dans quelle direction s'appliquera la gravité par rapport à l'axe de rotation du téléphone. Il te suffit alors de soustraire la composante de la gravité sur l'axe Z absolu pour obtenir la résultante du mouvement appliqué par l'utilisateur.

Je ne sais pas si c'est tres explicite, un petit schéma ira mieux mais là j'ai pas super le temps pour ça :p

Lien vers le commentaire
Partager sur d’autres sites

Merci Le_Poilu pour ces informations.

Je vais donc peut être m'orienter sur l'utilisation de la caméra, pour assurer la compatibilité pour un maximum de téléphones.

Jouer entre l'accéléromètre et le gyroscope me parait presque infaisable.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...