l'obtention de l'angle à l'aide de gyroscope sur android
Puis-je calculer l'angle de gyroscope avec ce code? Je veux dire, c'est le calcul de dT-elle correcte?
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
/* Other sensor cases */
case Sensor.TYPE_GYROSCOPE:
for (int j=0;j<3;j++) mGyro[j] = event.values[j];
if(i==0)
i=1;
else
i=2;
if(i==1)
start=System.nanoTime();
else if(i==2) {
finish=System.nanoTime();
dT=( finish-start )/1000000000f;
i=0;
}
angle[0]=(float) ((angle[0]+mGyro[0]*dT)*180/3.1428f);
angle[1]=(float) ((angle[1]+mGyro[0]*dT)*180/3.1428f);
angle[2]=(float) ((angle[2]+mGyro[0]*dT)*180/3.1428f);
break;
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous essayez d'obtenir l'orientation. Non, ces formules ne sont pas corrects, ce n'est pas la façon dont vous intégrez l'angle de taux en 3D, c'est un peu compliqué en fait.
Si vous voulez angles puis utilisez juste SensorManager.getOrientation() à partir de l'API. En d'autres termes, quelqu'un a déjà écrit ce code pour vous, il n'est pas nécessaire de réinventer la roue.
Ne pas utilisation de lacet, tangage et roulis pour arbitraire orientations, Angles d'Euler sont mal.
Si votre but est d'apprendre, vous pouvez trouver comment l'intégration de la 3D dans Direction le Cosinus de la Matrice IMU: Théorie manuscrit. Ce manuscrit est en fait un tutoriel, assez simple et simple.
La documentation de l' SensorEvent classe donne un exemple complet d'utilisation du gyroscope. En gros, vous n'avez qu'à copier et coller le code. Voir cette réponse sur la façon d'obtenir une orientation à partir du gyroscope.