第5章:最优控制理论
本章概要
最优控制理论是现代控制理论的核心分支,它研究如何在满足系统动力学约束的条件下,寻找使某个性能指标达到最优的控制策略。本章将从变分法的基本原理出发,深入探讨Pontryagin最大值原理、线性二次调节器(LQR)、代数Riccati方程以及动态规划方法。我们将通过Apollo登月舱轨迹优化和Boston Dynamics Spot四足机器人步态优化两个经典案例,展示最优控制理论在实际工程中的应用。
5.1 变分法与Pontryagin最大值原理
5.1.1 变分法基础
变分法是研究泛函极值问题的数学工具,起源于17世纪的最速降线问题。在最优控制理论中,变分法为我们提供了寻找最优轨迹的数学框架。与普通函数的极值问题不同,变分问题研究的是函数的函数(泛函)的极值,这正是控制问题的本质——我们要在所有可能的控制函数中找到最优的那一个。
变分法的核心思想是通过微小扰动来识别极值条件。设想我们有一个候选的最优轨迹,如果它确实是最优的,那么任何微小的扰动都不应该改善性能指标。这个直观的想法导出了变分法的第一变分条件,类似于普通微积分中导数为零的条件。
考虑一般形式的最优控制问题:
$$ \min_{u(\cdot)} J = \phi(x(t_f), t_f) + \int_{t_0}^{t_f} L(x(t), u(t), t) dt $$
其中:
- $x(t) \in \mathbb{R}^n$ 是状态向量,描述系统在时刻$t$的状态
- $u(t) \in \mathbb{R}^m$ 是控制输入,是我们可以主动选择的变量
- $\phi$ 是终端代价(Mayer项),评价终端状态的好坏
- $L$ 是运行代价(Lagrange项),评价轨迹过程的代价
系统动力学约束为: $$ \dot{x}(t) = f(x(t), u(t), t), \quad x(t_0) = x_0 $$
这个约束告诉我们系统状态如何随控制输入演化。物理上,$f$可能代表牛顿定律、电路方程或化学反应动力学等。
变分法的局限性:
经典变分法在处理实际控制问题时存在几个重要局限:
-
控制约束处理困难:实际系统的控制输入总是有界的(如电机的最大力矩、阀门的最大开度),但变分法难以直接处理不等式约束。
-
奇异问题:当哈密顿函数对控制变量的依赖是线性的时,经典变分法失效,这就是所谓的奇异控制问题。
-
数值求解困难:变分法导出的是两点边值问题,数值求解时需要同时满足初始条件和终端条件,这在高维情况下极具挑战性。
正是这些局限促使Pontryagin等人发展了最大值原理,为有约束的最优控制问题提供了更一般的理论框架。
5.1.2 Euler-Lagrange方程
对于无约束的变分问题,最优解必须满足Euler-Lagrange方程。这个方程是变分法的基石,由Euler在1744年首次提出,后经Lagrange完善。理解Euler-Lagrange方程的推导过程对掌握最优控制理论至关重要。
考虑简单的泛函:
$$ J[y] = \int_{a}^{b} F(x, y, y') dx $$
其中$F$是关于自变量$x$、未知函数$y(x)$及其导数$y'(x)$的函数。
推导过程:
设$y^*(x)$是使泛函$J$达到极值的函数,引入扰动$\epsilon \eta(x)$,其中$\eta(x)$是满足边界条件$\eta(a) = \eta(b) = 0$的任意光滑函数。考虑扰动后的泛函:
$$ J(\epsilon) = \int_{a}^{b} F(x, y^* + \epsilon\eta, y^{*'} + \epsilon\eta') dx $$
极值的必要条件是: $$ \frac{dJ}{d\epsilon}\bigg|_{\epsilon=0} = 0 $$
通过分部积分和任意性论证,得到Euler-Lagrange方程:
$$ \frac{\partial F}{\partial y} - \frac{d}{dx}\left(\frac{\partial F}{\partial y'}\right) = 0 $$
物理意义:
Euler-Lagrange方程在物理学中有深刻的含义。在分析力学中,它导出了拉格朗日运动方程,统一了牛顿力学的各种问题。在最优控制中,它刻画了最优轨迹必须满足的微分方程。
高阶导数情况:
对于包含高阶导数的泛函: $$ J[y] = \int_{a}^{b} F(x, y, y', y'', \ldots, y^{(n)}) dx $$
相应的Euler-Lagrange方程变为: $$ \frac{\partial F}{\partial y} - \frac{d}{dx}\left(\frac{\partial F}{\partial y'}\right) + \frac{d^2}{dx^2}\left(\frac{\partial F}{\partial y''}\right) - \cdots + (-1)^n\frac{d^n}{dx^n}\left(\frac{\partial F}{\partial y^{(n)}}\right) = 0 $$
多变量情况:
当有多个未知函数$y_1(x), y_2(x), \ldots, y_n(x)$时,每个函数都对应一个Euler-Lagrange方程: $$ \frac{\partial F}{\partial y_i} - \frac{d}{dx}\left(\frac{\partial F}{\partial y_i'}\right) = 0, \quad i = 1, 2, \ldots, n $$
这形成了一个耦合的微分方程组,在控制问题中对应于多输入多输出(MIMO)系统。
5.1.3 Pontryagin最大值原理
Pontryagin最大值原理是20世纪控制理论最重要的成就之一,它彻底改变了我们处理最优控制问题的方式。1956年,苏联数学家Lev Pontryagin和他的学生们(Boltyanskii、Gamkrelidze、Mishchenko)在研究时间最优控制问题时发现了这个原理。有趣的是,他们最初是为了解决苏联洲际弹道导弹的轨迹优化问题,这个军事需求催生了一个影响深远的数学理论。
最大值原理的革命性在于它能够处理控制变量受约束的问题,这是经典变分法无法直接解决的。在实际工程中,所有的控制输入都是有界的——火箭推力有最大值、舵面偏转有极限、电机转矩有饱和。最大值原理优雅地处理了这些约束。
哈密顿函数的构造:
定义哈密顿函数(也称为Pontryagin函数):
$$ H(x, u, \lambda, t) = L(x, u, t) + \lambda^T f(x, u, t) $$
其中 $\lambda(t) \in \mathbb{R}^n$ 是协态向量(也称为伴随变量或拉格朗日乘子)。
哈密顿函数的物理意义可以理解为"瞬时总代价":$L$是瞬时运行代价,$\lambda^T f$可以解释为状态变化带来的"影子代价"。协态$\lambda_i$表示状态$x_i$的边际价值——增加一单位$x_i$对总代价的影响。
最大值原理的必要条件:
如果$(x^*(t), u^*(t))$是最优轨迹和最优控制,则存在协态函数$\lambda(t)$使得:
- 状态方程(正向动力学): $$ \dot{x} = \frac{\partial H}{\partial \lambda} = f(x, u, t) $$
这就是原始的系统动力学方程,描述系统如何正向演化。
- 协态方程(反向动力学): $$ \dot{\lambda} = -\frac{\partial H}{\partial x} = -\frac{\partial L}{\partial x} - \left(\frac{\partial f}{\partial x}\right)^T \lambda $$
协态方程描述了"价值"如何反向传播。它告诉我们状态的边际价值如何随时间变化。
- 最优性条件(Pontryagin最小值条件): $$ H(x^*, u^*, \lambda^*, t) = \min_{u \in U} H(x^*, u, \lambda^*, t) $$
注意:在最小化问题中是最小值条件,在最大化问题中是最大值条件。这个条件说明最优控制使哈密顿函数达到全局最小值。
- 横截条件(边界条件):
横截条件取决于问题的边界约束:
- 固定终端状态:$x(t_f) = x_f$给定
- 自由终端状态:$\lambda(t_f) = \frac{\partial \phi}{\partial x}\bigg|_{t=t_f}$
- 固定终端时间:$t_f$给定
- 自由终端时间:$H(t_f) + \frac{\partial \phi}{\partial t}\bigg|_{t=t_f} = 0$
对于更复杂的终端约束$\psi(x(t_f), t_f) = 0$,需要引入额外的拉格朗日乘子。
最大值原理vs变分法:
最大值原理可以看作变分法的推广:
- 当控制无约束且哈密顿函数对$u$可微时,最优性条件退化为$\frac{\partial H}{\partial u} = 0$,这正是变分法的结果
- 当控制有约束时,最大值原理给出全局最小化条件,而不仅仅是驻点条件
- 最大值原理能处理Bang-Bang控制等不连续控制,这是变分法无法处理的
5.1.4 最小时间控制示例
最小时间控制问题是最优控制理论中的经典问题,它在工业机器人、航天器姿态控制等领域有广泛应用。这类问题的特点是控制能量有限,目标是以最快速度完成任务。下面通过双积分器系统详细展示最大值原理的应用。
考虑双积分器系统的最小时间控制问题:
系统动力学:
ẋ₁ = x₂ (位置的导数是速度)
ẋ₂ = u (速度的导数是加速度/控制)
控制约束:
|u| ≤ 1 (加速度有界)
初始条件:x₁(0) = x₁₀, x₂(0) = x₂₀
终端条件:x₁(tf) = 0, x₂(tf) = 0
目标:最小化时间 tf
这个模型可以代表多种物理系统:
- 一维质点的位置控制(x₁是位置,x₂是速度)
- 直流电机的角度控制(x₁是角度,x₂是角速度)
- 起重机的防摆控制简化模型
应用最大值原理:
性能指标:$J = \int_0^{t_f} 1 dt = t_f$(最小化时间)
构造哈密顿函数: $$ H = 1 + \lambda_1 x_2 + \lambda_2 u $$
其中"1"来自于被积函数$L = 1$(时间的累积)。
求解协态方程:
根据协态方程 $\dot{\lambda}_i = -\frac{\partial H}{\partial x_i}$:
$$ \dot{\lambda}_1 = -\frac{\partial H}{\partial x_1} = 0 \Rightarrow \lambda_1 = c_1 \text{(常数)} $$
$$ \dot{\lambda}_2 = -\frac{\partial H}{\partial x_2} = -\lambda_1 = -c_1 \Rightarrow \lambda_2 = -c_1 t + c_2 $$
协态的物理意义:
- $\lambda_1$:位置的"时间代价",保持常数表示位置偏差的代价不随时间变化
- $\lambda_2$:速度的"时间代价",线性变化反映了速度对到达目标的影响随时间改变
确定最优控制:
根据最优性条件,最优控制使哈密顿函数最小: $$ u^* = \arg\min_{|u| \leq 1} H = \arg\min_{|u| \leq 1} (1 + \lambda_1 x_2 + \lambda_2 u) $$
由于H对u是线性的,最优控制必定在约束边界上: $$ u^* = \begin{cases} -1 & \text{if } \lambda_2 > 0 \\ +1 & \text{if } \lambda_2 < 0 \\ \text{未定} & \text{if } \lambda_2 = 0 \end{cases} $$
即:$u^* = -\text{sign}(\lambda_2) = -\text{sign}(-c_1 t + c_2)$
Bang-Bang控制的物理解释:
最优控制是Bang-Bang型的,即控制总是取最大值或最小值,永不在中间值。这个结果有直观的物理解释:
- 要最快到达目标,应该始终使用最大可用力
- 控制在某个时刻切换方向,先加速后减速(或相反)
- 切换时刻由初始条件唯一确定
相平面分析:
在$(x_1, x_2)$相平面上,系统轨迹满足:
- 当$u = +1$时:$x_2^2 = x_{20}^2 + 2(x_1 - x_{10})$(向上的抛物线)
- 当$u = -1$时:$x_2^2 = x_{20}^2 - 2(x_1 - x_{10})$(向下的抛物线)
最优切换曲线(开关曲线): $$ \Gamma^+ : x_1 = -\frac{1}{2}x_2|x_2| \quad (x_2 > 0) $$ $$ \Gamma^- : x_1 = \frac{1}{2}x_2|x_2| \quad (x_2 < 0) $$
最优控制策略:
- 如果初始点在$\Gamma^+$上方或$\Gamma^-$下方:先用$u = -1$
- 如果初始点在$\Gamma^+$下方或$\Gamma^-$上方:先用$u = +1$
- 当轨迹到达切换曲线时,切换控制方向
- 沿切换曲线滑行到原点
这个策略确保以最短时间到达目标,体现了"全力加速-适时切换-全力减速"的最优原则。
5.2 线性二次调节器(LQR)
5.2.1 LQR问题描述
线性二次调节器是最优控制理论中最重要和最实用的结果之一。考虑线性时不变系统:
$$ \dot{x}(t) = Ax(t) + Bu(t) $$
目标是最小化二次性能指标:
$$ J = \int_0^\infty (x^T Q x + u^T R u) dt $$
其中:
- $Q \succeq 0$ 是状态权重矩阵(半正定)
- $R \succ 0$ 是控制权重矩阵(正定)
5.2.2 LQR解的推导
应用最大值原理,哈密顿函数为:
$$ H = x^T Q x + u^T R u + \lambda^T (Ax + Bu) $$
最优性条件 $\frac{\partial H}{\partial u} = 0$ 给出:
$$ 2Ru + B^T \lambda = 0 \Rightarrow u^* = -\frac{1}{2}R^{-1}B^T \lambda $$
假设协态与状态成线性关系:$\lambda = 2Px$,其中 $P$ 是待定的对称矩阵。
代入协态方程并整理,可得代数Riccati方程(将在5.3节详细讨论)。
5.2.3 LQR控制律
LQR的最优控制律为状态反馈形式:
$$ u^*(t) = -Kx(t) $$
其中反馈增益矩阵: $$ K = R^{-1}B^T P $$
$P$ 是代数Riccati方程的解: $$ A^T P + PA - PBR^{-1}B^T P + Q = 0 $$
5.2.4 LQR的重要性质
-
稳定性保证:若 $(A, B)$ 可控,$(A, \sqrt{Q})$ 可观,则闭环系统 $\dot{x} = (A - BK)x$ 渐近稳定。
-
相位裕度:LQR控制器在每个输入通道上至少有60度的相位裕度。
-
增益裕度:增益裕度为 $[0.5, \infty)$,即系统对增益变化具有很强的鲁棒性。
-
最优性:LQR给出的是全局最优解,不存在局部最优。
5.2.5 权重矩阵选择技巧
选择合适的 $Q$ 和 $R$ 矩阵是LQR设计的关键:
-
Bryson规则: $$ Q_{ii} = \frac{1}{x_{i,\max}^2}, \quad R_{jj} = \frac{1}{u_{j,\max}^2} $$
-
输出加权:若只关心输出 $y = Cx$,可设: $$ Q = C^T W_y C $$
-
迭代调整: - 增大 $Q$ 的元素:加快状态收敛 - 增大 $R$ 的元素:减小控制能量
5.3 代数Riccati方程
5.3.1 连续时间代数Riccati方程(CARE)
代数Riccati方程是LQR和许多其他最优控制问题的核心。标准形式为:
$$ A^T P + PA - PBR^{-1}B^T P + Q = 0 $$
这是一个关于对称矩阵 $P$ 的非线性矩阵方程。
5.3.2 Riccati方程的性质
-
解的存在性:若 $(A, B)$ 可镇定,$(A, \sqrt{Q})$ 无不可观的不稳定模态,则存在唯一的正定解 $P \succ 0$。
-
解的唯一性:在上述条件下,存在唯一的镇定解,即使闭环系统 $A - BR^{-1}B^T P$ 稳定的解。
-
对称性:Riccati方程的解必定是对称矩阵。
5.3.3 数值求解方法
- Schur方法(最常用): 构造哈密顿矩阵: $$ \mathcal{H} = \begin{bmatrix} A & -BR^{-1}B^T \\ -Q & -A^T \end{bmatrix} $$
通过Schur分解找到稳定子空间,从而求得 $P$。
-
迭代方法: - Newton-Raphson迭代 - Kleinman迭代(保证单调收敛)
-
矩阵符号函数法: 利用矩阵符号函数的性质求解。
5.3.4 离散时间代数Riccati方程(DARE)
对于离散系统 $x_{k+1} = Ax_k + Bu_k$,对应的DARE为:
$$ P = A^T PA - A^T PB(R + B^T PB)^{-1}B^T PA + Q $$
5.3.5 Riccati方程的物理意义
Riccati方程的解 $P$ 可以理解为"代价-to-go"矩阵:
$$ V(x) = x^T P x $$
表示从状态 $x$ 出发,采用最优控制策略到达原点的最小代价。
5.4 动态规划与HJB方程
5.4.1 Bellman最优性原理
动态规划基于Bellman的最优性原理:
"最优策略具有这样的性质:无论初始状态和初始决策如何,对于由初始决策所产生的状态,其余的决策必须构成相对于该状态的最优策略。"
5.4.2 值函数与HJB方程
定义值函数(最优代价-to-go):
$$ V(x, t) = \min_{u(\cdot)} \left\{ \int_t^{t_f} L(x(\tau), u(\tau), \tau) d\tau + \phi(x(t_f), t_f) \right\} $$
Hamilton-Jacobi-Bellman(HJB)偏微分方程:
$$ -\frac{\partial V}{\partial t} = \min_u \left\{ L(x, u, t) + \left(\frac{\partial V}{\partial x}\right)^T f(x, u, t) \right\} $$
边界条件:$V(x, t_f) = \phi(x, t_f)$
5.4.3 HJB方程与最大值原理的关系
两种方法本质上是等价的:
- 协态向量:$\lambda = \frac{\partial V}{\partial x}$
- 哈密顿函数的最小值:$H^* = -\frac{\partial V}{\partial t}$
5.4.4 线性二次问题的HJB解
对于LQR问题,假设值函数为二次形式:
$$ V(x, t) = x^T P(t) x $$
代入HJB方程,可得Riccati微分方程:
$$ -\dot{P} = A^T P + PA - PBR^{-1}B^T P + Q $$
稳态时 $\dot{P} = 0$,即得到代数Riccati方程。
5.4.5 数值动态规划
对于非线性系统,HJB方程通常没有解析解,需要数值方法:
- 网格法:在状态空间离散化,用有限差分逼近
- 近似动态规划:使用函数逼近(如神经网络)表示值函数
- 微分动态规划(DDP):局部二次逼近,迭代改进轨迹
5.5 案例研究
5.5.1 案例1:Apollo登月舱轨迹优化
Apollo登月舱的下降轨迹优化是最优控制理论的经典应用。1969年的登月任务中,需要在有限燃料约束下实现安全着陆。
问题描述:
登月舱从高度 $h_0 = 15000$ m、速度 $v_0 = 450$ m/s开始下降,需要优化推力控制使其软着陆($h_f = 0$, $v_f = 0$)。
动力学模型: $$ \begin{aligned} \dot{h} &= v \\ \dot{v} &= -g + \frac{T}{m} \\ \dot{m} &= -\alpha T \end{aligned} $$
其中:
- $h$ 是高度,$v$ 是垂直速度
- $g = 1.62$ m/s² 是月球重力加速度
- $T$ 是推力(控制变量),$0 \leq T \leq T_{\max}$
- $m$ 是质量,$\alpha$ 是燃料消耗率
优化目标:
最小化燃料消耗(等价于最大化终端质量): $$ J = -m(t_f) $$
应用Pontryagin最大值原理:
哈密顿函数: $$ H = \lambda_h v + \lambda_v \left(-g + \frac{T}{m}\right) + \lambda_m (-\alpha T) $$
协态方程: $$ \begin{aligned} \dot{\lambda}_h &= 0 \Rightarrow \lambda_h = c_1 \\ \dot{\lambda}_v &= -\lambda_h = -c_1 \\ \dot{\lambda}_m &= \lambda_v \frac{T}{m^2} \end{aligned} $$
开关函数: $$ S = \frac{\lambda_v}{m} - \alpha \lambda_m $$
最优控制策略(Bang-Bang): $$ T^* = \begin{cases} T_{\max} & \text{if } S > 0 \\ 0 & \text{if } S < 0 \end{cases} $$
工程实现:
实际Apollo制导计算机使用了简化的多项式制导律,基于最优轨迹的近似:
$$ T(t) = a_0 + a_1 t + a_2 t^2 $$
系数通过边界条件和燃料约束确定。这种方法计算简单,适合1969年的计算能力限制。
现代改进:
现代方法使用凸优化技术,将问题转化为二阶锥规划(SOCP):
$$ \begin{aligned} \min_{u, \sigma} \quad & -\ln(m(t_f)) \\ \text{s.t.} \quad & \dot{r} = v \\ & \dot{v} = g + \frac{u}{m} \\ & \dot{m} = -\alpha |u| \\ & |u| \leq T_{\max} \\ & \cos\theta_{\max} |u| \leq u_z \end{aligned} $$
这种方法可以处理更复杂的约束,如姿态限制、落点精度等。
5.5.2 案例2:Boston Dynamics Spot四足机器人步态优化
Spot机器人的动态步态需要实时优化控制,以实现稳定、高效的运动。
简化模型:
采用单刚体动力学模型(SRBD):
$$ \begin{aligned} m\ddot{r} &= mg + \sum_{i=1}^{4} f_i \\ I\dot{\omega} &= \sum_{i=1}^{4} (p_i - r) \times f_i \end{aligned} $$
其中:
- $r$ 是质心位置,$m = 30$ kg是总质量
- $I$ 是惯性张量,$\omega$ 是角速度
- $f_i$ 是第$i$条腿的接触力
- $p_i$ 是足端位置
优化问题:
在每个控制周期(10ms)内求解:
$$ \min_{f_i, \tau_j} J = \sum_{k=0}^{N} \left( |x_k - x_k^{ref}|_Q^2 + \sum_{i=1}^{4} |f_{i,k}|_R^2 \right) $$
约束条件:
- 动力学约束:满足SRBD方程
- 摩擦锥约束:$|f_{i,xy}| \leq \mu f_{i,z}$,$\mu = 0.6$
- 接触约束:支撑相 $f_{i,z} > 0$,摆动相 $f_i = 0$
- 关节力矩限制:$|\tau_j| \leq \tau_{\max}$
分层控制架构:
高层:步态规划器
↓ (步态参数、落脚点)
中层:MPC控制器
↓ (期望接触力)
底层:全身控制器(WBC)
↓ (关节力矩)
硬件:电机驱动器
MPC实现:
使用凸化的MPC,线性化动力学:
$$ x_{k+1} = A_k x_k + B_k u_k + g_k $$
其中状态 $x = [r, \dot{r}, \theta, \omega]$,控制 $u = [f_1, ..., f_4]$。
通过QP求解器(如OSQP)实时求解,计算时间 < 3ms。
步态优化:
不同步态的优化目标:
-
Trot(对角步态): - 最小化垂直方向加速度变化 - 相位差:对角腿同步,$\phi = 0.5$
-
Bound(跳跃步态): - 最大化前进速度 - 前后腿交替,$\phi = 0.5$
-
Pace(同侧步态): - 最小化侧向晃动 - 同侧腿同步
地形适应:
使用价值迭代进行地形代价地图学习:
$$ V(s) = \min_a \left[ c(s, a) + \gamma V(s') \right] $$
其中 $c(s, a)$ 包含:
- 稳定性代价:$c_{stable} = |CoM - \text{support polygon}|$
- 能量代价:$c_{energy} = \sum \tau_i^2$
- 进度奖励:$c_{progress} = -v \cdot \hat{d}$
实验结果:
- 最高速度:1.6 m/s
- 爬坡能力:35°
- 负载能力:14 kg(约50%体重)
- 续航时间:90分钟
5.6 历史人物:Lev Pontryagin (1908-1988)
Lev Semyonovich Pontryagin是20世纪最伟大的数学家之一,他在拓扑学、代数和控制理论等多个领域做出了开创性贡献。
生平与成就:
Pontryagin在14岁时因煤气爆炸事故失明,但这并未阻止他成为杰出的数学家。在母亲的帮助下,他完成了莫斯科大学的学业,并在23岁时成为教授。
1956年,Pontryagin开始研究最优控制问题。当时苏联正在开发洲际弹道导弹,需要解决最优轨迹问题。传统的变分法无法处理控制约束,Pontryagin和他的学生(Boltyanskii、Gamkrelidze、Mishchenko)发展了最大值原理。
最大值原理的意义:
- 理论突破:首次给出了有控制约束的最优控制必要条件
- 实际应用:直接应用于航天器轨迹优化、经济规划等
- Bang-Bang控制:揭示了时间最优控制的开关特性
轶事:
- Pontryagin的讲座以清晰著称,他能完全凭记忆在黑板上画出复杂的图形
- 他的著作《常微分方程》被翻译成多种语言,影响了几代数学家
- 尽管失明,他在拓扑学中的"Pontryagin类"等概念都涉及复杂的几何直觉
5.7 前沿专题:随机最优控制与路径积分方法
5.7.1 随机最优控制
考虑随机动力系统:
$$ dx = f(x, u)dt + G(x)dW $$
其中 $W$ 是维纳过程。对应的HJB方程变为:
$$ -\frac{\partial V}{\partial t} = \min_u \left\{ L(x, u) + \mathcal{L}V \right\} $$
其中 $\mathcal{L}$ 是Kolmogorov算子: $$ \mathcal{L} = f^T \nabla + \frac{1}{2}\text{tr}(GG^T \nabla^2) $$
5.7.2 路径积分控制
路径积分方法将最优控制问题转化为统计力学问题:
$$ u^*(x) = -R^{-1}g^T(x) \nabla V(x) $$
值函数通过路径积分计算:
$$ V(x) = -\lambda \log \mathbb{E}\left[ e^{-\frac{1}{\lambda}S(\tau)} | x_0 = x \right] $$
其中 $S(\tau)$ 是路径代价。
优势:
- 可以利用采样方法避免维数灾难
- 自然处理非线性和非高斯噪声
- 与强化学习方法有紧密联系
5.7.3 信息理论视角
最优控制可以表述为KL散度最小化:
$$ \min_{\pi} \mathbb{E}_\pi[c(x, u)] + \lambda D_{KL}(\pi | \pi_0) $$
这建立了最优控制与最大熵原理的联系,在机器人学习中有重要应用。
5.8 本章小结
最优控制理论为设计高性能控制系统提供了系统的数学框架。本章的核心概念包括:
-
Pontryagin最大值原理:处理有约束最优控制问题的基本工具,通过协态方程和哈密顿函数刻画最优性条件。
-
线性二次调节器(LQR):最实用的最优控制方法之一,提供状态反馈形式的全局最优解,具有优良的稳定性和鲁棒性。
-
代数Riccati方程:LQR和其他最优控制问题的核心,其解代表了系统的"代价-to-go"。
-
动态规划与HJB方程:从值函数角度研究最优控制,与最大值原理形成对偶关系。
-
工程应用:从Apollo登月到现代机器人,最优控制理论在复杂工程系统中发挥关键作用。
关键公式汇总:
- 哈密顿函数:$H = L + \lambda^T f$
- 协态方程:$\dot{\lambda} = -\frac{\partial H}{\partial x}$
- LQR反馈律:$u = -Kx = -R^{-1}B^T Px$
- 代数Riccati方程:$A^T P + PA - PBR^{-1}B^T P + Q = 0$
- HJB方程:$-\frac{\partial V}{\partial t} = \min_u \{L + (\nabla V)^T f\}$
5.9 练习题
基础题
习题5.1 双积分器最小时间控制
考虑系统:$\ddot{x} = u$,$|u| \leq 1$。求从初始状态 $(x_0, \dot{x}_0) = (2, 1)$ 到原点的最小时间控制。
提示
使用Pontryagin最大值原理,注意Bang-Bang控制的切换条件。
答案
应用最大值原理,协态满足:$\lambda_1 = c_1$(常数),$\lambda_2 = -c_1 t + c_2$。
最优控制:$u^* = -\text{sign}(\lambda_2)$
相平面分析显示,最优轨迹由两段组成:
- 第一段:$u = -1$,持续时间 $t_1 = 1 + \sqrt{3}$
- 第二段:$u = +1$,持续时间 $t_2 = \sqrt{3}$
总时间:$t^* = 1 + 2\sqrt{3} \approx 4.46$ 秒
习题5.2 LQR增益计算
给定系统: $$ A = \begin{bmatrix} 0 & 1 \\ -2 & -3 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 1 \end{bmatrix} $$
使用 $Q = I$,$R = 1$,求LQR反馈增益 $K$。
提示
先求解代数Riccati方程得到 $P$,然后计算 $K = R^{-1}B^T P$。
答案
求解Riccati方程得: $$ P = \begin{bmatrix} 3.162 & 1.000 \\ 1.000 & 1.162 \end{bmatrix} $$
反馈增益:$K = [1.000, 1.162]$
闭环极点:$s = -2.081 \pm 0.895j$
习题5.3 燃料最优控制
卫星姿态控制系统:$\ddot{\theta} = u/I$,其中 $I = 100$ kg·m²。求使燃料消耗 $J = \int_0^T |u| dt$ 最小的控制,使卫星从 $\theta(0) = 30°$,$\dot{\theta}(0) = 0$ 转到 $\theta(T) = 0$,$\dot{\theta}(T) = 0$。
提示
燃料最优通常导致Bang-Off-Bang控制结构。
答案
最优控制具有Bang-Off-Bang结构:
- $t \in [0, t_1]$:$u = -u_{max}$
- $t \in [t_1, T-t_1]$:$u = 0$
- $t \in [T-t_1, T]$:$u = u_{max}$
其中 $t_1 = \sqrt{\theta_0 I / u_{max}}$
习题5.4 离散LQR
离散系统:$x_{k+1} = Ax_k + Bu_k$,其中: $$ A = \begin{bmatrix} 1.1 & 0.1 \\ 0 & 0.9 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 1 \end{bmatrix} $$
设计使 $J = \sum_{k=0}^{\infty} (x_k^T Q x_k + u_k^2)$ 最小的控制器,$Q = I$。
提示
使用离散代数Riccati方程(DARE)。
答案
求解DARE得: $$ P = \begin{bmatrix} 2.618 & 0.809 \\ 0.809 & 2.118 \end{bmatrix} $$
反馈增益:$K = [0.809, 2.118]$
闭环系统稳定,所有特征值在单位圆内。
挑战题
习题5.5 奇异最优控制
考虑系统:$\dot{x}_1 = x_2$,$\dot{x}_2 = u$,最小化: $$ J = \frac{1}{2}\int_0^1 (x_1^2 + \epsilon u^2) dt $$ 当 $\epsilon \to 0$ 时,分析最优控制的性质。
提示
这是奇异摄动问题,需要考虑边界层效应。
答案
当 $\epsilon \to 0$,问题变为奇异。最优控制在边界附近出现快速变化(边界层)。
外部解:$u \approx -6x_1 - 4x_2$ 边界层修正:在 $t = 0$ 和 $t = 1$ 附近有 $O(1/\sqrt{\epsilon})$ 的控制脉冲。
这种现象在柔性结构控制中很常见。
习题5.6 约束LQR
设计倒立摆的LQR控制器,考虑输入约束 $|u| \leq 5$ N。系统在平衡点线性化后: $$ A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & -9.8 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 29.4 & 0 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 1 \\ 0 \\ -2 \end{bmatrix} $$
提示
先设计无约束LQR,然后分析饱和影响,考虑抗饱和补偿。
答案
-
无约束LQR:选择 $Q = \text{diag}(10, 1, 100, 1)$,$R = 1$ 得到 $K = [-3.16, -5.55, -71.8, -13.5]$
-
饱和分析:当 $|Kx| > 5$ 时,系统可能失稳
-
抗饱和策略: - 使用条件积分 - 增益调度:根据状态大小调整 $K$ - MPC方法显式处理约束
-
吸引域估计:使用Lyapunov函数 $V = x^T Px$ 估计稳定区域
习题5.7 路径积分控制实现
用路径积分方法求解非线性系统 $\dot{x} = -x + x^3 + u$ 的最优控制,使 $J = \int_0^T (x^2 + u^2)dt$ 最小。
提示
使用蒙特卡洛采样估计值函数。
答案
路径积分算法:
- 采样 $N$ 条轨迹:$x^{(i)}_{k+1} = x^{(i)}_k + dt(-x^{(i)}_k + (x^{(i)}_k)^3 + u_k + \xi^{(i)}_k)$
- 计算路径代价:$S^{(i)} = \sum_k ((x^{(i)}_k)^2 + u_k^2)dt$
- 权重:$w^{(i)} = \exp(-S^{(i)}/\lambda)$
- 控制更新:$u_{new} = \sum_i w^{(i)} (u_{old} + \delta u^{(i)}) / \sum_i w^{(i)}$
收敛后得到非线性反馈控制律,在原点附近近似线性。
习题5.8 MPC与LQR对比
比较MPC和LQR在处理倒立摆控制问题时的性能差异,特别是存在状态和输入约束时。
提示
实现两种控制器,比较吸引域、计算复杂度和约束处理能力。
答案
对比结果:
-
吸引域: - LQR:约束下吸引域受限 - MPC:通过预测可扩大吸引域
-
计算复杂度: - LQR:$O(n^3)$ 离线计算,$O(n^2)$ 在线 - MPC:$O(N n^3)$ 在线优化
-
约束处理: - LQR:需要后处理(饱和、抗饱和) - MPC:系统化处理硬约束
-
性能: - 无约束:LQR最优 - 有约束:MPC通常更优
-
实时性: - LQR:适合高频控制(>1kHz) - MPC:受限于优化求解(典型10-100Hz)
5.10 常见陷阱与错误
陷阱1:忽视可控性条件
错误:直接应用LQR而不检查可控性。
后果:Riccati方程可能无解或解不稳定。
正确做法:
1. 检查可控性矩阵 rank([B, AB, ..., A^(n-1)B]) = n
2. 对不可控模态,确保其稳定
3. 使用可控性分解识别可控子空间
陷阱2:权重矩阵选择不当
错误:随意选择 $Q$ 和 $R$ 矩阵。
问题表现:
- $Q$ 过大:控制过于激进,易饱和
- $R$ 过大:响应缓慢,性能差
- 尺度不匹配:某些状态被忽略
解决方案:
- 使用Bryson规则初始化
- 基于闭环带宽要求调整
- 进行参数扫描和灵敏度分析
陷阱3:数值精度问题
错误:Riccati方程求解不稳定。
原因:
- 矩阵条件数过大
- 使用不适合的数值方法
改进:
- 使用平衡变换改善条件数
- 采用数值稳定的Schur方法
- 检查解的对称性和正定性
陷阱4:忽略模型不确定性
错误:假设模型完全准确。
风险:实际系统性能退化甚至失稳。
鲁棒化方法:
- 增加稳定裕度(调整Q/R比例)
- 使用鲁棒LQR设计
- 考虑最坏情况设计
陷阱5:离散化错误
错误:不当的连续到离散转换。
常见问题:
- 使用前向Euler离散化(可能失稳)
- 采样时间选择不当
正确方法:
离散化矩阵:
A_d = e^(AT_s)
B_d = ∫[0,T_s] e^(Aτ) B dτ
陷阱6:终端条件处理
错误:有限时域问题的终端处理不当。
表现:接近终端时控制异常。
解决:
- 使用终端权重矩阵
- 延长预测时域
- 采用无限时域近似
5.11 最佳实践检查清单
设计阶段
- [ ] 系统分析
- [ ] 验证系统可控性和可观性
- [ ] 检查开环稳定性
-
[ ] 识别主导模态
-
[ ] 性能指标定义
- [ ] 明确控制目标(调节/跟踪)
- [ ] 量化性能要求(上升时间、超调等)
-
[ ] 确定约束条件
-
[ ] 方法选择
- [ ] LQR:线性系统,无硬约束
- [ ] MPC:需要处理约束
- [ ] 非线性方法:系统强非线性
实现阶段
- [ ] 数值计算
- [ ] 使用数值稳定的算法
- [ ] 检查矩阵条件数
-
[ ] 验证Riccati解的性质
-
[ ] 离散化处理
- [ ] 选择合适的采样时间(带宽的10-20倍)
- [ ] 使用精确离散化方法
-
[ ] 考虑计算延迟
-
[ ] 约束处理
- [ ] 识别所有物理约束
- [ ] 实现抗饱和机制
- [ ] 估计可行域
验证阶段
- [ ] 仿真测试
- [ ] 标称情况性能
- [ ] 参数摄动分析
-
[ ] 极端工况测试
-
[ ] 稳定性验证
- [ ] 计算稳定裕度
- [ ] Lyapunov函数验证
-
[ ] 吸引域估计
-
[ ] 鲁棒性分析
- [ ] 蒙特卡洛仿真
- [ ] 最坏情况分析
- [ ] 灵敏度分析
部署阶段
- [ ] 实时性保证
- [ ] 测量计算时间
- [ ] 优化代码效率
-
[ ] 考虑硬件加速
-
[ ] 故障处理
- [ ] 传感器故障检测
- [ ] 控制器降级策略
-
[ ] 安全模式设计
-
[ ] 性能监控
- [ ] 记录关键指标
- [ ] 在线性能评估
- [ ] 自适应参数调整