Как измерить расстояние, пройденное iPhone с помощью акселерометра?

В то время как GPS работает для изменений на большом расстоянии, я хотел бы измерить более короткое расстояние с помощью акселерометра iPhone.

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

Как бы я использовал акселерометр для выполнения такого рода измерений?

5 ответов

Решение

Попробуйте сфотографировать объект известного размера на интересующем расстоянии.

Это можно сделать, так как я внедрил более сложную систему в IMF-режиме sparkfun.

Есть несколько компонентов, чтобы сделать то, что вам нужно точно.

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

2) Объедините 3 отдельных значения ускорения дважды, чтобы перейти от ускорения к скорости, а затем от скорости к расстоянию.

3) Приведенный выше метод необходимо выполнить, держа телефон в одной плоскости, когда вы перемещаете его из нижней части коробки в верхнюю часть. Любой шаг / крен / рыскание нарушит измерение (подсказка)

4) Сверху, чтобы компенсировать тангаж / крен / рыскание, вы можете включить встроенный гироскоп =]. Используйте это, чтобы отобразить вектор, полученный из акселерометра, в начальную точку. Используя эту методологию, вы можете измерить расстояние "насквозь и объект", обходя его. (помните, этот гироскоп тоже нуждается в фильтрации).

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

В зависимости от приложения и требуемой точности вы можете использовать новые 6-осевые гиро-акселерометры в iPhone 4 и iPod Touch 4-го поколения. Вы можете получить полное смещение, интегрировав вектор ускорения.

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

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

Теорема Пифагора: c ^ 2 = a ^ 2 + b ^ 2 ( http://en.wikipedia.org/wiki/Pythagorean_theorem)

В вашем случае, если точки A = (Ax, Ay) и B = (Bx, By), вы можете вычислить расстояние C следующим образом:

C = sqrt( (Bx-Ax)^2 + (By-Ay)^2 )
Другие вопросы по тегам