Манипуляции с гироскопом / акселерометром Значения, полученные с iPhone 4 - PullRequest
0 голосов
/ 27 марта 2011

Я разрабатываю проект для своего университета, чтобы манипулировать значениями гироскопа / акселерометра, полученными с iPhone 4. Но я застрял с математической проблемой, и я надеюсь, что вы, ребята, сможете мне помочь.

Я приведу пример того, что происходит:

  1. Ваш iPhone лицевой стороной вверх, и вы двигаете его вверх, по оси Y.
  2. Ваш iPhone направлен вправо, и вы двигаете егоUP, по оси X на этот раз (так как вы повернули iphone на 90 градусов).

Во второй раз компьютер интерпретирует, что я переместил iphone в ПРАВО, но это неправильно.Я переместил его вверх, но моя ось была повернута, поскольку iphone был направлен вправо.

Что мне нужно?Мне нужен способ, чтобы ВИРТУАЛЬНО перевернуть iphone лицевой стороной вверх (где 3 оси правильные) и дать каждой оси правильное значение движения.

Если iphone повернут на 90 градусов, то я могу легко переключить ось XZи это правильно.Но я хочу, чтобы это работало для любого угла поворота.

Буду очень признателен, если кто-нибудь сможет мне помочь с каким-нибудь псевдо-алгоритмом или математическим описанием того, что делать.

ПРИМЕЧАНИЕ. Мне нужен только способ компенсации всех трех осей с помощью поворота iPhone.

Обновление:

На самом деле мне не нужны точные значения, так как я делаю копарирование графикамежду всеми записями, которые я получаю от гироскопа.Я сделаю это яснее.

-> Вы рисуете ПИСЬМО, просто перемещая iphone в воздухе, и мое приложение распознает букву, которую вы только что нарисовали.Метод, который я использую для распознавания, основан на алгоритме TFT и записи в базу данных с образцами значений, взятыми из букв, которые я нарисовал ранее.

Моя точка зрения: не имеют значения значения, которые я получаю, иличто они представляют.Все, что мне нужно, это чтобы все графики были равны, даже если iPhone находится в другом положении.Объяснить это довольно сложно, но если вы нарисуете букву «P», когда iphone повернут вверх, график будет выглядеть иначе, если вы нарисуете букву «P», когда iPhone повернул направо.

Так что мне нужно скомпенсировать ось в их исходной ориентации, чтобы я всегда получал похожие графики.

Ответы [ 2 ]

1 голос
/ 13 августа 2012

Этот пост был до выхода iOS5. Для всех, кто придет сюда, DeviceMotion относительно мира - multiplyByInverseOfAttitude показывает, как преобразовать относительные значения ускорения устройства в земные для iOS5 и выше.

0 голосов
/ 27 марта 2011

Итак, вам нужно преобразовать систему координат iPhone (или систему объектов / касательных) в мировую систему координат (или наоборот, как вы видите, не имеет значения). Вы знаете систему координат iPhone, поскольку у вас есть данные гироскопа. Итак, вы хотите создать матрицу преобразования объекта -> мира и умножить на нее каждый из векторов скорости (из акселерометра).
Посмотрите здесь для хорошего объяснения касательного пространства и того, как создать касательное пространство -> матрицу преобразования мира. Если вы не знакомы с 3D / линейной математикой, это может быть немного сложно, но стоит потраченных усилий.

...