Ускорение к скорости к перемещению

Я работаю над приложением, которое должно определять активность человека с помощью акселерометра и гироскопа или одного из этих устройств.

Я определяю ускорение с помощью датчиков моего телефона. Затем я использую этот тип интеграции для получения скорости и смещения.:

Это означает, что я беру 1-е значение ускорения, умножаю на следующее значение, делю на 2 и умножаю на время между измерениями. Итак, я получаю трапецию, которая определяет скорость в момент времени. Затем я добавляю все трапеции, чтобы получить скорость. То же самое с Displacement, но этот метод ужасен. Но это не все...

Акселерометр дает непредсказуемый результат!

Телефон переключается вверх и вниз

введите здесь описание изображения

Телефон переключается вниз и вверх

введите здесь описание изображения

Вопросы:

  1. Есть ли способ избежать огромной ошибки интеграции?
  2. Есть ли другой способ получить скорость из ускорения?
  3. Верны ли данные моего акселерометра (телефон идет вверх или вниз, как я могу это определить)?
  4. Как я могу быть уверен в его выводе (могу ли я как-то это проверить)?

person Animus    schedule 09.06.2014    source источник
comment
вместо умножения, разве вы не должны сложить эти два значения?   -  person pskink    schedule 10.06.2014
comment
@pskink На этой картинке была ошибка, я добавляю эти значения =)   -  person Animus    schedule 11.06.2014
comment
Это означает, что я беру 1-е значение ускорения, умножаю на следующее значение, делю на 2 и умножаю на время между измерениями. тоже ошибка? кажется, что ваша скорость всегда положительна   -  person pskink    schedule 11.06.2014
comment
@pskink. Нет конечно. Когда счет отрицательный, у меня есть: ((neg-neg2)/2)*Ts.   -  person Animus    schedule 11.06.2014


Ответы (1)


Вы можете попробовать фильтрацию Калмана. См., например. http://en.wikipedia.org/wiki/Kalman_filter

person Courier    schedule 24.06.2014