Фільтри Калмана простими словами: від першого кроку до чорної магії
- Інженерія , Освіта
- 07 Apr, 2026
Компаньйон до KalmanSim — без жодного PhD.
Яку задачу ми розв’язуємо
Уявіть, що ви шукаєте свою кішку у темній квартирі. Ви приблизно знаєте, де вона була п’ять хвилин тому (на дивані). Ви також маєте шумний сенсор — ваші вуха — який вловлює слабке шарудіння, але незрозуміло, звідки саме воно йде. Може це вона, а може холодильник.
Що ви робите? Ви поєднуєте дві недосконалі частини інформації:
- Ваше передбачення — ґрунтуючись на тому, де вона була, де вона ймовірно зараз
- Ваше вимірювання — поточне зашумлене показання сенсора
Ви не довіряєте жодному повністю. Ви змішуєте їх, зважено за надійністю кожного. Чим надійніша ваша модель руху кішки — тим більше ви довіряєте передбаченню. Чим надійніші ваші вуха — тим більше ви довіряєте вимірюванню.
Це і є вся ідея фільтра Калмана.
Фільтр Калмана — це математично оптимальний спосіб робити це змішування — і він водночас відстежує власну невизначеність. Він знає, коли він впевнений, а коли ні. Як ми побачимо, різні «варіанти» фільтра існують, бо світ кидає нам дедалі дивніші задачі, які ламають базову версію.
Спочатку — словник
Перш ніж занурюватись, домовимося про значення слів.
| Слово | Що насправді означає |
|---|---|
| Стан | Те, що ви намагаєтесь оцінити (позиція, швидкість, температура…) |
| Вимірювання | Те, що сенсор насправді повідомляє — шумно, частково, іноді хибно |
| Передбачення | Де ви думаєте, що стан зараз, на основі моделі світу |
| Оновлення | Корекція передбачення за допомогою вимірювання |
| Коваріація | Хитрий спосіб сказати «наскільки я непевний» — матриця, що кодує впевненість |
| Інновація | Сюрприз — наскільки вимірювання відрізняється від передбаченого? |
| Підсилення Калмана | Наскільки довіряти цьому вимірюванню проти передбачення? Число від 0 до 1 |
Високе підсилення означає: більше довіряй вимірюванню, я не впевнений у моделі. Низьке підсилення означає: здебільшого ігноруй вимірювання, моя модель чудова.
Базовий цикл: Передбач → Виміряй → Онови
Кожен «смак» фільтра Калмана, яким би екзотичним він не був, виконує один і той самий тристоронній танець:
┌──────────┐ ┌──────────────┐
│ ПЕРЕДБАЧ │───▶│ ОНОВЛЕННЯ │
└──────────┘ └──────────────┘
▲ │
│ │
└── новий стан ──┘
▲
вимірювання
Крок 1 — Передбачення. Використайте модель світу, щоб припустити, де стан зараз, ґрунтуючись на тому, де він був. Передбачте також свою невизначеність.
Крок 2 — Вимірювання. Отримайте показання сенсора. Обчисліть інновацію — наскільки ви здивовані цим показанням? Обчисліть S — повну невизначеність цієї інновації.
Крок 3 — Оновлення. Змішайте передбачення з вимірюванням. Співвідношення змішування — це підсилення Калмана K. Оновіть і свою невизначеність — після кожного вимірювання ви стаєте принаймні трохи впевненішими.
Потім повторюйте. Кожен крок часу. Назавжди.
Фільтр збігається — тобто з часом, навіть починаючи з дикої невизначеності, він наближається до істинного стану. Це одна з найкрасивіших властивостей в усій інженерії.
Інтерактивний симулятор — KalmanSim
Частина 1: Лінійний фільтр Калмана (LKF)
Також: KF, класичний KF, стандартний KF
Припущення
LKF — елегантний оригінал 1960 року, винайдений Рудольфом Калманом, коли він працював у NASA над навігацією апарата Аполлон до Місяця. Він працює ідеально — і під «ідеально» я маю на увазі доведено, математично оптимально — за однієї умови:
Все лінійне, а весь шум — гаусівський.
«Лінійне» означає, що подвоєння входу дає подвоєння виходу. Ракета зі швидкістю 10 м/с за 1 секунду пройде рівно 10 метрів. Позиція на наступному кроці — рівно стара_позиція + швидкість × dt.
«Гаусівський» означає, що шум — і у процесі, і в сенсорі — має форму дзвону. Без важких хвостів, без дивних піків, без систематичних зміщень. Просто випадковий шум навколо нуля.
Математика, м’яко
Стан у момент часу k — це вектор x. Для простого 1D-трекінгу: x = [позиція, швидкість].
Фільтру потрібні чотири матриці:
F — матриця переходу. Кодує модель того, як стан еволюціонує. Для постійної швидкості: якщо ви були в позиції p зі швидкістю v, на наступному кроці ви в p + v·dt з тією ж швидкістю v.
F = | 1 dt |
| 0 1 |
Помножте F на ваш стан [p, v] і отримаєте [p + v·dt, v]. Це і є передбачення.
H — матриця спостереження. Кодує, що насправді вимірює сенсор. Якщо сенсор міряє лише позицію (не швидкість):
H = | 1 0 |
Множення H на стан [p, v] дає просто p — позицію — яка порівнюється з вимірюванням.
Q — коваріація шуму процесу. Наскільки реальність відхиляється від моделі? Поривчасті вітри? Несподіване прискорення? Q кодує невпевненість у самій моделі. Велика Q = «я не довіряю своїй фізиці». Мала Q = «моя модель чудова».
R — коваріація шуму вимірювання. Наскільки шумний сенсор? Лазерний далекомір має малу R. Споживчий GPS — велику R. Зазвичай береться з даташита сенсора.
Рівняння
Передбачення:
x⁻ = F · x (передбачений стан)
P⁻ = F · P · Fᵀ + Q (передбачена коваріація)
Вимірювання:
y = z − H · x⁻ (інновація: наскільки сюрпризне вимірювання?)
S = H · P⁻ · Hᵀ + R (повна невизначеність інновації)
Оновлення:
K = P⁻ · Hᵀ · S⁻¹ (підсилення Калмана)
x = x⁻ + K · y (оновлений стан)
P = (I − K·H) · P⁻ (оновлена коваріація)
Це все. Одинадцять рядків математики. Шість рівнянь. Фундамент цілої інженерної дисципліни.
Підсилення Калмана, інтуїтивно
K — це магія. Подивіться на рівняння оновлення: x = x⁻ + K · y.
- Якщо K = 0, вимірювання повністю ігнорується. Фільтр повністю довіряє передбаченню.
- Якщо K = 1 (спрощено), фільтр викидає передбачення і використовує лише вимірювання.
- Зазвичай K десь посередині.
K → 0 коли шум вимірювання R величезний (поганий сенсор) або коли P⁻ крихітна (фільтр уже дуже впевнений).
K → 1 коли шум R крихітний (ідеальний сенсор) або коли P⁻ величезна (фільтр повністю загублений).
Фільтр автоматично знаходить правильний баланс. Саме тому він «оптимальний» — за заданих припущень про Q та R, жоден інший лінійний оцінювач не зможе зробити краще.
Коли LKF блищить?
- Трекінг човна в морі — приблизно постійна швидкість, GPS-вимірювання
- Оцінка температури кімнати — повільний дрейф, шум термометра
- Згладжування сигналу — шумні показання напруги з сенсора
- Числення шляху — поєднання акселерометра з фіксаціями позиції
- Будь-яка система, де фізика дійсно лінійна
Коли LKF провалюється?
Як тільки ваша система стає нелінійною, LKF починає буксувати. І провалюється він тихо — числа все одно виходять, вони просто неправильні. Жодної помилки. Жодного попередження. Просто оцінки тихо розходяться.
Приклади нелінійностей, які ламають LKF:
- Радарні вимірювання азимута — дальність і кут до цілі містять арктангенс і відстань
- Координовані повороти — нахил літака містить тригонометричні залежності
- Гравітація на маятнику — сила відновлення це sin(θ), а не θ
- Робот з одометрією коліс — курс інтегрується нелінійно в позицію
Час для розширеного фільтра.
Частина 2: Розширений фільтр Калмана (EKF)
Робочий кінь аерокосмосу, робототехніки та навігації
Основна ідея
Відповідь EKF на нелінійність прекрасно прагматична: лінеаризуй на кожному кроці.
Замість вимагати лінійних функцій усюди, EKF каже: «гаразд, справжня функція крива. Але якщо я достатньо близько до поточної оцінки, я можу апроксимувати її як локально лінійну за допомогою розкладання Тейлора». Він обчислює якобіан — матрицю перших похідних — у поточній робочій точці і використовує його замість F.
Це як навігація через малювання прямої лінії, дотичної до кривої там, де ви стоїте. Не ідеально, але непогано, якщо ви оновлюєтесь часто.
Нові інгредієнти
Тепер динаміка стану та функція вимірювання можуть бути довільними нелінійними функціями:
x(k+1) = f(x(k), u(k)) + шум (нелінійна модель процесу)
z(k) = h(x(k)) + шум (нелінійна модель вимірювання)
Хитрість: замініть F та H їхніми якобіанами, обчисленими в поточній оцінці:
F_jacobian = ∂f/∂x в точці x = x̂
H_jacobian = ∂h/∂x в точці x = x̂
Якобіан — це просто матриця часткових похідних, де кожен елемент каже: «наскільки змінюється вихід i, якщо я зміщу вхід j?»
Робочий приклад: радарний трекінг
Ви відстежуєте літак радаром. Стан — [x_позиція, y_позиція, x_швидкість, y_швидкість].
Ваше вимірювання — [дальність, азимут]:
дальність = √(x² + y²)
азимут = atan2(y, x)
Жодна не лінійна за [x, y]. Але EKF справляється. Якобіан h за [x, y]:
∂дальність/∂x = x / √(x² + y²)
∂дальність/∂y = y / √(x² + y²)
∂азимут/∂x = −y / (x² + y²)
∂азимут/∂y = x / (x² + y²)
В поточній оцінці це дає локальну лінійну апроксимацію, яку фільтр використовує як H в LKF.
Коли EKF блищить
- GPS/INS навігація — поєднання інерційних вимірювань з фіксаціями GPS
- Одночасна локалізація і картографування (SLAM) — роботи будують карту, рухаючись по ній
- Оцінка орієнтації космічного апарата — кватерніонна динаміка нелінійна
- Сенсорна фьюжн з пасивним радаром — без знання дальності, акустичні масиви
- Будь-яка слабко-помірно нелінійна система
EKF — де-факто стандарт в авіації, ракетах та космічних апаратах. Бортовий комп’ютер Apollo використовував щось дуже близьке до EKF. Він зараз працює у GPS-чипі вашого телефона.
Коли EKF провалюється
EKF має три ахіллесові п’яти:
1. Сильна нелінійність. Якщо функція круто згинається, лінійна апроксимація жахлива. Уявіть апроксимацію крутого повороту прямою лінією — ви злетите з дороги. EKF розходиться (оцінки вибухають) у режимах сильної нелінійності.
2. Якобіан треба виводити вручну (або через автодиференціювання). Для складних систем виведення ∂f/∂x болісне і схильне до помилок. Один неправильний знак — і фільтр назавжди дає тихо неправильні відповіді.
3. Негаусівський шум перекручується. Пропускання негаусівського розподілу через нелінійну функцію створює ще більш негаусівський розподіл. EKF все одно апроксимує його гаусівським.
Коли EKF провалюється, є два кращих варіанти.
Частина 3: Сигма-точковий фільтр Калмана (UKF)
Розумніший за EKF, без потреби в похідних
Прозріння
Джеффрі Уллманн, інформатик, поставив провокативне питання у 1994: Чи правда, що легше апроксимувати функцію, ніж розподіл?
Його відповідь: ні, навпаки. Це стало Сигма-точковим перетворенням, серцем UKF.
Легше апроксимувати ймовірнісний розподіл, ніж лінеаризувати функцію.
Замість лінеаризувати f і пропускати гаусіан через апроксимацію, UKF пропускає ретельно обраний набір точок-зразків — сигма-точок — прямо через справжню нелінійну функцію f, а потім реконструює статистику виходу з пропущених точок.
Жодних якобіанів. Жодних похідних. Жодної лінеаризації.
Сигма-точкове перетворення
Для гаусіана з середнім x і коваріацією P, перетворення обирає 2n+1 сигма-точок (де n — розмір стану):
χ₀ = x (саме середнє)
χᵢ = x + (√((n+λ)P))ᵢ для i=1..n (розкид у позитивному напрямку)
χᵢ = x − (√((n+λ)P))ᵢ₋ₙ для i=n+1..2n (у негативному напрямку)
Де λ — параметр, що контролює, як далеко розкидані точки.
Кожна сигма-точка має вагу — центральна точка отримує більшу вагу, зовнішні — меншу. Сума ваг = 1.
Потім ви пропускаєте кожну сигма-точку через нелінійну функцію:
γᵢ = f(χᵢ)
І реконструюєте статистику виходу:
x⁻ = Σ Wᵢ · γᵢ
P⁻ = Σ Wᵢ · (γᵢ − x⁻)(γᵢ − x⁻)ᵀ + Q
Решта фільтра (оновлення вимірювання, обчислення підсилення) працює так само, як LKF/EKF.
Чому це краще за EKF?
Магія в точності апроксимації. UKF захоплює істинне середнє та коваріацію перетвореного розподілу до другого порядку (технічно третього для симетричних розподілів). EKF — лише до першого.
Подумайте так:
- EKF: малює одну дотичну лінію в поточній точці і використовує її скрізь
- UKF: обирає кілька точок, що ідеально захоплюють форму вашої невизначеності, пропускає їх через справжню функцію і дивиться, де вони опинилися
UKF майже завжди точніший за EKF. Ціна — трохи більше обчислень (2n+1 виклику функції замість одного) і кілька параметрів для тюнінгу (α, β, κ).
Робочий приклад: маятник
Рівняння руху маятника:
θ̈ = −(g/L) · sin(θ)
Цей sin(θ) глибоко нелінійний. Для малих кутів sin(θ) ≈ θ, тому LKF працює. Для великих кутів (90°) апроксимація жахлива — sin(90°) = 1.0, але 90° у радіанах ≈ 1.57.
EKF лінеаризує sin(θ) як cos(θ₀), що трохи краще, але деградує на великих кутах.
UKF посилає сигма-точки [θ−Δ, θ, θ+Δ] через справжній sin(), бачить, де вони опинилися, і коректно фіксує нелінійне спотворення.
Параметри тюнінгу UKF
| Параметр | Що робить | Типове значення |
|---|---|---|
| α | Контролює розкид сигма-точок | 1e−3 до 1 |
| β | Кодує знання про форму розподілу (2 = гаусіан) | 2 |
| κ | Вторинне масштабування | 0 або 3−n |
З цих значень: λ = α²(n+κ) − n. Неправильні значення можуть зробити фільтр гіршим за EKF.
Коли UKF блищить
- Оцінка орієнтації — кватерніонна кінематика дуже нелінійна
- Контроль хімічних процесів — кінетика реакцій часто сильно нелінійна
- Фінанси — моделі стохастичної волатильності
- Коли неможливо вивести якобіан аналітично — просто закодуйте f() і нехай UKF розбирається
- Коли EKF розходиться і потрібна заміна
Коли UKF не справляється
- Дуже високовимірні стани — 2n+1 сигма-точок стає дорогим для n ≥ 100
- Сильно негаусівські розподіли — потрібен фільтр частинок
- Обмеження обчислень — у вбудованих системах навіть 2n+1 викликів — забагато
Частина 4: Інші нелінійні фільтри, що варто знати
Кубатурний фільтр Калмана (CKF)
Близький родич UKF, запропонований у 2009. Замість сигма-точкових правил використовує 2n кубатурних точок, рівномірно розподілених на сфері. Чисельно стабільніший за UKF у високих вимірах.
Фільтр частинок (PF)
Коли гаусівські припущення повністю ламаються — наприклад, людина у будівлі, яка може бути в будь-якому з п’яти коридорів — фільтр частинок є відповіддю. Замість середнього і коваріації він підтримує тисячі «частинок» (гіпотез), кожна з вагою.
- Плюси: будь-який розподіл, мультимодальність, сильна нелінійність
- Мінуси: дорогий (тисячі зразків на крок), страждає від виродження частинок
PF — теоретично правильне розв’язання довільної баєсівської оцінки. Усі інші фільтри тут — його апроксимації.
Фільтр Калмана у формі кореня
Не інший алгоритм, а чисельно стабільна реалізація KF/EKF/UKF. Замість зберігати P, зберігає фактор Холецького (квадратний корінь). Запобігає втраті позитивної визначеності через помилки з рухомою комою.
Інформаційний фільтр
Математично еквівалентний KF, але параметризований інформаційною матрицею (інверсія коваріації). Ініціалізація з повним незнанням (P → ∞) стає тривіальною (інформація = 0). Корисний у розподіленій сенсорній фьюжн.
Частина 5: Фільтр взаємодіючих множинних моделей (IMM)
Коли ви не знаєте, яка модель правильна — запускайте всі одночасно
Мотивація
Усі фільтри вище припускають, що ви знаєте модель системи. Але що, якщо ні?
Розглянемо трекінг винищувача:
- Іноді він летить прямо (модель постійної швидкості)
- Іноді виконує координований поворот (постійна швидкість повороту)
- Іноді пікірує або набирає висоту (модель вертикального маневру)
Ви не знаєте, в якому режимі. Одномодельний фільтр буде:
- Відставати під час маневрів, якщо налаштований під прямий політ
- Тремтіти під час прямого польоту, якщо налаштований під агресивні маневри
IMM розв’язує це, запускаючи кілька моделей одночасно і змішуючи їхні виходи залежно від того, наскільки добре кожна модель пояснює поточні вимірювання.
Це як мати трьох друзів-детективів, кожен спеціалізується на іншому сценарії. Ви слухаєте всіх, але зважуєте їхні думки за тим, наскільки добре їхні передбачення відповідали реальності останнім часом.
Архітектура
┌─────────────────────────────────────────────────┐
│ ФІЛЬТР IMM │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │Модель 1 │ │Модель 2 │ │Модель 3 │ │
│ │ (LKF) │ │ (EKF) │ │ (UKF) │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
│ └─────────────┴─────────────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ ЗМІШУВАННЯ │ │
│ │ (ваги) │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ ВИХІДНА │ │
│ │ ОЦІНКА │ │
│ └─────────────┘ │
└─────────────────────────────────────────────────┘
Чотири кроки IMM
Крок 1 — взаємодія моделей (змішування). Кожна модель отримує «змішаний» початковий стан, обчислений як зважена комбінація поточних оцінок усіх моделей. Ваги беруться з ймовірності того, що кожна модель активна, помноженої на ймовірність переходу між моделями. Цей крок робить IMM «взаємодіючим», а не просто «паралельними фільтрами».
Крок 2 — фільтрація, обумовлена режимом. Запустіть кожен фільтр незалежно з його змішаним початковим станом.
Крок 3 — оновлення ймовірності режиму. Оновіть ймовірність того, що кожна модель активна, на основі правдоподібності поточного вимірювання.
Якщо Модель 1 (прямий політ) передбачила літак на [100, 200], а радар каже [100, 205], Модель 1 нагороджується.
Функція правдоподібності для гаусівського шуму:
Λᵢ = (1 / √(2π|Sᵢ|)) · exp(−0.5 · yᵢᵀ · Sᵢ⁻¹ · yᵢ)
де yᵢ — інновація моделі i, Sᵢ — її коваріація.
Крок 4 — об’єднання виходу. Фінальна оцінка — зважене за ймовірностями середнє оцінок усіх моделей:
x̂ = Σ μᵢ · x̂ᵢ
P = Σ μᵢ · [Pᵢ + (x̂ᵢ − x̂)(x̂ᵢ − x̂)ᵀ]
де μᵢ — поточна ймовірність моделі i.
Матриця ймовірностей переходу
IMM потребує матрицю переходу Маркова — наскільки ймовірний перехід системи з режиму i в режим j за один крок?
Для трирежимного трекера:
з прямого з повороту з підйому
у прямий: [ 0.90 0.05 0.05 ]
у поворот: [ 0.05 0.90 0.05 ]
у підйом: [ 0.05 0.05 0.90 ]
Це каже: цільова система залишається в поточному режимі 90% часу і переходить в інший 5% часу.
Що робить IMM особливим
- Автоматичне виявлення режиму: ймовірності μᵢ кажуть, що система робить зараз. Якщо μ₂ (поворот) стрибає до 0.9, літак повертає.
- Плавні переходи: немає різкого перемикання між моделями.
- Обмежені обчислення: фіксована вартість (один фільтр на модель на крок).
- Будь-яка суміш типів фільтрів: Модель 1 — LKF, Модель 2 — EKF, Модель 3 — UKF.
Класичні сценарії IMM
Трекінг маневруючої цілі — оригінальне застосування. Три моделі: постійна швидкість, постійна швидкість повороту, постійне прискорення. Використовується в радарах УВС, військових системах та ракетному наведенні.
Трекінг автомобілів — пряма їзда (LKF), поворот на перехресті (EKF), задній хід. Використовується в системах ADAS.
Виявлення несправностей — Модель 1 — нормальний режим, Модель 2 — несправний сенсор. IMM стає детектором несправностей у реальному часі.
Моніторинг здоров’я конструкцій — міст переходить між нормальним і пошкодженим режимами вигину.
Обмеження IMM
- Набір моделей має покривати реальність: якщо справжній режим відсутній — фільтр дає мутну відповідь.
- Матрицю переходу важко налаштувати: неправильні значення дають повільне або тремтливе перемикання.
- Зростає з кількістю моделей: 10 моделей — 10 паралельних фільтрів.
- Усе ще гаусівський у кожному режимі: для негаусівського шуму потрібні фільтри частинок усередині кожного режиму.
Таблиця порівняння
| Властивість | LKF | EKF | UKF | IMM |
|---|---|---|---|---|
| Нелінійність | ✗ | ✓ (слабка-помірна) | ✓ (помірна-сильна) | ✓ (залежить від під-фільтрів) |
| Якобіани | ✗ | ✓ (виводити вручну) | ✗ | залежить |
| Вартість обчислень | низька | низька | середня (2n+1) | середня-висока (на модель) |
| Кілька режимів | ✗ | ✗ | ✗ | ✓ |
| Оптимальний (лінійний/гаус) | ✓ | ✗ | ✗ | ✗ |
| Точність (нелінійний) | погана | помірна | добра | добра (на режим) |
| Чисельна стабільність | добра | може розійтись | загалом добра | загалом добра |
| Складність налаштування | низька | середня | середня | висока |
| Найраніше використання | 1960 (Apollo) | 1960-ті (аерокосмос) | 1994 (робототехніка) | 1988 (трекінг) |
Гід прийняття рішень
Чи ваша система лінійна (або достатньо близько)?
├── Так → Використовуйте LKF. Він оптимальний.
└── Ні → Нелінійність слабка? (гладкі функції, малі кути)
├── Так → Спробуйте EKF. Простий, швидкий, зазвичай достатній.
│ └── Розходиться? → Перейдіть на UKF.
└── Ні → Використовуйте UKF. Пропустіть EKF.
└── Сильно негаусівський / мультимодальний?
└── Так → Фільтр частинок.
Ваша система перемикається між динамічними режимами?
└── Так → Загорніть все вище в IMM.
Матриці: глибший погляд
Q — шум процесу: «наскільки я довіряю моделі?»
Q = | σ²_pos 0 |
| 0 σ²_vel |
- Велика Q: «моя фізика груба». Фільтр більше довіряє вимірюванням, реагує швидше, але шумнішим.
- Мала Q: «я знаю динаміку точно». Фільтр більше довіряє передбаченням, плавніший, але повільно реагує.
Порада з налаштування: почніть з Q = σ²_model · I і налаштовуйте. Якщо оцінки занадто плавні і відстають — збільшіть Q. Якщо занадто шумні — зменшіть.
R — шум вимірювання: «наскільки я довіряю сенсору?»
Зазвичай береться з даташита або з калібрувальних експериментів.
- Велика R → мале K → плавно, але повільно
- Мала R → велике K → шумно, але швидко
P — коваріація стану: «наскільки я непевний зараз?»
P еволюціонує динамічно. Зменшується з часом, коли фільтр стає впевненішим. Якщо росте — щось не так.
Поширені режими відмови
Розходження фільтра
Симптоми: P вибухає, оцінки летять у нікуди. Причини: Q або R = 0, модель занадто неправильна, сильна нелінійність поза межами EKF. Виправлення: перевірте Q > 0, збільшіть Q, перейдіть на UKF.
Самовпевненість фільтра
Симптоми: P крихітна, але помилки великі. Причини: Q занадто мала. Виправлення: збільшіть Q.
Зростаюча інновація
Симптоми: інновації (y) зростають замість залишатися біля нуля. Причини: модель дрейфує від реальності або зміщення сенсора. Виправлення: додайте стан зміщення, збільшіть Q.
Шумні оцінки
Симптоми: вихід стрибає більше, ніж сирі вимірювання. Причини: Q занадто велика, R занадто мала. Виправлення: зменшіть Q або збільшіть R.
IMM: всі ваги моделей рівні
Симптоми: ймовірності μᵢ висять близько 1/N. IMM не може визначити активний режим. Причини: моделі занадто схожі, або шум R занадто великий. Виправлення: зробіть моделі більш різними, зменшіть R.
Історичний контекст
1960 — Рудольф Калман публікує «A New Approach to Linear Filtering and Prediction Problems». NASA одразу впізнає важливість. Фільтр впроваджується в навігаційний комп’ютер Apollo.
1960-ті–1970-ті — EKF розвивається в аерокосмічній спільноті для задач навігації ракет і апаратів.
1988 — Концепція IMM (у сучасній формі) опублікована Бломом і Бар-Шаломом для трекінгу маневруючих цілей в УВС.
1994 — Джеффрі Уллманн пропонує сигма-точкове перетворення в Оксфорді. Саймон Джульєр і Уллманн публікують UKF у 1997.
Кінець 1990-х — фільтр частинок набирає обертів зі здешевленням обчислень.
2000-ні — фільтри Калмана стають всюдисущими у споживчих пристроях. Ваш телефон, AirPods, автопілоти.
Сьогодні — гібриди нейромережа–фільтр Калмана, де модель f або h — навчена нейромережа, а не виведена вручну.
Що показує симулятор
KalmanSim проводить вас базовим циклом LKF крок за кроком, роблячи кожну математичну операцію видимою:
- Крок передбачення: дивіться, як обчислюються x⁻ і P⁻ у реальному часі
- Крок вимірювання: бачите інновацію y і як вона залежить від сюрпризу вимірювання
- Крок оновлення: дивіться, як підсилення K балансує передбачення проти вимірювання
Теплові карти матриць виявляють структуру, невидиму у сирих числах — ви бачите, як P починає діагональним і розвиває позадіагональні кореляції.
Збільшуючи Q, можна побачити, як фільтр стає «нервовим». Зменшуючи Q — як він стає «впертим».
EKF, UKF та IMM скоро з’являться у KalmanSim. Кожен покаже сценарії, де LKF ламається.
Подальше читання
- «Optimal State Estimation» Дена Саймона (2006) — найбільш читабельний підручник.
- «Estimation with Applications to Tracking and Navigation» Бар-Шалома, Лі та Кірубараджана — біблія для трекінгу.
- Оригінальна стаття Калмана 1960 — на диво читабельна.
- «Kalman and Bayesian Filters in Python» Роджера Лаббе — безкоштовний підручник на Jupyter.
- «How a Kalman Filter Works, in Pictures» Тіма Бабба — найкращий візуальний вступ.
Якщо стаття була корисною, підтримайте мою роботу
Теги:
- фільтр калмана
- оцінка стану
- сенсорна фьюжн
- Ekf
- Ukf
- Imm
- обробка сигналів
- робототехніка
- інтерактив