top of page
Szukaj
Zdjęcie autoraMichał

EmuFlight – część I/III - filtry

Podstawowe wiadomości z zakresu filtrów i ustawień PID poznaliście w tym artykule. Teraz podejdźmy do tematu bardziej kompleksowo. W BetaFlight, EmuFlight, Kiss czy iNav pomimo innych wartości prezentowanych przez PID czy filtry, a czasem i różnych nazw, zarówno PID jak i filtry mają dokładnie to samo zadanie i taką samą zasadę działania.


Zrozumienie jak działają filtry i PID pozwoli nam swobodnie ustawić BetaFlight czy inny program obsługujący kontroler lotu, uzyskując przy tym pożądany efekt (najczęściej).


Po co to komu?

Filtry głównie odpowiedzialne są za odfiltrowanie zakłóceń pochodzących spoza naszego układu i spoza naszego zamierzonego działania: wiatr, zakłócenia elektryczne – które są zmienne w czasie, czy drgania silników, które są zmienne w zależności od obrotów silników (to również zmienna w czasie) itp.


PID natomiast odpowiada za zachowanie naszego drona w odpowiedzi na nasze polecenia – wydajemy polecenie za pomocą aparatury i chcemy aby dron wykonał je dokładnie. Im precyzyjniej dostrojone PID, tym precyzyjniej dron wykona nasze polecenie i z mniejszym opóźnieniem. A im lepiej ustawione filtry, tym mniej czynników zewnętrznych będzie przeszkadzało w wykonaniu tego polecenia.


Poniżej możecie zobaczyć jak wygląda gyro z dodatkowymi zakłóceniami z zewnątrz i bez tych zakłóceń:

Przykład zakłóceń żyroskopu w dronie – zakłócenia elektryczne (z układu zasilania) oraz mechaniczne (luźne kable, długa antena, niedokręcona śrubka itp.)

Przykład zakłóceń żyroskopu w dronie – pomiar na tej samej maszynie co powyżej, jednak z dołożonym kondensatorem, kontroler lotu z tzw. soft mount (na gumowych podkładkach) itd.

Oczywiście zawsze wydajniejsze będą układy, które nie są narażone na zakłócenia od tych, które zakłócenia muszą filtrować, ponieważ wykonują dodatkową pracę. Oznacza to, że im więcej filtrowania wymaga układ (w naszym wypadku - im mniej precyzyjnie ustawimy filtry), tym większe opóźnienia układu w odpowiedzi na nasze „polecenia”, ale też płynniejsza praca układu. Dlatego warto zadbać o „czystość” takiego układu już podczas doboru komponentów, a następnie odpowiedniego ich umiejscowienia i połączenia. Ten temat rozwiniemy w artykule o budowie drona - jak optymalnie dobierać komponenty i złożyć je w całość (możecie być zaskoczeni, jak niektóre tanie komponenty potrafią przewyższać jakością i/lub niezawodnością te wielokrotnie droższe, pochodzące od znanych producentów).


W tym miejscu wypada się pochwalić parametrami dronów, które składamy w naszej Krakowskiej Szkole FPV jako hobbyści, entuzjaści i myślę, że piloci już z jakimś doświadczeniem ;)


To zakłócenia żyroskopu w trybie ‘debug’ – czyli bez żadnych filtrów. Rama AMAXinno F5s z silnikami BrotherHobby GOM 2207 i stack Hobbywing F7conv + 45A mini (20x20 mm). Żyroskop ICM20602:


Filtry omówimy na przykładzie EmuFlight.

EmuFlight oferuje bardzo szeroki wybór filtrów, które możemy użyć. Niektóre filtry wykluczają się nawzajem (ich połączenie powoduje duże opóźnienia) i dają inne odczucia podczas lotu, inne uzupełniają się – jak LPF i IMUF. Z jednej strony nieco komplikuje to sytuacje „nowicjuszom”, z drugiej daje ogromne możliwości dopasowania do własnych upodobań i mnóstwo zabawy z ustawieniami. BetaFlight dopiero w najnowszej wersji 4.3 oferuje takie możliwości, ale część filtrów mimo, iż mają podobne zadanie, realizuje w inny sposób.

Niektóre z filtrów pozostają niezależne od wybranego profilu ustawień, inne zaś można przypisać i zmieniać dla poszczególnych profili. Np. w dronie, który może latać na pakietach zarówno 4s jak i 6s część zakłóceń będzie wyglądała inaczej (głównie d_Term), można więc dla każdego profilu dopasować filtry indywidualnie.


Filtry dostępne w EmuFlight 0.4.0:

- ABG czyli Alfa-Beta-Gamma – jest to filtr na parametrze dTerm lub Gyro i jest to jeden z tych filtrów, które w EmuFlight nie są wymagane, a służą do „dopieszczenia” zachowania naszego drona. Pozwala on na drobne, aczkolwiek czasem istotne, dodatkowe oczyszczenie sygnału dla parametru D i/lub gyro.

Przy włączeniu filtra ABG, zaleca się nieco obniżyć P oraz D, jak i wyłączyć „dynamic_filter” w zakładce CONFIGURATION, ponieważ te dwa filtry razem wraz z LPF, to już zdecydowanie za dużo filtrowania i mogą powodować zauważalne opóźnienia w naszym układzie. ABG dobrze natomiast współpracuje z LPF – low pass filter (opisanym poniżej), który przy współpracy z ABG można nieco podnieść (zwiększenie wartości LPF = zmniejszenie filtrowania).

Poszczególne parametry filtra ABG:

ABG_Alpha warunkuje jak dużo chcemy filtrować – wyższa wartość, to mniej filtrowania. 0 – to wyłączony filtr.

ABG_Boost oznacza jak szybko filtr reaguje na szybkie zmiany ukladu – wyższa wartość, to szybsze tłumienie większych zmian w układzie (mniejsze opóźnienia).

ABG_Half_Life oznacza jaki przedział historii będzie brany pod uwagę – tu wartość podajemy w milisekundach, co oznacza, że wartość 50 = 0,5 sekundy. 0,5 sekundy oznacza zaś, że co 0,5s połowa zebranych danych (ta najstarsza) jest kasowana (nie jest brana dłużej pod uwagę przy obliczaniu „błędów”, które filtr będzie tłumił).

ABG nie jest filtrem bardzo agresywnym, tym samym, nie może zastąpić klasycznego filtra LPF. ABG służy bardziej do uzupełnienia/dopieszczenia filtra LPF podczas precyzyjnego tuningu drona.


LPF – Low Pass Filter – ogólnie, jest to filtr, który tłumi zniekształcenia sygnału powyżej częstotliwości, którą ustawimy – tzw. „cutoff”. Innymi słowy LPF przepuszcza tylko niskie częstotliwości sygnału – od 0Hz do częstotliwości cut-off i tłumi te powyżej częstotliwości cut-off. Jest to jeden z podstawowych filtrów stosowanych w większości kontrolerów lotu (ich oprogramowaniu).

W EmuFlight mamy filtry LPF poziomu 1, 2, 3 i 4 – tzw. PT1, PT2, PT3 i PT4 (co częściowo wprowadzono również w BetaFlight 4.3) i stosowany jest zarówno do żyroskopu (gyro LPF) jak i parametru D (d_term LPF)


Działanie filtra 1 poziomu – PT1 – może zredukować „niechciany” sygnał o połowę od momentu gdzie ustawiliśmy nasz „cutoff”. Filtr 2 poziomu – PT2 – tłumi wyższe częstotliwości „schodząc” bardziej stromo niż PT1. Każdy następny poziom – PT3; PT4 – zachowuje się podobnie jak PT2.

Jedną z możliwości poza ustawieniem faz PT1, PT2… jest BIQUAD. BIQUAD podobnie jak wszystkie PT działa niemal identycznie, poza tym, że jest bardziej agresywny. Ma większe zdolności tłumienia „niechcianego” sygnału, ale powoduje też większe opóźnienia. Stąd jeśli już musimy użyć BIQUAD jako jeden z filtrów, to raczej samodzielnie bez włączania dalszych PT2 itp. czy dynamic filter (nieco inaczej ma się sprawa w BetaFlight, gdzie dynamic filter na gyro + biquad na d_Term jest ok (oczywiście w określonych sytuacjach).


Filtry LPF w EmuFlight – podobnie jak w BetaFlight – ustawiamy niezależnie dla żyroskopu ‘gyro’ i parametru D ‘d_term’. W EmuFlight jednak mamy też możliwość ustawić wartości filtrów niezależnie dla każdej osi – Pitch, Roll, Yaw. Stąd też Blackbox w EmuFlight dla parametru D rejestruje również wartości osi ‘YAW’


IMUF czyli parametry Q i W – jest to filtr, który w zasadzie nie filtruje sygnału, a pozwala dopasować „siłę” i ilość filtrowanych danych przez żyroskop. Całkiem trafnie jest to opisane w EmuFlight wiki:


Q – parametr określający jak bardzo ufamy, że nasz żyroskop działa prawidłowo. „Prawidłowo” jednak, to w tym wypadku bardziej złożone określenie. Liczy się tu bowiem nie tylko poprawność działania żyroskopu, ale też jokość wykonania naszego drona. Jak dobrze go zbudowaliśmy. Czy nie ma żadnych luźnych części. Czy żadne kabelki nie uderzają w kontroler lotu podczas latania. Czy nasz układ zasilania nie daje do układu dodatkowych zakłóceń elektrycznych.

Wyższa wartość Q, to mniej filtrowania, a więc i mniejsze opóźnienia. Wyższą wartość ustawiamy więc w dronach lepszej jakości. Dostępne wartości od 0 do 10000.

W – parametr wskazujący jak dużo danych jest zczytywanych z żyroskopu, a więc w pewien sposób razem z parametrem Q wpływa na ilość danych poddawanych analizie. Wyższa wartość W, to oczywiście więcej danych. Co istotne, większa wartość W nie wpływa na opóźnienie jak LPF czy dynamic filter. Ma jednak wpływ na feeling podczas lotu – może powodować łagodniejsze lub agresywniejsze reakcje na ruch drążków.

W zasadzie IMUF nie jest zupełnie samodzielnym filtrem, a bardziej dodatkowym parametrem dla LPF.


Smith Predictor – kolejny filtr oparty na działaniu żyroskopu. I zaczniemy od uwagi: Smith predictor wzmacnia zakłócenia na żyroskopie. Sprawia, że są bardziej wyczuwalne. Stąd zaleca się jego wyłączenie, jeśli nasz dron nie jest naprawdę poprawnie zbudowany i ze sprawdzonych komponentów, które nie wpychają dodatkowych zakłóceń (elektrycznych czy mechanicznych) do naszego układu. A sam żyroskop jest dobrej jakości. Ponieważ następuje uwydatnienie zakłóceń, układ może się lepiej na nie przygotować, mocniej filtrując obszary tego wymagające (to moja dość luźna interpretacja, aby lepiej zobrazować działanie).

Smith predictor opiera się na przewidywaniu działania żyroskopu na podstawie historii działania żyroskopu. Działa więc podobnie do ABG… Jednak nie całkiem. Ponieważ Smith predictor na podstawie danych historycznych żyroskopu odtwarza również opóźnienie, aby układ sterowania był na to przygotowany. Czyli ma za zadanie wyprzedzać działanie fizycznie zabudowanego żyroskopu, aby przygotować układ na przyszłe zdarzenia, które nastąpią.

W graficznym konfiguratorze EmuFlight mamy tylko możliwość włączenia go i wyłączenia. Filtr, jeśli już jest wymagany lub nie powoduje żadnych negatywnych skutków, to działa zupełnie sprawnie na standardowych ustawieniach po włączeniu. Natomiast pozostałe parametry, jeśli naprawdę potrzebujemy je zmieniać, to ustawiamy poprzez CLI:

smith_predict_enabled = ON
Allowed values: OFF, ON

smith_predict_str = 50
Allowed range: 0 - 100

smith_predict_delay = 40
Allowed range: 0 - 120

smith_predict_filt_hz = 5
Allowed range: 1 - 10000

Smith_Predict_Enabled – tu chyba nie ma wątpliwości; włączamy lub wyłączamy filtr

Smith_Predict_Str – parametr wskazuje na to, jaki przedział przewidywanych zmian będzie używany. Wartość 50 oznacza, że tylko 50% danych będzie brana pod uwagę.

Smith_Predict_Delay – odpowiada za wskazanie jakie opóźnienie nasze filtry generują. To szacunkowa wartość jaką wskazujemy, a wyrażona jest w nanosekundach, czyli ms/10 I tutaj wyższa wartość podawana jest dla żyroskopów, które mają mocniej filtrowany sygnał.

Smith_Predict_Filt_Hz – częstotliwość dla naszego filtra.


Jeśli już zbudowany przez nas dron pozwala na zastosowanie filtra Smith predictor i pod niego dopasowaliśmy pozostałe parametry, to jego włączenie jest niemal natychmiast wyczuwalne oraz słychać natychmiast różnicę w pracy silników.


Dynamic filter – tak, to właśnie ten najbardziej znany obok LPF filtr. To odpowiednik RPM filter w BetaFlight, który jednak w EmuFlight nie jest tak bardzo niezbędny, ale też działa nieco inaczej. Jak sama nazwa wskazuje, to filtr dynamiczny, który potrafi dopasować się do występujących zakłóceń. Poluje na nie. Jest to filtr napisany dla EmuFlight przez Pawła Spychalskiego. Tak, tego samego, który mocno związany jest z softem pod nazwą INAV (jeśli macie ochotę polatać jakimiś skrzydłami, to właśnie INAV jest najbardziej intuicyjny – interfejs podobny do Betaflight i EmuFlight). Jeśli, więc chcecie poznać Dynamic filter ze wszystkimi szczegółami, to doskonałe wyjaśnienie co i jak działa można znaleźć tu: https://quadmeup.com/emuflight-and-inav-matrix-filter/


Ponieważ Dynamic filter nie jest tak „lekki” dla układu jak ABG czy LPF, to twórcy EmuFlight zalecają aby wraz z Dynamic Filter dla żyroskopu, użyć tylko jednego filtra LPF dla d_Term. Oczywiście filtr dynamiczny jest niezwykle wydajny, to też nie ma potrzeby przesadzać i bez potrzeby dodawać kolejne (zbędne) opóźnienia do naszego układu.

Odmiennie od BetaFlight, gdzie filtr dynamiczny oparty jest na obrotach silników (powiązany jest z obrotami silników aby szybciej przewidywać, w którym miejscu mogą wystąpić zakłócenia), w EmuFlight oparty jest na analizie danych z żyroskopu.

Filtr dynamiczny może być ustawiony aby tłumić zakłócenia powodowane przez silniki lub dla „wyczyszczenia” wyższych częstotliwości.

Parametry jakie możemy ustawić, aby odpowiednio dopasować filtr dynamiczny do naszych potrzeb, to:

Q (dynamic_gyro_notch_q) – Zakres/szerokość tzw. notch – wstawka w kształcie litery V którą wstawiamy w miejscu zakłóceń (tzw. filtr środkowozaporowy – ech, te polskie nazwy tak łatwo wpadają w ucho ;) )


Wyższa wartość daje węższą wstawkę, natomiast większa wartość powoduje, że litera V ma bardziej rozłożone ramiona. Zakres jaki możemy ustawić dla parametru Q, to od 1 do 1000. dynamic_gyro_notch_count – Wartości od 1 do 5 definiują ilość wstawek, które filtr będzie przemieszczał w danym zakresie.

Min (dynamic_gyro_notch_min_hz) – najniższa częstotliwość, która będzie brana pod uwagę przez filtr. Możliwe wartości, to: 30-1000

Max (dynamic_gyro_notch_max_hz) – najwyższa częstotliwość do której będzie działał filtr. Możliwy zakres, to 400-1000


Filtr dynamiczny dla d_Term w EmuFlight po włączeniu przyjmuje zakres pracy (min Hz i max Hz) taki sam jak dla żyroskopu. Indywidualnie dla d_Term ustawiamy jedynie jego szerokość - Q w przedziale 1-1000.


I to oczywiście nie wszystko. Mamy w EmuFlight jeszcze kilka „filtrów”, które jednak bardziej przypisane są do PID czy ‘RATES’, więc opiszemy je w jednej z kolejnych części.

Oczywiście jeśli masz jakieś pytania pisz do nas, pomożemy!


Nasze wpisy są darmowe i nie służą do zarabiania. Jeśli jednak ten wpis był dla Ciebie pomocny będzie nam bardzo miło, jeśli postawisz nam kawę. Zebrane pieniądze pozwolą nam na utrzymanie i dalszy rozwój strony. Dzięki!



169 wyświetleń0 komentarzy

Ostatnie posty

Zobacz wszystkie

Comments


bottom of page