1. 项目背景与核心挑战
去年夏天调试农业植保机时,突然刮起的侧风让整个飞行平台像醉汉一样上下晃动。当时我们团队花了三天时间才把高度波动控制在±15cm内——这个经历让我深刻意识到抗风扰控制算法的重要性。这次要讨论的LQR(线性二次调节器)与PID(比例-积分-微分)控制方案,正是解决这类问题的经典武器库。
在无人机高度控制场景中,风扰属于典型的外部扰动。当突风作用于机体时,会产生额外的升力或下压力,导致高度测量值偏离设定点。传统PID控制器通过误差反馈进行调节,但在面对持续变化的扰动时容易出现超调或振荡。LQR则通过状态空间建模,将控制问题转化为优化问题,理论上能获得更优的动态响应。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 控制模型构建与参数设计
2.1 无人机高度动力学模型
假设无人机质量为m(kg),旋翼产生的总升力为F(N),重力加速度g=9.81m/s²。根据牛顿第二定律建立高度方向的动力学方程:
code复制m·z'' = F - m·g + d
其中d代表风扰(N),可建模为白噪声叠加阶跃信号。将方程转换为状态空间形式,定义状态向量x=[z, z']ᵀ,得到:
code复制x' = A·x + B·u + E·d
y = C·x
其中系统矩阵A=[0 1; 0 0],控制矩阵B=[0; 1/m],干扰矩阵E=[0; 1/m],观测矩阵C=[1 0]。这就是LQR控制器设计的基础模型。
2.2 PID控制器参数整定
采用增量式PID算法避免积分饱和:
matlab复制% 增量式PID计算
error = setpoint - actual_height;
delta_u = Kp*(error - last_error) + Ki*error + Kd*(error - 2*last_error + last_last_error);
参数整定步骤:
- 先设Ki=Kd=0,增大Kp直到出现持续振荡
- 记录临界增益Ku和振荡周期Tu
- 按Ziegler-Nichols规则设置:
- Kp = 0.6*Ku
- Ki = Kp/(0.5*Tu)
- Kd = Kp0.125Tu
注意:风扰环境下建议将微分增益提高20%,以增强抗扰动性
