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.
- TYPE_ROTATION_VECTOR, TYPE_ORIENTATION dan resultados diferentes que también con desviación
- Android nGPS: obtener ubicación basada en el campo magnético en lugar de gps o triangulación de células
- ¿Cómo reemplazar adecuadamente Sensor.TYPE_ORIENTATION (que ahora está obsoleto)?
- Convertir los valores del campo magnético X, Y, Z desde el dispositivo en el marco de referencia global
- ¿Cómo obtener el azimut de un teléfono con lecturas de brújula y lecturas de giroscopio?
- Comportamiento extraño de las medidas del campo magnético mientras gira el dispositivo
- Obtener información de los sensores magnéticos
- ¿Cómo obtengo el ángulo del teléfono en relación con el campo magnético de la Tierra?
- Rodamiento de brújula de Android
- ¿Diferencia entre sensor de orientación y sensor de campo magnético en Android?
- Sensores para teléfonos móviles
- Uso del sensor magnético
- Android - SensorManager comportamiento extraño de getOrientation
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
- El girocompás, por definición, siempre se deriva.
- El magnetómetro, por definición, carece de precisión (*).
- 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.