Это можно сделать, так как я внедрил более сложную систему в IMF-режиме sparkfun.
Есть несколько компонентов, которые точно делают то, что вам нужно.
1) Вам необходимо отфильтровать сигнал акселерометров, используя фильтр нижних частот. Это удаляет любой шум, который не вызван вашей медленно движущейся рукой.
2) Объедините 3 отдельных значения ускорения дважды, чтобы перейти от ускорения к скорости, а затем от скорости к расстоянию.
3) Вышеупомянутый метод должен быть выполнен, держа телефон в одной плоскости, когда вы перемещаете его от основания коробки к вершине. Любой шаг / крен / рыскание нарушит измерение (подсказка)
4) Сверху, чтобы компенсировать наклон / крен / рыскание, вы можете включить встроенный гироскоп =]. Используйте это, чтобы отобразить вектор, полученный из акселерометра, в начальную точку. Используя эту методологию, вы можете измерить расстояние, проходящее через объект. (помните, что этот гироскоп тоже нуждается в фильтрации).
Окончательный результат зависит от многих факторов, таких как эффективность вашего фильтра, точность и частота дискретизации вашего акселерометра и гироскопа, а также обилие ваших математических и линейных навыков алгебры.