Я разрабатываю (фактически применяю существующее решение) фильтр Калмана для моделирования движения транспортного средства (БПЛА или автомобиля). Вектор состояния будет включать положение, скорость и, возможно, ускорение.
В это существующее решение включено ускорение; переход состояния что-то вроде , где это технологический шум.
Я думаю, что такая модель хороша, когда ускорение меняется несколько плавно, но когда есть всплески ускорения, убирая из состояния и добавление шума к скорости должно быть более подходящим: .
Тесты показывают, что разницы в точности решения между обеими моделями почти нет (оказывается, данные наблюдений больше влияют на положение, чем на скорость).
Так вот вопрос, когда надо включать ускорение в состояние, а когда нет? Что я должен учитывать?
Фильтры Калмана — это не черная магия, а стандартный способ прогнозирования поведения системы, известной только по измерениям.
Физика автомобиля в хорошем приближении соответствует системе дифференциальных уравнений второго порядка, за исключением исходного члена, который исходит от действий водителя и уклона дороги. Состояния автомобиля, когда водитель неактивен, — это просто положение и скорость, состояния водителя — это углы наклона колес и ускорение в направлении колес, состояние дороги — это ее уклон.
Фильтр Калмана, вероятно, должен иметь те же состояния, если только они не в основном предсказуемы на основе информации о дороге и затем не являются частью динамического уравнения, а не независимыми состояниями. Тогда шумовой член просто покрывает ошибки дискретизации дифференциального уравнения для движения и любых изменений состояния водителя и дороги.
С другой стороны, в конечном итоге учитывается только фактическая производительность, и если у вас достаточно данных для тестирования модели в реальных условиях, вы можете упростить модель до тех пор, пока производительность не ухудшится.
Я чувствую, что вопрос эквивалентен «когда у ускорения есть память?». Потому что это и есть переменные состояния, память системы от кадра к кадру.
Таким образом, время раскрутки реактивного двигателя или движение воздушной пробки может быть хорошим примером физического значения состояния/памяти для осевого ускорения БПЛА.
Точно так же модель гидравлической системы и то, как она перемещает поверхности управления, может быть хорошей физической интерпретацией переменных состояния для неосевых/вращательных ускорений в БПЛА.
Я уверен, что вы можете себе представить подобное состояние/память для ускорений в автомобиле.
Вы прямо в описании говорите, что они вам скорее всего не нужны. («Тесты показывают, что между обеими моделями почти нет разницы в точности решения»)
Вы сможете разумно смоделировать эти эффекты только в том случае, если ваши временные дельты имеют тот же порядок величины (или меньше), чем временные масштабы, в которых эти эффекты возникают.
И их моделирование поможет только в том случае, если вносимые ими ошибки имеют аналогичную величину (или больше), чем ошибки, которые вы обычно видите из других источников (шум/неопределенность измерения). В противном случае их будет трудно обнаружить, потому что величины ошибок складываются (по крайней мере, в простых случаях) как перпендикулярные векторы: E^2 = e1^2 + e2^2
пользователь4552
dmckee --- котенок экс-модератор