从经典LQR到学习增强控制:应对模型不确定性与非线性的实践演进

📅 2026/6/26 3:29:26
从经典LQR到学习增强控制:应对模型不确定性与非线性的实践演进
1. 项目概述当经典最优控制遇上现代学习如果你在机器人、无人机或者自动驾驶领域摸爬滚打过一阵子那么“LQR”这个词对你来说肯定不陌生。它就像控制理论工具箱里的一把瑞士军刀结构精巧、理论完备是处理线性系统最优控制问题的标准答案。但真正上手用它来解决实际问题比如让一个双足机器人稳定行走或者让一辆智能车在弯道上精准循迹你可能会发现这把“军刀”虽然锋利但用起来却有不少条条框框——它要求你精确知道系统的数学模型要求你的性能指标是二次型的还要求整个世界都是线性的。这就像拿着一份完美的菜谱却发现手头的食材和厨房条件永远对不上号。这个项目或者说这篇分享就是想聊聊我们这群“厨师”是怎么应对这个问题的。核心就是“LQR控制理论从经典最优控制到现代学习增强方法”这个标题。它描述了一个清晰的演进路径我们从那个优雅但“娇气”的经典LQR出发探讨当现实世界的“非线性”、“模型不确定性”和“复杂性能指标”这些“硬骨头”出现时我们如何引入现代的学习方法比如强化学习、自适应控制来给这把经典的“军刀”装上更智能的“刀柄”和“磨刀石”让它变得更加强大和实用。无论是你正在做机械臂的轨迹跟踪还是在调校无人驾驶的横向控制算法亦或是在完成双容水箱的现代控制课程设计理解这条从“经典”到“学习增强”的脉络都能让你在面对“王青《最优控制》课后习题”般的理想世界和“实验室里跑飞的机器人”般的现实世界时多一份从容和思路。2. 经典LQR理论之美与实践之困在深入如何“增强”之前我们必须先彻底理解被增强的对象——经典的线性二次型调节器Linear Quadratic Regulator, LQR。它的美在于其闭环形式的最优解和清晰的物理意义但它的“困”也恰恰源于构成这种美的严格假设。2.1 核心公式与直观理解考虑一个离散时间的线性时不变系统x_{k1} A x_k B u_k其中x是状态向量比如机器人的关节角度和角速度u是控制输入比如电机的扭矩A和B是已知的系统矩阵。LQR要解决的问题是找到一系列控制律u_k使得从初始状态x_0出发系统在最小化某个二次型性能指标J的意义下达到最优。这个指标通常是J \sum_{k0}^{\infty} (x_k^T Q x_k u_k^T R u_k)这里Q和R是我们设计的权重矩阵分别惩罚状态偏差和控制量大小。Q越大说明我们越希望系统状态如位置误差快速归零R越大说明我们越“吝啬”控制能量如电机出力希望用更“柔和”的方式达到目标。注意Q和R的选择是LQR调参的核心也是艺术所在。它们必须是半正定Q和正定R矩阵。一个实用的起点是将Q设为对角阵对角线元素对应你希望各个状态分量收敛快慢的权重。例如对于小车倒立摆摆杆角度的权重通常远大于小车位置。LQR理论告诉我们这个无限时域优化问题的最优解是一个固定的状态反馈控制律u_k -K x_k其中增益矩阵K可以通过求解一个名为代数Riccati方程ARE的矩阵方程得到P A^T P A - A^T P B (R B^T P B)^{-1} B^T P A QK (R B^T P B)^{-1} B^T P A解出P后K就确定了。这意味着最优控制器就是一个简单的矩阵乘法计算效率极高非常适合实时控制。2.2 经典LQR的三大“实践之困”尽管理论完美但在实验室或工程现场经典LQR的局限性会立刻显现模型依赖之困公式中的A和B必须精确已知。但现实是我们只能通过机理分析或系统辨识得到一个近似模型\hat{A},\hat{B}。对于复杂的机械臂其动力学模型中的惯性参数、摩擦系数很难测准对于无人驾驶车辆其轮胎力模型本身就是高度非线性和不确定的。基于错误模型计算出的“最优”增益K其性能可能大打折扣甚至导致系统不稳定。线性假设之困LQR只适用于线性系统。而几乎所有的物理系统如双容水箱液位与流速关系、无人机姿态动力学、机械臂科氏力、离心力本质都是非线性的。我们通常是在某个平衡点如机械臂的某个特定姿态进行线性化得到局部的A和B。一旦系统状态偏离这个平衡点较远线性模型的误差就会急剧增大LQR控制器的性能无法保证。指标局限之困性能指标J必须是状态和控制的二次型。这虽然数学上方便但有时无法准确表达我们的真实需求。例如我们可能更关心超调量、调节时间或者希望控制输入满足幅值约束执行器饱和这些都无法直接用简单的二次型来表达。强行用二次型近似调参过程会变得非常痛苦和迂回。我个人的体会是经典LQR就像一套量身定做的西装在特定场合精确模型、小范围运行下无比合身。但我们的控制对象往往是个“好动的运动员”身材模型会变动作范围运行区间也大这套西装就显得束手束脚了。接下来要讨论的“学习增强”方法其核心思想就是给这套西装加入弹性面料和可调节的扣子。3. 学习增强LQR的核心思想与架构学习增强方法不是要抛弃LQR而是将其核心的“状态反馈”结构和“优化”思想作为骨架用数据驱动的方法去弥补模型知识的不足或者直接优化更复杂的性能指标。其核心思想可以概括为“用学习来适应未知用反馈来保证鲁棒”。3.1 总体架构嵌套与融合学习增强LQR的架构大致可以分为两类嵌套式和融合式。嵌套式架构是最直观的思路。在这种架构下LQR控制器作为内环负责基于当前可能不精确的模型提供基础的、保证稳定性的控制律。而外环的学习模块则负责在线或离线地“学习”两样东西一是系统模型的误差二是更高级的控制目标。学习模块的输出用于实时更新内环LQR控制器的参数如A,B,Q,R或者直接生成一个附加的补偿控制量。[ 期望状态 ] - [ 学习模块 ] - [ 更新模型/参数 ] - [ LQR控制器 ] - [ 被控对象 ] - [ 当前状态 ] ^ | | | -----------------------------------------------------------------------例如在机械臂控制中内环LQR可以基于名义模型设计保证在小误差范围内的稳定。外环可以用一个神经网络来学习未建模动力学如复杂的摩擦、柔性其输出作为前馈补偿项叠加在LQR的输出上。融合式架构则更深入一层将学习算法直接嵌入到控制律的推导过程中。最具代表性的就是基于强化学习的LQR方法。在这里LQR的代价函数J和Riccati方程的解P,K成为了强化学习中“价值函数”和“最优策略”在线性二次型特殊情况下的解析解。学习算法如策略梯度、Q-learning被用来在无法获得精确A,B时直接搜索最优的增益矩阵K或者学习一个非线性策略该策略在局部可以近似为u -Kx。3.2 关键学习范式模型学习 vs 策略学习围绕上述架构具体的学习增强方法主要从两个方向切入基于模型的学习间接法这类方法的核心是“先学习后控制”。首先利用系统运行数据状态x和控制u来学习或校准系统的动态模型\hat{f}(x, u)。这个模型可以是一个线性模型在线辨识A,B也可以是一个非线性模型如高斯过程、神经网络。然后基于更新后的模型重新求解LQR问题或其在非线性情况下的扩展如iLQR。这种方法在双容水箱这类慢速过程控制中很有优势因为可以有充足的时间进行模型辨识和控制器重设计。无模型的学习直接法这类方法绕过显式建模直接学习控制策略或价值函数。最典型的就是强化学习。策略搜索直接参数化策略u \pi_\theta(x)并通过优化期望累积奖励对应LQR中的-J来调整参数\theta。当策略结构选为线性反馈u -Kx时这就是在直接搜索LQR增益K。价值函数学习学习状态或状态-动作对的价值。对于LQR问题最优价值函数是二次型V*(x) x^T P x。我们可以用一个函数近似器如神经网络来学习这个P矩阵进而得到策略。实操心得在无人驾驶的路径跟踪中我们曾尝试用无模型强化学习直接训练横向控制器。初期发现训练不稳定收敛慢。后来我们借鉴LQR的思想将LQR解作为强化学习策略网络的初始化值相当于给学习算法一个“先验知识”。这样训练速度大幅提升且最终策略在标称工况下表现与LQR相当在极端工况低附着路面下则展现出更强的适应能力。这正体现了“学习增强”的价值用经典方法保证基础性能用学习来突破性能瓶颈。4. 代表性学习增强方法深度解析理论说了很多我们来拆解几个具体、可操作的学习增强LQR方法。这些方法在学术界和工业界的前沿应用中正变得越来越常见。4.1 自适应/在线LQR让控制器自己“认识”系统自适应LQR的核心思想是既然模型A, B不确定或慢时变那我就一边控制一边在线地估计它们。最常用的框架是结合递归最小二乘法RLS或卡尔曼滤波器的参数估计器。操作流程如下参数化模型将系统动态写成参数线性形式。例如对于x_{k1} A x_k B u_k我们可以将A和B的未知元素堆叠成一个参数向量\theta。设计估计器采用带遗忘因子的RLS算法根据实时测量的x_k,u_k,x_{k1}来更新参数估计值\hat{\theta}_k。** certainty-equivalence 控制**在每一个控制周期假设当前估计的模型\hat{A}_k, \hat{B}_k就是真实模型据此求解当前的Riccati方程得到增益矩阵K_k。实施控制应用u_k -K_k x_k。注意事项这种方法有一个著名的“先有鸡还是先有蛋”的问题参数估计需要持续的激励信号而LQR控制的目标是让状态趋于零这会导致激励不足参数估计可能无法收敛。一个实用的技巧是在控制输入中故意加入小幅度的持续激励信号如白噪声或者采用双环结构在参数估计未收敛前使用一个保守的、鲁棒的稳定控制器。适用场景适用于模型参数缓慢变化或初始不确定的系统如机械臂负载变化、飞行器质量特性微变等情况。对于双容水箱如果管道结垢导致流通特性缓慢变化自适应LQR就能很好地应对。4.2 迭代线性二次型调节器iLQR处理非线性的利器iLQR是LQR在非线性系统上的直接扩展它是一种基于模型的、迭代的轨迹优化方法。它不假设全局线性而是在一个参考轨迹可能是上一次迭代的轨迹的每一个点进行局部线性化、二次近似然后像解一串“小LQR”问题一样反向递推求解出最优控制策略的修正量。核心步骤拆解前向仿真给定当前控制序列U从初始状态x_0开始利用真实的非线性动力学x_{k1} f(x_k, u_k)滚动计算得到一条状态轨迹X。反向传播沿着这条轨迹在每个点(x_k, u_k)处计算动力学f的一阶导数雅可比矩阵A_k,B_k和代价函数l(x_k, u_k)的二阶导数海森矩阵或高斯-牛顿近似。这就在轨迹的每个点得到了一个局部LQR问题。求解局部LQR像经典LQR一样反向从终点到起点求解这些局部问题的Riccati方程得到一系列反馈增益K_k和前馈项k_k。前向更新从起点开始用新计算出的反馈-前馈律\delta u_k -K_k \delta x_k k_k来更新控制序列得到新的U。这里的\delta x是相对于参考轨迹的偏差。线搜索与迭代用新的控制序列进行前向仿真如果性能提升则接受更新并以新轨迹为参考开始下一次迭代否则缩小更新步长。重复直到收敛。优势iLQR天然地处理了非线性动力学和非二次的代价函数。它在机器人运动规划中应用极广比如让机械臂完成复杂的抓取动作或者让四足机器人走出动态步态。实操要点微分动力学准确、高效地计算A_k和B_k是关键。对于复杂模型建议使用自动微分工具如CasADi, PyTorch避免手推错误。正则化迭代过程中如果线性化模型很差更新步长可能太大导致发散。必须在反向传播的解中加入正则化项如调节Riccati方程中的R矩阵保证迭代稳定。实时性标准的iLQR是离线规划算法。但其衍生算法如模型预测控制MPC与iLQR结合可以只执行规划出的第一步控制量然后在下一个周期重新规划实现在线应用这正是无人驾驶中常用的轨迹跟踪方法。4.3 强化学习与LQR的结合数据驱动的策略优化这是目前最活跃的研究方向之一。其核心是将LQR视为强化学习在线性高斯环境下的一种特例解析解从而利用RL强大的探索和优化能力。一种典型结合方式策略梯度与基线问题重构将LQR问题转化为一个策略搜索问题。策略参数\theta就是反馈增益矩阵K或者更深层的神经网络权重。初始策略可以设置为一个经典LQR的解K_0。采样与评估在系统上或仿真器中运行当前策略\pi_\theta收集多条轨迹数据\tau (x_0, u_0, x_1, u_1, ...)并计算每条轨迹的总代价J(\tau)。策略梯度计算使用策略梯度定理如REINFORCE估计代价函数J关于参数\theta的梯度。为了降低方差通常会引入一个“基线”一个非常自然且有效的基线就是当前策略下的预期代价而这正好可以用当前策略对应的LQR问题的价值函数V^\pi(x) x^T P x来近似这就是经典的GPOMDP算法或自然策略梯度在LQR问题上的体现。参数更新沿着梯度下降方向更新\theta(即K)。迭代重复2-4步。为什么有效经典LQR给出了最优解的必要条件Riccati方程。但当模型不准时这个“最优解”可能并不好。强化学习通过在实际系统或高保真仿真中“试错”直接优化长期性能可以找到在真实复杂环境下考虑非线性、噪声、未建模动态表现更好的策略。它甚至能优化一些难以用解析形式表达的目标比如“动作尽量平滑”、“避免进入某些状态区域”。在智能车控制中的应用在调无人驾驶lqr控制算法时横向控制的权重Q和R很难调。我们可以固定控制器结构为u -K x然后将K中的某些关键元素如对横向误差和航向误差的反馈增益作为可学习参数。在模拟器或实车数据回放中让RL算法去优化这些参数以最小化包含横向误差、航向误差、控制抖动甚至舒适度jerk的复合代价函数。这样学出来的控制器往往比手工调参的LQR在综合性能上更优。5. 实战从仿真到实物的学习增强LQR实现理论和方法最终要落地。这里我以一个简化版的两轮自平衡小车倒立摆为例展示如何将自适应LQR的思路应用于实物系统。这个例子涵盖了模型不确定性非常典型。5.1 系统建模与经典LQR设计首先我们建立小车的线性化状态空间模型。状态变量通常选为x [小车位置, 小车速度, 摆杆角度, 摆杆角速度]^T。控制输入u是车轮电机的力矩。通过牛顿-欧拉方程并在竖直平衡点摆杆角度为0线性化我们可以得到形如\dot{x} A x B u的模型。其中矩阵A和B依赖于小车质量、摆杆质量、长度、转动惯量等物理参数。假设我们通过粗略测量得到一组标称参数计算出标称矩阵A_nom,B_nom。然后设计LQR选择Q diag([10, 1, 100, 10])强调摆杆角度和小车位置R [0.1]。求解Riccati方程得到标称增益K_nom。在仿真中如果模型完全准确这个控制器能很好地平衡小车。5.2 引入不确定性并实施自适应增强现在假设我们不知道摆杆的确切质量或者负载会变化这会导致模型中的某些参数进而A, B矩阵中的某些元素不准确。我们采用基于RLS的参数自适应来增强LQR。步骤详解参数化将系统动态离散化因为数字控制器是离散的x_{k1} A_d x_k B_d u_k。我们假设不确定性主要影响B_d矩阵的某个元素例如与控制力相关的系数。我们将这个未知参数记为\theta将方程重写为x_{k1} A_d x_k \phi_k \theta其中\phi_k是由已知状态和控制量构成的回归向量。实现RLS估计器# 伪代码示例 import numpy as np # 初始化 theta_hat initial_guess # 参数估计值 P large_positive_matrix # 估计误差协方差矩阵 lambda_forget 0.99 # 遗忘因子用于跟踪时变参数 # 在每个控制周期 k phi construct_regressor(x_k, u_k) # 构造回归向量 # RLS更新 K_gain P phi / (lambda_forget phi.T P phi) theta_hat theta_hat K_gain * (x_{k1} - (A_d_nom x_k phi theta_hat)) P (P - K_gain phi.T P) / lambda_forget # 更新B_d矩阵 B_d_hat update_B_with_theta(B_d_nom, theta_hat)在线LQR求解使用当前估计的A_d_nom假设A准确和B_d_hat以及固定的Q,R在线求解离散时间Riccati方程可以使用scipy.linalg.solve_discrete_are得到当前时刻的增益K_k。注意在线求解Riccati方程计算量较大。对于微控制器一种更实用的方法是预先计算增益K关于参数\theta的查找表或拟合函数在线时直接插值调用。控制实施计算控制量u_k -K_k x_k并施加到小车电机上。同时为了保持参数估计的持续激励可以在u_k上叠加一个幅值很小的高斯白噪声d_k。5.3 效果对比与问题排查在仿真中我们可以对比三种控制器固定LQR标称模型当摆杆质量参数误差较大时控制器可能无法稳定系统或者稳定裕度很小抗干扰能力差。固定LQR真实模型性能最优但需要精确知道真实参数现实中不可得。自适应增强LQR从标称参数开始随着系统运行theta_hat会逐渐收敛到真实值附近控制性能也会逐渐逼近“真实模型LQR”的性能。常见问题与排查估计发散如果P矩阵初始化不当或遗忘因子\lambda太小遗忘太快可能导致估计器数值不稳定。确保P初始化为一个较大的正定对角阵\lambda通常选择在0.95到0.999之间。激励不足如果控制律很快将状态调节到零回归向量\phi_k会趋于零参数更新停止“参数估计冻结”。这就是为什么需要持续激励信号d_k。其幅值需要权衡太小则激励不足太大会影响控制性能。计算延迟在线求解Riccati方程可能无法在一个控制周期内完成。对于快速系统如无人机需要采用更高效的方法如使用预先训练好的神经网络来映射(A,B,Q,R) - K或者采用增益调度Gain Scheduling方法。通过这个实战案例可以看到学习增强此处是参数学习如何将一个在模型误差下可能失效的经典LQR变成一个能够在线适应、保持鲁棒性能的控制器。这其中的思想——利用实时数据来减少模型不确定性——是许多更高级学习增强方法的共同基石。6. 前沿探索与未来展望学习增强LQR的领域仍在快速发展以下几个方向值得关注1. 安全优先的学习增强无论是自适应还是RL学习过程本身可能产生不安全的控制行为。如何保证在学习探索过程中系统状态始终位于安全集内是一个关键问题。将控制屏障函数CBF或模型预测控制的安全框架与学习增强LQR结合形成“安全层学习层”的架构是当前研究热点。例如在机械臂与人协作的场景中底层LQR保证跟踪性能外层的安全滤波器基于学习的动态模型实时修正控制指令确保不会发生碰撞。2. 基于深度网络的模型预测控制Deep MPCiLQR/MPC的瓶颈在于在线优化计算量大。利用深度神经网络来近似MPC的最优解映射即训练一个神经网络输入当前状态和参考直接输出最优控制序列的第一个元素。这个网络的训练数据可以通过离线运行大量iLQR来生成。这相当于把在线优化计算转移到了离线训练阶段非常适合计算资源有限的嵌入式平台如智能车的实时控制器。3. 元学习与少样本适应对于一类结构相似但参数不同的系统如不同负载下的同一款机械臂能否让控制器具备快速适应新个体的能力元学习Learning to Learn旨在训练一个模型使其在接触到新任务新机器人的少量数据后能快速调整其内部参数表现出良好的控制性能。这可以看作是对LQR中“增益调度”概念的智能化、自动化升级。4. 分布式与多智能体LQR在无人机编队、多机器人协同等场景中问题可以建模为大规模分布式线性系统。经典的大规模LQR求解计算复杂。结合图神经网络GNN等架构可以设计分布式策略其中每个智能体只需与其邻居通信就能实现接近全局最优的协同控制。学习在这里用于处理通信拓扑变化或个体动态差异。从我个人的工程实践来看纯粹的“经典派”和纯粹的“学习派”正在相互靠拢。经典控制理论如LQR提供了稳定性、鲁棒性的严格保证和可解释的结构而机器学习提供了处理复杂性、不确定性和非标准目标函数的强大工具。未来的控制器工程师很可能需要一手握着Riccati方程一手握着PyTorch在保证安全可靠的前提下挖掘系统性能的极限。这条路没有终点但每一次将学习算法成功嵌入到一个稳定运行的实物系统中看到它比纯模型驱动的控制器表现得更“聪明”、更“适应”时那种成就感正是驱动我们不断探索的动力。