Porada

Jak ustawić człon wyprzedzający (feedforward) w Betaflight i co zmieniło się w wersji 2025.12

Przewroty i beczki wychodzą czysto, ale powolne, płynne łuki na nagraniu HD są rozedrgane, a dron szarpie przy najlżejszym dotknięciu drążków. Zanim obniżysz PID albo zaczniesz grzebać w filtrach, sprawdź człon wyprzedzający. Reaguje on na prędkość ruchu drążków, więc reaguje też na szum drążków, drżenie kciuka i nierówny sygnał z łącza.

Artykuł o suwakach PID na tej stronie opisuje suwak reakcji na drążki („Stick Response”), który skaluje człon wyprzedzający jako całość. Tutaj zajmę się ustawieniami pod nim: redukcją drgań, wygładzaniem, uśrednianiem, podbiciem, ograniczeniem przy pełnym wychyleniu, wygaszaniem przy środku i nowym podtrzymaniem na osi odchylenia. W Betaflight 2025.12 zmieniły się ich wartości domyślne, więc starsze porady trzeba czytać ostrożnie.

Co robi człon wyprzedzający

W pomocy Betaflight Configuratora człon wyprzedzający („Feedforward”) to dodatkowa siła sterująca, liczona wyłącznie z ruchu drążków, która wpycha drona w szybkie manewry. Zależy od tego, jak szybko porusza się drążek, a nie od tego, gdzie się znajduje. Gdy trzymasz drążek nieruchomo w połowie wychylenia, człon wyprzedzający znika. Gdy szybko nim ruszysz, gwałtownie rośnie.

Dokumentacja Betaflight wyciąga z tego dwa wnioski:

  • Człon wyprzedzający nie wywołuje oscylacji tak jak P, więc to bezpieczny sposób na ostrzejszą reakcję. Według notatek do strojenia wersji 4.3 spora wartość (około 120-130) daje bardzo żywą reakcję bez przeregulowania.
  • Wzmacnia drobne, szybkie zmiany sygnału sterowania. Zacinające się albo szumiące drążki, nerwowy kciuk czy kłopoty z łączem zamieniają się w szarpany lot i nierówny obraz HD.

Strona „Feed Forward 2.0” wymienia objawy przesady: przeregulowanie na początku przewrotu, zwłaszcza przy pełnym wychyleniu drążka, przesadną reakcję na skoki sygnału, mocniejsze drgania, gdy jest ci zimno albo się denerwujesz, szpilki na przebiegach silników i żyroskop wyprzedzający wartość zadaną w logu Blackbox.

Od wersji 4.3 człon wyprzedzający działa też w trybach Angle i Horizon. Notatki do 4.3 radzą początkującym, którym dron w trybie Angle wydaje się nerwowy, po prostu go zmniejszyć.

Wartości domyślne w 2025.12 i 2026.6

Wzmocnienia dla poszczególnych osi są w zakładce strojenia PID (kolumna „Feedforward”) albo w CLI jako f_roll, f_pitch i f_yaw. Domyślnie to 120 na przechyleniu, 125 na pochyleniu i 120 na odchyleniu. Pozostałe ustawienia są w tej samej zakładce, w grupie „Feedforward”, i wszystkie należą do profilu PID.

Ustawienie w CLI Domyślnie (2025.12, 2026.6) Domyślnie (4.3-4.5) Zakres Do czego służy
feedforward_jitter_factor 7 7 0-20 Ogranicza człon wyprzedzający przy powolnych ruchach drążków
feedforward_smooth_factor 65 25 0-95 Wygładza sygnał członu wyprzedzającego
feedforward_averaging 2_POINT OFF OFF, 2_POINT, 3_POINT, 4_POINT Uśrednia kilka ostatnich kroków
feedforward_boost 15 15 0-50 Dokłada pchnięcie zależne od przyspieszenia drążka
feedforward_max_rate_limit 90 90 0-200 Przycina człon wyprzedzający przy pełnym wychyleniu
feedforward_transition 0 0 0-100 Wygasza człon wyprzedzający przy środku drążka
feedforward_yaw_hold_gain 15 - 0-100 Podtrzymanie na osi odchylenia (od 2025.12)
feedforward_yaw_hold_time 100 - 10-250 Czas zaniku podtrzymania w ms

Wartości i zakresy dla 2025.12 pochodzą z oficjalnego opisu poleceń CLI, a sprawdziłem je też w kodzie źródłowym wersji 2025.12 i 2026.6. Kolumna 4.3-4.5 pochodzi z kodu wersji 4.5.0.

Aktualne ustawienia drona wyświetlisz w CLI poleceniem:

get feed

Pokaże ono wszystkie ustawienia, które mają w nazwie „feed”. W starszych poradnikach te same ustawienia nazywały się ff_..., nazwy zmieniono w wersji 4.3.

Redukcja drgań

W Configuratorze to „Jitter Reduction”. Zmniejsza człon wyprzedzający, gdy drążki poruszają się powoli, niezależnie od ich położenia. Powolne łuki zostają płynne, a szybkie szarpnięcia dostają pełny człon wyprzedzający bez opóźnienia. Przy kłopocie „rozedrgany obraz, ale ostre przewroty” zwykle od tego ustawienia warto zacząć.

Notatki do 4.3 wyjaśniają, jak to działa. Betaflight uśrednia dwie ostatnie zmiany sygnału sterowania i porównuje je z progiem. Wartość ustawienia to próg w dziesiątych częściach procenta wychylenia drążka, więc 10 oznacza, że tłumienie zaczyna się, gdy drążek przesuwa się o mniej niż 1% na jeden pakiet.

Co mówią źródła:

  • Domyślne 7 pasuje do większości dronów.
  • Pomoc w Configuratorze proponuje 10-12 do latania filmowego i akrobacji z nagrywaniem HD, a 5 do wyścigów na szybkim łączu.
  • Notatki do 4.3 podawały nawet 12-15 do akrobacji i latania filmowego, ale pisano je z myślą o wolniejszych łączach. W zgłoszeniu zmian (pull request), które przebudowało ten kod na potrzeby 2025.12, autor pisze, że wartości wyraźnie powyżej 10 mają sens tylko przy łączach 150 Hz i wolniejszych.

Ta sama zmiana poprawiła zachowanie niskich wartości. Wcześniej człon wyprzedzający spadał do zera, gdy drążki stały przez dwa pakiety. Teraz nigdy nie spada dokładnie do zera, a niska wartość zostawia minimum: przy 1, 2 albo 3 nie zejdzie poniżej 50%, 33% albo 25%. Przy 7 powolne ruchy drążków dostają mniej więcej jedną ósmą. Zawodnicy wyścigowi mają drona, który reaguje nawet na bardzo małe ruchy, za cenę większej nerwowości.

Wygładzanie i uśrednianie zmieniły się w 2025.12

Tu stare przepisy najczęściej zawodzą.

Do wersji 4.5 domyślne wygładzanie wynosiło 25, uśrednianie było wyłączone, a przy szybszych łączach trzeba było podnieść oba ustawienia. Notatki do 4.3 podają 25 na start, 40-50 z uśrednianiem 2_POINT przy 250 Hz oraz obowiązkowo 65-70 z 2_POINT przy 500 Hz. Tak samo brzmi wciąż pomoc w Configuratorze przy wygładzaniu („Smoothness”): 25 dla 50-150 Hz, 40-50 dla 250 Hz, 60-65 dla 500 Hz.

W 2025.12 wartości domyślne zmieniono na 65 i 2_POINT. Zmiana w kodzie, która za tym stoi, usunęła zależność feedforward_smooth_factor od częstotliwości pakietów odbiornika. Wcześniej rzeczywisty filtr zmieniał się razem z łączem. Teraz wygładzanie liczone jest względem stałych 250 Hz, które komentarz w kodzie nazywa najczęściej używaną częstotliwością ExpressLRS. W praktyce ta sama liczba działa teraz mniej więcej tak samo na każdym łączu, więc nie przenoś do 2025.12 wartości dobranej do łącza według poradnika z czasów 4.3 czy 4.5. Zacznij od domyślnej.

Przy okazji osobną częstotliwość odcięcia dla członu wyprzedzającego połączono z częstotliwością dla wartości zadanej. W CLI wersji 2025.12 są tylko rc_smoothing_setpoint_cutoff i rc_smoothing_throttle_cutoff, więc stare fragmenty z rc_smoothing_feedforward_cutoff zakończą się błędem.

Uśrednianie („Averaging”) według pomocy w Configuratorze liczy średnią z 2 albo 3 ostatnich kroków. Wygładza przebieg członu wyprzedzającego kosztem niewielkiego opóźnienia i najlepiej radzi sobie z naprzemiennymi skokami w górę i w dół, typowymi dla szybszych łączy. Pomoc wspomina też, że stary Crossfire w trybie 150 Hz, sprzed CRSFShot, potrzebował 3_POINT.

Podbicie, ograniczenie przy pełnym wychyleniu i wygaszanie przy środku

Podbicie („Boost”) dokłada pchnięcie w odpowiedzi na przyspieszanie i hamowanie drążka. Według pomocy zmniejsza opóźnienie żyroskopu wynikające z tego, że silniki potrzebują czasu na rozpędzenie, a przy hamowaniu drążka mocno przyhamowuje silniki i ogranicza przeregulowanie. Wartość domyślna sprawdza się w większości dronów. Zawodnicy wyścigowi mogą ją lekko podnieść, a dokładniejsze strojenie wymaga logów Blackbox. Gotowe ustawienia łącza 500 Hz dla wyścigów w 2025.12 dają 18.

Ograniczenie przy pełnym wychyleniu („Max Rate Limit”) przycina człon wyprzedzający, gdy drążek zbliża się do końca zakresu, żeby ograniczyć przeregulowanie na początku przewrotu albo beczki. Na końcu manewru nic nie robi. Niższa wartość wcześniej zaczyna przycinanie. Pomoc radzi wybrać najwyższą wartość, przy której przeregulowanie jest jeszcze do przyjęcia, i dodaje, że zwykle nie trzeba tego zmieniać. Notatki do 4.3 uzupełniają, że dronom o zbyt słabym napędzie może być potrzebne 100.

Wygaszanie przy środku („Transition”) liniowo zmniejsza człon wyprzedzający w pobliżu środka drążka. Wartość 30 w CLI (w pomocy zapisana jako 0,3) zeruje go dokładnie na środku i przywraca w pełni, gdy drążek jest wychylony o więcej niż 30%. W wersji 4.2 i starszych tak się łagodziło środek drążka. Od 4.3 lepiej robi to redukcja drgań, a pomoc mówi wprost, że przy włączonej redukcji drgań wygaszanie powinno wynosić zero. Notatki do 4.3 tłumaczą dlaczego: wygaszanie nic nie daje w płynnych zakrętach poza środkiem, wąski zakres ucina człon wyprzedzający gwałtownie i może wywołać kołysanie, a szeroki odbiera dronowi ostrość. Zostaw 0.

Podtrzymanie na osi odchylenia

Od 2025.12 oś odchylenia nie korzysta już z podbicia. Zamiast niego jest składnik oparty na wartości zadanej po filtrze górnoprzepustowym, który szybko rośnie i powoli zanika. Autor zmiany, ctzsnooze, wyjaśnia w zgłoszeniu, skąd ten pomysł. Na osi odchylenia siła sterująca musi trwać jeszcze po zatrzymaniu drążka, bo drona trzeba utrzymać w obrocie, a do tej pory robił to narastający człon I. Gdy po długim obrocie szybko puszczasz drążek do środka, ten nagromadzony człon I powoduje odbicie w drugą stronę.

feedforward_yaw_hold_gain ustala siłę podtrzymania. Komentarz w kodzie mówi, że dla drona 5-calowego dobre jest 15-20, a zero wyłącza tę funkcję. feedforward_yaw_hold_time to stała czasowa zaniku w ms. 100 pasuje do typowego drona 5-calowego, krótszy czas szybciej wygasza podtrzymanie, a dłuższy według wcześniejszego zgłoszenia tego samego autora (#13575) pasuje do dronów ze słabą siłą obrotu wokół osi odchylenia. Przy dobrze ustawionym podtrzymaniu autor szacuje, że człon I na osi odchylenia można zwykle zmniejszyć mniej więcej o połowę.

Proponowany test to płaskie obroty wokół osi odchylenia na pełnym drążku w zawisie: szybko drążek do końca, przytrzymać przez pełne 360 stopni, szybko z powrotem. W logu szukaj przeregulowania albo odbicia na końcu i porównaj żyroskop, wartość zadaną i człony PID na osi odchylenia.

Najpierw gotowe ustawienia łącza

Człon wyprzedzający zależy od tego, jak czysty i jak częsty jest sygnał sterowania, więc Betaflight obsługuje to przez gotowe ustawienia łącza. Artykuł o częstotliwości pakietów ExpressLRS na tej stronie opisuje, jak je wgrać w zakładce „Presets”. Oto, co ustawiają:

  • 2025.12 ma osobne gotowe ustawienia dla każdej częstotliwości ELRS. Dla 250 Hz to 2_POINT i redukcja drgań 6, dla 500 Hz 2_POINT i 5. Do tego wybierasz styl latania. Przy 500 Hz wyścigi dają na przykład redukcję drgań 3, podbicie 18 i wygładzanie sterowania 25, akrobacje z nagrywaniem HD redukcję 9 i wygładzanie 70, a latanie filmowe redukcję 11 i wygładzanie 90.
  • 2026.6 ma jeden zestaw, „CRSF - ExpressLRS, Crossfire or Tracer”, w którym wygładzanie sterowania samo dopasowuje się do wykrytej częstotliwości pakietów. W opisie napisano, że 2026.6 sam obsługuje częstotliwość łącza i ustawienia członu wyprzedzającego pod konkretną częstotliwość zwykle nie są potrzebne. Wybór stylu latania zmienia już tylko rc_smoothing_auto_factor: 25 dla wyścigów, 50 dla akrobacji, 70 dla akrobacji z nagrywaniem HD, 90 dla latania filmowego i 180 dla wersji „Ultra Cinematic”. Osobny zestaw jest dla łącza na sztywno ustawionego na 50 Hz (uśrednianie wyłączone, redukcja drgań 12, podbicie 5).

Wszystkie te zestawy mają to samo ostrzeżenie: wyłącz sprzętowy filtr ADC w EdgeTX albo OpenTX.

Gdy obraz się kołysze: krótka diagnoza

Na losowe kołysanie, które nie wygląda na oscylacje PID, notatki do 4.3 mają listę rzeczy do sprawdzenia. Część dotycząca członu wyprzedzającego i sterowania, w rozsądnej kolejności:

  1. Upewnij się, że sprzętowy filtr ADC w EdgeTX albo OpenTX jest wyłączony, i wgraj gotowe ustawienia łącza pasujące do wersji oprogramowania i łącza. Najpierw zapisz diff, tak jak opisuje to artykuł o kopii zapasowej konfiguracji na tej stronie.
  2. Podnieś redukcję drgań do 10-12.
  3. Zrób jeden lot próbny z wyzerowanym członem wyprzedzającym (kolumna „Feedforward” w zakładce strojenia PID albo f_roll, f_pitch, f_yaw ustawione w CLI na 0). Jeśli nic się nie zmieni, to nie człon wyprzedzający jest winny i możesz wrócić do normalnych wartości.
  4. Przy zużytych drążkach albo drżącym kciuku pomaga mocne wygładzanie sterowania. Notatki wspominają o współczynniku automatycznym 90 lub wyższym, co zgadza się z ustawieniami do latania filmowego.
  5. Żeby sprawdzić, czy winne jest samo łącze, notatki radzą tymczasowo ustawić szeroką martwą strefę. Przy drążkach na środku usuwa ona cały przypadkowy szum z łącza. Jeśli nic to nie zmienia, łącze nie jest przyczyną.

Ta sama lista przypomina, że kołysanie bierze się też z miękkiej ramy, luźnych elementów, za małego kondensatora albo źle zamocowanej kamery, więc nie szukaj tylko w ustawieniach.

set feedforward_jitter_factor = 11
save

To tylko przykład pojedynczej zmiany. Zmieniaj jedno ustawienie naraz i po każdej zmianie przeleć tę samą trasę.

Sprawdzenie w Blackbox

Artykuł o Blackbox na tej stronie opisuje konfigurację. Przy członie wyprzedzającym porównaj przebiegi wartości zadanej i żyroskopu oraz spójrz na sam człon wyprzedzający. Powinien być gładki, a szpilki przy powolnych ruchach drążków wskazują na łącze albo drążki. Dokładniej zajrzysz w tryb diagnostyczny debug_mode = FEEDFORWARD. Według zgłoszenia zmian zapisuje on między innymi surową wartość zadaną, zmianę sygnału sterowania na pakiet, stopień tłumienia przez redukcję drgań i to, czy pakiet był powtórzeniem.

Ten ostatni kanał ma znaczenie przy łączach, które powtarzają pakiety. Od 2025.12 Betaflight przy łączach CRSF (ELRS i Crossfire) nie przewiduje już wartości członu wyprzedzającego dla powtórzonych pakietów, co zmniejsza szum przy powolnych ruchach drążków. FrSky i inne protokoły nadal korzystają z przewidywania, bo losowo wysyłają powtórzone wartości, a bez niego człon wyprzedzający spadałby do zera, a potem skakał do podwójnej wartości.