-
released this
2026-07-05 11:02:38 +03:00 | 111 commits to master since this releaseReady-to-flash Betaflight-ADRC firmware for flight testing — no compiling needed.
What's new in v0.2.0
This round came out of the first whoop test data and a second independent tester. Four experimental fixes on top of v0.1.0 — full detail in ADRC_FIXES.md (
#10–#12):#10throttle-scaled b0 — the system gain (D → b0) is now scaled by(throttle / hover)²above hover, because motor authority rises with RPM (thrust ≈ throttle²). Keeps the model calibrated across the throttle range; aimed at the whoop takeoff-drift and "floaty" feel. New CLIadrc_hover_throttle(%, default 35 — set it near your real hover throttle). The square is deliberately conservative and may feel slightly soft near full throttle; raiseadrc_hover_throttletoward your top throttle if you dislike it.#10liftoff-gate re-arm — the takeoff gate (v0.1.0 fix#8) now re-arms after a sustained return to idle and stillness, so every ground-test / re-takeoff in one arm is gated, not just the first.#11z3 leaky decay — the observer's disturbance estimate now bleeds a transient bump back to zero (adrc_sigma_decay, default 3, mild). Set0for the classic pure integrator. Leaveadrc_sigma_decay_schedat 0 (unvalidated).#12blackbox z3 no longer clips — raw z3 used to saturate the int16 debug field on takeoff ("debug 5/6 go nuts"); it's now logged ÷16 so the trace stays readable. For disturbance magnitude the I channel (−z3/b0) is the clean signal.
What helps most — please fly with blackbox logs
The single most useful thing you can send is a blackbox log with the ADRC observer enabled:
set debug_mode = ADRC saveThen, if you can:
- A/B the takeoff gate (
#8/#10): a clean, near-vertical takeoff is what isolates it — indoor bumping into furniture swamps the signal. Fly the tip build, then a build with the gate reverted, same craft/tune. - A hard flip or punch-out with
debug_mode = ADRC— shows z3 vs the anti-windup clamp under saturation. - Note your
adrc_b0_scaleandadrc_hover_throttlewhen sharing a tune (the same D means a different b0 at a different scale).
debug layout: roll z1/z2/z3 = debug 0–2, pitch z1/z2/z3 = 3–5, yaw z3 = 6, throttle-scaled b0 ×100 (sign = liftoff latch) = 7. Decode with blackbox-tools and plot with
adrc_log_plot.py. Post logs in issue#1.How to flash: Betaflight Configurator → Firmware Flasher → Load Firmware [Local] → pick the
.hexfor your board → Flash Firmware (Full chip erase recommended on the first flash).Before the first flight: read the README — ADRC parameters go into the ordinary P/I/D cells of the PID Tuning tab (P = control bandwidth, I = observer bandwidth, D = system gain), and
set pid_at_min_throttle = offis strongly recommended. The tuning procedure and example tunes are in the README; what changed vs the original ADRC code is in ADRC_FIXES.md.Your board is not in the named list? Use the generic hex for your board's MCU — e.g.
STM32F7X2for any F722 board,STM32F405for F405 boards,STM32H743,AT32F435M/G, etc. (this is exactly how official Betaflight releases ship). On first connect the Configurator will offer to Apply custom defaults for your board — accept it. If you'd rather have a board-baked build, open an issue and we'll add it to the matrix, or build it yourself withmake <TARGET>.⚠️ Experimental flight-controller firmware, so far tested by a handful of pilots. Fly in an open area, keep props away from people, and please report results (good or bad) in issue
#1.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads