Ориентация устройства iOS/Android (высота, рыскание, рулон). Лучше ли с акселерометром или гироскопом?
-
25-10-2019 - |
Вопрос
Я немного исследуюсь, и теперь я должен решить, какой путь пойти.
Требования шахты: Нужно знать ориентацию устройства относительно истинного заголовка (географический Северный полюс, а не магнитный полюс). Для этого я должен использовать компас, и теперь я должен решить, какая еще вещь, акселерометр или гироскоп.
Поскольку это новая вещь для меня, я провел последние несколько часов, читая стеки и статьи в Википедии, и все же я в замешательстве.
Я нацелен на обе платформы (iOS и Android), и я разрабатываю их с помощью Appcelerator Titanium. С титаном я могу легко получить значения акселерометра (x, y, z) и TrueHeading.
Поскольку iPhone 3GS не имеет гироскопа, очевидно, я не могу использовать его на этом устройстве. Новые iPhone и Android -устройства имеют это.
Итак, вопросы:
Достаточно ли данных Acceleromometer XYZ и TrueHeading DATING Compass, чтобы рассчитать шаг устройства, бросок и рыскать? Но это должно быть точным.
Точнее ли использовать TrueHeading из Compas и использовать значения гироскопа вместо акселерометра?
Умно ли комбинировать как акселерометр, так и гироскоп с истинным головом?
Если я пойду первую дорогу, мне не нужно писать титановый модуль для получения данных гироскопа, поскольку она дает мне только данные об акселерометре, и я также могу использовать это на iPhone 3GS.
Если я пойду на вторую дорогу, я должен написать два модуля (iOS и Android), чтобы получить данные гироскопа, и я теряю поддержку 3GS.
Если я пойду на третью дорогу, мне снова придется написать титановые модули, и я потеряю поддержку 3GS.
Решение
Прежде всего, если у вас нет огромной установленной базы пользователей 3GS, но напишите новое приложение, не заботитесь о старом оборудовании. ИМО это не имеет смысла с экономической точки зрения, но уменьшит ваше количество альтернатив в архитектуре системы.
То, что вы ищете, называется Sensor Fusion. Следовательно, требует такой тяжелой математики, как фильтры Калмана и т. Д. Хорошая новость заключается в том, что она существует на iPhone (Основное движение) и Afaik также на Андриоде (звучит так, как будто это в Sensor Fusion реализовано на Android?).
Я не знаю много об Appcelerator, кроме имени, и, таким образом, ничего не могу сказать о простом способе его использовать. В любом случае, если не реализовано на абстрактном уровне, я предполагаю, что Appcelerator предоставляет вам возможность выполнять нативные вызовы API. Таким образом, вы должны быть в состоянии встраивать родной API (после того, как какое-то время возились ;-).
В целом это зависит от ваших требований. Чем быстрее вам нужно иметь точный результат, тем больше я бы порекомендовал реальное слияние датчика, включая все 3 датчика. Если у вас все в порядке с более медленным временем отклика, сочетание компаса и акселерометра подойдет.