Я выполняю экспериментальную программу. У меня смартфон установлен на приборной панели автомобиля с поддержкой, во время поездки я прочитал от приложения какое-то значение от инерциального датчика.Ускорение смещения
Точно я читаю, Время данных акселерометра (с фиксированным интервалом) каждой регистрации в секундах.
Так что теперь я хотел бы перейти от вертикального ускорения к вертикальному перемещению, чтобы сделать это, я должен сделать двойную интеграцию.
Я попробовал метод Эйлера. От начального состояния, такого как:
v0=0.v0=0
Это начальная скорость в нулевое время.
x0=0.x0=0
Это начальное положение в нулевое время.
определить,
deltaT=registrationinterval.deltaT=registrationinterval
(в моем случае 0,04s)
затем для каждой регистрации сделал, я делаю:
vi=vi−1+ayi∗deltaT.vi=vi−1+ayi∗deltaT
xi=xi−1+vi∗deltaT.xi=xi−1+vi∗deltaT
где i
представляет тока и i-1
прецедент.
Но диаграмма, которую я получаю, не очень реалистична, ведь скорость и смещение растут, вместо этого эффект, который я должен был получить, заключается в том, что вертикальное смещение вышло как нечто похожее на график ускорения.
Учитывая, что применение этой процедуры также является высокой ошибкой, возможно, что график только растет, и я не вижу никаких вертикальных колебаний?
Я также прочитал фильтр Калмана, который может быть применен заранее, чтобы очистить сигнал, может быть решением?
Или мне следует изменить метод интеграции и переключиться на Euler из Runge Kutta? (Последнее, однако, я не имею ни малейшего представления о том, как это можно установить).
Или кто-нибудь знает алгоритм, который может мне помочь?
Здесь есть example данные зарегистрированных, если могут быть полезны: