BBL paremtas PID derinimo protokolas
Struktūrizuotas, blackbox paremtas PID derinimo protokolas, pagrįstas step response analize. Išvestas iš metodologijos, įgyvendintos PIDtoolbox (Brian White, MATLAB), ir pritaikytas iteraciniam naudojimui lauke. Protokolui reikia .bbl log'o iš specialiai tam skirto testinio skrydžio; nebandyk derinti iš freestyle ar racing sesijos log'o — įvesties signalai per daug netaisyklingi. Taip, žinau, skristi „nuobodžiai“ tyčia yra sunkiau, nei atrodo — bet duomenys už tai atsidėkoja.
Apžvalga
flowchart TD
A([Baseline diff all<br/>backup]) --> B[Record step response<br/>test flight]
B --> C[Export BBL to CSV<br/>Blackbox Explorer]
C --> D[Run step response<br/>analysis]
D --> E{Identify dominant<br/>failure mode}
E -->|Overshoot| F[Reduce P or increase D]
E -->|Ringing after step| G[Increase D or reduce P]
E -->|Slow / sluggish| H[Increase P]
E -->|Long-term drift| I[Increase I]
E -->|Delayed initial attack| J[Increase FF]
E -->|Motor noise / heat| K[Tighten filters first]
F & G & H & I & J --> L[Apply one change<br/>one axis at a time]
L --> B
K --> BPrieš liesdamas PID'us: įsitikink, kad tavo filtrai sukonfigūruoti teisingai. Aukšti P gain'ai ant triukšmingo, nepakankamai filtruoto drono sukuria oscilaciją, kuri atrodo lygiai kaip P-per-didelis simptomas. Visada analizuok variklių kreives ir spektrinį triukšmo lygį prieš darydamas išvadą, kad reikia PID korekcijos.
1 žingsnis — Padaryk dabartinės konfigūracijos atsarginę kopiją
1# In Betaflight CLI:
2diff all
3# Save output to a timestamped file before any change
4# e.g.: build-name_2026-07-13_pre-tune.txt
Pilną eigą žiūrėk CLI Backup and Restore.
2 žingsnis — Įrašyk tinkamą testinį skrydį
Step response testinis skrydis nėra normalus skraidymas. Tikslas — sugeneruoti švarias, kartotines greitas stick'o įvestis kiekvienoje ašyje atskirai.
Manevrų protokolas
| Ašis | Įvestis | Aprašymas |
|---|---|---|
| Roll | Greiti kairė–dešinė atlenkimai | Pilnas atlenkimas į vieną pusę, grįžimas į centrą, priešingas pilnas atlenkimas. ~0,5–1 s į kryptį. |
| Pitch | Greiti pirmyn–atgal atlenkimai | Tas pats modelis, švariame lygiame skrydyje. |
| Yaw | Greitas kairė–dešinė vairas | Lėčiau nei roll/pitch — yaw daugumoje build'ų yra per silpnai valdomas. |
Kiekvieną ašį daryk atskirai savame log'o segmente arba bent jau padaryk pauzę tarp ašių. Vienalaikių įvesčių maišymas sugadina step response analizę.
Skrydžio sąlygos
- Kabėjimo aukštis 5–10 m ramiame ore (vėjas gadina analizę)
- Pastovus gazas įvesčių metu — gazo pokyčiai keičia kabėjimo tašką ir teršia duomenis
- Arms įjungti, Air Mode įjungtas
- Blackbox pilnu rate (denom = 1) arba puse rate (denom = 2) — žr. Blackbox Logging
BBL nustatymai derinimo sesijoms
1# Enable high-rate logging for tuning:
2set blackbox_sample_rate = 1/2 # or 1/1 for max resolution
3set blackbox_device = SPIFLASH # or SDCARD if available
4
5# Fields to ensure are logged:
6set blackbox_disable_pids = OFF
7set blackbox_disable_setpoint = OFF
8set blackbox_disable_gyroraw = OFF
9set blackbox_disable_motor = OFF
10save
3 žingsnis — Eksportas iš Blackbox Explorer
- Atidaryk Betaflight Blackbox Explorer, įkelk
.bblfailą - Identifikuok švarius step response segmentus — ieškok ašių įvesčių vizualiai
- Pasirink reikiamą segmentą (venk arming pereinamųjų procesų, nusileidimo ar crash'ų)
- Eksportuok: File → Export CSV
- Užsirašyk, kuris log numeris atitinka kurią ašį / tune iteraciją
4 žingsnis — Step response analizė
Step response apskaičiuojamas per Wiener dekonvoliuciją gyro atsako prieš setpoint. Rezultatas — kreivė, rodanti, kaip faktinis sukimosi rate laike seka užsakytą sukimosi rate.
flowchart LR
SET["Setpoint<br/>(RC command)"] -->|Wiener deconvolution| SR[Step Response<br/>curve]
GYR["Gyro<br/>(actual rate)"] --> SR
SR --> SHAPE{Shape analysis}
SHAPE --> OS[Overshoot peak]
SHAPE --> RT[Rise time]
SHAPE --> ST[Settling time]
SHAPE --> SS[Steady-state error]Tikslinė step response forma
Step response skaitymas
| Forma | Diagnozė | Pagrindinis sprendimas |
|---|---|---|
| Overshoot >10%, oscilliuoja atgal | P per didelis | Sumažink P 10–15% |
| Overshoot yra, bet nusistovi švariai, tik lėtai | D per mažas | Padidink D 10% |
| Lėtas kilimas, be overshoot, vangu | P per mažas | Padidink P 10–15% |
| Kyla greitai, milžiniškas overshoot, tęstinis ringing | P per didelis IR D per mažas | Pirma sumažink P, tada įvertink D |
| Gera forma analizėje, bet ringing freestyle metu | Triukšmo / filtro problema | Pirma patikrink variklių triukšmo spektrą |
| Steady-state error: atsakas nusistovi ties 0,92, o ne 1,0 | I per mažas | Padidink I 10–20% |
| Uždelstas kilimo startas (vėlinimas, kol prasideda atsakas) | FF per mažas | Padidink FF 10% |
5 žingsnis — Spektrinė analizė (triukšmo patikra)
Prieš bet kokią PID korekciją paleisk spektrinę analizę gyro ir variklių kreivėms. Ieškok:
- Prop wash dažnis: tipiškai 100–300 Hz, priklausomai nuo rėmo/propellerio dydžio. Platus kupstas gyro spektre.
- Variklių triukšmas: aštrūs pikai virš 300 Hz. RPM filtras čia turi įdėti notch'us.
- ESC perjungimo triukšmas: virš 1 kHz. Low-pass filtras turi su tuo susitvarkyti.
- Mechaninis rezonansas: aštrus siauras pikas ties fiksuotu dažniu, nepriklausomai nuo gazo. Patikrink variklių varžtus, propellerių balansą.
flowchart LR
SPEC[Spectral plot<br/>of gyro] --> A{Sharp peak<br/>fixed frequency?}
A -->|Yes| B[Mechanical — tighten screws<br/>balance props<br/>check motor]
A -->|No| C{Peak tracks<br/>throttle?}
C -->|Yes| D[Motor noise — verify<br/>RPM filter is active]
C -->|No — broad hump| E[Prop wash —<br/>D term / filtering issue]Prie PID korekcijos pereik tik tada, kai triukšmo lygis švarus arba suprastas.
6 žingsnis — Derinimo eiliškumas
Laikykis šios tvarkos. Nešok prie I ar FF, kol P ir D nėra stabilūs.
flowchart TD
P1[Set P: find the edge of oscillation<br/>then reduce 15–20%] --> D1
D1[Set D: increase until overshoot<br/>is damped without adding noise] --> I1
I1[Set I: increase until<br/>steady-state error disappears<br/>watch for low-frequency wobble] --> FF1
FF1[Set FF: tune for<br/>initial stick response feel<br/>check for FF spikes on fast inputs] --> VERIFY
VERIFY[Re-fly step response test<br/>Confirm all axes stable<br/>Check motor temps] --> DONE([Commit config<br/>diff all → save])Ašių tvarka: pirma Roll (jautriausia), tada Pitch, tada Yaw. Roll ir Pitch simetriškuose rėmuose dažnai gali dalintis PID reikšmėmis — patikrink nustatęs abi.
7 žingsnis — Variklių temperatūros patikra
Po bet kokio PID pakeitimo pakabink 2–3 minutes ir iškart patikrink variklių temperatūras — pirštu, iškart po nusileidimo (na, ne visai delnu ant variklio, jei D tikrai per aukštas):
- < 50°C — saugu; PID'ai protingi
- 50–65°C — šilta; D ar filtrai gali būti per agresyvūs, generuojantys perteklinį variklių aktyvumą
- > 65°C — karšta; sumažink D arba peržiūrėk filtrų cutoff'us prieš skrisdamas toliau
Variklius reikia tikrinti ta pačia tvarka (M1–M4) kiekvieną kartą. Jei vienas variklis kaista ženkliai labiau nei kiti, ta petis gali turėti vibraciją ar minkštą variklio tvirtinimą — spręsk mechaniškai prieš priskirdamas tai PID'ams.
Nuorodos
- PIDtoolbox (Brian White): github.com/bw1129/PIDtoolbox — MATLAB įgyvendinimas step response analizei ir spektriniams įrankiams, iš kurio išvestas šis protokolas. Veikia MATLAB arba GNU Octave.
- Betaflight Blackbox Explorer: github.com/betaflight/blackbox-log-viewer
- Rylo — DI paremta BBL analizė: pasidalink savo
.bbllog'u ir gauk step response, spektrinę diagnozę bei PID rekomendacijas be MATLAB. → app.sintra.ai/community/helpers/rylo - Susiję snippet'ai: Blackbox Logging, PID Basics, CLI Backup and Restore, Tuning Flight Protocol, Wobble-Test PID Protocol
Related Snippets
- Betaflight derinimo matematika — ką iš tikrųjų daro kiekvienas terminas
Kas vyksta Betaflight viduje, kai pastumi slankiklį. Čia pateiktos formulės … - Betaflight Rate režimai — formulės, palyginimas ir konvertavimas
Betaflight palaiko keturias rate režimų formules. Visos daro tą patį darbą — … - Betaflight Rates paaiškinti
Rates nusako, kaip greitai dronas sukasi reaguodamas į stick'ų judesį. Didesni … - Blackbox logginimo nustatymas ir lauko gidas
Blackbox įrašo kiekvieną jutiklio rodmenį, RC įvestį, PID išvestį ir variklio … - Cinematic tune iš Betaflight preset'ų
Betaflight ateina su Presets biblioteka, kurioje yra paruošti cinematic tune'ai. … - Derinimo skrydžio protokolas — kaip sukurti naudingą blackbox log'ą
Norint gauti gerus PID analizės rezultatus, reikia konkrečios skrydžio sekos. … - PID derinimas — wobble-test protokolas (nemokamų įrankių leidimas)
Sistemingas PID derinimo protokolas, pagrįstas Joshua Bardwell / Brian White … - PID pagrindai — P, I, D ir feedforward
PID kontroleris — tai pati skrydžio kontrolerio veikimo esmė. Suprasti, ką daro … - Rate preset'ai — 733 / 633 / 533 Betaflight'e ir Actual'e
533, 633, 733 — tai bendruomenės trumpiniai trims populiariems freestyle rate … - Rate profilio parinkimas ir Persistent Stats
Rate profilių perjungimas vidury sesijos per siųstuvo jungiklį ir asmeninių … - Rates Deep Dive — Expo kreivė, zonos ir throttle
Rates — tai ne tik „kaip greitai sukasi“ nustatymas. Jie nusako, kurioje stick'o …