bbdoctor
Діагностика дрона за логом: Betaflight, INAV, ArduPilot, PX4
RUENESPTUA

Налаштування PID у Betaflight за Blackbox: усунь причину, а не симптом

Квадрокоптер перелітає задане значення після фліпу. На форумі радять «зменшити P» або «додати D». Але в одного й того самого перерегулювання може бути три причини, і для двох із них потрібні протилежні виправлення. Якщо винен feedforward, зменшення P погіршить ситуацію. Якщо контуру бракує демпфування, зменшення FF нічого не змінить. Журнал покаже, який саме випадок у тебе. Нижче — як bbdoctor аналізує журнали; висновки перевірено на шести реальних записах від Betaflight 3.1.5 до 2026.6.

Порядок роботи: механіка → шуми → PID

  1. Механіка. Справні пропелери, мотори без люфту, жорстка рама, акумулятор, що не зсувається. PID не виправить погнутий пропелер.
  2. Шуми й фільтри. RPM-фільтр (двонапрямний DShot), розумне фільтрування, мотори після польоту мають бути прохолодними. Дивись посібник із шумів і фільтрів.
  3. PID. Спершу roll і pitch (P/D та feedforward), потім I, TPA й anti-gravity.

Чому: D — це похідна гіроскопа, тож воно підсилює високочастотний шум і передає його прямо на мотори. bbdoctor не радитиме збільшувати D, якщо високочастотний шум моторів перевищує 2,5% діапазону моторів, якщо шум PID переважно походить від D-term або якщо сирий шум гіроскопа вище 80 Гц сягає 10 град/с. У випадку 4.2.5 нижче контуру справді бракувало D, але сирий шум гіроскопа 35,8 град/с змінив рекомендацію на P −10% (p_roll 42 → 38) і перевірку механіки в першу чергу.

Який журнал потрібен

Як читати перехідну характеристику

Перехідна характеристика показує, як повертався б квадрокоптер, якби ти миттєво задав стиком певну кутову швидкість. 1,0 — це задана швидкість. Хороша крива швидко зростає, трохи перевищує 1,0 і відразу стабілізується.

Перерегулювання

Наскільки пік перевищує 1,0; до 15% — це нормально. У висновку використовується 90-відсотковий інтервал, а не одне число:

Демпфування ζ

bbdoctor підбирає до кривої модель другого порядку й обчислює коефіцієнт демпфування ζ. Він показує, наскільки перерегулювання створює сам контур P/D:

ζПеререгулювання від контуруЯк це виглядає
0,36~30%Глибоке просідання після піка, кілька коливань
0,5~16%Помітне просідання, одне чи два коливання
0,6~9%Невеликий виступ, майже без просідання
0,7–0,95% або меншеВиступ, а потім рівна лінія — саме те, що потрібно

bbdoctor позначає коливання, лише коли збігаються дві ознаки: ζ не більше 0,5 і просідання нижче цілі щонайменше на 4% (щонайменше на 2% із 90-відсотковою впевненістю). Це попередження за ζ до 0,40 або просідання на 15% чи більше. Якщо модель погано відповідає даним, ζ не показується, а висновок ґрунтується лише на просіданні й має рівень не вище «інформація». Коливання нижче 6 Гц на 5-дюймовому апараті радше вказують на I-term або важкий коптер, а не на D.

Швидкість

Як будується крива

Ніхто не рухає стик ідеальними ступенями, тому відгук відновлюється зворотним розрахунком (деконволюцією): яка реакція на миттєвий ступінчастий сигнал перетворила б рух стика в цьому 1-секундному вікні на цей графік гіроскопа? Є дві пастки:

Крива — це медіана за вікнами; інтервал отримано бутстрепом (200 випадкових перемішувань вікон), звідси запис у звіті «47% (90%: 44–53%)». Отже, 10% «перерегулювання» в інструменті з крутим зрізом можуть бути лише артефактом.

Одне перерегулювання — три причини

ПричинаЩо видно в журналіЩо робитиЧого не робити
Feedforward (у 3.x — вага заданого значення D)FF виконує 45% або більше роботи під час різких рухів стиком, P майже нічого не додає, а гіроскоп не відстає від заданого значення або випереджає йогоЗменш f_roll/f_pitch на 15% (у 3.x — dterm_setpoint_weight). Безпечний перший крок: мотори від цього не нагріваютьсяНе чіпай P і D
Недостатньо демпфований контурFF дає менше 45%, квадрокоптер не випереджає рух стика, ζ нижче 0,5, після піка є просідання й коливанняЗбільш базове D на 15% разом із верхньою межею, якщо мотори прохолодні; якщо вони шумлять, зменш P на 10%Не зменшуй FF — це не допоможе. Не зменшуй P, якщо вісь і так повільна (20 мс або більше)
ВипередженняКонтур добре демпфований (ζ ≥ 0,6, без просідання), але перерегулювання більш ніж удвічі перевищує очікуване для такого контуру; FF виконує щонайменше 35% роботиЗменш FF. Якщо нічого не зміниться, поверни значення: тоді штовхає I-termНе зменшуй P: зі слабшим P контур відтягує назад слабше, і перерегулювання зростає

Ще три характерні випадки, перевірені окремо:

Три перехідні характеристики roll: добре налаштований коптер із перерегулюванням 2%, заводське налаштування Betaflight 3.1.5 із 87% і коптер 4.5.2 із 47% через feedforward
Відгук roll трьох коптерів, нормований до усталеного рівня. A: еталонне налаштування (Betaflight 3.1.5), пік 1,05, перерегулювання 2% після віднімання зміщення методу. B: заводське налаштування 3.1.5 (журнал 7,9 кГц), пік близько 1,9, просідання до 0,8 і коливання: 87% через вагу заданого значення D. C: 3,5-дюймовий коптер на 4.5.2, пік 1,49 (47%) і неглибоке просідання: FF виконує 60% роботи.

П’ять реальних випадків

Еталон: 2% за ζ = 0,73

Журнал plasmatree_good_tune (Betaflight 3.1.5) — еталонне добре налаштування серед журналів, на яких калібрували пороги bbdoctor. Roll — 2% (90%: 1–3%), pitch — 5%, на yaw перерегулювання немає. Для roll ζ = 0,73, просідання немає, t50 — 9 мс, затримка від заданого значення до повороту — 10 мс. Не копіюй його P 19, I 12, D 18 у 4.x: там інакше працюють фільтри, D і feedforward.

Заводське налаштування 3.1.5: 87% через вагу заданого значення

Журнал 18_stock_tune, 7,9 кГц. Roll — 87% (79–93%), pitch — 65%. У 3.x задане значення не записується, тому його відновлено зі стиків і швидкостей. На найрізкіших рухах гіроскоп випереджає задане значення; контур без поштовху від стика так не може, отже поштовх дає dterm_setpoint_weight = 190 — еквівалент feedforward у 3.x. Рекомендація: 190 → 100, одне значення для всіх осей. На roll також є коливання (ζ = 0,36), але D тут лише наступний крок: d_roll 20 → 23, якщо коливання залишаться.

3,5-дюймовий коптер на 4.5.2: 47%, майже все від FF

Журнал vx35_18-23. Roll — 47% (44–53%), t50 — 7 мс. Feedforward виконує 60% роботи, а на найрізкіших рухах помилка стеження майже нульова. За ζ = 0,62 сам контур дав би приблизно 9% перерегулювання; решту додає FF. Pitch: 27%, частка FF — 59%. Рекомендація змінює лише FF:

set f_roll = 102
set f_pitch = 106
set simplified_pids_mode = OFF
save

Рядок із повзунками потрібен, бо PID у цьому журналі вже не відповідають положенням повзунків і під час збереження були б перезаписані. Крім того, підсилення D зростає лише до ×1,15 від заданого ×1,67, тож коптер переважно літає на d_min_roll = 30, а не на 50.

Betaflight 2026.6: 35% від самого контуру

Журнал GEPRC F405 записаний на частоті 247 Гц. Roll — 35% (33–38%). FF виконує лише 29% роботи, і коптер не випереджає стик, тож причина не у feedforward. Після піка відгук просідає на 5% нижче цілі й коливається на частоті ~9 Гц, ζ = 0,49 (імовірно 0,42–0,50). Pitch поводиться так само (ζ = 0,50), тож для обох осей одне виправлення: базове D +15%.

set d_roll = 39
set d_max_roll = 46
set d_pitch = 53
set d_max_pitch = 63
set simplified_pids_mode = OFF
save

Зменшувати P не можна: roll уже має затримку 24 мс, pitch — 28 мс, плюс ~12 мс через радіоканал 50 пакетів/с, перш ніж команда від стика досягне заданого значення. На частоті 247 Гц журнал не показує шум D, тож після першого польоту тривалістю 1–2 хвилини перевір мотори на дотик.

Дві перехідні характеристики roll: недостатньо демпфований контур із просіданням і коливаннями та нормальний відгук; пунктиром показано ідеальний відгук, пропущений через той самий метод
A: Betaflight 2026.6, журнал 247 Гц: пік 1,39 на ~50 мс, просідання до 0,95 і коливання на ~9 Гц, ζ = 0,49. B: Betaflight 4.5.1, 1 кГц: пік 1,16, 12% на roll і pitch, t50 — 10–12 мс; нічого змінювати не потрібно. Пунктиром показано криву для ідеального відгуку з такою самою затримкою; її виступ 4% віднімається від перерегулювання. Заштрихована зона — розкид між окремими вікнами, з якого обчислюються медіана й інтервал.

Betaflight 4.2.5: 32% на плавних рухах, 1% на різких

Журнал v0002, 2 кГц. Roll — 23%, причина — контур. Якщо розділити за величиною руху стика, на плавних рухах (до 101 град/с) перерегулювання становить 32%, на різких (від 800 град/с) — 1%. На різких рухах D досягає верхньої межі ×1,52 (d_min_roll 23 → d_roll 35), а плавні рухи виконуються з базовим значенням 23. Теоретично треба збільшити базове D, але гіроскоп шумить (дивись перший розділ), тому рекомендація — P −10%.

P, I та D окремо

Якщо roll і pitch реагують по-різному

У тому самому журналі VX3.5 затримка roll — 3,8 мс (90%: 2,9–5,0), а pitch — 9,5 мс (8,5–10,6). Інтервали не перекриваються, отже різниця реальна, і її пояснюють коефіцієнти: P для pitch — 42, для roll — 59. Якщо P повільнішої осі нижче 85% від швидшої, bbdoctor вважає, що цього достатньо для пояснення різниці. Спершу заверши налаштування перерегулювання, а потім зменш P для roll приблизно до 50, замість того щоб збільшувати pitch, де вже є перерегулювання. Якщо різниці P немає, поширена причина — розподіл ваги: акумулятор далеко від центру збільшує інерцію pitch.

Назви D у різних версіях і пастка повзунків

ВерсіяБазове DВерхня межа підсилення
4.0–4.2d_min_rolld_roll
4.3–4.5d_min_roll («Derivative»)d_roll («D Max»)
4.6 / 2025.12+d_roll («Derivative»)d_max_roll («D Max»)

Та сама рекомендація «збільшити d_roll» у 2025.12 збільшує базове D, а в 4.5 — лише верхню межу, якої коптер може майже не досягати. Приклад для 4.5 (базове 30, межа 50), збільшення демпфування roll на 10%:

set d_min_roll = 33
set d_roll = 55
set simplified_pids_mode = OFF
save

Повзунки. Поки simplified_pids_mode має значення ON, Configurator під час збереження перераховує PID за повзунками й стирає ручні зміни. Ніколи не запускай simplified_tuning apply поверх ручного налаштування: ця команда перебудовує PID за множниками повзунків і стандартними початковими значеннями.

INAV, ArduPilot, PX4

Безпека

Перевір власний журнал

Безкоштовно завантаж журнал у bbdoctor. У звіті будуть перерегулювання по кожній осі з інтервалом, ζ, просідання, частка роботи FF, затримка й різниця між осями, а також команди CLI, сформовані з поточних значень і з правильними назвами для твоєї версії. Переглянь приклад звіту, а налаштування можна перевірити без польоту за допомогою diff all на сторінці перевірки конфігурації.

Часті запитання

Як відрізнити перерегулювання через feedforward від перерегулювання через P?

Подивись, хто виконує роботу під час різких рухів стиком. Якщо на FF припадає 45% або більше, а під час найрізкіших рухів гіроскоп не відстає від заданого значення або випереджає його, причина перерегулювання — FF: зменш f_roll і f_pitch на 15%, а P і D не чіпай. Якщо FF дає менше 45%, а після піка відгук просідає нижче цілі й коливається (ζ нижче 0,5), проблема в контурі P/D.

Яке значення D змінювати в Betaflight 4.5 і 2025.12?

Базове D, на якому ти літаєш більшість часу. У 4.3–4.5 це d_min_roll (стовпець Derivative), а d_roll — лише верхня межа підсилення (D Max). Починаючи з 4.6/2025.12 назви відповідають стовпцям: базове d_roll, межа d_max_roll. Змінюй обидва в однаковій пропорції, як це робить повзунок.

Наскільки сильно змінювати PID за один раз?

Один параметр за політ, по 10–15% за крок. Після першої хвилини в повітрі торкнись моторів: якщо вони явно тепліші, ніж до зміни, поверни попереднє значення. Крок у 10–15% помітно перевищує похибку вимірювання в кілька відсотків і водночас достатньо малий, щоб не перескочити оптимум.

Що означає ζ (демпфування) у звіті?

Це показник того, як швидко згасають коливання після піка. За ζ = 0,5 сам контур перерегулює приблизно на 16% і помітно коливається; за 0,7 — приблизно на 5%, майже без коливань. Хороше налаштування має ζ у межах 0,6–0,9. Значення нижче 0,5 разом із просіданням після піка означає, що для поточного P бракує демпфування (D).

Оновлено:

Інші гайди