Sensor.TYPE_ROTATION_VECTOR tiene deriva: ¿Hay una alternativa?

Estoy probando Sensor.TYPE_ROTATION_VECTOR en Android. Se supone que debe utilizar sensor magnético, acelerómetro y giroscopio para proporcionar una rotación precisa en todo momento. Sin embargo, noto enorme deriva que ocurre en Moto G 2do. Me pregunto si se trata de un problema específico del dispositivo, o que esto ocurre en un montón de teléfonos (que yo asumiría, aunque estoy familiarizado que Moto G 2 es un caso problemático con su giroscopio).

¿Existe una forma alternativa de fusión de sensores, que está libre de deriva (usando magnetensor)? También he probado la fusión de sensores de Google Cardboard, pero utiliza la estimación de sesgo, por lo que presumiblemente no totalmente libre de deriva (como el magnetfieldsensor no se utiliza en este momento parece), aunque sigue siendo mucho mejor que TYPE_ROTATION_VECTOR.

https://play.google.com/store/apps/details?id=org.hitlabnz.sensor_fusion_demo tiene algunas alternativas útiles que acabo de encontrar. Todavía tengo que probar que la fusión conduce a resultados más constantes. Fuente aquí: https://bitbucket.org/apacha/sensor-fusion-demo/src .

Muchos de estos también muestran la deriva; En particular los que utilizan el giro.

Enfoque independiente de la plataforma / hardware

  1. El girocompás, por definición, siempre se deriva.
  2. El magnetómetro, por definición, carece de precisión (*).
  3. El acelerómetro, en cuanto a la posición del dispositivo de detección, no tiene ningún valor.

Un enfoque general consiste en:

  • Escuchar las notificaciones de cambios de magnetómetro, con una amortización en el tiempo. Esto le da grandes cambios en los cambios de orientación del dispositivo.
  • Escuchar las notificaciones de cambios giroscópicos, con una amortización en el tiempo. Esto le da pequeños cambios en los cambios de orientación del dispositivo.

(*) En un mundo físico cartesiano, el magnetómetro debe ser suficiente, pero en el universo terrenal, es necesario compensar la falta de frecuencia magnetométrica de actualización, precisión y factores externos con el giroscopio, lo que proporciona una retroalimentación inmediata.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.