Акселерометры будут регистрировать постоянное ускорение под действием силы тяжести, плюс любое ускорение, которому устройство подвергается, плюс шум.
Вам потребуется отфильтровать сэмплы низких частот, чтобы избавиться от как можно большего количества ненужного шума. Наихудший из шумов, как правило, будет более высокой частотой, чем любое возможное ускорение, вызванное человеком.
Поймите, что когда устройство не ускоряется пользователем, единственная сила связана с гравитацией, и поэтому вы можете определить его положение в пространстве. Кроме того, когда общее ускорение сильно варьируется от 1 г, это должно быть связано с тем, что пользователь ускоряет устройство; вычитая последнюю известную оценку силы тяжести, вы можете приблизительно оценить, в каком направлении и насколько пользователь ускоряет устройство, и таким образом получить данные, которые вы можете начать сопоставлять со списком известных жестов.
С помощью одного трехосного акселерометра вы можете определять текущий шаг и крен, а также ускорение устройства по прямой линии. Интегрирование ускорения минус гравитация даст вам оценку текущей скорости, но оценка быстро уйдет от реальности из-за шума; вам нужно будет сделать предположения о поведении пользователя до / между / во время жестов и провести их через ваш пользовательский интерфейс, чтобы указать точки, где устройство не ускоряется, и вы можете сбросить свои оценки и надежно оценить направление силы тяжести. Повторная интеграция для определения местоположения вряд ли даст полезные результаты за любой полезный промежуток времени.
Если у вас есть два трехосных акселерометра на некотором расстоянии друг от друга или один и несколько гироскопов, вы также можете обнаружить вращение устройства (сравнивая векторы ускорения или непосредственно от гироскопов); Интегрирование углового момента за пару секунд даст вам оценку текущего рыскания относительно того, когда вы начали интегрировать, но опять-таки это быстро сместится из истинного значения.