Хорошо, что вы должны прочитать на фильтре Калмана. В основном, это то, что он оценивает состояние через свое среднее значение и дисперсию отдельно. Государство может быть тем, что вы хотите. Вы можете иметь локальные координаты в своем состоянии, но также и глобальные координаты.
Обратите внимание, что последнее, безусловно, приведет к нелинейной динамике системы, и в этом случае вы могли бы использовать расширенный фильтр Калмана или, вернее, непрерывный дискретный фильтр Калмана, где вы будете обрабатывать динамику системы непрерывным образом и измерения в дискретное время.
Пример с глобальными координатами:
Если у вас есть небольшой кубической массы, которая может управлять вперед со скоростью V. Вы можете просто моделировать динамику в локальных координатах только, когда ваше состояние s будет s = [v]
, который является. линейная модель.
Но вы также можете включить глобальные координаты x и y, предполагая, что мы движемся только по плоскости. Тогда у вас будет s = [x, y, phi, v]'
. Нам нужно phi
, чтобы отслеживать текущую ориентацию, так как куб может двигаться только в направлении своей ориентации, конечно. Определим phi
как угол между прямым направлением куба и осью x
. Или другими словами: с phi=0
куб двигался вдоль оси х, а phi=90°
двигался вдоль оси у.
В нелинейной динамики системы с глобальными координатами, то можно записать в виде
s_dot = [x_dot, y_dot, phi_dot, v_dot]'
с
x_dot = cos(phi) * v
y_dot = sin(phi) * v
phi_dot = ...
v_dot = ... (Newton's Law)
В EKF (Extended фильтр Калмана) Предсказание шаг вы будете использовать (дискрети-), чтобы предсказать среднее состояние на первом шаге и линеаризованные (и дискретизированные) уравнения для предсказания Отклонения.
Есть две вещи, которые нужно иметь в виду, когда вы решите, что ваш вектор состояния s
должен выглядеть следующим образом:
- Вы можете захотеть использовать мой линейный пример
s = [v]
, а затем интегрировать скорость вне фильтра Калмана для получения глобальных оценок координат. Это сработает, но вы потеряете удивительность фильтра Калмана, так как вы только интегрируете среднее состояние, а не его дисперсию. Другими словами, вы не представляете, каковы текущие неопределенности для ваших глобальных координат.
- Второй шаг фильтра Kalman, обновление измерения или коррекции, требует, чтобы вы могли описать свой выход датчика как функцию ваших состояний. Таким образом, вам может потребоваться добавить состояния в ваше представление, чтобы вы могли правильно выразить свои измерения.
as z[k] = h(s[k], w[k])
где z
- измерения, а w
- это вектор шума с распределением Гаусса.
Фильтр Калмана может быть применен к n-мерной задаче, поэтому это не является ограничением. Вы должны выяснить, что такое модель движения для вашего робота ноги. Если он нелинейный, вы можете попробовать применить расширенный фильтр Калмана. Например, что такое робот-новичок? Робот, который следует за ногами человека? Это робот с ногами, который следует за линией? Это робот, привязанный к человеческим ногам и оценивающий положение? Если у вас нет дополнительной информации по вашей проблеме, трудно определить конкретную проблему, и я не хочу связывать вас с статьей Википедии о фильтре Калмана. –