A giroszkóp és a filterek

Ahhoz hogy gyakorlatiasan tudjuk megközelíteni a témánkat, ismernünk kell a gyakorlatot. A Betaflightnak gépünk működtetéséhez több bemenetre is szüksége van, ezek közül az egyik legfontosabb a test mozgása. Több szenzor létezik a mozgások érzékelésére, de ha az acro repülési módra szorítkozunk, márpedig ebben a műfajban előbb-utóbb mindenki ehhez érkezik meg, akkor a giroszkóp a szükséges szenzor.
Leegyszerűsítve a giroszkóp egy szenzor, ami egy vagy több tengely szögsebességét méri, a Betaflight esetében ezek közül háromra van szükség, ezek a yaw, pitch és a roll.
Sajnos a mért szögsebességeknek része minden mozgás ami a testet éri, beleértve a motorok, propellerek által okozott elkerülhetetlen rezgéseket, a turbulens levegő okozta rázkódást (prop wash) illetve a szenzort zavaró külső tényezőket, például elektromágneses teret, amit a vezetékekben folyó áram kelt.

MPU6000

Az irányítás acro módban kizárólag szögsebesség alapján történik. Amikor a stick középen áll, az adott tengelyen az elvárt szögsebesség 0°/s, ezzel szemben teljes stick kitérés esetén a beállított rate-ek szerinti maximális szögsebesség az elvárt, például 600°/s. Minden stick állásnál a PID kontroller feladata, hogy megtegyen minden tőle telhetőt az elvárt szögsebesség megtartására.

Mivel a gépünk törvényszerű hogy remeg, ezért a mért szögsebesség sosem lesz 0°/s, az egyik pillanatban -20°/s, a másik pillanatban +20°/s, mivel rezgésről van szó, tehát oda-vissza mozog a gép.

A cél, hogy a PID kontrollerhez, mivel ez végzi az irányítást, már csak a hasznos, zajoktól mentes mozgás érkezzen, ezért van szükségünk a filterekre. A filterek segítségével csillapíthatjuk, figyelmen kívül hagyhatjuk a számunkra irreleváns mozgásokat, például a fentebb is említett tökéletlen propellerek, viseletes csapágyak okozta rezgéseket. Ezekre a mozgásokra nem vagyunk kíváncsiak, mivel nem a szél, nem a turbulencia, nem a pilóta keze hanem a rendszer tökéletlensége okozza, ezért az nem is tudja ezeket megoldani – tehát nincs vele dolga a PID kontrollernek. Ezzel ki is emelném azt a tévhitet, ami szerint modern filterezéssel PID tune-olni sem kell. Ha a helytelen PID értékek miatt repül hitványul egy gép, azt semmiféle filter sem fogja tudni megoldani.

A rezgéseket frekvencia szerint tudjuk szűrni, ez természetesen összefüggésben van a motorok fordulatszámaival. De honnan is jönnek ezek a frekvenciák?
Tételezzük fel, hogy az egyik motor sérült, ami épp 10.000 fordulat/perc (RPM) sebességgel forog. Ez másodpercenként 10.000/60, tehát ~167 fordulat, így a kiegyensúlyozatlan motor 1 másodperc alatt 167-szer rántja valamelyik tengelyünket pozitív, majd negatív irányba – tehát a frekvencia 167Hz.

Roll tengely – pirossal a filterek előtti, sárgával a filterek utáni szögsebesség

Egy átlagos gép mozgásai repülés közben jellemzően a 0-30Hz, turbulens levegőben, prop wash szituációban 60-100Hz közé esnek. Ez fölött mindent tekinthetnénk zajnak, viszont a filterezés késést is okoz, ami nem csak az irányítás, de a PID kontroller szempontjából is fontos, ezért muszáj csak ott szűrnünk, ahol van, vagy számítunk zajra.

Filterek

Low Pass (aluláteresztő) filterek
Ezek a legegyszerűbb filterek, mind beállítás mind működés szintjén. Az egyetlen feladatuk az, hogy bizonyos érték alatt engedjenek át, felette pedig csillapítsanak. Nagyon fontos, hogy a low pass filter nem élesen, hanem átmenettel csillapít a beállított érték fölött. Ha zaj 250Hz, nem állíthatjuk a cutoff értéket 250Hz-re, ugyanis ott a csillapítás közel nulla – minél távolabb állítjuk a cutoff értéket a szűrendő frekvenciától, annál jobban fogja azt csillapítani, de vigyázzunk, hogy ne kezdjük el csillapítani a releváns mozgást, tehát a 100Hz alatti történéseket.
Alapvetés hogy minél alacsonyabbra állítjuk a cutoff értéket, annál erősebb a szűrés – viszont annál nagyobb a késés (latency) amit a filter okoz. Ez a késés a gyakorlatban nem minket hátráltat, hanem a PID kontrollert. Meg kell találnunk az arany középutat a szűrés erőssége és a késés között, ha túl gyenge a szűrés, a zajra is reagálni fog a PID kontroller, ha túl erős, akkor egyrészt a valódi mozgásra nem fog kellőképp reagálni, másrészt a késés miatt egyre régebbi történésekre kell reagálnia.

Betaflight-ban kétféle low pass filter használatos, a BIQUAD és a PT1. A BIQUAD görbéje meredek, pontosabban lehet vele beállítani a csillapítandó tartomány kezdetét, viszont nagy a késése, ennél fogva manapság már nem ez a preferált. A PT1 görbéje nem annyira meredek, így nem olyan könnyű vele „célozni”, viszont a késése jóval alacsonyabb mint a BIQUAD filternek. Az aktuális (4.2) Betaflight alapbeállításai már egyáltalán nem tartalmaznak BIQUAD filtert.
Ha erősebb szűrésre van szükség, inkább használjatok több PT1 filtert, mint kevesebb BIQUAD-ot.

A Betaflight 4.2 default beállításai – 2 aktív és egy inaktív PT1 filter.

Notch (sávzáró) filter
A Notch filter forradalmat jelentett nem csak a Betaflight, de minden más szoftverben is, hiszen ezekkel nagyon hatékonyan és célzottan, egy konkrét frekvenciát és annak szomszédos tartományát tudjuk csillapítani, nagyon alacsony késéssel. Anno ezt blackbox naplók elemzésével tudtuk beállítani, viszont ma már alap beállításként dinamikusan teszi meg helyettünk a Betaflight, ráadásul repülés közben. Ettől függetlenül van lehetőségünk 2 fix notch filter bekapcsolására, de ezekre csak nagyon szélsőséges esetekben, mondhatni soha nincs szükség.

Betaflight 4.2.4 – Kikapcsolt fix és bekapcsolt dynamic notch filterek.

Az OSD beállítások között biztos láttátok már a semmitmondó „Peak FFT” feliratot, ez bizony az a valami, ami alapján a dinamikus filterek működnek, és amihez rövid az élet, de aki nem tudna aludni éjszaka, nyugodtan olvasson róla: Fast Fourier transform.

RPM filter
Fentebb olvashattátok hogy mennyire jó a dinamikus notch filter, de sajnos nem tökéletes, ugyanis egy, a giroszkóp értékeiből számolt frekvencia alapján dolgozik, pedig a gépen nem csak egy zajt keltő alkatrész, és ezzel szűrendő frekvencia van.
Az RPM filter nem más, mint (az alapbeállítások szerint) motoronként 3, így tengelyenként 12, összesen 36 nagyon szűk notch filter, amik a motorok fordulatszáma alapján szűrik azok zaj-frekvenciájának 3 harmonikusát minden tengelyen. Egyértelműen ez a jövő, mivel csak azt és csak olyan szélességű filterekkel szűrjük, amire feltétlenül szükség van, kizárva ezzel a fölöslegesen késést okozó, sokszor haszontalan szűrőket.
A versenyzőknek a sérült propellerekkel szemben ad nagy toleranciát, a freestyle pilótákat pedig középgázon jelentkező remegésektől (mid throttle oscillations) tudja megszabadítani. Az RPM filter helyes beállításáról hamorosan nálunk is olvashatsz.

Ajánlott irodalom
Wikipédia – Forgómozgás
Wikipédia – Frekvencia
Wikipédia – Hertz
Wikipédia – Fourier-transzformáció
Wikipédia – Fordulatszám

Releated