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, когда я подойду близко к стене. Мои спорные моменты заключаются в следующем:

  1. В 15:50 в видеоролике Фрэнсис Говерс говорит, что если вы потеряете датчик, то ошибка уйдет в бесконечность, и вы сможете сказать, что ваш датчик не дает хорошие данные. Однако, когда я реализую тот одномерный случай, представленный на веб-странице, ошибка продолжает уменьшаться, даже когда я передаю им сильно изменяющиеся данные. Зачем? Не должна ли ошибка увеличиться?

  2. Что касается 1, что мне делать, если ошибка становится слишком высокой или я знаю, что датчик выдает неверные данные? Я просто не включаю датчик в шаге коррекции, пока иначе?

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

1 ответ

Решение
  1. Я совсем не знаком с этим видео, но он может иметь в виду, что если вы неоднократно добавляете шум процесса (P = FPF' + Q) но никогда не уменьшай P через измерение, то P может только увеличиваться. В целом, однако, я бы предостерег вас от рассмотрения ковариационной матрицы P как вывод вашего фильтра. Вы заметите, что это не зависит от ваших измерений (кроме их отсутствия) или вашего состояния. Это зависит только от многократного применения ваших собственных оценок процесса и шума измерений (Q а также R) так что если вы не правы (например, как вы пытались, в измерениях мусора с тем же R) вы все равно получите то же самое P,
  2. Одно из фундаментальных предположений фильтра Калмана состоит в том, что весь ваш шум имеет гауссову (классическое распределение кривой колокола) и нулевое среднее. Вы можете сильно помешать распределению, но очень важно, чтобы ваш шум в среднем равнялся нулю. Это написано как E(v) = 0, ожидаемое значение. Если ваш датчик показывает "около 5" или 5 + v где v является случайной величиной с нулевым средним, тогда усреднение показаний вашего датчика даст вам результат, очень близкий к 5. Так работает ваш датчик, когда он находится в диапазоне. Величина v это то, что вы оцениваете в R поэтому фильтр знает, сколько усреднения требуется. Если ваш датчик находится вне диапазона, тогда лучше не включать его в измерение. Когда датчик считывает за пределами шкалы, значение не "около 10", а "вероятно, по крайней мере, 10, а может быть, и намного больше", и ваш шум имеет уклон.
Другие вопросы по тегам