Как настроить фильтр Калмана и определить вектор состояния для правильного моделирования движения снаряда?

Я экспериментирую с реализацией фильтра Калмана в Matlab. Я хочу смоделировать движение мяча, подбрасываемого ребенком в воздух, используя фильтр Калмана. Я вручную аннотировал положение мяча в кадрах изображения, чтобы использовать его в качестве измерений (наземных значений истинности) для инициализации и обновления фильтра Калмана. Я определил состояние как 6-мерный вектор следующим образом:

[X Vx Ax Y Vx Ay]

X - координата x Vx - скорость в координате x Ax - ускорение в координате x Y - координата x Vy - скорость в координате x Ay - ускорение в координате x

Фильтр Калмана настраивается с помощью следующего вызова:

kalmanFilter = myConfigureKalmanFilter('ConstantAcceleration',центроид, [0,5 0,5 0,5]*1e2, [25, 10, 10], 25);

где центр тяжести соответствует (X, Y) значению истинности первого кадра (985 согласно документу Excel)

Значения предсказания (от кадров 986 и далее) генерируются с помощью следующего вызова:

[прогнозируемый центроид, состояние] = прогнозировать (фильтр калмана);

Фильтр Калмана обновляется с помощью следующего вызова со значением истинности основания, соответствующим кадрам (986 и далее):

правильный (фильтр Калмана, центроид);

введите описание изображения здесь

Результат этого эксперимента показан на рисунке.

Проблема: значения Ay не являются постоянными и кажутся неравномерно увеличивающимися и уменьшающимися. Поскольку это случай движения снаряда с гравитацией, придающей постоянное ускорение в направлении y, эти значения не должны сильно дрейфовать, что не так.

Примечание. Эти значения указаны в координатах пикселей.


person Atishay Jain    schedule 20.10.2016    source источник


Ответы (1)


Я думаю, что часть проблемы здесь заключается в том, что мяч движется в трехмерном пространстве, но вы отслеживаете двухмерную проекцию его движения. Кроме того, даже в трехмерном пространстве ускорение не является постоянным из-за сопротивления воздуха.

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

Вы также можете выполнить точную настройку ковариации. Например, ваша оценка ускорения, вероятно, более зашумлена, чем оценка положения.

Изменить:

Дисторсия объектива - отдельная проблема. Если вы можете исправить это, это всегда хорошо. Но я говорил о том, что мяч движется в 3D, а видео, которое вы смотрите, показывает 2D-проекцию этого движения.

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

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

Это сработает только в том случае, если плоскость вашего изображения параллельна плоскости движения мяча. Тогда 3D-параболическая траектория будет проецироваться на изображение как 2D-парабола, а постоянное ускорение будет направлено вниз по оси Y.

person Dima    schedule 21.10.2016
comment
Отслеживая 2D-проекцию, вы хотите сказать, что я должен рассмотреть возможность неискажения изображений перед обработкой, потому что в настоящее время я использую искаженные изображения, и в значительной степени наблюдается бочкообразное искажение. - person Atishay Jain; 24.10.2016
comment
Я согласен с вами, что параболическая кривая будет перекошена. Но если мы предположим постоянный угол между плоскостью движения мяча и камерой с относительным наклоном, ограниченным только одним направлением, то это будет означать, что ускорение должно оставаться постоянным в направлении y, поскольку речь идет о взятии компонента g в направление движения мяча, которое является постоянным числом. - person Atishay Jain; 25.10.2016