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.

Komplementární filtr: dva senzory, jedna konstanta

SensorLab končí u toho, že akcelerometr umí náklon jen v klidu a gyroskop ujíždí. Tahle kapitola je odpověď — a je pozoruhodně levná.

Dvě chyby, které se nepřekrývají

KrátkodoběDlouhodobě
gyroskopvýborný — hladký, rychlý, nezajímá ho gravitacenepoužitelný — drift roste lineárně bez konce
akcelerometrnepoužitelný — každé zrychlení vypadá jako náklonvýborný — gravitace nikam neuteče

Když jeden selhává tam, kde druhý funguje, stačí je rozdělit podle frekvence. Nad překřížením gyroskop, pod ním akcelerometr:

y[k] = a·(y[k−1] + ω[k]·Δt) + (1−a)·θacc[k] ,   a = ττ+Δtjeden řádek, jedna konstanta
0.010.020.050.100.200.501.02.05.0102050-30-20-100.01/2πτfrekvence [Hz]dBcesta akcelerometrucesta gyroskopusoučet
Frekvence překřížení 0,318 Hz. Součet obou cest se od jedničky liší nejvýš o 5,22·10⁻¹⁵ — tedy přesně.
Ustálená chyba z driftu je 0,025 rad = drift × τ — ohraničená, ne rostoucí.
Zvětši τ: gyroskopu se věří déle, propustí se míň šumu z akcelerometru — a chyba z driftu roste přesně úměrně. Jedno číslo, obě vlastnosti. A dvě cesty se sečtou na jedničku ne přibližně, ale úplně přesně: co jedna nepropustí, propustí druhá.
Růžová je cesta gyroskopu, modrá akcelerometru. Fialová čárkovaná je jejich součet. Táhni τ a všimni si, že se přeložení posouvá, ale součet zůstane přesně na nule dB.

Proč se tomu říká komplementární

Obě cesty se sečtou na přesně jedničku na každé frekvenci. Ne přibližně — přesně. Co jedna nepropustí, propustí druhá; nic se neztratí a nic se nepočítá dvakrát.

A jedna jemnost, která to upřesňuje. Ta přesná jednička platí pro rychlost, kterou rekurze předpokládá, tedy pro zpětnou diferenci (θ[k]−θ[k−1])/Δt. Když do ní pošleš skutečnou derivaci, součet se od jedničky liší o řád Δt·ω — u pomalých dějů zanedbatelně, u rychlých ne. „Cesty se sečtou na jedničku" je tedy tvrzení o diskrétním filtru, ne přírodní zákon.

Ta jedna konstanta dělá všechno

Ustálená chyba z konstantního driftu gyroskopu je přesně

θchyba = drift · τohraničená, ne rostoucí

Tohle je celý smysl filtru. Samotná integrace by rostla bez konce; tady se chyba na téhle hodnotě zastaví. Zmenšíš τ a chyba klesne — jenže se propustí víc šumu z akcelerometru. Jedno číslo nastavuje obě vlastnosti naráz, a v tom je jeho elegance i jeho mez.

Co komplementární filtr neumí. Neodhaduje drift, jen ho ohraničí. Když se drift mění s teplotou, chyba se mění s ním a filtr o tom neví. Kalmanův filtr umí mít drift jako součást stavu a odhadovat ho — a to je hlavní důvod, proč se do něj vyplatí jít. Dvanáctá kapitola oba pouští na tentýž záznam.

Vzorce v této kapitole

a — váha komplementárního filtru
a = τ/(τ+Δt) [—] jedna konstanta
θ_err — ustálená chyba z driftu
θ_err = drift·τ [rad] přesně, ne přibližně
f_c — frekvence překřížení
f_c = 1/(2πτ) [Hz] dolní a horní propust