1. 控制理论中的两大核心算法:LQR与MPC入门解析
在自动控制领域,线性二次调节器(LQR)和模型预测控制(MPC)是两种经典且广泛应用的控制算法。作为控制工程师,我经常需要在轨迹跟踪、机器人控制、车辆悬架等场景中应用这两种方法。本文将结合我多年的工程实践经验,带您深入理解这两种控制策略的核心原理和实际应用。
LQR以其数学优美和计算高效著称,特别适合线性系统的稳态控制;而MPC则因其处理约束的能力和多步预测的优势,在复杂动态系统中表现突出。理解这两种方法的异同点,对于选择适合特定应用场景的控制策略至关重要。我们将从基础理论出发,逐步深入到实际实验环节,让您不仅能掌握数学推导,更能获得可直接复用的工程实现经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. LQR控制算法详解
2.1 LQR基本原理与数学推导
线性二次调节器(Linear Quadratic Regulator)的核心思想是通过最小化一个二次型代价函数来设计最优控制器。这个代价函数通常表示为:
J = ∫(xᵀQx + uᵀRu)dt
其中x是系统状态,u是控制输入,Q和R分别是状态和控制输入的权重矩阵。Q矩阵决定了我们对系统状态偏离期望值的重视程度,而R矩阵则反映了我们对控制能量的关注程度。
在设计LQR控制器时,我们需要解决代数Riccati方程:
AᵀP + PA - PBR⁻¹BᵀP + Q = 0
这个方程的解P用于计算最优反馈控制律:
u = -Kx = -R⁻¹BᵀPx
实际工程中,Q和R的选择往往需要多次调试。我的经验是从单位矩阵开始,然后根据系统响应逐步调整:如果状态收敛太慢,增大Q的对角元素;如果控制量过大,则增大R的值。
2.2 LQR实现步骤与参数整定
实现一个完整的LQR控制器通常包含以下步骤:
-
建立系统状态空间模型:
ẋ = Ax + Bu
y = Cx + Du -
确定Q和R权重矩阵:
- Q通常是对角矩阵,对角元素表示各状态变量的重要程度
- R的大小影响控制输入的幅值
-
求解Riccati方程得到P矩阵
-
计算反馈增益矩阵K = R⁻¹BᵀP
-
实现闭环控制u = -Kx
在MATLAB中,可以简单地使用lqr函数实现:
matlab复制[K, S, e] = lqr(A, B,
