Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

在 Simulink 中设计 LQR 伺服控制器

此示例说明在 Simulink® 中使用飞机自动驾驶应用程序设计 LQR 伺服控制器。

打开以下项的模型

open_system("lqrpilot")

在此模型中:

  • Linearized Dynamics 模块包含线性化的弹体。

  • sf_aerodyn 是一个 S-Function 模块,其中包含 (θ,ϕ)=(0,15) 的非线性方程。

  • ϕϕref 之间的误差信号通过积分器传递,这有助于将误差降至零。

打开模型还会加载 lqrpilotData MAT 文件,该文件包含以下数据。

  • 状态方程矩阵 AB

  • 线性化状态矩阵 A15

  • 最终 LQG 增益矩阵 K_lqr

飞机状态空间方程

该方程是一个状态空间系统的标准状态方程。

x˙=Ax+Bu

对于飞机系统,状态向量如下。

x=[u,v,w,p,q,r,θ,ϕ]T

变量 uvw 是相对于机身主体框架的三个速度,如下图所示。

变量 ϕθ 是滚转和俯仰。pqr 分别是滚转、俯仰和偏航率。

机身动态特性是非线性的。以下方程显示添加到状态空间方程中的非线性分量,其中 g 是重力加速度。

x˙=Ax+Bu+[-gsinθgcosθsinϕgcosθcosϕ000qcosϕ-rsinϕ(qsinϕ+rcosϕ)tanθ]

配平

出于 LQG 设计的目的,非线性动态特性在 ϕ=15pqrθ 设置为零时配平。由于 uvw 不影响前面方程中的非线性项,因此结果是在 (θ,ϕ)=(0,15) 处线性化的模型,所有其余状态均设置为零。

lqrdes 脚本显示如何在此配平的工作点处计算线性化模型 A15

问题定义

设计的目标是实现稳定协调的转弯,如下图所示。

为了实现此目标,您必须设计一个控制器,使飞机通过 60° 滚转来实现稳定转弯指令。此外,假设俯仰角 θ 必须尽可能接近于零。

结果

lqrdes 脚本显示如何计算 LQG 增益矩阵 K_lqr

lqrpilot 模型中,确保 Switch 模块配置为选择 Nonlinear Dynamics 模块的输出。

运行模型。

sim("lqrpilot")

查看滚转 ϕ 对 60° 阶跃变化的响应。系统在大约 60 秒内跟踪滚转指令。

open_system("lqrpilot/phi (roll angle)")

查看俯仰角 θ。控制器能够保持俯仰角相对较小。

open_system("lqrpilot/theta (pitch angle)")

最后,查看控制输入。

open_system("lqrpilot/Control Inputs")

您可以在 lqrdes 脚本中调整 Q 和 R 值以尝试不同设计方案。您还可以比较线性和非线性系统动态特性的仿真,以了解非线性对系统性能的影响。

相关主题