Мировые эталонные значения для датчика акселерометра при ходьбе

Я пытался разработать приложение Pedestrian Dead Reckoning для Android, и, позаботившись о компонентах обнаружения и длины шага, я решил заняться проблемой определения ориентации.

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

Эксперимент:

Я пошел вперед на север, повернул назад и пошел обратно на юг. Повторили процедуру в направлении на запад, затем на восток.

Вопросы:

  1. Я ожидал, что, идя прямо в нескольких направлениях, значения X и Y колеблются с шагами и имеют относительно стабильное значение Z на всем протяжении. Вместо этого значения Y ведут себя так, а значение Z имеет ожидаемое поведение. Как так? Это как-то связано со мной, не используя remapCoordinates ()? (см. график 1)

  2. Я ожидал, что угловые графики будут прыгать около 180º и -180º, но почему они также делают это около 35º? (см. график 2)

Заметки:

  • Я использую значения силы тяжести и магнитометра для вычисления матрицы вращения и умножения ее с помощью метода multiplyMV() OpenGL;
  • Я не использую remapCoordinates (), потому что я думал, что мне не нужно: телефон стоит прямо в моем кармане (Y указывает вверх / вниз, Z обычно вперед) и должен смещаться на 45º вперед и назад, в худшем случае;
  • Значения азимута кажутся нормальными и не имеют колебаний, описанных в выпуске 2. (см. График 3)

Графы:

Мировое эталонное ускорение силы тяжести Мировое ускорение системы отсчета (синий X, красный Y, зеленый Z)

Мировые опорные гравитационные углы Атан2 значения из мировых координат (синий atan2(Y/X), красный atan2(Z/Y) и зеленый atan2(Z/X))

Значения ориентации Ориентация значения (синий - азимут, красный - высота, а зеленый - рулон)

0 ответов

Другие вопросы по тегам