Обновить данные о вращении гироскопа относительно предварительно заданной ориентации?

Обычно данные о вращении по оси y гироскопа обновляются относительно вертикальной ориентации телефона. Но если эта ориентация немного изменится, как показано на диаграмме, есть ли какой-либо метод, с помощью которого я мог бы перенести компонент поворота y на вертикальную ось (положение вертикальной ориентации телефона), (это возможно для линейных компонентов, используя косинусные углы синусоидальных углов ) А как насчет вращения? В любом случае я могу это сделать? Всего лишь общее представление о концепции


person sam    schedule 19.06.2012    source источник
comment
Не могли бы вы иначе сформулировать свой вопрос? Боюсь, я не понимаю вопроса.   -  person Ali    schedule 20.06.2012
comment
Ссылаясь на рисунок 1, вращение телефона вокруг оси y будет указано, когда телефон находится в вертикальной ориентации. Но что, если ориентация телефона изменится, как на рисунке 2, тогда каким образом он обновляет значения поворота? Это по-прежнему относительно вертикального (ось y) направления или угла (ось, проходящая через телефон в измененном положении ориентации). Если это положение с изменением ориентации, как я могу преобразовать его в показание вертикальной ориентации (с телефоном в угловой ориентации)?   -  person sam    schedule 20.06.2012
comment
Краткий ответ: возьмите курс по цифровой обработке сигналов, затем возьмите еще один курс по фильтрам Калмана, а затем возьмите еще один курс по алгебрам Ли. Для длинного ответа потребуется написать как минимум три текста на уровне колледжа.   -  person David Hammen    schedule 20.06.2012
comment
@DavidHammen - Спасибо за твою инструкцию! : /   -  person sam    schedule 20.06.2012
comment
@Sam, я не совсем уверен, что ты ищешь. Если все, что вам нужно, это угол телефона к вертикальной оси, тогда возьмите вектор гравитации и найдите его угол к вертикальному вектору ...   -  person twerdster    schedule 22.07.2012
comment
@twerdster, Вы это имеете в виду? float gyro_x_ref = ((rotate.x) * (rot.m11) + (rotate.y) * (rot.m12) + (rotate.z) * (rot.m13)); А также могу ли я точно знать, что рассчитываю по этой формуле?   -  person sam    schedule 22.07.2012


Ответы (1)


По моему опыту, значения гироскопа являются мобильными, а это означает, что оси обновляются по мере вмешательства вращения (это верно для Android, нет причин не быть для iOS).

Если вы хотите следить за направлениями своих трех осей, вам придется постоянно обновлять матрицу вращения:

Косинусная матрица направлений IMU: теория

углы Эйлера и DCM

person PeterGriffin    schedule 02.07.2012