Как да настроим BetaFlight-a да лети по-добре от всеки друг фърмуер.

Rust

Редовен Потребител
Смело заглавие нали? Вярвам, че няма да останете разочаровани! Надолу ще споделя най-доброто, което съм събрал от последните години :)
Откакто BorisB зачезна, default настройките на betaflight-а са далеч от адекватни (освен ако все още не бутате някой zmr с 2204 мотори). Надолу ще споделя няколко "трикчета", които поне за мен дават много прилична разлика.

1) Transition setpoints. Тези 2 слайдера са един от най-мощните уреди, с които разполага BetaFlight.
Vrhps9Y.png

Default настройките вкарват безумно голямо закъснение в реакцията на стиковете. За да преодолеем това:
Горният слайдер отива на 1.00
Долният в крайно ляво.
Voila!

2) Vbat Compensation = ON. Точно под слайдерите е и е изключен по default. Просто го включете. Това е множител към pid кондролера, който работи според това дали батерията ви е пълна или празна. Така няма да усещате коптера мек към края на батерията и освен това ще лети по същия начин от пълна до празна.

3) Anti Gravity Gain на 3 (намира се точно под Vbat Compensation и слайдерите).
Това е множител, който незнайно защо по default e 1. А всичко умножено по 1 е равно на.... същото :). Тоест дори да сте включили anti gravity, няма да се случи нищо, докато не промените този множител.
PA4daFD.png

Слагам го на 3, но може да експериментирате и с по-високи стойности. Това, което прави е при рязко подаване на газ, временно да умножава "I" от PID с цел носът на дрона да остане където е.

4) PID (и най-вече D) от 30/35 на 20/25.
v2TJaWi.png

Ако разполагаме с мощни мотори (леките перки също действат в тази посока), спокойно може да свалим D-тата. 30 и 35, които са по подразбиране ще дадат супер мазни завършеци на флиповете, но на цената на занижена прецизност в центъра на стика. Ако пък успеете да пренесете D-то в пръстите си (да завършвате флиповете плавно), ще можете да изстискате още по-добър резултат. 20/25 обикновено дава достатъчна разлика, за да усетите подобрение и в същото време да нямате претрисане след флип или увеличени осцилации в propwash. Всеки коптер е различен, затова може да експериментирате с вашият :)

5) Филтрите. Тук е доста интересно, а в betaflight 3.4 ще стане още по-интересно, защото идват иновации!
При филтрите досега е важало едно и също правило (и винаги ще важи). По-малко филтри = по-бърза реакция на моторите = по-малко осцилации в propwash
Правило 1: ако можете да ползвате хардуерни филтри (гумени тампони, софт маунт на моторите, добра рамка, добри мотори и перки) - започнете от там!
Правило 2: От тук насетне, търсете работещата комбинация с най-малко delay, т.е. най-малко софтуерно филтриране (съвсем без хич няма как, но почти винаги има коренна разлика след настройка).
eSqrPF4.png

На тази снимка е "рецептата", която работи най-добре за мен. Важна забележка е, че DYNAMIC FILTER е включен при тези настройки. Най-голям ефект се усеща от смяната на D-Term Lowpass Filter от BIQUAD към PT1 (разликата в delay-a е двойна). Ако сте смели, може да изключите и DYNAMIC-a, но на този етап не съм сигурен дали си струва. За относително малка цена, DYNAMIC FILTER е МНОГО ефективен предпазител от изгорели мотори след отчупване на витло или яко крива перка.
Ако опитвате тези настройки, проверявайте температурата на моторите след 20-30 секунди летене. Ако са горещи, трябва да включвате още филтри в следната поредност:
- Dterm Notch
- Gyro Notch 2
- Gyro Notch 1
- D-Term Lowpass Filter от PT1 към BIQUAD
- намалявате стойността на Gyro Soft Lowpass Frequency (макар че ако сте стигнали чак до тук, просто е по-добре механично да намерите как да намалите вибрациите достигащи жирото ви).

Ако използвате ICM жироскоп и сте го пуснали на 32Khz, трябва да включите още един филтър с висок cutoff (на ~700hz) под формата на stage2 филтър. Това е необходимо, защото в 32Khz режим, не е активен вграденият в самия жироскоп филтър, който има тази задача при режими до 8khz. Tова за момента се прави само през CLI, но по default го има в ButterFlight под формата на Fast Kalman filter на 711hz.

6) 'Stick Low' Threshold. От 1050 на 1010.
1DsQthX.png

Намалява мъртвата зона в долната част на стика на газта. Ползвате по-голяма резолюция

7) Arming. От 25 на 180.
BQca6oQ.png

Позволява да арм-нете под всякакъв ъгъл. Полезно за сваляне от дърво :)

Засега това е :)
 
Последна промяна:

west_ice

Потребител
Браво тоше за положения труд! Темата е супер. Благодаря, че споделяш опита и наученото до момента с нас :)
 

Rust

Редовен Потребител
Ще се радвам да споделите дали тези трикчета работят и при вас, както и нови които сте открили :)
 

Rust

Редовен Потребител
След 3 поредни обратни връзки за странно държане след опит за слагане на слайдерите по гореописания метод се оказа, че във версия 3.3.1+ има глич при преминаване на стика през центъра. Това е ако стойността на setpoint transition-a (долния слайдер) е 0.01. В 3.3.0 това е минималната стойност и всичко работи нормално, но за да нямате странности в следващите версии, трябва стойността да е 0 (вместо 0.01).
Ако конфигураторът продължава да показва 0.01, колкото и наляво да дърпате:
а) влизате в CLI и пишете "set setpoint_relax_ratio = 0" и после "save'
b) дърпате го по-надясно и карате с една идея закъснение
 

zoSo

Новодошъл
Браво, Тоше! Страхотна статия!
Anti Gravity Gain (AGG) при мен е 2. Първо си настройвам I-компонента на ръка без да се съобразявам с "дърпането" на носа при много газ. Гледам коптера да не прави "дрифт" и да е достатъчно "твърд" (според моите претенции). След това слагам един коефициент 2 на AGG. Чрез експерименти съм установил, че ако AGG е по-голям от 4, значи не сте си настроили I-то правилно.
 

Rust

Редовен Потребител
I компенсира (акумулира се на база на предишни данни) колко Р не е достигнало, за да се компенсира грешката с по-малко цикли. С други думи, ако трябва да вдигаш I, може просто да не достига Р от самото начало. Като цяло, предвид че I е коригиращ компонент, който обаче се мени доста бавно, по-добре множителят му да не е много висок. Но дефолтните P и I са добри по дефолт. Може да искат малко корекция при по-бавно реагиращи мотори, но и тогава основно е нужда от по-високо D (то също увеличава или намалява Р, но се опитва да предскаже бъдещето и е много по-динамично). Но и с D-то е по-добре да не се прекакява, тъй като и то е коригиращ компонент. Освен това води до омекване на усещането около центъра на стика (намалява прецизността).
Като цяло PID-то работи стегнато в много широк диапазон и дали го пипаш или не, раликата е миниатюрна. Просто хардуерът вече е много по-добър и реагира бързо. Затова и не съм го засягал особено в първия пост.
 
Последна промяна:

Rust

Редовен Потребител
Наскоро тествах една нова идея, която проработи и мога да я споделя и тук като дребно допълнение.
Сложих TPA от 0.1 (10%), на 0.3 (30%).
Идеята на TPA (throttle position attenuation беше абревиатурата, по спомен) оригинално има за цел да премахне осцилациите при пълга газ, като свали авторитета на PID контролера.
В случая, идеята е малко различна и се оказа, че също върши работа. Като караш по писта и има права на която си набил пълна газ, се натрупва доста I. След това като свалиш газта рязко за да влезеш в препятсвие и се усеща едно леко по-различно усещане (нещо като wheel steer при колите). Все едно дронът ти се противопостява, макар и за много кратък момент. Не е проблем, но с малко TPA усещането е по-натурално.
 

Rust

Редовен Потребител
И нещо относно жиротата, което може и да е интересно на някой. Според тестването последните месеци успях да си извадя няколко резултата:
ICM 32K е като ICM 8K
ICM 8K е по-добре от MPU6000 8K
Всяко възможно най-настроено, до нивото на способностите ми рабира се… но по-интересното в случая е, че разликата която отдавах на 32К > 8К се оказа всъщност ICM > MPU6000.
Честно казано разликата е малка (толкова, че да не тръгна да си подменям куадовете с mpu6000), но мога да я усетя.
 

zoSo

Новодошъл
Нов анонс, за Betaflight v3.4.0:

  • the upper limit of dterm_setpoint_weight has been increased to 2000 (corresponding to a value of 20 for 'D Setpoint Weight' in Betaflight configurator). This means that pilots wanting a more 'locked in' stick feeling can increase this value beyond the previous maximum of 254. At the same time, an undocumented scaling change was reverted, and the scale is now again how it is described in the Betaflight configurator. If you are using a custom setting for dterm_setpoint_weight, divide your value by 1.27 to get the new value that will give you the same feeling as between 3.1.6 and 3.4.0 (#5945, #6052);
 
Нагоре