2015-12-07 15 views
11

Sto provando Sensor.TYPE_ROTATION_VECTOR su Android. Dovrebbe utilizzare magnetfieldsensor, accelerometro e giroscopio per fornire una rotazione accurata in ogni momento. Tuttavia, noto una deriva enorme che si verifica in Moto G 2nd. Mi chiedo se questo è un problema specifico del dispositivo, o che questo si verifica su un sacco di telefoni (che presumerei, anche se mi è familiare che Moto G 2nd sia un caso problematico con il suo giroscopio).Sensor.TYPE_ROTATION_VECTOR ha una deriva: esiste un'alternativa?

Esiste una forma alternativa di fusione del sensore, che non ha deriva (utilizzando magnetsensor)? Ho provato anche la fusione dei sensori di Google Cardboard, ma utilizza la stima della polarizzazione, quindi presumibilmente non è completamente priva di deriva (poiché a questo punto sembra che il magnetfieldsensor non venga utilizzato), sebbene sia ancora MOLTO meglio di TYPE_ROTATION_VECTOR.

+0

Un vecchio video di Google Talk su Sensor Fusion: https://youtu.be/C7JQ7Rpwn2k Anche la deriva all'interno delle specifiche? 'DEVE avere una varianza non superiore a 1e-7 rad^2/s^2 per Hz (varianza per Hz o rad^2/s). La varianza può variare con la frequenza di campionamento, ma deve essere vincolata da questo valore. In altre parole, se si misura la varianza del giroscopio a una frequenza di campionamento di 1 Hz, non dovrebbe essere maggiore di 1e-7 rad^2/s^2.' http://static.googleusercontent.com/media/source.android .com/it // compatibility/android-cdd.pdf –

+0

Come stai cercando questo per AR che ha una lunga durata - questo è probabilmente il motivo per cui hanno aggiunto la funzione HiFI Sensor 'android.hardware.sensor.hifi_sensors' –

risposta

0

Piattaforma/Hardware approccio indipendente

  1. giroscopio, per definizione, sempre deriva.
  2. Il magnetometro, per definizione, manca la precisione (*).
  3. L'accelerometro, per quanto riguarda la rilevazione della posizione del dispositivo, non ha alcun valore.

Un approccio generale consiste nel:

  • ascoltare magnetometro cambia le notifiche, con un ammortamento nel corso del tempo. Questo ti dà grandi variazioni cambiamenti di orientamento del dispositivo.
  • ascolta le notifiche di modifiche giroscopiche, con un ammortamento nel tempo. Questo ti dà piccole modifiche cambiamenti di orientamento del dispositivo.

(*) In un mondo fisico cartesiano, il magnetometro dovrebbe essere sufficiente, ma nell'universo del terrestre, è necessario compensare la mancanza di frequenze magnetometro di aggiornamento, precisione e fattori esterni con la giroscopio, che fornisce un feedback immediato.