2010-07-05 4 views

ответ

9

Вы можете использовать значения ускорения от акселерометра для измерения скорости и расстояния. Существует действительно хорошая бумага (Implementing Positioning Algorithms Using Accelerometers), которая объясняет ошибки, которые вы получаете от акселерометра, и методы получения скорости и положения от значений ускорения.

Некоторые псевдо-код:

velocity[i] = (acceleration[i] + acceleration[i-1])/2 * interval + velocity[i-1] distance[i] = (velocity[i] + velocity[i-1])/2 * interval + distance[i-1]

interval время между acceleration/velocity[i] и acceleration/velocity[i-1], которая связана с частотой обновления акселерометра.

Для повышения точности вам необходимо отфильтровать значения ускорения в переднем крае. Я реализовал такой алгоритм на iPhone 3GS, и он работал очень хорошо. Акселерометр позволяет измерять расстояния 30 см с погрешностью около 1 см. Я еще не тестировал большие расстояния.

+0

Если я правильно понимаю это, вам придется отслеживать статическое ускорение от земной гравитации, так как физическая ориентация устройства может измениться. Бросать его по воздуху заставляло бы его падать, меняя «вниз». Я не уверен, правильна ли моя интерпретация, но я думаю, что единственная «калибровка», описанная в документе, предполагает постоянную ориентацию устройства. –

+0

Правильно, этот подход предполагает, что ориентация устройства не изменяется во время движения. – brutella

+0

@brutella не могли бы вы предоставить свой алгоритм? –

Смежные вопросы