-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Feature/aerotune gps filter autotune #4929
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
simonjardine
wants to merge
52
commits into
betaflight:master
Choose a base branch
from
simonjardine:feature/aerotune-gps-filter-autotune
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 19 commits
Commits
Show all changes
52 commits
Select commit
Hold shift + click to select a range
593d58c
AeroTune V5.6 - Intelligent PID Calculator & Blackbox Analyzer by Sim…
simonjardine 17729e7
Fix feedforward multipliers - values were too high
simonjardine 1e077fb
Fix feedforward - use fixed values per flying style based on communit…
simonjardine f67cc54
Fix Save button after Apply PIDs + persist AeroTune inputs across tab…
simonjardine 5e98a2c
Fix Refresh button and preserve all advanced tuning fields during App…
simonjardine 2ff3f79
Restore Dynamic Idle setting to PID tab - was lost in Vue migration
simonjardine 9e65112
Add Open in New Window button for Instructions tab
simonjardine 2a17957
Move Open in New Window button to top of Instructions content for vis…
simonjardine 11cc70a
Match AeroTune colours to Betaflight amber theme
simonjardine 906698a
Match Instructions popup styling to Betaflight dark theme
simonjardine 1ed6d5c
Add CHANGELOG.md
simonjardine 8f21300
Add filter frequency response visualiser to Filter Settings tab
simonjardine f680e14
Add crossfade sweep visualisation to filter frequency response chart
simonjardine dc7f378
Fix PWA update notification to fire reliably after every deploy
simonjardine db11009
Fix PWA update notification — reliable prompt on every deploy
simonjardine bb6fb4c
AUTO TUNE tab, native BFL support, filter crossfade, PWA fix
simonjardine 793cfbd
Fix critical PR review issues: D Max/Min swap, i18n import, GPL licen…
simonjardine fb99125
Fix Nyquist marker to respect 32kHz gyro targets in filter visualiser
simonjardine 2558f9a
Fix remaining PR review issues: multi-session BBL, Tag2_3SVar encodin…
simonjardine 585cf46
Rename roll_d/pitch_d to dMax_roll/dMax_pitch for clarity
simonjardine f19cc61
Address CodeRabbit PR review: MSP_PID pre-read, GPL headers, session …
simonjardine c403c0c
Fix all SonarCloud issues: braces, Math.trunc, codePointAt, globalThi…
simonjardine 086c815
Fix all 151 SonarCloud issues: braces, modern APIs, reduce cognitive …
simonjardine 6fe1e40
Auto Tune: prop size selector, chirp defaults by prop size, sweep sta…
simonjardine 330be5c
Auto Tune: added prop size selector, chirp defaults scale by build size
simonjardine 83301f4
Resolve merge conflict: keep both AeroTuneTab and PresetsTab
simonjardine 5dab198
Remove non-existent PresetsTab.vue reference (build fix)
simonjardine 995ca2a
fix: CodeRabbit fixes 1-7 — duplicate heading, watcher reset, BBL sta…
simonjardine 36cdaa6
merge: CodeRabbit fixes 1-7 from feature/aerotune-gps-filter-autotune
simonjardine 8b828de
fix: CodeRabbit round 2 — D-term fix, chirp validation, CLI gate, key…
simonjardine d64acb3
fix: CodeRabbit round 2 — D-term fix, chirp validation, CLI gate, key…
simonjardine e1d0c07
merge: CodeRabbit round 2 fixes D-term, chirp validation, CLI gate, …
simonjardine 1dfd233
fix: restructure instructions Steps 2-4, update workflow summary, add…
simonjardine 8a250ed
fix: remove Android APK build step — no keystore configured
simonjardine e5efabc
fix: remove remaining keystore secret references from deploy.yml
simonjardine d04ee2c
fix: remove Cloudflare Pages deploy step — not configured
simonjardine 1bae9da
fix: restore GitHub Pages deploy step after Cloudflare removal
simonjardine a092d7a
feat: SysID processor — chirp detection, FFT frequency response, Bode…
simonjardine cb9f8f5
fix: chirp default 10s per axis, abort instructions corrected to stic…
simonjardine 6f65c5d
merge: resolve upstream conflicts — keep AeroTune and add upstream Pr…
simonjardine 06155dd
merge: upstream sync + conflict resolution, AeroTune and PresetsTab b…
simonjardine 4ba45ae
fix: SysID prop-size aware crossover search window, high-to-low detec…
simonjardine 646a426
fix: remove aerobot2.com link and author attribution from tab header
simonjardine 3a3be7f
fix: phase margin from raw atan2 at crossover not unwrapped cumulativ…
simonjardine 40277c2
fix: phase margin from raw atan2 at crossover not unwrapped cumulativ…
simonjardine 4c86e72
fix: phase margin from raw atan2 at crossover not unwrapped cumulativ…
simonjardine 5327e82
fix: phase margin complex division verification, coherence check at c…
simonjardine 0dd6cee
fix: phase margin addition not subtraction, null unreliable axes, no …
simonjardine a6e0fee
fix: phase margin formula corrected, PID synthesis direction inverted…
simonjardine c23c60d
feat: time-domain chirp visualization — setpoint vs gyro tracking cha…
simonjardine bde5292
feat: tracking ratio chart, magnitude-only Bode, SysID PID output tab…
simonjardine 1b1ae83
fix: chirp detection via bit 1024 only, PID synthesis from fixed prop…
simonjardine File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| # Changelog | ||
|
|
||
| ## [1.4.0] - 2026-03-24 | ||
|
|
||
| ### The big one — AUTO TUNE is here | ||
|
|
||
| After years of watching ArduCopter pilots have all the fun with one-click AutoTune, | ||
| Betaflight now has its own. Flip one switch in the air and the chirp system sweeps | ||
| through every frequency your drone can produce — Pitch, Roll then Yaw — automatically. | ||
| Land, drop the log in Step 2, done. | ||
|
|
||
| The AUTO TUNE tab keeps it simple. Pick your shake intensity — Easy, Medium or Hard — | ||
| hit Configure, assign your Chirp switch in Modes, and fly. Advanced pilots can dig into | ||
| sweep frequency and duration under the Advanced Settings panel. | ||
|
|
||
| Confirmed working on Betaflight 25.12. | ||
|
|
||
| ### Also shipped today | ||
|
|
||
| - **Native BFL file support** — drop your raw Betaflight blackbox file straight into | ||
| Step 2. No more exporting CSV from Blackbox Explorer first. Just fly, land, analyse. | ||
|
|
||
| - **Filter frequency visualiser** — now shows the crossfade sweep zone between your | ||
| dynamic filter min and max frequencies as a shaded region. See exactly where your | ||
| filters are working. | ||
|
|
||
| - **Rock solid update notifications** — the "new version available" prompt now fires | ||
| reliably on every deploy, even when GitHub Pages caches the service worker. | ||
|
|
||
| - **GPS sky plot and accuracy scatter** — see your satellites by position and lock | ||
| status, plus live 1σ and 2σ accuracy calculated as fixes come in. Know your GPS is | ||
| solid before you fly. | ||
|
|
||
| ## [1.2.0] - 2026-03-24 | ||
|
|
||
| ### Added | ||
| - Filter visualiser now shows crossfade sweep zones — dynamic notch and D-Term LPF1 dynamic range shown as semi-transparent shaded regions between min and max frequencies | ||
| - Filter frequency response visualiser at the bottom of the Filter Settings tab — full-width D3 chart showing signal attenuation (0 dB to −40 dB) across 0–1000 Hz for all active filters: Gyro LPF1 (blue, static or dynamic min/max pair), Gyro LPF2 (cyan), D-Term LPF1 (orange, dynamic-aware), D-Term LPF2 (yellow), dynamic notch filters (red, Q-scaled notches evenly spaced across min/max range), and RPM filter harmonics (green, shown only when DShot telemetry is enabled). A dashed Nyquist marker is drawn at half the computed PID loop rate. All curves update live as filter values are changed on the tab. Filter math uses standard biquad transfer functions: PT1 (1st-order RC), BIQUAD (Butterworth 2nd order), PT2 (cascaded PT1²), PT3 (cascaded PT1³), and notch via |fn²−f²|/√((fn²−f²)²+(fn·f/Q)²). | ||
|
|
||
| ## [1.1.0] - 2026-03-24 | ||
|
|
||
| ### Added | ||
| - GPS satellite sky plot — polar scatter showing satellite positions by azimuth/elevation, coloured by lock status (green=locked, blue=found, red=searching), labelled with constellation and satellite ID | ||
| - GPS stationary accuracy scatter plot — live position fix scatter with 1σ and 2σ accuracy displayed, CEP rings at 50% and 95%, cumulative accuracy calculation | ||
| - AeroTune PID output table redesigned to match Betaflight PID tuning tab layout — Roll/Pitch/Yaw rows with Proportional/Integral/D Max/Derivative/Feedforward columns | ||
| - AeroTune voltage scaling — PIDs now correctly scale down for 6S (−13%) and 8S (−23%) builds | ||
| - AeroTune prop size scaling — corrected scaling curve from 2-inch to 8-inch with real-world validated anchor points | ||
| - AeroTune tooltip (i) icons on all PID column headers with plain-English seesaw analogy explanations | ||
| - Bando flying style added | ||
|
|
||
| ### Changed | ||
| - Apply PIDs button resized and recoloured to match Betaflight orange theme | ||
| - Freestyle renamed to Bando | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Align these headings with the project's CalVer scheme.
1.4.0/1.2.0/1.1.0don't match the repo's calendar versioning and read like three separate releases shipped on the same day. This should use the actual Betaflight Configurator release naming.Based on learnings: The Betaflight Configurator project uses CalVer (calendar versioning) format for versioning (e.g., "2025.12.0") rather than traditional SemVer, while still using SemVer for internal API versioning.
🧰 Tools
🪛 LanguageTool
[grammar] ~27-~27: Use a hyphen to join words.
Context: ...re your filters are working. - Rock solid update notifications — the "new ...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai review
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai review
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai review
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai review