Arhn - архитектура программирования

Эквивалентная замена устаревшего датчика.

Я ищу решение, которое заменяет устаревший датчик Android Sensor.TYPE_ORIENTATION.

Наиболее распространенное решение - объединить Sensor.TYPE_ACCELEROMETER и Sensor.TYPE_MAGNETIC_FIELD, а затем вычислить матрицу вращения с помощью _ 4_ и получить углы Эйлера с помощью _ 5_. Другое известное решение - использовать Sensor.TYPE_ROTATION_VECTOR, что также приводит к матрице вращения и углам Эйлера с помощью SensorManager#getOrientation

К сожалению, при повороте мобильного устройства они ведут себя совершенно иначе, чем TYPE_ORIENTATION. Попробуйте оба типа, когда ваш телефон лежит на столе, а затем поверните его вверх (наклон) на 90 ° (теперь экран обращен прямо к вам). Вычисленные углы Эйлера азимута и крена становятся действительно необычными (причина того, что называется проблемой Gimbal lock) в то время как значения градусов, полученные с помощью TYPE_ORIENTATION, довольно стабильны (не точны, но вполне приемлемы). Каждое значение (рыскание, тангаж и крен) TYPE_ORIENTATION кажется своего рода "прогнозируемым" градусом без проблемы с блокировкой карданного подвеса.

Как можно получить аналогичные градусы (для рыскания, крена и тангажа) без использования устаревшего датчика TYPE_ORIENTATION (возможно, из матрицы вращения)? Как алгоритм TYPE_ORIENTATION делает это внутри?


Ответы:


1

azimuth в getOrientation - это угол между магнитным севером и проекцией оси Y устройства на мировую плоскость x-y. Когда устройство находится под углом до 90 °, проекция представляет собой нулевой вектор, поэтому азимут в этом случае не имеет смысла и может иметь любое значение. Физически пытаться найти угол между магнитным севером и вектором, указывающим на Небо, не имеет смысла. Вам следует посмотреть мой проект на https://github.com/hoananguyen/dsensor/blob/master/dsensor/src/main/java/com/hoan/dsensor_master/DProcessedSensor.java

04.08.2016
  • Как это определяет правильную ориентацию и поворот в альбомной / портретной ориентации? 16.02.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..