Расстояние, пройденное акселерометром
Я хочу перемещать объекты на экране iPhone (прямоугольник, круг и т. Д.), Перемещая iPhone. Например, я перемещаю iPhone вдоль оси X, а объект движется вдоль оси X. То же самое для оси Y.
Как я могу это сделать? Могу ли я получить алгоритм для этого?
Спасибо.
PS: я искал некоторое время и кажется, что это возможно с помощью акселерометра.
3 ответа
Вы получаете позицию, интегрируя линейное ускорение дважды, но ошибка ужасна. Это бесполезно на практике.
Вот объяснение, почему (Google Tech Talk) в 23:20. Я очень рекомендую это видео.
Однако гироскопическая мышь может работать для вашего приложения, см. Между 37:00-38:25 в видео.
Похожие вопросы:
отслеживать небольшие движения iphone без GPS
Какова реальная точность телефонных акселерометров при позиционировании?
Как рассчитать движение телефона в вертикальном направлении от отдыха?
iOS: точность движения в 3D пространстве
Как использовать акселерометр для измерения расстояния для разработки приложений для Android
Как найти расстояние, пройденное с помощью гироскопа и акселерометра?
Не легко сделать точно. Акселерометр сообщает только об ускорении, а не о движении. Вы можете попытаться (численно) интегрировать ускорение с течением времени, но вы, скорее всего, в конечном итоге столкнетесь с накопленными ошибками, которые приводят к непреднамеренному движению.
Псевдокод, явно не проверенный:
init:
loc = {0, 0, 0} ; location of object on screen
vel = {0, 0, 0} ; velocity of object on screen
t = 0 ; last time measured
step:
t0 = time ; get amount of time since last measurement
dt = t0 - t
accel = readAccelerometer()
vel += accel * dt ; update velocity
loc += vel * dt ; update position
displayObjectAt(loc)
Почему бы вам не использовать само ускорение вместо сдвинутого расстояния? Например; Если ваше ускорение составляет 1.4G на восток, ваш объект должен двигаться на восток 14 пикселей в секунду, пока ваше ускорение не изменится.
Так что движение объекта будет таким, как будто оно находится под относительной силой, и я думаю, что это более реалистично. Более быстрое перемещение устройства, большая сила воздействия на объект.
Также посмотрите:
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf
а также
Использование акселерометра, гироскопа и компаса для расчета движения устройства в трехмерном мире