2 вопроса об этом простом 1D случае Калмана
Поэтому я пытаюсь научиться использовать фильтры Калмана, чтобы в какой-то момент внедрить их в маленького робота. Это видео и следующая веб-страница были действительно хорошими источниками для меня, чтобы понять эти фильтры:
YouTube: Учебное пособие по фильтру Калмана
http://bilgin.esme.org/BitsBytes/KalmanFilterforDummies.aspx
Давайте возьмем простой 1D случай, когда у меня есть сенсорная платформа с 1 датчиком расстояния по обе стороны, мы скажем, что L - датчик левой стороны, а R - правая сторона. Робот заключен в коробку длиной 100 единиц, каждый датчик имеет диапазон только 10 единиц, и мы считаем любое значение из них больше ~7,5 недействительным.
Платформа будет двигаться вперед, пока X <= 95, а затем развернется, пока X >= 5, я хочу использовать фильтр для оценки X и использовать данные, поступающие из L/R, чтобы исправить X, когда я подойду близко к стене. Мои спорные моменты заключаются в следующем:
В 15:50 в видеоролике Фрэнсис Говерс говорит, что если вы потеряете датчик, то ошибка уйдет в бесконечность, и вы сможете сказать, что ваш датчик не дает хорошие данные. Однако, когда я реализую тот одномерный случай, представленный на веб-странице, ошибка продолжает уменьшаться, даже когда я передаю им сильно изменяющиеся данные. Зачем? Не должна ли ошибка увеличиться?
Что касается 1, что мне делать, если ошибка становится слишком высокой или я знаю, что датчик выдает неверные данные? Я просто не включаю датчик в шаге коррекции, пока иначе?
Извините, если их уже спрашивали, я обычно очень хорошо умею находить ответы, но эти вопросы кажутся немного неясными (или, скорее, ответ очевиден), но я просто не могу найти их себя.
1 ответ
- Я совсем не знаком с этим видео, но он может иметь в виду, что если вы неоднократно добавляете шум процесса (
P = FPF' + Q
) но никогда не уменьшайP
через измерение, тоP
может только увеличиваться. В целом, однако, я бы предостерег вас от рассмотрения ковариационной матрицыP
как вывод вашего фильтра. Вы заметите, что это не зависит от ваших измерений (кроме их отсутствия) или вашего состояния. Это зависит только от многократного применения ваших собственных оценок процесса и шума измерений (Q
а такжеR
) так что если вы не правы (например, как вы пытались, в измерениях мусора с тем жеR
) вы все равно получите то же самоеP
, - Одно из фундаментальных предположений фильтра Калмана состоит в том, что весь ваш шум имеет гауссову (классическое распределение кривой колокола) и нулевое среднее. Вы можете сильно помешать распределению, но очень важно, чтобы ваш шум в среднем равнялся нулю. Это написано как
E(v) = 0
, ожидаемое значение. Если ваш датчик показывает "около 5" или5 + v
гдеv
является случайной величиной с нулевым средним, тогда усреднение показаний вашего датчика даст вам результат, очень близкий к 5. Так работает ваш датчик, когда он находится в диапазоне. Величинаv
это то, что вы оцениваете вR
поэтому фильтр знает, сколько усреднения требуется. Если ваш датчик находится вне диапазона, тогда лучше не включать его в измерение. Когда датчик считывает за пределами шкалы, значение не "около 10", а "вероятно, по крайней мере, 10, а может быть, и намного больше", и ваш шум имеет уклон.