关于INAV地面站的PID控制器
INAV PID 控制器说明
✅ 通用特性
INAV 的 PID 控制器 使用浮点运算(更高精度)。
速率控制器 / 角速度控制器 使用的单位是 角度每秒(dps)。
P、I、D 和多旋翼的 CD 增益 在数值上与 Betaflight 类似,但底层算法不同,因此响应可能会有差异。
控制器类型取决于飞行平台类型:
- 固定翼使用 PIFF 控制器;
- 多旋翼使用 PIDCD 控制器。
固定翼使用 PIFF 控制器:
误差计算公式: rateError = rateTarget - gyroRate → 当前目标角速度与陀螺仪测得的角速度之差。
P 项计算: P = rateError * kP
I 项计算: I += rateError * kI * dT
- 没有使用 Iterm Relax;
- 受控于摇杆限制,当摇杆(横滚/俯仰/偏航)偏转超过参数 fw_iterm_limit_stick_position 设置的阈值时,I 项将停止积累。
无 D 项(导数项)
FF 项(前馈项): FF = rateTarget * kFF
注意:这与 Betaflight 的 FeedForward 不同,是直接根据目标角速度计算的一个简单比例值。
多旋翼使用 PIDCD 控制器:
- 误差计算公式: rateError = rateTarget - gyroRate
- P 项计算: P = rateError * kP
- I 项计算: 使用了 Iterm Relax,在快速操纵时动态降低 I 项影响。
I 项计算公式为: I += (itermErrorRate * kI * antiWindupScaler * dT) + ((newOutputLimited - newOutput) * kT * antiWindupScaler * dT)
当电机输出饱和时,I 项会被限制,防止“积分过冲”。
D 项计算: 仅使用陀螺仪数据(gyro)进行导数计算; 使用 两个低通滤波器(LPF) 来过滤 D 项的高频噪声; 支持 D-Boost 功能:在快速操控时提升 D 项响应(类似 Betaflight 的 D_min)。
CD 项(控制导数项):
- 从设定目标(setpoint)计算导数,用于增强控制器在快速摇杆操作下的响应;
- 相当于 Betaflight 中的 Feed Forward;
- 计算公式为: newCDTerm = rateTargetDeltaFiltered * (kCD / dT)
————本文引用至INAV官网: https://github.com/iNavFlight/inav/blob/master/docs/INAV%20PID%20Controller.md