Skąd się bierze niekończący się obrót
Według dokumentacji przy gwałtownym obrocie rama kręci się tak szybko, że silniki zamieniają się miejscami (obracają się o 180 stopni) w 40 ms albo krócej. Mniej więcej tyle czasu potrzebuje silnik, żeby zmienić prędkość. Zanim korekta przechylenia czy pochylenia faktycznie zmieni obroty silnika, ten silnik jest już po drugiej stronie drona. Korekty zaczynają więc podbijać chybotanie, zamiast je tłumić. Pętla PID przez cały czas włącza i zwalnia silniki, goniąc ogromne odczyty na osiach przechylenia i pochylenia, więc żaden silnik nie pracuje w pełni nad zatrzymaniem obrotu. Taki obrót potrafi trwać bardzo długo.
Szybkie obroty wyłącznie wokół osi pochylenia ani beczki po osi ramienia tego nie wywołują. Problem pojawia się wtedy, gdy bardzo szybki obrót wokół osi odchylenia łączy się z ruchem na dwóch pozostałych osiach.
Co robi wychodzenie z obrotu
Gdy prędkość obrotu wokół osi odchylenia przekroczy próg, Betaflight przeznacza całą moc silników na zatrzymanie obrotu i pomija wszystkie inne sygnały PID oraz gaz. Jedna para silników po przekątnej dostaje pełną moc, druga schodzi na minimum. Kiedy prędkość spadnie o 100 stopni/s poniżej progu i utrzyma się tam przez 20 ms, sterowanie wraca do pilota. Dron może się jeszcze obracać, ale po włączeniu PID szybko się stabilizuje.
Dokumentacja pokazuje zapis z rejestratora lotu (Blackbox) po lekkim uderzeniu w ziemię (żyroskop MPU, próg 800 stopni/s). Prędkość obrotu doszła do około 1800 stopni/s w ciągu 2 ms, normalne sterowanie wróciło po około 140 ms, a po mniej więcej ćwierć sekundy od uderzenia dało się już normalnie lecieć. W najgorszym opisanym tam przypadku, po mocnym uderzeniu z wygiętymi śmigłami, tryb wychodzenia z obrotu był aktywny przez około 600 ms. Według dokumentacji zdecydowana większość obrotów kończy się w czasie poniżej 400 ms.
Na drążkach nie trzeba robić nic szczególnego. Dokumentacja radzi zdjąć gaz, wycentrować drążki i być gotowym, żeby przejąć sterowanie albo rozbroić drona. Podczas wychodzenia z obrotu silniki pracują na około 50% efektywnego gazu, więc dron może na chwilę wystrzelić w bok, prostopadle do osi obrotu, ale nie powinien się wyraźnie wznieść i nie ma potrzeby dodawać gazu. Jeśli obrót trwa dłużej niż około pół sekundy, przyczyną może być przepełnienie żyroskopu, mocno wygięte śmigło albo inna usterka. Wtedy rozbrój drona.
OFF, ON czy AUTO
W CLI są dwa ustawienia:
yaw_spin_recovery- wartościOFF,ONalboAUTO;yaw_spin_threshold- prędkość obrotu w stopniach na sekundę, od której zaczyna się wychodzenie z obrotu, zakres 500-1950. Działa tylko przyON.
Tryb AUTO dodano w zmianie #9455 w repozytorium Betaflighta i od wersji 4.2 jest on domyślny. Próg liczy się wtedy z maksymalnej prędkości obrotu wokół osi odchylenia w bieżącym profilu prędkości. Do tej wartości dochodzi zapas na przeregulowanie: 25% maksymalnej prędkości albo 200 stopni/s, zależnie od tego, która liczba jest większa. Wynik jest ograniczony do zakresu 500-1950. W kodzie Betaflighta wygląda to tak:
threshold = constrain(maxYawRate + MAX(maxYawRate / 4, 200), 500, 1950)
Przy maksymalnej prędkości 800 stopni/s próg wynosi więc 1000, a przy 1200 stopni/s - 1500. Próg przelicza się przy każdej zmianie prędkości, więc przełączenie profilu w locie też go przesuwa. To najważniejszy powód, żeby zostać przy AUTO.
Bieżące wartości sprawdzisz poleceniem:
get yaw_spin
Jeśli ustawiasz próg ręcznie (ON), dokumentacja zaleca wartość o 100-200 stopni/s wyższą niż maksymalna prędkość obrotu wokół osi odchylenia. Dla drona z maksimum 700 stopni/s podaje przykład set yaw_spin_threshold = 850. Według tej samej strony obniżenie progu z 1950 do 1000 skraca czas typowego niekontrolowanego obrotu mniej więcej o połowę.
Tryb ON z własnym progiem ma sens tylko wtedy, gdy masz konkretny powód, na przykład potrzebujesz niższego progu, niż wylicza AUTO. Na koniec wpisz save.
Co się dzieje, gdy próg jest za niski
Jeśli maksymalna prędkość obrotu w ustawieniach prędkości jest wyższa niż próg, długi, celowy obrót wokół osi odchylenia będzie raz po raz uruchamiał wychodzenie z obrotu. Dokumentacja opisuje to na przykładzie: prędkość do 1000 stopni/s, próg 800. Dron rozpędza się do 800 stopni/s, przeciwna para silników dostaje pełną moc i hamuje go do około 700, sterowanie wraca, a dron znów przyspiesza. Przez te krótkie chwile nie da się sterować przechyleniem ani pochyleniem. Widać to jako szarpanie obrotu między 700 a 800 stopni/s, z lekkim chybotaniem na pozostałych osiach i dziwnym dźwiękiem.
Wystarczy podnieść próg albo obniżyć maksymalną prędkość obrotu. W trybie AUTO to się nie zdarza, bo próg zawsze jest wyższy niż ustawione maksimum.
Według dokumentacji w wyścigach rzadko przekracza się 500 stopni/s wokół osi odchylenia, nawet w ciasnych zakrętach. Na ręcznie ustawiony próg trafiają raczej piloci akrobacyjni, którzy robią długie obroty z prędkościami w okolicy 1000 stopni/s. Ci, którzy latają w trybie akro z widocznością drona (bez gogli) i wysoką prędkością obrotu, mogą wolić tę funkcję wyłączyć - to też uwaga z dokumentacji.
Wykrywanie przepełnienia żyroskopu
Ustawienie gyro_overflow_detect (wartości OFF, YAW, ALL, domyślnie ALL) powstało z myślą o żyroskopach ICM. Gdy obrót przekroczy ich zakres pomiarowy, odczyt może się przepełnić i zmienić znak, przez co kontroler lotu widzi obrót w złą stronę. Komentarz w kodzie Betaflighta przypomina, że żyroskopy ICM mają zakres +/-2000 stopni/s, a przepełniony odczyt zwykle wygląda jak wartość około +1996 albo -1996.
Przy ALL Betaflight wyłącza wszystkie człony PID, gdy tylko na którejkolwiek osi prędkość przekroczy 1950 stopni/s. Ponieważ nie wie już, w którą stronę dron się kręci, zmniejsza obroty wszystkich silników do biegu jałowego i czeka, aż na każdej osi prędkość spadnie poniżej 1850 stopni/s. Dron w tym czasie nie hamuje obrotu, więc może to potrwać.
Dokumentacja odradza wyłączanie tej funkcji w dronie z żyroskopem ICM, a przy żyroskopach MPU nic ona nie daje. Odpowiada też na naturalne pytanie: wychodzenie z obrotu ma sens także przy żyroskopie ICM. Z progiem na przykład 800 dron szybciej i czyściej zejdzie poniżej 800 stopni/s, niż gdyby działała tylko ochrona przed przepełnieniem. Po mocnym uderzeniu dron z żyroskopem ICM, zdany wyłącznie na tę ochronę, mógłby według dokumentacji zwalniać sam przez ponad 3-4 sekundy.
Dlaczego dron nie wraca do poprzedniego kierunku
Dokumentacja tłumaczy i to. Żeby przywrócić kierunek i położenie, kontroler lotu potrzebowałby danych z akcelerometru i magnetometru, a tuż po uderzeniu mogą być one błędne. Taki manewr zająłby też czas i mógłby kłócić się z ruchami drążków. Betaflight tylko zatrzymuje obrót i oddaje sterowanie pilotowi.
W skrócie
- Zostaw
yaw_spin_recovery = AUTOigyro_overflow_detect = ALL, chyba że masz konkretny powód do zmiany. - Jeśli dron szarpie podczas długich, celowych obrotów wokół osi odchylenia, sprawdź
get yaw_spin. Zwykle winny jest ręczny próg niższy niż maksymalna prędkość obrotu. - Po zahaczeniu o przeszkodę zdejmij gaz, wycentruj drążki, a jeśli obrót nie ustanie po mniej więcej pół sekundy, rozbrój drona.