PID 调参相关知识
约 1673 字大约 6 分钟
2026-07-16
滤波器
无人机飞行过程中,很多传感器的数据容易受到多种噪声干扰,例如陀螺仪测到的角速度数据,有时候无人机明明只是平稳悬停,传感器输出可能仍然不停波动。
这些波动可能来自:电机转动,螺旋桨不平衡,机架共振,飞控自身的电子噪声,外界气流,传感器测量误差等等。
滤波器就是从传感器数据中削弱不需要的噪声,尽量保留真实机体运动的算法。
低通滤波器
允许低频、缓慢变化的信号通过,削弱高频、快速变化的信号。
例如:
- 飞机真实地向右倾斜,一般是相对较低频的运动;
- 电机和螺旋桨产生的细密振动,通常处于更高频率。
低通滤波器会尽量保留前者,削弱后者。
陷波滤波器
陷波滤波器并不是把所有高频信号都压下去,而是专门压制某一小段频率。
如果在 180 Hz 附近存在一个非常明显的振动峰值,那么可以设置陷波器重点削弱 180 Hz 附近的信号。
动态陷波滤波器
动态陷波器能够根据 ESC 转速反馈或飞控的 FFT 频谱分析,跟随振动频率移动。PX4 的动态陷波可利用 ESC RPM 数据跟踪旋翼桨叶通过频率及其谐波,也可以通过机载 FFT 跟踪其他振动源。
控制延迟
控制延迟,就是从无人机发生变化,到飞控检测到变化,再到电机真正作出响应之间所经历的时间。比如遇到一阵风,无人机纠正姿态全程花费的时间就是控制延迟。
1. 无人机开始向右倾斜
2. 陀螺仪检测到角速度变化
3. 数据经过滤波
4. PID 计算纠正量
5. 控制指令发送给 ESC
6. ESC 改变电机转速
7. 无人机产生向左的纠正力矩滤波器会产生控制延迟,因为滤波器本身无法提前知道某个突然变化究竟是“真实运动”还是“噪声”,所以它只能一视同仁地将快速变化削弱,而这样一个削弱的过程会是变化变得平缓一些,从而产生延迟。
滤波相关参数
IMU_GYRO_RATEMAX
PX4 最多以多高的频率,把陀螺仪角速度数据发布给角速度控制器。它基本决定了多旋翼角速度内环的运行频率,也会影响控制输出的更新频率。
IMU_GYRO_CUTOF
角速度环滤波参数。控制器看到的角速度有多“灵敏”。
提高
IMU_GYRO_CUTOFF:角速度反馈更快,控制延迟更小,但更多振动进入 P、I 和后面的 D 通路;降低
IMU_GYRO_CUTOFF:数据更干净,但 P、I 的反馈延迟增加,飞机可能显得更“肉”。
IMU_DGYRO_CUTOFF
如果加速度的变化有一些细小的毛刺,比如说 10.0 → 10.5 → 9.6 → 10.4 → 9.7。角速度看起来只波动了不到 1°/s,但相邻数据变化很快,经过求导后可能产生很大的角加速度噪声。因此 D 项是整个 PID 中对噪声最敏感的部分,PX4 才给它单独设置 IMU_DGYRO_CUTOFF。
提高
IMU_DGYRO_CUTOFF:D 项能够观察更快的角速度变化,阻尼反应更及时,但噪声、电机发热和高频输出风险增加;降低
IMU_DGYRO_CUTOFF:D 项更安静,电机输出更平滑,但阻尼变迟,可能出现过冲、回弹或快速动作收不住。
角速度环滤波参数。D 项看到的角加速度有多“灵敏”。
其他一些滤波参数

| 参数 | 总结 |
|---|---|
| IMU_GYRO_CUTOFF | 陀螺仪角速度低通滤波截止频率,决定角速度反馈的平滑程度和响应速度。 |
| IMU_DGYRO_CUTOFF | D项角加速度低通滤波截止频率,决定D项抑制过冲和过滤高频噪声的能力。 |
| IMU_GYRO_CAL_EN | 是否开启陀螺仪自动校准功能,用于消除零偏误差。 |
| IMU_GYRO_DNF_EN | 是否开启动态陷波滤波器,用于自动跟踪并削弱电机转速相关振动。 |
| IMU_GYRO_DNF_HMC | 动态陷波处理的谐波数量,例如3表示同时滤除基频、二次和三次谐波。 |
| IMU_GYRO_DNF_MIN | 动态陷波最低工作频率,低于该频率的信号不会被动态陷波处理。 |
| IMU_GYRO_NF0_FRQ | 第一个固定陷波器的中心频率,用于滤除指定频率的固定振动。 |
| IMU_GYRO_NF0_BW | 第一个固定陷波器的带宽,决定固定陷波影响的频率范围。 |
| IMU_GYRO_NF1_FRQ | 第二个固定陷波器的中心频率,用于额外滤除另一处固定振动。 |
| IMU_GYRO_NF1_BW | 第二个固定陷波器的带宽,决定第二个固定陷波影响的频率范围。 |
| IMU_GYRO_RATEMAX | 角速度控制环最大运行频率,决定PID更新速度和控制延迟。 |
一些关于滤波的图表
执行器控制 FFT
Actuator Controls FFT 看 PID 输出给电机的“控制动作”。
角速度 FFT
Angular Velocity FFT 看 IMU 感受到的“飞机运动/振动”。

角速度功率谱密度时频图
无人机在每个时间点,陀螺仪角速度信号中有哪些频率的振动,以及这些振动有多强。

从下到上可以看到三条频带。分别为:
基频(Fundamental frequency):电机RPM/60
二次谐波:2 × 电机RPM/60
三次谐波:2 × 电机RPM/60
下面这个是添加了两条陷波滤波的结果图:

D项调节分析
调参顺序
D 抑制震荡 → P 提高响应速度 → I 消除长期误差 → FF 提高跟踪速度阶跃响应(Step Response)图

对无人机横滚角速度(Roll Rate)输入一个阶跃指令,比如突然从0加到100,实际响应曲线是什么样。它主要用来判断 角速度环(Rate Controller)的 PID 调得好不好。
看一开始那段的调整量,越靠近1越好,我这张图最大到了1.3,很明显超调了,欠阻尼,D偏小。
Roll角速度响应曲线

明显过冲,需要降低D。
Pitch角速度响应曲线

同样降低D。
后来我调了好几次,写到那个试飞记录里面了。
