Слияние датчика с фильтром Калмана - PullRequest
16 голосов
/ 19 октября 2010

Меня интересует, как моделируется двойной вход в настройке слияния датчиков в фильтре Калмана?

Скажем, например, что у вас есть акселерометр и гироскоп, и вы хотите представить здесь "уровень горизонта", как в самолете, хорошую демонстрацию чего-то вроде этого.

Как вы на самом деле получаете положительные свойства двух датчиков и минимизируете отрицательные?

Смоделировано ли это в матрице модели наблюдений (обычно обозначается заглавной буквой H)?


Примечание: Этот вопрос также задавался без каких-либо ответов на math.stackexchange.com

Ответы [ 3 ]

19 голосов
/ 07 ноября 2010

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

Свойства датчика можно «увидеть» в двух частях фильтра.Во-первых, у вас есть матрица ошибок для ваших наблюдений.Это матрица, которая представляет шум в наблюдении датчиков (предполагается, что это гауссовский шум с нулевым средним, что не слишком большое предположение, учитывая, что во время калибровки вы можете достичь среднего шума).

Другая важная матрица - ковариационная матрица наблюдений.Эта матрица дает вам представление о том, насколько хорош датчик при предоставлении вам информации (информация означает что-то «новое» и не зависит от показаний других датчиков).

О «получении хороших характеристик», что вам следуетсделать, это сделать хорошую калибровку и характеристику шума (это написано нормально?) датчиков.Лучший способ заставить сходиться фильтр Калмана - это иметь хорошую модель шума для ваших датчиков, и это на 100% экспериментально.Попробуйте определить отклонения для вашей системы (не всегда доверяйте таблицам данных).

Надеюсь, это немного поможет.

2 голосов
/ 04 декабря 2013

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

При каждом показании гироскопа:

angle_radians+=gyro_reading_radians_per_sec * seconds_since_last_gyro_reading

При каждом полученном показании акселерометра:

angle_radians+=0.02 * (angle_radians_from_accelerometer - angle_radians)

Константа 0,02 предназначена для настройки - она ​​выбирает компромисс между подавлением шума и отзывчивостью (вы не можете иметь оба одновременно). Это также зависит от точности обоих датчиков и временных интервалов получения новых показаний.

Эти две строки кода реализуют простой одномерный (скалярный) фильтр Калмана. Предполагается, что

  • гироскоп имеет очень низкий уровень шума по сравнению с акселерометром (верно для большинства потребительских датчиков). Поэтому мы вообще не моделируем гироскопический шум, а вместо этого используем гироскоп в модели перехода состояний (обычно обозначается как F).
  • показания акселерометра принимаются, как правило, через регулярные интервалы времени , а уровень шума акселерометра (обычно R) постоянен
  • angle_radians был инициализирован с начальной оценкой (например, путем усреднения angle_radians_from_accelerometer за некоторое время)
  • , следовательно, также оценивают ковариацию (P) и оптимальное усиление Калмана (K) постоянными, что означает, что нам вообще не нужно сохранять оценочную ковариацию в переменной.

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

0 голосов
/ 14 марта 2014

Линия горизонта: G '* (u, v, f) = 0, где G - вектор силы тяжести, координаты центра изображения u и v и фокусное расстояние f. Теперь плюсы и минусы сенсоров: гироскоп очень быстрый и точный, но дрейфует, акселерометр менее точен, но (при калибровке) имеет нулевое смещение и не дрейфует (без ускорения, кроме силы тяжести). Они измеряют разные вещи - акселерометр измеряет ускорение и, следовательно, ориентацию относительно вектора силы тяжести, а гироскоп измеряет скорость вращения и, следовательно, изменение ориентации. Чтобы преобразовать его в ориентацию, нужно интегрировать его значения (к счастью, его можно выбирать с высокой частотой кадров, например, 100-200). таким образом, фильтр Калмана, который должен быть линейным, не применим к гироскопу. сейчас мы можем просто упростить объединение датчиков как взвешенную сумму показаний и прогнозов.

Вы можете объединить два показания - акселерометр и встроенный гироскоп и прогнозирование модели, используя веса, обратно пропорциональные отклонениям данных. Вам также придется иногда использовать компас, так как акселерометр мало что говорит вам об азимуте, но я думаю, что он не имеет отношения к вычислению линии горизонта. Система должна быть отзывчивой и точной, и для этой цели всякий раз, когда быстро меняется ориентация, вес гироскопа должен быть большим; когда система успокаивается и вращение останавливается, веса акселерометра возрастают, что позволяет лучше интегрировать нулевые показания смещения и убить дрейф от гироскопа.

...