2015-04-01 5 views
0

Мне было предложено создать робота-следящего за ногами (я уже это сделал), а во второй части этого задания мне нужно разработать фильтр Калмана, чтобы улучшить следующий процесс робот. Робот получает от человека расстояние от робота, а также угол (это относительный угол, потому что ссылка - это сам робот, а не абсолютные координаты xy)Применение фильтра Калмана на роботе-следящем ноге

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

Если вы можете вычислить фильтр Калмана в двух измерениях, я бы понял, что прошу сделать это, следуя за ногами linnearized способом, несмотря на то, что человек ходит странно (со случайными движениями) -> Об этом У меня есть сомнения в том, как установить функцию государственной матрицы, кто-нибудь может рассказать мне, как это сделать или сказать мне, где я могу найти дополнительную информацию об этом?

спасибо.

+0

Фильтр Калмана может быть применен к n-мерной задаче, поэтому это не является ограничением. Вы должны выяснить, что такое модель движения для вашего робота ноги. Если он нелинейный, вы можете попробовать применить расширенный фильтр Калмана. Например, что такое робот-новичок? Робот, который следует за ногами человека? Это робот с ногами, который следует за линией? Это робот, привязанный к человеческим ногам и оценивающий положение? Если у вас нет дополнительной информации по вашей проблеме, трудно определить конкретную проблему, и я не хочу связывать вас с статьей Википедии о фильтре Калмана. –

ответ

0

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

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

Пример с глобальными координатами:

Если у вас есть небольшой кубической массы, которая может управлять вперед со скоростью 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 - это вектор шума с распределением Гаусса.