Я использую акселерометр на устройстве Android для отслеживания и обнаружения определенных движений, используя только одну ось, поскольку движения линейны по этой оси.
Я использую простой фильтр для удаления шума из данных акселерометра:
ouput = ouput + alpha * (input - output)
Результат выглядит так, как я ожидал, и кажется пригодным для моих целей:
Я хочу рассчитать скорость по данным акселерометра, которые я получаю, но здесь я сталкиваюсь с проблемами, как видно здесь:
Как и в случае с ускорением, кривая скорости выглядит правдоподобно, но она не возвращается к нулю после каждого повторения, а падает до отрицательных значений.
На данный момент я просто записываю необработанные данные акселерометра в файл, а затем изменяю и анализирую их с помощью электронных таблиц, поэтому все эти расчеты выполняются вручную.
V = V0 + A * dt
для расчета скорости.
V0
изначально равно нулю, затем устанавливается на предыдущее значениеA
скорректированное ускорение (т.е. accel - grav
)dt
интервал, разница между текущей и предыдущей отметкой времениЯ подумал, что проблема, возможно, заключается в том, что ускорение также не возвращается к нулю, а вместо этого остается немного ниже нуля (как видно на первом изображении выше), что добавляет слишком много отрицательных значений, которые распространяются при расчете. Так что я установил grav
меньшее число, и, кажется, есть сладкое пятно. В этом примере большие значения приводят grav
к падению скорости до отрицательных значений, малые значения обращают эффект вспять, при этом кривая скорости поднимается к более высоким положительным значениям. Прямо около grav = 9.3
(9,32 на этом изображении) график кажется наиболее правдоподобным. Этот интервал очень мал, 9,28 и 9,35 уже демонстрируют значительную тенденцию к росту или падению соответственно.
Что может быть причиной этого? Откуда ~ 9,32? Почему это не ~9,55, которое я наблюдаю в начальный период неподвижности? Можно ли каким-то образом изменить расчеты, чтобы получить более согласованные значения? Например, между каждым повторением должен быть короткий промежуток времени V = 0
.
Калибровка и проверка. Эти два слова вам понадобятся всякий раз, когда вы делаете расчеты физических параметров на основе измерений. Вам нужно знать, как устройство реагирует на известные ускорения, чтобы определить, имеют ли значение получаемые вами числа на том уровне, на котором вы хотите их использовать. Проще всего было бы, если бы производитель предоставил вам такие детали. К сожалению, в наши дни устройства этого типа часто поставляются без какой-либо документации.
Тот факт, что вы получаете гравитацию от 9,3 до 9,5, наводит на размышления. Это говорит о том, что у вас проблема со смещением или масштабом. Один из способов проверить это — считать значения с устройства, лежащего на столе, затем перевернуть его вверх дном и прочитать снова. Смещение будет отображаться как разница сверху вниз. Проблема с масштабом покажет низкие значения в обоих направлениях.
Если у вас есть способ поставить устройство в ситуацию с известным ускорением, это тоже поможет. Может поворотный стол или что-то в этом роде? Хотя некоторые такие устройства можно обмануть, вращаясь по слишком узкому кругу.
Устойчивый дрейф предполагает, что у вас может быть проблема с ответом. Это может быть нелинейно с ускорением. Например, узкий, но высокий шип может быть обрезан. Тестирование для таких становится довольно сложным. Вам понадобятся известные профили ускорения, а затем посмотрите, как устройство отреагирует. Исправление этого еще больше усложняет ситуацию.
Это должен быть комментарий, но я хотел включить график.
Было бы полезно иметь детали движения, которое вы наблюдаете.
Вы проверили, что ускорения вдоль двух других ортогональных осей равны нулю?
Площадь под графиком зависимости ускорения от времени показывает изменение скорости.
Таким образом, синяя область представляет собой положительное изменение скорости и, просто присмотревшись, выглядит меньше, чем красная область, представляющая отрицательное изменение скорости.
Таким образом, общее изменение скорости отрицательно.
Если вы подозреваете, что общее изменение скорости равно нулю, значит, ноль ускорения находится не в том месте, т.е. ось ускорения смещена?
пользователь191954
пользователь199112