2014-07-15 1 views
0

Je veux construire quelque chose de similaire à la boussole d'Euler et j'ai besoin d'un peu de guidance. En utilisant l'accéléromètre et les capteurs magnétiques, j'ai réussi à calculer les angles de lacet, de tangage et de roulis (radians). Maintenant, quelle devrait être la prochaine étape? J'ai cherché sur Internet pendant plusieurs heures et je ne trouve rien de pertinent. Dois-je composer les angles en fonction de l'axe de référence?Comment construire une boussole Euler?

+2

Essayez de vérifier la physique de –

Répondre

3

Je suppose que vous faites référence à Euler Compass sur Android Play Store?
Les lectures de l'accéléromètre et de la boussole magnétique sont très bruyantes. Vous obtiendrez de meilleurs résultats si vous prenez également en compte le Gyroscope, peut-être avec un filtre de Kalman, ou quelque chose de similaire. Sur les tablettes Windows, la plupart des calculs complexes sont déjà faits pour vous, mais sur Android et iPhone, vous devez le faire vous-même:

Je vous suggère de commencer par une matrice de transformation pour représenter l'orientation de l'appareil. Si vous êtes seulement intéressé par l'orientation, une matrice 3x3 fera, comme ceci:
1 0 0 (La première rangée est un vecteur pointant le long de l'axe X)
0 1 0 (La deuxième rangée est un vecteur pointant le long l'axe Y)
0 0 1 (La troisième ligne est un vecteur pointant le long de l'axe Z)

Appliquez d'abord les rotations du gyroscope à votre matrice.
Le Gyroscope vous donne une accélération autour de chaque axe.
Multipliez par le temps pour obtenir une vitesse angulaire. (vitesse)
Multiplier par le temps à nouveau, pour obtenir la distance angulaire. (degrés)
À court terme, le Gyroscope est très précis et stable, comparé aux deux autres capteurs, mais il n'a pas de point de référence fixe, comme les deux autres. c'est-à-dire qu'il ne vous donne que la distance angulaire que vous avez déplacée, depuis votre lecture précédente, donc au fil du temps, les erreurs d'arrondi l'amèneront lentement à dévier du cours. C'est là que les deux autres capteurs entrent ... (Utilisez-les pour contrer la dérive du gyroscope.)
L'accéléromètre et le magnétomètre sont très bruyants dans le terme de tri, mais vous pouvez obtenir un résultat plus précis en prenant la moyenne de plusieurs lectures consécutives. (filtre passe-bas) Cela les rend lents, mais plus précis à long terme ... la faiblesse opposée du Gyroscope. L'astuce consiste donc à les combiner pour tirer le meilleur parti des deux. ;)

L'accéléromètre représente un vecteur descendant et le magnétomètre représente un vecteur nord. Alors, regardez quelle est la différence entre votre matrice descendante et celle de l'accéléromètre, puis faites tourner votre matrice vers celle de l'accéléromètre. Pas tout le chemin ... juste de petites étapes, pour éviter d'introduire le bruit, mais juste assez pour contrer la dérive du gyroscope. (Ré-étalonnage continu.) Faites ensuite la même chose avec la boussole magnétique.

Maintenant, vous devriez avoir une matrice de rotation qui représente assez fidèlement l'orientation de votre appareil. Ensuite, il suffit d'ajouter une ligne et une colonne vides à la matrice, et de la passer à OpenGL, afin que vous puissiez afficher vos graphiques.

J'espère que cela aide.

Rene

+0

Une très bonne et élaborée réponse. Je vous remercie! :) –