2010-05-04 16 views
5

Ho bisogno di costruire la bussola per la mia applicazione.Problema di accuratezza della bussola

Dalla lettura della documentazione sembra che ci siano due modi ragionevoli per farlo:

  • metodo Sensor.TYPE_ORIENTATION: Questo è il modo più semplice di farlo. Il problema con questo è che non è preciso. Quando paragono le mie letture con Snaptic Compass, sono circa 10-15 degress che per i miei scopi sono inaccettabili.
  • Sensor.TYPE_ACCELEROMETER, Sensor.TYPE_MAGNETIC_FIELD e getRotationMatrix() in combinazione con il metodo remapCoordinateSystem() e getOrientation(): la documentazione dice che "è solitamente più accurato". Il problema è indipendentemente dal ritardo che registro con l'ascoltatore, la bussola diventa pazza anche quando il dispositivo è fermo su una superficie piana.

Qualsiasi suggerimento per risolvere questo problema sarà molto apprezzato.

risposta

8

Sembra mob1lejunkie ha capito questo già, ma solo per riferimento futuro, lasciatemi dire che il problema qui è magnetic declination (la differenza tra il nord magnetico e il nord geografico). Puoi provare an online model from NOAA per avere un'idea di quale sia la differenza nella tua parte del mondo.

Android include un modello chiamato GeomagneticField che può essere utilizzato per calcolare la declinazione approssimativa di latitudine, longitudine e altitudine. Quindi, quello che credo tu debba fare per calcolare il nord vero è leggere il azimuth value da Sensor.TYPE_ORIENTATION e quindi aggiungere a quel GeomagneticField.getDeclination().

+0

Sì, questo era esattamente il problema. – mob1lejunkie

1

È il lato negativo delle parti compatte realizzate per telefoni. Un IMU da $ 5000 che stiamo usando in questo momento ha un errore di +/- 2 gradi e anche in quel campo sembra impazzire.

Provare ad allontanarsi da interferenze, superfici metalliche e vedere se migliora. In caso contrario, odio rompere la brutta notizia, ma questo è l'hardware.

Hai visto questi?

http://developer.android.com/reference/android/hardware/SensorManager.html

http://groups.google.com/group/android-developers/browse_thread/thread/bbb0e8b97c673cf9/5c16bc2e49f6e972?lnk=raot

+0

Quello che sto cercando di dire è sullo stesso telefono (Nexus One) nello stesso identico posto sul tavolo della cucina Snaptic Compass, un'applicazione di terze parti da Android Market, è più preciso della mia lettura. Mi chiedo quale trucco sta usando Snaptic per ottenere una lettura più precisa e affidabile. – mob1lejunkie

+0

Vedere i collegamenti che ho aggiunto per rispondere. –

+0

Dopo aver esplorato le impostazioni di Snaptic Compass ho notato che utilizza il nord vero mentre io usavo il nord magnetico. Ora che utilizzo anche il nord vero, la mia applicazione e Snaptic Compass hanno la stessa lettura. Ovviamente la lettura non è perfetta ma ciò è dovuto all'hardware Nexus One e non alla mia implementazione della bussola. grazie pinnacler per il vostro aiuto! – mob1lejunkie

Problemi correlati