一款基于 Python + PySide6 开发的桌面工具,通过 USB/串口连接 Betaflight 飞控,实现 PID 参数 与 Rate 参数 的自动调优。
- PID 自动调优: 融合时域规则引擎 + 频域传递函数估计,自动计算最优 PID 参数
- Rate 自动调优: 分析操纵杆输入与角速率响应,自动调整 RC Rate/Super Rate/Expo
- 滤波器自动调优: 基于陀螺仪噪声分析,自动推荐滤波器截止频率
- 双重模式支持: Blackbox 日志分析 + 实时遥测采集
- 飞行场景适配: 航拍 / 花飞 / 竞速 / 新手 / 穿越五种预设,自动调整调参激进程度
- 实时陀螺仪数据监控
- Welch 传递函数估计: 分帧加窗谱估计,输出闭环 Bode 图(幅频 + 相频)
- 相干性检验: 评估飞行数据质量,自动标记不可靠的分析结果
- 频域指标提取: 闭环带宽、相位裕度、谐振峰值、灵敏度函数
- FFT 频谱分析(低频 / 中频 / 高频能量分布)
- 阶跃响应分析(上升时间、超调量、稳态误差)
- 飞行质量评分系统
- 调参方案保存/加载
- 方案对比功能
- 一键备份/恢复配置
- 自动识别 Betaflight 设备
- 支持多种串口波特率
- 飞控信息显示(型号、固件版本、目标)
| 模块 | 技术 | 说明 |
|---|---|---|
| 语言 | Python 3.11+ | 核心开发语言 |
| GUI | PySide6 | Qt 跨平台桌面框架 |
| 串口 | pyserial | MSP 协议通信 |
| 信号处理 | numpy, scipy | Welch 谱估计、FFT、滤波、阶跃响应 |
| 可视化 | pyqtgraph | 实时数据图表 |
| 打包 | PyInstaller | 生成独立可执行文件 |
# 克隆仓库
git clone <repository-url>
cd AutoTune
# 安装依赖
pip install -r requirements.txt
# 运行程序
python main.py下载对应平台的可执行文件:
- Windows:
AutoTune.exe - macOS (M1):
AutoTune.app
- 连接飞控: 使用 USB 线连接 Betaflight 飞控,在"连接"选项卡中选择串口并连接
- 备份配置: 在"自动调参"选项卡中点击"备份当前配置"
- 选择模式: 选择"实时遥测"或"Blackbox 日志文件"
- 执行调参: 点击"开始自动调参",等待分析完成
- 应用结果: 查看调参结果,确认后点击"应用调优结果到飞控"
AutoTune/
├── main.py # 程序入口
├── requirements.txt # Python 依赖
├── resources/
│ └── styles.qss # 暗色主题样式
├── autotune/
│ ├── msp/ # MSP 协议层
│ ├── fc/ # 飞控高层接口
│ ├── acquisition/ # 数据采集模块
│ ├── analysis/ # 信号分析模块
│ ├── tuning/ # 调参算法模块
│ ├── ui/ # 用户界面模块
│ └── utils/ # 工具模块
└── tests/ # 单元测试
- 数据采集: 收集陀螺仪数据和操纵杆输入
- FFT 分析: 识别高频振荡和低频漂移
- 阶跃响应分析: 计算上升时间、超调量、稳态误差
- 规则引擎: 根据分析结果应用调参规则
- 超调过大 → 降低 P 或增加 D
- 响应过慢 → 增加 P
- 低频漂移 → 增加 I
- 高频振荡 → 增加 D 或降低 P
- 分析操纵杆输入与角速率响应关系
- 评估当前 Rate 是否达到目标角速率
- 自动调整:
- 中心灵敏度 → RC Expo
- 最大角速率 → Super Rate
- 线性度 → RC Rate
- 飞行安全: 调参结果仅供参考,建议在试飞前进行充分测试
- 保守模式: 首次使用建议勾选"保守模式",参数变化更小更安全
- 配置备份: 在写入飞控前建议备份当前配置
- 串口驱动: 确保已安装正确的串口驱动(如 CP210x、STM32 VCP)
Apache 2.0 License - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
如有问题或建议,欢迎反馈。