danusha2345/adrc-betaflight — explained in plain English
Analysis updated 2026-05-18
Flash prebuilt firmware onto a drone's flight controller to try ADRC control instead of standard PID.
Tune a drone using the repurposed P, I, and D fields that now represent ADRC parameters.
Test ADRC on real flights and report results to help validate the fork's stability fixes.
Fly a drone with an unbalanced or swinging payload more smoothly than standard PID tuning allows.
| danusha2345/adrc-betaflight | blackcoffee2/prome | snatchev/luadbi | |
|---|---|---|---|
| Stars | 5 | 5 | 5 |
| Language | C | C | C |
| Last pushed | — | — | 2015-12-16 |
| Maintenance | — | — | Dormant |
| Setup difficulty | hard | moderate | moderate |
| Complexity | 4/5 | 4/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires flashing custom firmware to a flight controller and careful PID field tuning specific to ADRC.
This project modifies Betaflight, the flight control firmware used on many small racing and freestyle drones, by swapping out its standard PID control loop for a different method called Active Disturbance Rejection Control, or ADRC. The traditional PID approach needs careful manual tuning to fly well, and it can struggle when a drone's weight, propellers, or wind conditions change unexpectedly. ADRC instead constantly estimates outside disturbances, like wind or an unbalanced payload, and cancels them out in real time, which the author says lets a drone fly smoothly even with rough, uncalibrated settings, mismatched propeller sizes, or an unbalanced load hanging off one motor arm. Rather than adding a new settings screen, ADRC repurposes the existing P, I, and D fields in the Betaflight Configurator's PID Tuning tab. The P field becomes Control Bandwidth, controlling how quickly the drone reacts to errors. The I field becomes Observer Bandwidth, controlling how fast the system estimates and reacts to outside forces. The D field becomes System Gain, describing how powerful the motors are. The README walks through example values for different axes and drone sizes, along with warnings about settings that can interact in confusing ways, such as the Configurator's simplified tuning sliders silently overwriting ADRC values if left on. This is explicitly labeled an experimental fork, built on top of another developer's original ADRC implementation, with a number of small fixes aimed at making it more reliable, some of which have been tested on real flights of small and medium sized drones. The project maintainer is actively looking for more people to test it on different drone builds and report results. Separately, a version of ADRC based on this work is being proposed for inclusion in the official Betaflight project as an optional feature, so pilots could choose it per flight profile while keeping standard PID control available as well. Prebuilt firmware files for many common flight controller boards are provided so pilots do not need to compile the code themselves.
An experimental Betaflight firmware fork that replaces the standard PID flight controller with ADRC, a method that automatically compensates for wind, weight, and propeller changes.
Mainly C. The stack also includes C, Betaflight.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.