Ускорение до смещения

Я делаю экспериментальную программу.

У меня смартфон закреплен на приборной панели автомобиля с подставкой, во время движения я считываю из приложения какое-то значение с инерциального датчика,

Точно читаю,

Данные акселерометра Время (с фиксированным интервалом) каждой регистрации в секундах.

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

Я пробовал, метод Эйлера. Из начального состояния как

в 0 "=" 0. это начальная скорость в нулевой момент времени.

Икс 0 "=" 0. это исходное положение в нулевое время.

определять,

Δ Т "=" интервал регистрации. (в моем случае 0,04с)

затем для каждой сделанной регистрации я делаю:

в я "=" в я 1 + а у я * Δ Т .

Икс я "=" Икс я 1 + в я * Δ Т .

где я представляю текущий и i-1 прецедент.

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

Учитывая, что применяя эту процедуру, я также допускаю высокую ошибку, возможно, график только растет, и я не вижу каких-либо вертикальных колебаний?

Я также читал, что фильтр Калмана можно применить заранее для очистки сигнала, может ли это быть решением?

Или мне изменить метод интегрирования и перейти к Эйлеру от Рунге Кутты? (Последняя, ​​правда, не имею ни малейшего представления, как ее можно было поставить)

Вот пример зарегистрированных данных . Это может быть полезно

Ответы (1)

Несколько советов, которые у меня есть для вас:

1) Обязательно конвертируйте значения времени из миллисекунд в секунды. 2) Не полагайтесь на постоянный интервал времени. Рассчитайте его как разницу между каждым последовательным измерением времени. 3) Примите значения ускорения как разницу между показаниями акселерометра и столбцом «Гравитация Y». Таким образом, вы увидите фактические колебания вместо постоянного ускорения в одном направлении.