Подходит ли фильтр Калмана для фильтрации положений спроецированных точек с учетом углов Эйлера устройства захвата?

17

Моя система следующая. Я использую камеру мобильного устройства для отслеживания объекта. Из этого трекинга я получаю четыре 3D-точки, которые проецирую на экран, чтобы получить четыре 2D-точки. Эти 8 значений довольно шумные из-за обнаружения, поэтому я хочу отфильтровать их, чтобы сделать движение более плавным и реалистичным. В качестве второго измерения я использую выход гироскопа устройства, который обеспечивает три угла Эйлера (то есть положение устройства). Они более точные и с большей частотой (до 100 Гц), чем 2D-позиции (около 20 Гц).

Моя первая попытка была с простым фильтром нижних частот, но задержка была важна, поэтому я сейчас пытаюсь использовать фильтр Калмана, надеясь, что он сможет сгладить позиции с небольшой задержкой. Как видно из предыдущего вопроса , одним из ключевых моментов в фильтре Калмана является связь между измерениями и внутренними переменными состояния. Здесь измерения - это мои 8 координат 2D-точки и 3 угла Эйлера, но я не уверен, что мне следует использовать в качестве внутренних переменных состояния и как я должен соединять углы Эйлера с 2D-точками. Отсюда основной вопрос: подходит ли фильтр Калмана для этой проблемы? И если да, то как?

Стефан Пешар
источник
Если вся цель состоит в том, чтобы сгладить значения с минимальной задержкой, вы можете попробовать использовать фильтр минимальной фазы, если вы еще не пробовали. Я был бы удивлен, если фильтрация Калмана может дать вам лучше, чем «минимальная фазовая задержка». Для линейных фильтров я ожидаю, что фильтр с минимальной фазой дает минимально возможную задержку.
Ниарен
@niaren: Спасибо за комментарий, я тоже буду изучать это.
Стефан Пешар
1
Неясно, каковы ваши измерения. В структуре фильтра Калмана «измерения» относятся к величинам, которые вы фактически наблюдаете. Если вы измеряете четыре трехмерные точки (например, объединяя несколько изображений с камеры), то это ваши измерения. Вам также необходимо решить, какие переменные состояния вы пытаетесь оценить. Вы пытаетесь отслеживать местоположение 3D-объектов с течением времени? Если так, то это ваши переменные состояния. Может быть целесообразным, чтобы 2D-представление можно было использовать только для отображения и не включать в качестве части вашей модели. Дополнительные детали помогут предложить подход.
Джейсон Р
Как говорит Jsaon, ваши измерения не ясны. Вы говорите: From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisyа потом вы говорите What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Что он? Четыре 2D точки или три угла Эйлера? Или процесс обработки идет по углам Эйлера -> 3D точки -> 2D точки?
Питер К.
На самом деле у меня есть два набора измерений: обнаруженные точки точек с камеры и углы Эйлера, но их нетривиально сопоставить. Плюс меня интересуют только отфильтрованные позиции в качестве вывода. Я отредактирую вопрос, чтобы уточнить.
Стефан Пешар

Ответы:

4

Низкочастотная фильтрация

Было бы хорошо узнать, что вы подразумеваете под «простым фильтром нижних частот».

Например, если ваши измерения в момент времени являютсяk

pk=[xkyk]

и ваши отфильтрованные оценки нижних частот:

pkLPF=αpК-1LпF+(1-α)пК

тогда у вас будет довольно большая групповая задержка в фильтре около (для альфа, близкой к 1). 1/(1-α)

Моделирование сигнала: упрощенный подход

Чтобы использовать фильтр Калмана (или любой подобный подход), вам необходимо иметь модель для того, как ваши измерения получаются и обновляются.

Обычно это выглядит так:

, где ε к является процесс (вождение) шум,матрица перехода состояния, а B ваш входной матрицы.

пК+1TрUЕзнак равноAпКTрUЕ+ВεК
εКAВ

И тогда ваши измеренные значения : p k = C p T R U E k + D ν k, где ν k - выходной (измерительный) шум, C - выходная матрица, а D - ваша измерительная шумовая матрица.пК

пКзнак равноСпКTрUЕ+DνК
νКСD

Здесь «состояние» модели выбирается в качестве истинных позиций, а измеряемые вами вещи являются выходом.

Затем вы можете применить к нему уравнения фильтра Калмана, чтобы получить оценки состояния истинного положения.пКTрUЕ^

Однако этот подход упрощен, поскольку он не использует никаких знаний о том, как могут перемещаться точки (и при этом он не использует ваши 4 точки и любые ваши знания о том, как они движутся вместе).

Моделирование сигнала: начало лучшего подхода

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

пКTрUЕзнак равно[ИксК YК ZК Икс˙К Y˙К Z˙К Икс¨К Y¨К Z¨К φ ψ θ φ˙ ψ˙ θ˙ φ¨ ψ¨ θ¨ ]T

и измерения (выход)

pk=[xk yk zk ϕ ψ θ ]T

xkTRUE=n=0kx˙nTRUEnΔt+12n=0kx¨nTRUE(nΔt)2
x,y,z

Это просто классические «уравнения движения». Смотрите уравнение (3) здесь.

Питер К.
источник
pk=αpk1+(α1)pk
α
ΔT;12(Δ2)
Δt1/fs
1
fsΔtΔt12Δt2
0

Ваш фильтр нижних частот может быть как;

pk=αpk1+(1α)zk

zkkpkk

LPF может быть деформирован следующим образом:

pk=pk1+K(zkpk1)
K=(1α)

K

Fumio Ueda
источник