Как я могу получить скорость с UIAcceleration? - PullRequest
2 голосов
/ 06 июля 2011

Знаете ли вы приложение "линейка движения"? Его можно использовать для определения длины объекта путем перемещения iPhone.

Как узнать скорость от UIAcceleration при перемещении iPhone?

1 Ответ

1 голос
/ 13 июля 2011

Скорость это просто ускорение * время.Т.е. вы можете использовать формулу

v = u + ускорение * время.

Как стартер, на который вы могли бы смотреть, предполагая, что начальная скорость равна 0, «u» можно игнорировать, чтобы получить ускорение *время.

, если вы хотите расстояние, просто используйте расстояние = начальная скорость * время + 0,5 * ускорение * время * время.

или, что еще лучше, используйте расчет без учета и продолжайте добавлять свои векторы скорости так часто, какВы получаете обновления от акселерометров.

Чтобы получить ускорение как скаляр, вы можете сделать a = sqrt (x * x + y * y + z * z).Вы хотите удалить гравитацию из этого раньше, хотя!Также это даст вам только расстояние по прямой линии, вы можете предпочесть измерять скорость в x, y, z независимо и использовать векторный анализ для измерения траектории для более точного считывания.Тем не менее, имейте в виду, что вам может потребоваться учитывать любые повороты, чтобы быть сверхточным, и эта функция доступна только на iPhone4s.Это может быть сложно, и вы, вероятно, захотите использовать некоторые математические математические схемы, чтобы ориентировать «пространство», в котором находится телефон.

Вам также потребуется выполнить фильтр низких частот на акселерометре, чтобы избавиться от'встряхивает', и именно здесь закрадывается значительный запас ошибок, и поэтому я ожидаю, что все правители в appstore потратили много времени на его улучшение.

для создания фильтра, очень простой фильтр FilterValue =((lastValue * n) + accelerationValue) / (n + 1) где большее значение n дает более плавный результат, но менее отзывчивый.

...