2013-09-06 2 views
0

J'ai mis en place une application qui intègre les capteurs suivants:valeurs non fiables gyroscopiques après étalonnage

  • Accéléromètre
  • Champ magnétique
  • Orientation (dépréciée)
  • Gyroscope
  • Gravity

Ceci est un exemple de code de onSen Procédé sorChanged():

 @Override 
    public void onSensorChanged(SensorEvent event) { 
     int type = event.sensor.getType(); 

     if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) { 
      if (type == Sensor.TYPE_GYROSCOPE) { 
       // Log.e(TAG, "Unreliable gyroscope"); 
      } else if (type == Sensor.TYPE_GRAVITY) { 
       // Log.e(TAG, "Unreliable gravity"); 
      } 
      return; 
     } 

     if (type == Sensor.TYPE_ACCELEROMETER) { 
      mmAcceleration = event.values.clone(); 
     } else if (type == Sensor.TYPE_MAGNETIC_FIELD) { 
      mmGeomagnetic = event.values.clone(); 
     } else if (type == Sensor.TYPE_GYROSCOPE) { 
      mmRotation = event.values.clone(); 
     } else if (type == Sensor.TYPE_ORIENTATION) { 
      mmOrientation = event.values.clone(); 
     } else if (type == Sensor.TYPE_GRAVITY) { 
      mmGravity = event.values.clone(); 
     } 

     if (mmAcceleration != null && mmGeomagnetic != null 
       && mmOrientation != null) { 

          // Handling the data ... 

      mmAcceleration = null; 
      mmGeomagnetic = null; 
      mmRotation = null; 
      mmOrientation = null; 
      mmGravity = null; 
     } 
    } 

Les dispositifs que j'ai essayé sur le code sont HTC One S. nous avons essayé sur 3 dispositifs discrets. J'ai également calibré le G-sensor plusieurs fois et ensuite commencé l'application mais je continue à obtenir des résultats peu fiables. J'ai aussi essayé de calibrer, redémarrer le téléphone et ensuite calibrer à nouveau, ou même après le redémarrage exécuter directement mon application. Les autres capteurs fonctionnent bien. J'ai également essayé différents environnements (intérieur) et je ne suis pas proche de n'importe quelle source d'interférence.

Je ai toujours obtenir des résultats non fiables (SENSOR_STATUS_UNRELIABLE) pour Gyroscope et gravité (utilise le gyroscope) des capteurs.

Avez-vous une suggestion à propos de ce qui pourrait mal tourner?

Merci d'avance.

+0

lecture connexes : http://www.thousand-thoughts.com/2012/03/android-sensor-fusion-tutorial/ –

+0

Merci pour le lien, je suis au courant de ce travail. Mon problème est le event.accuracy == SENSOR_STATUS_UNRELIABLE pour le gyroscope et le capteur de gravité, pas la fusion du capteur. – npal

+0

Et je suppose que vous avez lu: http://stackoverflow.com/questions/6256256/android-compass-seems-unreliable que je viens de réaliser est pour la boussole et non la gravité/gyro. –

Répondre

0

Je pense que ce que vous pourriez vouloir aller pour est d'appliquer un « filtre gratuit » ou un « filtre de Kalman » aux données de l'accéléromètre et les données Gyroscope .... Cela devrait faire l'affaire ....

Questions connexes