получение информации от магнитных датчиков

Я слушаю значения датчиков и получаю их в своем обработчике с помощью

    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
       for (i=0;i<3; i++) mag[i] = event.values[i];

В документации разработчика говорится, что для Sensor.TYPE_MAGNETIC_FIELD вы получаете: «Все значения указаны в микротеслах (uT) и измеряют окружающее магнитное поле по осям X, Y и Z».

Как я могу преобразовать эту информацию в азимут, тангаж и крен? Как мне превратить его в магнитный курс компаса?

Предоставляет ли просто ту же информацию, которую вы можете получить от датчика ОРИЕНТАЦИИ и от датчика АКСЕЛЕРОМЕТРА после выполнения матричных преобразований?


person Peter vdL    schedule 27.11.2010    source источник


Ответы (1)


Если у вас есть доступ к акселерометру, вы можете использовать метод getOrientation(), который возвращает азимут, тангаж и крен, определенные двумя датчиками и рассчитанные с помощью getRotationMatrix()< /а> метод.

РЕДАКТИРОВАНИЕ

Ответ на комментарии... Теперь я вижу ваш вопрос. Прости. С помощью всего лишь 3-осевого магнитометра вы не сможете точно определить азимут, тангаж и крен, за исключением случаев, когда устройство параллельно поверхности земли. Помните, вы использовали игольчатый компас, и он был либо а) на шпинделе, чтобы вы могли видеть и вручную компенсировать наклон, либо б) запечатан в жидкости, чтобы вы могли установить пузырьковый уровень в центр? Чтобы получить азимут:

azimuth = arctan(y/x)

Теперь, если вы наклоните телефон, ошибки в восприятии плоскости x/y могут стать большими. Теперь вам нужно выяснить наклон (с помощью акселерометра), затем измерить магнитную силу по оси Z, а затем использовать три для компенсации. По сути, это то, что вы знаете как getRotationMatrix() и getOrientation().

Одна из причин, по которой я думаю, что Sensor.TYPE_ORIENTATION устарела в API 8, заключалась в том, что не существует отдельного датчика ориентации как такового. Это комбинация измерения магнитного поля и ускорения.

Хорошая статья, которую я выкопал, которая охватывает все это:

http://www.ssec.honeywell.com/position-sensors/datasheets/sae.pdf

person mchang    schedule 28.11.2010
comment
Понял. Мой вопрос больше связан с тем, как вы делаете что-нибудь полезное со значениями окружающего магнитного поля по осям X, Y и Z? - person Peter vdL; 29.11.2010
comment
Вы не!! Вместо того, чтобы изобретать велосипед, просто используйте датчик ориентации и матрицу вращения. - person TheCodeArtist; 05.03.2011