0

Je souhaite utiliser the values that Android's SensorEvent provides pour calculer les mêmes valeurs que celles spécifiées pour DeviceMotionEvent.Calcul des valeurs DeviceMotionEvent pour Android

Mon problème est la partie dans la documentation Android qui fait référence à Gx, Gy, Gz:

public void onSensorChanged(SensorEvent event) 
{ 
     // alpha is calculated as t/(t + dT) 
     // with t, the low-pass filter's time-constant 
     // and dT, the event delivery rate 

     final float alpha = 0.8; 

     gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0]; 
     gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1]; 
     gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2]; 

     linear_acceleration[0] = event.values[0] - gravity[0]; 
     linear_acceleration[1] = event.values[1] - gravity[1]; 
     linear_acceleration[2] = event.values[2] - gravity[2]; 
} 

Que sont censés être des valeurs du tableau gravity référencé dans ce code? Il mentionne également alpha, mais je ne comprends toujours pas ce que c'est/représente, comment l'équation fonctionne (Qu'est-ce qu'un filtre passe-bas? Comment déterminez-vous la "constante de temps"? ?), ou pourquoi il a même été réglé (tout à fait arbitrairement) à 0.8.

Je manque évidemment au département de physique, mais je comprends les maths. Donc, si quelqu'un serait si gentil d'expliquer le raisonnement de la physique derrière, je serais très obligé. Je sais qu'il y a des explications des termes sur les pages que j'ai liées, mais ils n'ont toujours pas de sens dans mon esprit, sauf que les termes correspondent aux images des axes sur lesquels l'appareil est en accélération ou en rotation.

Répondre

2

Il s'agit d'un filtre numérique passe-bas. Il est utilisé pour éliminer les vibrations (signaux à haute fréquence) d'une manière simple. L'alpha est compris entre 0 et 1. Plus l'alpha est élevé, plus les vibrations sont éliminées (vous faites davantage confiance aux valeurs historiques de la gravité), de l'autre, la valeur de la gravité est fortement retardée.

Vous avez plus d'informations ici: http://en.wikipedia.org/wiki/Low-pass_filter, regardez la section Réalisation du temps discret.

Questions connexes