Следует ли включать ускорение в вектор состояния фильтра Калмана?

Я разрабатываю (фактически применяю существующее решение) фильтр Калмана для моделирования движения транспортного средства (БПЛА или автомобиля). Вектор состояния будет включать положение, скорость и, возможно, ускорение.

В это существующее решение включено ускорение; переход состояния что-то вроде ( Икс , в , а ) ( Икс + Δ т в , в + Δ т а , а + ξ ) , где ξ это технологический шум.

Я думаю, что такая модель хороша, когда ускорение меняется несколько плавно, но когда есть всплески ускорения, убирая а из состояния и добавление шума к скорости должно быть более подходящим: ( Икс , в ) ( Икс + Δ т в , в + ξ ) .

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

Так вот вопрос, когда надо включать ускорение в состояние, а когда нет? Что я должен учитывать?

Мои общие впечатления: (1) Фильтры Калмана — это черная магия, и люди просто возятся с ними, чтобы заставить их работать. (2) Фильтры Калмана не обладают особенно хорошими или особыми свойствами. Они просто закреплены традицией.
@Ben: Черная магия, конечно, но у них есть одно или два особых свойства. Вы можете изменить проекцию (например, физику вашего детектора, добавив магнитное поле к машине, ранее не имеющей поля), без необходимости изменять какую-либо часть подгонки и по-прежнему получать оптимальный ответ. Установщик разговаривает с распространителем только тогда, когда он спрашивает : «Куда указывает трек?» . (Предположим, что выбранное вами пространство представления достаточно общее, но обычно это так). Конечно, относительно немногие действительно понимают их, и я не из их числа.

Ответы (2)

Фильтры Калмана — это не черная магия, а стандартный способ прогнозирования поведения системы, известной только по измерениям.

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

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

С другой стороны, в конечном итоге учитывается только фактическая производительность, и если у вас достаточно данных для тестирования модели в реальных условиях, вы можете упростить модель до тех пор, пока производительность не ухудшится.

Я чувствую, что вопрос эквивалентен «когда у ускорения есть память?». Потому что это и есть переменные состояния, память системы от кадра к кадру.

Таким образом, время раскрутки реактивного двигателя или движение воздушной пробки может быть хорошим примером физического значения состояния/памяти для осевого ускорения БПЛА.

Точно так же модель гидравлической системы и то, как она перемещает поверхности управления, может быть хорошей физической интерпретацией переменных состояния для неосевых/вращательных ускорений в БПЛА.

Я уверен, что вы можете себе представить подобное состояние/память для ускорений в автомобиле.

Вы прямо в описании говорите, что они вам скорее всего не нужны. («Тесты показывают, что между обеими моделями почти нет разницы в точности решения»)

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

И их моделирование поможет только в том случае, если вносимые ими ошибки имеют аналогичную величину (или больше), чем ошибки, которые вы обычно видите из других источников (шум/неопределенность измерения). В противном случае их будет трудно обнаружить, потому что величины ошибок складываются (по крайней мере, в простых случаях) как перпендикулярные векторы: E^2 = e1^2 + e2^2