上个月帮一个做视觉巡检的团队擦屁股,一台 450 轴距的机子,轴距虽然常规,但挂了板载计算机和双目相机后整机接近 2.2 kg。他们刷了官方默认参数,切 Stabilized 刚离地 20 cm 就开始中频剧烈摇摆,操作手一慌切断油门直接侧翻,报废了两支碳桨。
很多人遇到起飞抖动,第一反应就是盲目去降 P 增益,最后往往把手感调得跟开船一样,遇到侧风依然晃。调参脱离物理硬件和日志分析没有任何意义。这里把我平时调试新机型(以 PX4 v1.14.x 为准)从起飞抖动到稳如磐石的标准化流程和参数清单整理出来,方便大家直接抄作业或做排查基准。
测试平台基准(Baseline)
调参前先对齐硬件物理状态,不同机型的转动惯量差异极大,以下参数适合 450 - 550 轴距的工业/实验机型:
- 机架轴距:450 mm 正 X
- 起飞重量:约 2.1 kg
- 动力组合:2216 880KV 电机 + 1045 桨 + 4S 锂电池
- 电调:40A BLHeli_32(支持 DShot600)
- 飞控:Pixhawk 6C(PX4 Autopilot v1.14.0)
- 地面站环境:Ubuntu 22.04 LTS + QGroundControl 4.3
第一步:滤波先行动,干掉高频机械噪声
很多起飞抖动本质上不是控制环路发散,而是电机高频振动串入 IMU,D 项增益把噪声放大后直接喂给电调,导致电机发出刺耳的「滋滋」声并伴随微颤。如果这时候去摸电机,一般几秒钟就会烫手。
PX4 引入动态陷波滤波(Dynamic Notch Filter)后,陀螺仪低通滤波不需要压得太死,但起飞前必须设置保守的基础截止频率。
通过 NuttX Console 或 QGC 设置以下参数:
# 限制陀螺仪采样率推送到控制器的频率,通常设为 400Hz 或更高
param set IMU_GYRO_RATEMAX 400
# 陀螺仪主低通滤波截止频率(根据桨叶转速调整,10寸桨建议 30-40Hz)
param set IMU_GYRO_CUTOFF 35.0
# 启用基于 FFT 或电调遥测的陷波滤波(如果电调支持 DShot Telemetry)
param set IMU_GYRO_DNF_EN 1
排查标准:离地 10 cm 悬停 5 秒后立刻降落上锁,用手背触摸电机外壳。如果温热属于正常;若烫手,立刻停飞,调低 IMU_GYRO_CUTOFF 或者检查机臂共振,不要去动 PID。
第二步:推力曲线线性化与悬停油门锚定
很多新手容易忽略 THR_MDL_FAC(推力模型因子)。无刷电机的转速和油门输入不是完全线性的,推力通常呈二次方关系。如果不做线性化,低油门时增益偏小,中高油门时增益过大,会导致不同油门区间的响应特性完全割裂。
# 推力线性化系数,BLHeli 配合多旋翼电机通常在 0.3 到 0.5 之间
param set THR_MDL_FAC 0.35
# 预设悬停油门比例(根据推重比设置,一般 2:1 的机器在 0.35 - 0.45 之间)
param set MPC_THR_HOVER 0.42
把 MPC_THR_HOVER 设在实际悬停位置附近,能有效防止机体在切入 Altitude(定高)或 Position(定点)模式瞬间出现「弹跳」或「下沉抖动」。
第三步:角速度环与角度环的可复现参数表
针对 450 轴距的机型,官方针对通用 Quadrotor 的默认参数(尤其是 Rate 环的 P 和 D)通常偏激进。我们要遵循「先调 Rate 环,再调 Attitude 环;先 D 后 P 最后 I」的顺序。
以下是一组经过多台实机验证的保守稳定型参数(以 Roll 轴为例,Pitch 轴可先保持镜像设置):
| 参数名 | 默认值 | 推荐初值(稳健型) | 说明 |
|---|---|---|---|
MC_ROLLRATE_D | 0.0035 | 0.0018 - 0.0022 | 抑制超调。过高会引起高频抖动和电机发热 |
MC_ROLLRATE_P | 0.1500 | 0.0750 - 0.0900 | 跟踪角速度,降到不发生中频振荡的临界点 |
MC_ROLLRATE_I | 0.2000 | 0.1200 | 消除稳态误差,低一点不影响悬停,防止起飞积分饱和 |
MC_ROLLRATE_K | 1.0 | 1.0 | 系统总体增益,保持默认 |
MC_ROLL_P | 6.5 | 4.5 - 5.0 | 角度环比例增益,决定回平速度,太高会导致低频晃动 |
批量注入配置的 CLI 指令(可在 MAVLink Console 执行):
# 角速度环参数下调,消除离地振荡
param set MC_ROLLRATE_P 0.085
param set MC_ROLLRATE_I 0.120
param set MC_ROLLRATE_D 0.0020
param set MC_PITCHRATE_P 0.085
param set MC_PITCHRATE_I 0.120
param set MC_PITCHRATE_D 0.0020
# 角度环降低刚度,避免超调
param set MC_ROLL_P 4.8
param set MC_PITCH_P 4.8
# 保存到 ROM
param save
第四步:定点与位置环抑制(解决悬停漂移)
当机体在 Stabilized 和 Altitude 模式下均能平稳飞行后,切入 Position 模式如果出现「画圈」或「来回冲竹篙」,通常是位置环和速度环增益过高。
# 水平速度环 P 增益(默认偏硬,容易出现刹车过猛导致的抖动)
param set MPC_XY_VEL_P_ACC 1.4
# 水平速度环 I 增益
param set MPC_XY_VEL_I_ACC 0.3
# 水平位置 P 增益
param set MPC_XY_P 0.85
日志复盘:看哪几条曲线
调参绝对不能靠肉眼看飞机平不平,每次落地导出 .ulg 日志,上传到 PX4 Flight Review 分析三个核心图表:
- Raw Angular Angular Velocity (陀螺仪原始数据): 在没有进行剧烈打杆时,角速度波动应控制在 0.05 rad/s 以内。若存在密集的毛刺(振幅大于 0.2 rad/s),立刻加大滤波,不要加 PID。
- Actuator Controls (执行器输出): 观察四个电机的 PWM/DShot 输出曲线。如果四条线紧紧咬合在一起,说明动平衡和控制环状态良好;如果其中有一对对角电机长期处于高位饱和(比如达到 0.9 以上),说明物理重心偏移严重,飞控正在拼命抗力矩,这通常是起飞单边抖动的元凶。
- Roll/Pitch Angular Rate vs Setpoint (响应跟踪曲线): 看 Setpoint(期望值)和 Estimated(估计值)的重合度。如果 Estimated 紧随 Setpoint 但伴有微小高频振铃,说明 D 偏大;如果出现明显的超调后震荡拉回,说明 P 偏大或 D 不足。
踩坑复盘记
去年我们一台 6 轴测绘机在野外调参,当时为了追求所谓的「锁死感」,直接在 QGC 上将 MC_ROLLRATE_D 翻倍。飞机在室内无风环境悬停确实纹丝不动,结果拉到外场迎着 4 级阵风平飞时,气流扰动激发电机的微小振荡,D 项瞬间剧烈响应,加上当时电机低通滤波开得过宽(60 Hz),导致高频自激在 1.5 秒内扩散。整台机器在空中发出刺耳尖叫,一个 ESC 瞬间过流烧穿 Mosfet,直接炸机。
调工业级或实验级无人机,宁可让飞机手感稍微「肉」一点,留出充足的相位裕度给突风和载荷变化,也绝不要把 P 和 D 推到振荡边缘。稳定悬停永远是控制输出与物理噪声妥协的结果。
许可协议:CC BY-NC 4.0
更新于 12 小时前
觉得文章有帮助?点个赞吧!
0 条评论


