ArduPilot 如何快速完成自动调参
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
🚁 手动调参太磨人,换一种方式
你刚组好的四旋翼能飞起来,但悬停时前后晃动得像风里的一片叶子。PID(比例-积分-微分——决定飞行器对指令响应快慢的三个系数)里的 P 和 D 靠手动试飞,一来一回要飞几十次,还怕一次改崩直接炸机。ArduPilot 提供了 QuickTune 自动调参脚本:它在空中自动把增益推到振荡边界再按安全余量回退,把"反复试飞"压缩成一次悬停。读完本文,你能在实机上跑完一轮速率环自动调参,并看懂每个关键参数。
⚡ 自动调参能帮你做什么
- 一次悬停替代几十次试飞:脚本依次自动整定 Roll、Pitch、Yaw 三轴的速率 P/D 参数,默认覆盖 RLL_D、RLL_P、PIT_D、PIT_P、YAW_D、YAW_P 共 6 项
- 自带安全余量:找到每个参数的振荡点后按 QUIK_GAIN_MARGIN(默认 60%)回退,响应快而不失稳
- 一个拨杆掌控全程:开始、暂停、保存都交给遥控器上的开关,人不用盯地面站
- 不保存就回滚:调完未保存就解锁,参数自动恢复调参前的值,调错也不留隐患
🔧 三步跑通 QuickTune 自动调参
原理一句话:QuickTune 采用工程上的"临界比例法"——逐步抬升增益直到飞行器出现小幅振荡,记录振荡频率后把增益按安全余量拉回。整个过程在 LOITER 悬停中完成,原理说明见 VTOL-quicktune.md。
环境准备
- 准备带 SD 卡的飞控(Pixhawk 系列),确认谐波陷波滤波器(过滤电机谐波噪声的滤波器)已开启——脚本依赖较低的陀螺噪声,噪声过大会直接失败
- 从仓库取脚本文件 VTOL-quicktune.lua;需要克隆时用
git clone https://gitcode.com/GitHub_Trending/ar/ardupilot - 地面站装好 Mission Planner 或 QGroundControl,用于观察调参进度消息
关键配置
- 把 lua 脚本复制到 SD 卡 APM/SCRIPTS 目录
- 设 SCR_ENABLE=1 启用脚本功能,重启飞控并在地面站刷新参数列表
- 设 QUIK_ENABLE=1 启用 QuickTune
- 用一个空闲通道接 3 位置开关,如设 RC6_OPTION=300(脚本绑定 1,对应默认 QUIK_RC_FUNC=300)
执行操作
- 起飞后切到 LOITER(多旋翼)或 QLOITER(VTOL),在低风环境稳定悬停
- 开关拨到中间位启动,地面站依次显示 "Tuning: starting tune" 与各项进度
- 看到 "Tuning: done" 后先别降落,把开关拨到高位保存
- 若不满意,开关拨回低位或落地解锁,全部参数自动回滚
📋 调参参数配置速查表
| 参数 | 作用 | 默认值 |
|---|---|---|
| QUIK_ENABLE | 启用脚本 | 0 |
| QUIK_AXES | 调参轴(位掩码) | 7(三轴全调) |
| QUIK_GAIN_MARGIN | 增益安全余量(%) | 60 |
| QUIK_OSC_SMAX | 振荡检测阈值(Hz) | 5 |
| QUIK_YAW_P_MAX | 偏航 P 增益上限 | 0.5 |
| QUIK_YAW_D_MAX | 偏航 D 增益上限 | 0.01 |
| QUIK_AUTO_SAVE | 自动保存延迟(秒) | 0(禁用) |
| QUIK_MAX_REDUCE | 增益最大下调幅度(%) | 20 |
特殊场景:50kg 以上大机动态慢,把 QUIK_OSC_SMAX 减半(50kg 用 3、100kg 用 1.5);只有 2 位置开关时设 QUIK_OPTIONS=1 加 QUIK_AUTO_SAVE=10,调完 10 秒自动保存。倾转旋翼、TVBS 尾座机调偏航前先设 Q_A_RAT_YAW_FLTE=0。
🛑 调参翻车了?按这个顺序排查
- 现象:调参中途机体重度振荡。原因:增益逼近振荡点后余量不足。处理:把 QUIK_GAIN_MARGIN 调大(60→70 以上)重跑,仍抖动再减半 QUIK_OSC_SMAX。
- 现象:调完后偏航反应迟钝。原因:YAW_P_MAX(0.5)、YAW_D_MAX(0.01)上限本身偏保守。处理:确认机型确实需要更快偏航后小幅上调这两项,再配合 P:I 比值参数微整。
- 现象:拨开关没反应。原因:SCR_ENABLE 或 QUIK_ENABLE 未置 1,或通道没绑到 300。处理:核对两个开关参数均为 1、对应通道 RCx_OPTION=300,并确认已处于稳定悬停。
- 现象:调完仍有轻微姿态振荡。原因:振荡阈值偏高导致误判、增益给高了。处理:QUIK_OSC_SMAX 减半重调;落地后查日志中的姿态误差与电机输出验证效果。
📚 继续往深走
一次悬停完成速率环自动整定,下一步可以试内置 Autotune 模式(支持直升机、固定翼、多旋翼),实现见 ArduCopter/mode_autotune.cpp,回归测试参考 Tools/autotest/arducopter.py。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考