Что это?

Вы можете использовать канал Калмана везде, где у вас есть неуверенные данные о какой-то уникальной структуре, и вы можете сделать обоснованную теорию о том, что структура будет делать сразу же. Независимо от того, идёт ли нечистая реальность и вмешивается ли она в безупречное движение, о котором вы спекулировали, Калмановский канал будет регулярно делать в целом превосходную деятельность по осмыслению того, что на самом деле произошло. Более того, он может использовать отношения между безумными чудесами, которые вы, возможно, не подумали бы злоупотребить!

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

Математика актуализации канала Калмана показывает действительно страшные и непонятные во многих местах, которые вы найдете в Google. Это ужасная ситуация, в свете того факта, что Калмановский канал на самом деле чрезмерно прост и прямолинейен, если вы взглянете на него правильно. Следовательно, это делает тему статьи невероятной, и я постараюсь осветить ее множеством четких, красивых картинок и оттенков. Все, что вам нужно, – это фундаментальное понимание вероятности и решетки.

Я начну с бесплатного случая, который может осветить канал Калмана, однако, в случае, если вам нужно попасть прямо к сверкающим картинкам и математике, не стесняйтесь прыгать вперёд.

Что бы мы могли сделать с каналом Калмана?

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

Скажем, что у нашего робота есть состояние xk→, которое является просто позицией и скоростью:

xk→=(p⃗ , v⃗ )

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

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

Мы также можем знать кое-что о том, как движется робот: Он понимает направления, посылаемые к колесным двигателям, и понимает, что если он движется в одну сторону и ничто не вмешивается, то в следующий момент он, вероятно, будет двигаться дальше, чем эквивалентное направление. Очевидно, что он не знает о своем движении: Его может поразить ветер, колеса могут проскользнуть немного, или перевернуть неровный пейзаж; поэтому сумма, которую колеса повернули, может на самом деле не говорить о том, насколько далеко робот зашел, и прогноз не будет безукоризненным.

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

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

Как фильтр Калмана видит вашу проблему

Давайте посмотрим на пейзаж, который мы пытаемся интерпретировать. Продолжим с простого состояния, имеющего только положение и скорость.

x⃗ =[pv]

Мы понятия не имеем, что такое истинное положение и скорость; существует целый спектр потенциальных смесей положения и скорости, которые могут быть действительны, но некоторые из них почти уверены, чем другие:

Кальмановский канал ожидает, что два фактора (позиция и скорость, для нашей ситуации) нерегулярны и гауссовцы рассеяны. Каждый фактор имеет среднее значение μ, которое является фокусом произвольного обращения (и его во всех вероятностных состояниях), и разницу σ2, которая является уязвимостью:

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

Модель внизу показывает что-то более интригующее: Положение и скорость связаны. Вероятность наблюдения за определенной позицией зависит от того, какая у вас скорость:

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

Подобные отношения крайне необходимы для мониторинга, поскольку они дают нам больше данных: Одна оценка раскрывает нам что-то о том, какими могли бы быть другие. Более того, это цель Кальмановского канала, мы должны сокрушить как можно больше данных из наших сомнительных оценок!

Эта связь улавливается чем-то, что многие называют ковариационной основой. Проще говоря, каждый компонент решетки Σij – это уровень связи между переменной состояния ith и переменной состояния jth. (Возможно, у вас есть возможность понять, что ковариационная сеть симметрична, что подразумевает, что она не влияет на вероятность того, что вы поменяете местами I и j). Ковариационные сети регулярно называются “Σ”, поэтому мы называем их компоненты “Σij”.