Комментарии 50
А поиск пробовали использовать?
habrahabr.ru/post/120133/
habrahabr.ru/post/121904/
Даже на Википедии более подробное описание и больше по ссылкам найти можно — ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%9A%D0%B0%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0
habrahabr.ru/post/120133/
habrahabr.ru/post/121904/
Даже на Википедии более подробное описание и больше по ссылкам найти можно — ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%9A%D0%B0%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0
-9
Это самая адекватная и самая понятная статья из всех что есть на Хабре. Спасибо огромное, мне он как раз сейчас нужен.
+8
Отличный способ подачи материала. Отличнейшая статья.
+5
А если сравнить со скользящей средней, намного лучше?)
+5
В данном конкретном случае — нет, он вырождается в автокорреляцию. Но вообще это крайне мощная штука, которая подстраивает модель объекта под реальный объект.
Вся фишка фильтра Калмана в том, что он:
— позволяет учитывать зависимости между параметрами (матрица F в предсказании)
— позволяет учитывать внешнее воздействие на систему (матрица B в предсказании)
— автоматически подбирает усиление в зависимости от ошибки прогноза, причём это хорошо работает даже в присутствии шума
— ну и, как уже упоминалось в заключении статьи, можно получать сведения о внутренних параметрах системы, которые, по какой либо причине, невозможно измерить.
Вся фишка фильтра Калмана в том, что он:
— позволяет учитывать зависимости между параметрами (матрица F в предсказании)
— позволяет учитывать внешнее воздействие на систему (матрица B в предсказании)
— автоматически подбирает усиление в зависимости от ошибки прогноза, причём это хорошо работает даже в присутствии шума
— ну и, как уже упоминалось в заключении статьи, можно получать сведения о внутренних параметрах системы, которые, по какой либо причине, невозможно измерить.
+2
udacity.com — Programming a Robotic Car — довольно понятное объяснение объяснение фильтра Калмана и лабораторная работа по программированию его.
0
ну и на хабре еще была статейка habrahabr.ru/post/120133/, но эта попонятнее будет как по мне, за что спасибо автору!
0
Че-то у меня не взлетело с ходу:
Реагирует только на параметры H (фактически масштабирует входной сигнал) и F (работает как размер окна в running average)
Реагирует только на параметры H (фактически масштабирует входной сигнал) и F (работает как размер окна в running average)
0
H в единицу ставьте, и поиграйтесь с параметрами Q и R в сторону увеличения. Я правильно понимаю, что измеряемая величина — красный график, а выход фильтра — синий? Тогда видно, что фильтр работает, но измеряется сигнал с намного бОльшим шумом, чем ожидает фильтр.
0
> и поиграйтесь с параметрами Q и R в сторону увеличения
Важнее не их абсолютные значения, а отношение одного к другому. Q << R => Сильное сглаживание и высокая инерционность. Q ~ R => Сглаживания почти не будет, зато при большой изменчивости полезного сигнала фильтр не будет вносить искажений АЧХ.
Важнее не их абсолютные значения, а отношение одного к другому. Q << R => Сильное сглаживание и высокая инерционность. Q ~ R => Сглаживания почти не будет, зато при большой изменчивости полезного сигнала фильтр не будет вносить искажений АЧХ.
0
Вот же ж блин, а
0
А чем вы выводите график на Tk?
0
Спасибо, для начинающих очень хорошо изложена суть =)) Ждем новых статей =)
0
> H — матрица определяющая отношение между измерениями и состоянием системы, пока без объяснений примем эту переменную также равную 1.
Как это матрица равна скаляру? И почему 1, а не «100500»?
Как это матрица равна скаляру? И почему 1, а не «100500»?
0
Сам себе выкопал яму решив упростить до скаляров, заодно создав путаницу в названиях. В данном случае это матрица состоящая из одного элемента. Равна 1 потому, что измерения накладываются на состояние как есть без преобразования.
У вас более глубокая статья, но нужно знать алгоритм прежде чем применять его. Возможно сказывается слабое математического образования, но сходу я не разобрался, что же там написано…
У вас более глубокая статья, но нужно знать алгоритм прежде чем применять его. Возможно сказывается слабое математического образования, но сходу я не разобрался, что же там написано…
0
Очень полезная статья! Надеюсь найти в следующей пример замешивания информации с разных источников данных. Напимер: гироскопы + акселерометры + магнитные датчики. Ну и естественно пример расчёта матриц H и Q.
0
H — матрица измерений. Она строится элементарно по модели датчика.
> пример расчёта матриц H и Q
Имелось в виду R и Q? Если да, то выше зареквестил. С R ничего сложного — просто дисперсии и корреляции между выходными сигналами датчиков. А вот Q нельзя точно измерить — это внутри датчика. Можно знать примерно.
Я же использую Q для оптимизации ФК.
> пример расчёта матриц H и Q
Имелось в виду R и Q? Если да, то выше зареквестил. С R ничего сложного — просто дисперсии и корреляции между выходными сигналами датчиков. А вот Q нельзя точно измерить — это внутри датчика. Можно знать примерно.
Я же использую Q для оптимизации ФК.
0
Нигде не встречал какой-то конкретной методики нахождения Q. Это даже не внутри датчика, а внутри процесса.
Видимо это классическая задача поиска, можно попробовать применить логистическую регрессию — то есть проводим серию экспериментов, со знанием реальных значений… и потом зная реальные значения и показания датчика используем градиентный спуск (или что-то более продвинутое) для минимизации ошибки которую дает фильтр.
Видимо это классическая задача поиска, можно попробовать применить логистическую регрессию — то есть проводим серию экспериментов, со знанием реальных значений… и потом зная реальные значения и показания датчика используем градиентный спуск (или что-то более продвинутое) для минимизации ошибки которую дает фильтр.
0
> Это даже не внутри датчика, а внутри процесса.
А это не одно и то же? Внутри датчика чувствительный элемент (например, массивный элемент со смещенным Ц.М. у акселерометров), который выполнен неидеально. Он участвует в процессе измерения входного воздействия. Инструментальные погрешности, вызывающие неидеальное движение Ч.Э и входят в погрешности динамического процесса.
> Нигде не встречал какой-то конкретной методики нахождения Q.
Для датчиков из среднего и высокого ценового диапазонов производитель по результатам сертификационных и своих внутренних испытаний может иметь приблизительный диапазон значений инструментальных погрешностей. Не каждый производитель и не для каждого прибора их даст (комм. тайна).
А это не одно и то же? Внутри датчика чувствительный элемент (например, массивный элемент со смещенным Ц.М. у акселерометров), который выполнен неидеально. Он участвует в процессе измерения входного воздействия. Инструментальные погрешности, вызывающие неидеальное движение Ч.Э и входят в погрешности динамического процесса.
> Нигде не встречал какой-то конкретной методики нахождения Q.
Для датчиков из среднего и высокого ценового диапазонов производитель по результатам сертификационных и своих внутренних испытаний может иметь приблизительный диапазон значений инструментальных погрешностей. Не каждый производитель и не для каждого прибора их даст (комм. тайна).
0
НЛО прилетело и опубликовало эту надпись здесь
Не проще ли сделать дополнительный эталонный резервуар и мерить в нем диэлектрическую проницаемость в данный момент времени?
0
Программное решение обычно, как и в данном случае, универсальнее и дешевле. К тому же, насколько я знаю, диэелектрическую проницаемость нельзя измерить напрямую — только косвенно, рассчитав на основе других измерений. Ну и, самое интересное — а погрешность измерения ДП вы не учитываете?
Вы прям напомнили анекдот про сферического коня в вакууме (:
Вы прям напомнили анекдот про сферического коня в вакууме (:
0
Тут можно поспорить. Для аппаратного решения достаточно измерить электрическую емкость эталонного емкости с топливом. В тоже время, для программного решения нужны вычислительные мощности.
Несомненно, в любом случае выходной сигнал будет зашумлен, но ошибка будет обусловлена только погрешностью измерений. Таким образом, как раз мой вариант будет ближе к реальности.
Несомненно, в любом случае выходной сигнал будет зашумлен, но ошибка будет обусловлена только погрешностью измерений. Таким образом, как раз мой вариант будет ближе к реальности.
0
Вряд ли.
Вы учитываете только т.н. коррелирующую составляющую систематической и случайной погрешности датчика. Но есть и некоррелирующая, которая обычно достаточно велика.
А вот фильтр Калмана может отсеять всю случайную составляющую и выделить систематику.
Конечно, при этом важна модель, но для датчика она с хорошей точность довольно проста.
Вы учитываете только т.н. коррелирующую составляющую систематической и случайной погрешности датчика. Но есть и некоррелирующая, которая обычно достаточно велика.
А вот фильтр Калмана может отсеять всю случайную составляющую и выделить систематику.
Конечно, при этом важна модель, но для датчика она с хорошей точность довольно проста.
0
Очень доходчиво и ясно изложено, пишите ещё, таких авторов надо побольше!
0
Жаль, что Вы не упомянули об основе фильтра Калмана — методе наименьших квадратов.
Мне кажется, это упростило бы понимание и отделило основу от конкретики примера.
К тому же не всегда необходим именно фильтр Калмана.
Для случая обработки «постфактум» достаточно гораздо более простого метода наименьших квадратов.
Мне кажется, это упростило бы понимание и отделило основу от конкретики примера.
К тому же не всегда необходим именно фильтр Калмана.
Для случая обработки «постфактум» достаточно гораздо более простого метода наименьших квадратов.
0
Думал сначала начать с теории — получилось очень раздуто и запутано, к тому же ещё не до конца понял всего что там происходит, решил не писать про то что сам не до конца понимаю. Будет здорово, если вы раскроете эту тему!
0
> более простого метода наименьших квадратов
Есть замечательный труд «Браммер К., Зиффлинг Г. Фильтр Калмана-Бьюси. Пер. с нем. – М.: Наука. Главная
редакция физико-математической литературы. 1982.»
В нем написано, почему МНК (вернее Гауссовский Метод Наименьших Квадратов) на практике не может быть использован в виду сильных ограничений на гипотезу о параметрах помех. Это должен быть белый шум с нулевым средним, причем шумы в разных каналах должны иметь нулевую корреляцию. Такого на практике нет.
Если сигнал один, то МНК не нужен (он многомерный, если говорить именно о Гауссовском). А если сигналов несколько, то почти всегда есть и корреляция и, особенно, смещение среднего, да и белым шумом помехи являются очень редко (в Волоконно-Оптических Гироскопах почти белый).
Я могу написать свои мысли на эту тему, если интересно…
Есть замечательный труд «Браммер К., Зиффлинг Г. Фильтр Калмана-Бьюси. Пер. с нем. – М.: Наука. Главная
редакция физико-математической литературы. 1982.»
В нем написано, почему МНК (вернее Гауссовский Метод Наименьших Квадратов) на практике не может быть использован в виду сильных ограничений на гипотезу о параметрах помех. Это должен быть белый шум с нулевым средним, причем шумы в разных каналах должны иметь нулевую корреляцию. Такого на практике нет.
Если сигнал один, то МНК не нужен (он многомерный, если говорить именно о Гауссовском). А если сигналов несколько, то почти всегда есть и корреляция и, особенно, смещение среднего, да и белым шумом помехи являются очень редко (в Волоконно-Оптических Гироскопах почти белый).
Я могу написать свои мысли на эту тему, если интересно…
0
С этой книгой я знаком, правда много воды утекло с тех пор :)
МНК мы вполне удачно юзали на испытаниях гироскопов, а вот фильтр Калмана существенно сложнее и выигрыша не дал.
Возражения здесь следующие.
1. Многомерность: она возникает, если обрабатывать сигнал даже с одного датчика, но не в реальном времени, а с меньшей дискретизацией, чем идет съем сигнала. Или вообще постфактум.
2. Смещение среднего:
2.1. Есть небольшая модификация для МНК со смещением среднего.
2.2. Можно пользоваться и обычным МНК, только поправить неверную модель, что сделать для смещения совсем несложно.
3. В небелом шуме есть коррелирующая составляющая, чаще всего в ней можно выделить гармоники.
МНК мы вполне удачно юзали на испытаниях гироскопов, а вот фильтр Калмана существенно сложнее и выигрыша не дал.
Возражения здесь следующие.
1. Многомерность: она возникает, если обрабатывать сигнал даже с одного датчика, но не в реальном времени, а с меньшей дискретизацией, чем идет съем сигнала. Или вообще постфактум.
2. Смещение среднего:
2.1. Есть небольшая модификация для МНК со смещением среднего.
2.2. Можно пользоваться и обычным МНК, только поправить неверную модель, что сделать для смещения совсем несложно.
3. В небелом шуме есть коррелирующая составляющая, чаще всего в ней можно выделить гармоники.
0
На самом-то деле гМНК это же частный случай ФК (по сути, хотя хронологически вроде бы наоборот). Есть продолжение гМНК для случая корреляций между каналами — исследовал как раз в сравнении с ФК. Но выигрыш ФК именно в функциональности и гибкости. Можно миксовать показания инерциальных датчиков с GPS, к примеру. А это совершенно разные источники информации как по природе, так и по характерным частотам выдачи информации. Да и инфа от инерциалки есть с большой вероятностью всегда, а GPS очень ненадежный источник. И вот тут ФК и нужен. Через матрицы ковариаций можно временно или перманентно выключать «дескридитированный» канал, давая ему минимальный вес.
> Многомерность: она возникает, если обрабатывать сигнал даже с одного датчика, но не в реальном времени, а с меньшей дискретизацией, чем идет съем сигнала.
Т.е. датчик выдает с частотой 1кГц -> формируем выборку из 10 отсчетов -> из гМНК инфа выходит на частоте 100 Гц. Так? Но с таким же успехом плавающее среднее можно использовать (или полиномом усреднять). Насколько мне известно такой подход приводит к увеличению смещения шума, т.к. осреднение по малой выборке дает не истинное среднее. И гМНК в таком режиме выполняет по сути осреднение. Метод Взвешенных Наименьших Квадратов (с матрицами ковариаций) — это осреднение с весами.
> Многомерность: она возникает, если обрабатывать сигнал даже с одного датчика, но не в реальном времени, а с меньшей дискретизацией, чем идет съем сигнала.
Т.е. датчик выдает с частотой 1кГц -> формируем выборку из 10 отсчетов -> из гМНК инфа выходит на частоте 100 Гц. Так? Но с таким же успехом плавающее среднее можно использовать (или полиномом усреднять). Насколько мне известно такой подход приводит к увеличению смещения шума, т.к. осреднение по малой выборке дает не истинное среднее. И гМНК в таком режиме выполняет по сути осреднение. Метод Взвешенных Наименьших Квадратов (с матрицами ковариаций) — это осреднение с весами.
0
Отличный стиль изложения и интересный материал. Нравится, что есть и теория и практика, только как раз не хватает того, о чем вы и написали :)
Очень хотелось бы увидеть продолжение.
Очень хотелось бы увидеть продолжение.
0
Covariance = (1 — K*H)*F;
Судя по картинкам сверху не F, а P0.
+1
Спасибо за статью. Есть пара замечаний.
1) Крайне удивило отсутствие описания модели фильтруемого процесса.
2) «Error covariance» переведено как «ошибка ковариации» (на картинках-схемках), в то время как верно будет «ковариация ошибки».
1) Крайне удивило отсутствие описания модели фильтруемого процесса.
2) «Error covariance» переведено как «ошибка ковариации» (на картинках-схемках), в то время как верно будет «ковариация ошибки».
0
Отличная статья для вхождения (нужно знать немного линейной алгебры и что-то слышать про теорию управления).
Чётко, лаконично, просто, с примерами. Спасибо.
Также спасибо всем за ссылки.
Чётко, лаконично, просто, с примерами. Спасибо.
Также спасибо всем за ссылки.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Фильтр Калмана — Введение