Подтвердить что ты не робот

Какова концептуальная разница между датчиком вектора вращения и датчиком ориентации в Android?

Android предоставляет как датчик вектора вращения, так и датчик ориентации. Я знаю, что они возвращают разные данные, потому что для векторного датчика у нас есть грех углов, в датчике ориентации у нас есть углы. Но какова концептуальная разница? Я не могу понять из документов. Какой из них обеспечивает ориентацию устройства в трехмерном пространстве? Я в замешательстве!

4b9b3361

Ответ 1

Более старые датчики ORIENTATION отображают ориентацию с использованием трех углов. Проблема с этими системами координат заключается в том, что она страдает от "карданного замка": когда фактический вектор ориентации близок к вертикали, одна из координат переходит в 90 или -90 градусов, а остальные две координаты становятся либо неинтерпретируемыми, либо опасно денормализованными.

Новые датчики ROTATION сообщают ориентацию с использованием координат квартера, которые сложнее работать, но не страдают от проблемы блокировки Gimbal. Когда указывается ориентация с помощью координат кватерниона, вы можете определить точную ориентацию устройства независимо от ориентации.

Кватернионы также более эффективны в вычислительной области. Вам не нужно вызывать дорогостоящие триггерные функции, чтобы применить поворот кватерниона к вектору. Если w-координата не указана, вы все равно можете вычислить w с помощью одного вызова sqrt по сравнению с тремя вызовами sin и тремя cos для координат ориентации в трехугольной форме Эйлера.

Рассказ: датчики в стиле ORIENTATION были сделаны неправильно. Они были зафиксированы в API 9, заменив их датчиками ROTATION.

Ответ 2

Датчик ROTATION_VECTOR был введен в API 9 и представляет собой "виртуальный" датчик, который объединяет данные с разных датчиков (обычно ACCELEROMETER, GEOMAGNETIC_FIELD и GYROSCOPE), и делает некоторые интеллектуальные вычисления для предоставления более точных данных, а не для использования необработанных данных от датчиков ACCEL и GEOMAGNETIC_FIELD, Это называется "слияние датчиков". Более подробную информацию вы можете найти здесь

ОРИЕНТАЦИОННЫЙ датчик устарел, поскольку он предоставляет не очень точные данные. В документации предполагается использовать необработанные данные от датчиков ACCELEROMETER и GEOMAGNETIC_FIELD.

К сожалению, я не могу представить какие-либо примеры использования данных датчика ROTATION_VECTOR, так как я сейчас в процессе расследования:)

На всякий случай вам понадобятся некоторые примеры использования необработанных данных - не стесняйтесь спрашивать меня - я отправлю некоторые примеры, но простой поиск в Google поможет вам лучше;)