Проблема:
В настоящее время я разрабатываю приложение дополненной реальности для планшета Android 3.2, и у меня возникли некоторые проблемы с получением точных показаний компаса. Мне нужно точно знать направление (z), в котором обращен планшет, если считать с севера. Неважно, в градусах или радианах.
Что я сейчас пробовал:
- Я использовал магнитометр и акселерометр, чтобы вычислить угол. У него есть один большой недостаток. Если вы повернете на 90 градусов, датчики будут измерять больший или меньший угол. Даже когда я нахожусь в открытом поле вдали от металлических и магнитных предметов. Даже склонение не решает проблему.
- Вариантом может быть использование гироскопа. Я попытался измерить скорость вращения и сохранить измеренные единицы в переменной, чтобы знать точное направление взгляда. Однако, похоже, есть фактор, вызывающий искажения. Я обнаружил, что быстрые вращения искажают точность измерения направления. Дрейф гироскопа не представлял особых проблем. Приложение проверяет другие датчики на наличие движения. Если ничего не обнаружено, изменение вращения гироскопа не будет учитываться.
- Вектор вращения работает нормально. Есть некоторые проблемы, такие как гироскоп. Если вы будете двигаться медленно и внезапно остановиться, он ускользнет на несколько секунд. Другая проблема заключается в том, что при быстрых вращениях точность будет зависеть от скорости и количества поворотов, которые вы сделали. (Вы же не хотите знать, как мои коллеги смотрят на меня, когда я раскачиваю планшет во всех направлениях...)
- Сенсор.Ориентация, тут особо нечего сказать. По какой-то причине он устарел, поэтому я не буду его использовать. Во многих примерах в Интернете используется этот датчик, и, вероятно, это то же самое, что и комбинация магнита и акселерометра.
Заранее искренне спасибо, Роланд
- РЕДАКТИРОВАТЬ 1:
Я готов предоставить код, который я пробовал.
Подробнее здесь: https://stackoverflow.com/questions/100 ... 3-2-tablet