FilterLab šum a odhad stavu

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Šum, a proč se nedá odfiltrovat

Senzor je vybraný, zapojený a převedený na číslo. To číslo ale není veličina, kterou jsi chtěl: skáče, i když se nic neděje, a když ho zintegruješ, ujede ti kamsi pryč. První reakce bývá „dám tam filtr". Tahle kapitola je o tom, proč tou větou nic nekončí, ale všechno začíná.

Kde tahle labka sedí

SensorLabnapětíFilterLabčíslo, kterému lze věřitControlLabakční zásahstrojSensorLab končí u napětí. ControlLab začíná u čísla. Tohle je ten kus mezi tím.
FilterLab je ten článek mezi senzorem a regulátorem, který se v učebnicích obvykle přeskočí — a přitom v něm bydlí většina problémů, které pak vypadají jako problémy regulace.

Vymezení proti sousedům, ať se to nemíchá:

LabkaOtázka
SensorLabjak vznikne napětí a co ho zkresluje — fyzika převodu
FilterLabjak z toho napětí dostat číslo, kterému se dá věřit
ControlLabco s tím číslem udělá smyčka a proč jí vadí zpoždění
ServoLabfiltr uvnitř smyčky proti mechanické rezonanci

Dvě chyby, které jdou proti sobě

Každá metoda v téhle labce — od klouzavého průměru po rozšířený Kalmanův filtr — dělá totéž rozhodnutí, jen jinak zapsané:

věř měření  ⟶  projde šum   |   věř modelu  ⟶  opozdíš sejediný kompromis, který v této labce je

Není mezi nimi nic, co by obě chyby zmenšilo naráz. Filtr, který propustí míň šumu, o něco zaostane. Filtr, který nezaostane, propustí šum. Metody se liší jen v tom, jak se ten bod na úsečce vybírá — rukou, časovou konstantou, nebo kovariancemi, které si to spočítají samy — a jestli se smí za běhu měnit.

0.01.02.03.0-1.00.01.02.0čas [s]veličinaco řekl senzorpravdaprůměr N vzorků
Chyba syrového měření 0,287 → po filtru 0,136. Ale zpoždění je 95 ms = (N−1)/2 vzorků.
Zvětšuj N a sleduj obě čísla. Šum klesá jako 1/√N, zpoždění roste lineárně. Neexistuje N, které by zlepšilo obojí — a to je celý předmět téhle labky.
Skok, změřený špatně. Táhni délkou průměru: šum klesá jako 1/√N, zpoždění roste jako N/2. Zkus najít N, které zlepší obě čísla naráz — neexistuje.

Čemu se tady říká šum. Všemu, co v měření je a v měřené veličině ne. Patří tam tepelný šum odporu, kvantizace převodníku, rušení z měniče i to, že senzor měří něco trochu jiného, než sis myslel. Poslední jmenované není šum v matematickém smyslu a žádný filtr ho nespraví — ale v datech vypadá stejně, a rozeznat to je práce, kterou za tebe nikdo neudělá.

Čím se šum popisuje

Jedno číslo — efektivní hodnota — stačí zřídka. Pro filtr je potřeba vědět aspoň tohle:

  • Velikost. Směrodatná odchylka σ, nebo efektivní hodnota, je-li střední hodnota nulová. Určuje, o kolik se dá zlepšit.
  • Rozdělení. Gaussovské, nebo s dlouhými chvosty? Průměr je optimální jen pro to první. Osmá kapitola je celá o tom druhém.
  • Barva. Jsou vzorky nezávislé (bílý šum), nebo spolu souvisejí? Průměrování bílého šumu pomáhá jako 1/√N; průměrování driftu nepomáhá vůbec.

Ta třetí položka je ta, kterou lidé přeskakují, a je nejdůležitější. Proto má druhá a třetí kapitola tenhle jediný předmět: jak se vůbec pozná, s jakým šumem má člověk co do činění.

Kdy filtr nepomůže vůbec. Když je chyba systematická — špatná kalibrace, teplotní drift, senzor měřící jinou veličinu. Filtr zmenšuje rozptyl, ne posun. Vyhlazený špatný údaj je pořád špatný, jen teď vypadá důvěryhodně, a to je horší než než když skákal.

Vzorce v této kapitole

σ_N — průměrování bílého šumu
σ_N = σ/√N [—] nezávislé vzorky
t_d — zpoždění klouzavého průměru
t_d = (N−1)/2 · Δt [s] lineární fáze