Дилемма точности компаса - PullRequest
6 голосов
/ 05 мая 2010

Мне нужно построить компас для моего приложения.

Из прочтения документации кажется, что есть два разумных способа сделать это:

  • Метод Sensor.TYPE_ORIENTATION: это простой способ сделать это. Проблема в том, что это не точно. Когда я сравниваю свое чтение с Snaptic Compass, это примерно 10-15 градусов, что для моих целей неприемлемо.
  • Sensor.TYPE_ACCELEROMETER, Sensor.TYPE_MAGNETIC_FIELD и getRotationMatrix () в сочетании с методом remapCoordinateSystem () и getOrientation (): в документации сказано, что это «обычно более точно». Проблема в том, что независимо от задержки, которую я регистрирую у слушателя, компас сходит с ума, даже когда устройство стоит на ровной поверхности.

Будем весьма благодарны за любые предложения по решению этой проблемы.

Ответы [ 2 ]

8 голосов
/ 14 июня 2010

Похоже, что mob1lejunkie уже понял это, но только для справки в будущем, позвольте мне упомянуть, что проблема заключается в магнитном склонении (разница между магнитным севером и истинным севером). Вы можете попробовать онлайн-модель от NOAA , чтобы понять, какая разница в вашей части мира.

Android включает модель под названием GeomagnField , которую можно использовать для вычисления приблизительного склонения с учетом широты, долготы и высоты. Итак, я считаю, что вам нужно сделать, чтобы вычислить истинный север, считав значение азимута из Sensor.TYPE_ORIENTATION, а затем добавив к нему GeomagnField.getDeclination ().

1 голос
/ 05 мая 2010

Недостаток компактных деталей для телефонов. IMU за 5000 долларов, который мы сейчас используем, имеет ошибку +/- 2 градуса, и в этом диапазоне он тоже сходит с ума.

Попробуйте отойти от помех, металлических поверхностей и посмотреть, улучшится ли это. Если нет, то я не хочу сообщать плохие новости, но это аппаратное обеспечение.

Вы видели это?

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

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

...