自适应控制是处理参数不确定性和时变系统的重要方法。与鲁棒控制不同,自适应控制通过在线估计和调整控制器参数来应对系统的不确定性。本章将系统介绍模型参考自适应控制(MRAC)、自校正调节器、参数估计理论以及鲁棒自适应控制的设计方法。我们将通过X-15高超音速飞机和UR5协作机械臂的实际案例,展示自适应控制在极端环境和变负载条件下的应用。
传统的固定增益控制器在面对以下情况时性能会显著下降:
自适应控制通过实时调整控制器参数来维持期望的闭环性能。与增益调度等传统方法相比,自适应控制的优势在于:
自适应控制
|
+-----------+-----------+
| |
直接自适应 间接自适应
| |
直接调整 先辨识参数
控制器参数 再计算控制器
| |
+----+----+ +----+----+
| | | |
MRAC L1-AC STR MIAC
模型参考 L1架构 自校正 多模型
自适应 自适应 调节器 间接自适应
直接自适应控制的特点:
间接自适应控制的特点:
混合方法:
自适应控制的发展历程反映了控制理论与工程需求的相互推动:
1950s - 萌芽期:
1960s - 理论奠基:
1970s - 工业应用:
1980s - 鲁棒性研究:
1990s - 非线性扩展:
2000s - 新架构:
2010s至今 - 智能化融合:
MRAC的核心思想是使被控对象的输出跟踪一个理想参考模型的输出:
r(t) ──┬──→ [参考模型] ──→ ym(t) ─┐
│ │ e(t)
│ ├─→ (-)
│ │
├──→ [可调控制器] ──→ [对象] ──→ y(t)
│ ↑
│ │
└─────[自适应律]←──────────┘
最早的自适应律之一,基于梯度下降最小化误差,由MIT仪器实验室在1950年代末为X-15项目开发:
考虑简单的一阶系统: \(\dot{y} = -ay + bu\)
其中 $a > 0$ 未知,$b > 0$ 已知。
参考模型(描述期望的闭环响应): \(\dot{y}_m = -a_m y_m + b_m r\)
通常选择 $a_m$ 和 $b_m$ 使得参考模型具有期望的时间常数和稳态增益。
控制律: \(u = \theta_1 r - \theta_2 y\)
目标是调整 $\theta_1$ 和 $\theta_2$ 使得输出跟踪误差 $e = y - y_m → 0$。
定义代价函数: \(J(\theta) = \frac{1}{2}e^2(t)\)
MIT规则使用梯度下降法: \(\dot{\theta} = -\gamma \nabla_\theta J = -\gamma e \frac{\partial e}{\partial \theta}\)
其中 $\gamma > 0$ 是自适应增益。
计算灵敏度导数需要假设参数变化缓慢(准静态假设): \(\frac{\partial e}{\partial \theta_1} \approx \frac{b_m}{s + a_m} r\) \(\frac{\partial e}{\partial \theta_2} \approx -\frac{b_m}{s + a_m} y\)
因此自适应律为: \(\dot{\theta}_1 = -\gamma e \frac{b_m}{s + a_m} r\) \(\dot{\theta}_2 = \gamma e \frac{b_m}{s + a_m} y\)
为保证全局稳定性,Parks(1966)提出使用Lyapunov方法设计自适应律,这成为现代自适应控制的基础:
考虑n阶SISO系统: \(\dot{x} = Ax + bu\) \(y = c^T x\)
其中 $A$, $b$ 包含未知参数。
参考模型: \(\dot{x}_m = A_m x_m + b_m r\) \(y_m = c^T x_m\)
控制律采用状态反馈形式: \(u = \theta^T \omega\)
其中 $\omega = [x^T, r]^T$ 是回归向量。
步骤1:定义误差动态
跟踪误差:$e = x - x_m$
理想参数 $\theta^*$ 使得闭环系统匹配参考模型: \(A + b\theta^{*T}[I, 0] = A_m\) \(b\theta^{*T}[0, 1] = b_m\)
误差动态: \(\dot{e} = A_m e + b\tilde{\theta}^T \omega\)
其中 $\tilde{\theta} = \theta - \theta^*$ 是参数误差。
步骤2:构造Lyapunov函数
选择Lyapunov函数包含两部分: \(V(e, \tilde{\theta}) = e^T P e + \tilde{\theta}^T \Gamma^{-1} \tilde{\theta}\)
其中:
步骤3:计算Lyapunov函数导数
\[\dot{V} = \dot{e}^T P e + e^T P \dot{e} + 2\tilde{\theta}^T \Gamma^{-1} \dot{\tilde{\theta}}\]代入误差动态: \(\dot{V} = e^T(A_m^T P + P A_m)e + 2e^T P b\tilde{\theta}^T \omega + 2\tilde{\theta}^T \Gamma^{-1} \dot{\theta}\)
\[= -e^T Q e + 2\tilde{\theta}^T(\omega e^T P b + \Gamma^{-1} \dot{\theta})\]步骤4:设计自适应律
选择自适应律使括号项为零: \(\dot{\theta} = -\Gamma \omega e^T P b\)
这样保证: \(\dot{V} = -e^T Q e \leq 0\)
根据LaSalle不变性原理:
function [u, theta_dot] = mrac_control(x, r, theta, Am, bm, P, Gamma)
omega = [x; r];
e = x - xm; % xm from reference model
theta_dot = -Gamma * omega * (e' * P * bm);
u = theta' * omega;
end
当回归向量 $\omega$ 幅值很大时,自适应律可能放大噪声。归一化修正通过动态调整增益解决这个问题:
标准归一化: \(\dot{\theta} = -\frac{\Gamma \omega e^T P b_m}{1 + \omega^T \omega}\)
动态归一化(更平滑): \(\dot{\theta} = -\frac{\Gamma \omega e^T P b_m}{m^2}\) \(\dot{m}^2 = -\beta m^2 + \omega^T \omega, \quad m^2(0) = 1\)
其中 $\beta > 0$ 是遗忘因子。
归一化的优点:
当参数的物理范围已知时,投影算子确保参数估计始终在合理范围内:
凸集投影: 设参数约束集合 $\Theta = {\theta : f(\theta) \leq 0}$ 是凸集。
投影算子定义: \(\text{Proj}_\Theta(\tau) = \begin{cases} \tau & \text{if } \theta \in \text{int}(\Theta) \\ \tau & \text{if } f(\theta) = 0 \text{ and } \nabla f^T \tau \leq 0 \\ \tau - \frac{\nabla f^T \tau}{||\nabla f||^2} \nabla f & \text{otherwise} \end{cases}\)
矩形约束(最常用): 对于 $\theta_i \in [\theta_{i,min}, \theta_{i,max}]$:
\[[\text{Proj}_\Theta(\tau)]_i = \begin{cases} 0 & \text{if } \theta_i = \theta_{i,min} \text{ and } \tau_i < 0 \\ 0 & \text{if } \theta_i = \theta_{i,max} \text{ and } \tau_i > 0 \\ \tau_i & \text{otherwise} \end{cases}\]投影的性质:
实际系统中常组合使用归一化和投影:
function theta_dot = adaptive_law_robust(e, omega, theta, params)
% 基本自适应律
tau = -params.Gamma * omega * (e' * params.P * params.b);
% 归一化
m2 = 1 + omega' * omega;
tau_norm = tau / m2;
% 投影到约束集
theta_dot = projection(theta, tau_norm, params.theta_min, params.theta_max);
end
这种组合提供了:
自校正调节器(Self-Tuning Regulator)是Åström和Wittenmark在1973年提出的间接自适应控制方法,在过程控制中获得广泛应用。
STR采用分离原理(Separation Principle):
┌─────────────────────────────────┐
│ 参数估计器 │
│ θ̂(t) = f(y(t), u(t), θ̂(t-1)) │
└────────────┬──────────────────┘
│ θ̂(t)
┌────────────v──────────────────┐
│ 控制器设计 │
│ K(t) = g(θ̂(t), specs) │
└────────────┬──────────────────┘
│ K(t)
r(t) ──→(+)──→[控制器]──→ u(t) ──→[对象]──→ y(t)
-↑ │
└───────────────────────────────┘
| 特性 | STR(间接) | MRAC(直接) |
|---|---|---|
| 参数估计 | 显式估计系统参数 | 直接调整控制器参数 |
| 计算复杂度 | 较高(需要求解设计方程) | 较低 |
| 灵活性 | 高(可改变控制目标) | 低(固定参考模型) |
| 参数信息 | 可用于监控诊断 | 无物理意义 |
| 稳定性分析 | 较复杂 | 相对简单 |
递推最小二乘是STR中最常用的参数估计方法,具有良好的收敛性和计算效率。
考虑ARMAX模型: \(A(q^{-1})y(t) = B(q^{-1})u(t-d) + C(q^{-1})e(t)\)
展开为: \(y(t) + a_1y(t-1) + ... + a_ny(t-n) = b_0u(t-d) + ... + b_mu(t-d-m) + e(t) + c_1e(t-1) + ... + c_pe(t-p)\)
线性参数化形式: \(y(t) = \phi^T(t)\theta + e(t)\)
其中:
目标函数(加权最小二乘): \(J(\theta) = \sum_{i=1}^{t} \lambda^{t-i}[y(i) - \phi^T(i)\theta]^2\)
其中 $\lambda \in (0, 1]$ 是遗忘因子,给近期数据更大权重。
RLS递推公式:
初始化:
P(0) = αI, α ∈ [100, 10000] // 大的α表示参数不确定性大
θ̂(0) = θ₀ // 初始猜测,可以是零或基于先验知识
每个采样时刻 t:
1. 构造回归向量: φ(t) = [-y(t-1), ..., u(t-d), ...]
2. 计算预测误差:
ŷ(t|t-1) = φ(t)ᵀθ̂(t-1)
ε(t) = y(t) - ŷ(t|t-1)
3. 计算卡尔曼增益:
K(t) = P(t-1)φ(t) / [λ + φ(t)ᵀP(t-1)φ(t)]
4. 更新参数估计:
θ̂(t) = θ̂(t-1) + K(t)ε(t)
5. 更新协方差矩阵:
P(t) = [I - K(t)φ(t)ᵀ]P(t-1)/λ
// 或数值更稳定的形式:
P(t) = [P(t-1) - K(t)φ(t)ᵀP(t-1)]/λ
遗忘因子 $\lambda$ 控制历史数据的权重衰减:
if trace(P) < threshold_min || trace(P) > threshold_max
P = alpha * eye(n);
end
UD分解: 将 $P = UDU^T$ 分解,分别更新U和D,避免数值误差累积
1. 带死区的RLS:
if abs(epsilon) > delta
theta = theta + K * epsilon;
P = (P - K * phi' * P) / lambda;
end
2. 变遗忘因子: \(\lambda(t) = \lambda_0 \lambda(t-1) + (1 - \lambda_0)\) 自动调整遗忘因子以平衡跟踪和估计精度
3. 方向遗忘: 只在激励方向上遗忘,保持其他方向的信息: \(P(t) = \frac{1}{\lambda_1}P(t-1) + \left(\frac{1}{\lambda_2} - \frac{1}{\lambda_1}\right)\frac{P(t-1)\phi(t)\phi^T(t)P(t-1)}{\phi^T(t)P(t-1)\phi(t)}\)
基于估计的参数,设计使输出方差最小的控制器:
Diophantine方程: \(A(q^{-1})E(q^{-1}) + q^{-d}F(q^{-1}) = C(q^{-1})\)
控制律: \(G(q^{-1})u(t) = H(q^{-1})r(t) - F(q^{-1})y(t)\)
其中 $G = B \cdot E$,$H$ 根据跟踪要求设计。
指定闭环极点位置 $A_c(q^{-1})$:
求解Diophantine方程: \(A(q^{-1})R(q^{-1}) + B(q^{-1})S(q^{-1}) = A_c(q^{-1})\)
控制律: \(R(q^{-1})u(t) = T(q^{-1})r(t) - S(q^{-1})y(t)\)
参数可辨识的必要条件是信号具有足够的激励:
定义:信号 $\phi(t)$ 满足持续激励(PE)条件,如果存在 $T > 0$,$\alpha > 0$ 使得: \(\frac{1}{T}\int_t^{t+T} \phi(\tau)\phi^T(\tau)d\tau \geq \alpha I\)
物理意义:信号必须在所有方向上都有足够的能量,才能辨识所有参数。
定理:如果回归向量 $\phi(t)$ 满足PE条件,且噪声有界,则RLS算法的参数估计误差指数收敛: \(||\tilde{\theta}(t)|| \leq \beta e^{-\lambda t}||\tilde{\theta}(0)|| + \epsilon\)
探测信号类型:
自适应探测:根据参数不确定性动态调整探测幅度: \(u_{probe}(t) = \alpha(t) \cdot \text{PRBS}(t)\) \(\alpha(t) = \alpha_{min} + (\alpha_{max} - \alpha_{min})e^{-\gamma t}\)
传统自适应控制对以下因素敏感:
σ-修正(Ioannou-Kokotovic): \(\dot{\theta} = -\Gamma \omega e - \sigma \Gamma \theta\)
添加参数衰减项,防止参数无界增长。
ε-修正: \(\dot{\theta} = \begin{cases} -\Gamma \omega e & \text{if } |e| > \epsilon_0 \\ 0 & \text{if } |e| \leq \epsilon_0 \end{cases}\)
死区修正,小误差时停止自适应。
L1自适应控制通过快速自适应和低通滤波实现鲁棒性:
状态预测器: \(\dot{\hat{x}} = A_m \hat{x} + b_m(u + \hat{\sigma})\)
自适应律(快速): \(\dot{\hat{\sigma}} = -\Gamma \text{Proj}(\hat{\sigma}, -b_m^T P \tilde{x})\)
控制律(带滤波): \(u(s) = C(s)(\hat{\sigma}(s) - k_g r(s))\)
其中 $C(s)$ 是低通滤波器,分离自适应和控制带宽。
结合直接和间接方法,利用预测误差和跟踪误差:
\[\dot{\theta} = -\Gamma_1 \omega_1 e_1 - \Gamma_2 \omega_2 e_2\]其中 $e_1$ 是跟踪误差,$e_2$ 是预测误差。
X-15是人类首架高超音速飞机(最高6.7马赫),面临的控制挑战:
简化的纵向动力学: \(\begin{bmatrix} \dot{\alpha} \\ \dot{q} \\ \dot{\theta} \end{bmatrix} = \begin{bmatrix} Z_\alpha/V & 1-Z_q/V & 0 \\ M_\alpha & M_q & 0 \\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} \alpha \\ q \\ \theta \end{bmatrix} + \begin{bmatrix} Z_\delta/V \\ M_\delta \\ 0 \end{bmatrix} \delta_e\)
其中气动导数 $Z_\alpha$, $M_\alpha$, $M_q$, $M_\delta$ 随飞行条件大幅变化。
参考模型(期望的驾驶品质): \(\omega_n = 3 \text{ rad/s}, \quad \zeta = 0.7\)
控制结构:
飞行员指令 r → [前馈] ──┐
├→ (+) → [飞机] → θ
状态 [α,q,θ] → [反馈增益] ─┘
↑
[自适应律] ← 误差 e
自适应增益设计: \(K(t) = K_{nominal} + \Delta K(t)\)
其中 $\Delta K(t)$ 通过Lyapunov方法在线调整。
实际飞行数据显示:
关键经验:
UR5协作机械臂在工业应用中需要处理:
6自由度机械臂动力学方程: \(M(q)\ddot{q} + C(q,\dot{q})\dot{q} + G(q) + F_f(\dot{q}) = \tau + J^T(q)F_{ext}\)
负载影响主要体现在:
参数化: 将动力学方程重写为线性参数形式: \(M(q)\ddot{q} + C(q,\dot{q})\dot{q} + G(q) = Y(q,\dot{q},\ddot{q})\theta\)
其中 $\theta$ 包含负载质量、重心位置等参数。
控制律: \(\tau = Y(q,\dot{q},\ddot{q}_r)\hat{\theta} + K_p \tilde{q} + K_d \dot{\tilde{q}}\)
其中 $\ddot{q}_r = \ddot{q}_d - \Lambda \dot{\tilde{q}}$。
自适应律: \(\dot{\hat{\theta}} = -\Gamma Y^T(q,\dot{q},\ddot{q}_r)s\)
其中 $s = \dot{\tilde{q}} + \Lambda \tilde{q}$ 是滑模变量。
实验设置:
结果对比:
控制方法 位置误差(mm) 力矩峰值(Nm) 适应时间(s)
固定PD 8.5 120 -
增益调度 4.2 95 -
自适应控制 1.8 78 3.5
关键实现细节:
导纳控制框架下的自适应: \(M_d \ddot{x} + B_d \dot{x} + K_d x = F_{ext}\)
自适应调整虚拟惯量 $M_d$ 以适应不同负载: \(M_d = M_{d0} + \alpha \hat{m}_{load}\)
这样保证了一致的人机交互体验。
传统自适应控制需要PE条件,并发学习利用历史数据放松这一要求:
数据存储: 保存信息丰富的数据点: \(\mathcal{H} = \{(x_i, u_i, \dot{x}_i)\}_{i=1}^N\)
并发学习自适应律: \(\dot{\hat{\theta}} = -\Gamma_1 \omega e - \Gamma_2 \sum_{i=1}^N Y_i^T(\hat{\theta})(\dot{x}_i - f(x_i) - g(x_i)u_i)\)
最小特征值最大化: 选择使信息矩阵特征值最大的数据: \(\max_{\mathcal{H}} \lambda_{min}\left(\sum_{i \in \mathcal{H}} Y_i^T Y_i\right)\)
覆盖准则: 确保数据覆盖状态空间的不同区域。
结合滑模技术实现参数有限时间收敛: \(\dot{\hat{\theta}} = -\Gamma \text{sign}(Y^T s)\)
Karl Johan Åström(1934-)是自适应控制理论的奠基人之一。
主要贡献:
经典语录:
“The essential feature of adaptive control is the ability to adjust controller parameters in real-time based on observed system behavior.”
工业影响: Åström的工作直接促进了自适应控制在造纸、化工等过程工业的广泛应用。他的教材《Adaptive Control》影响了几代控制工程师。
使用神经网络逼近未知非线性: \(f(x) = W^T \sigma(V^T x) + \epsilon\)
权重更新: \(\dot{W} = -\Gamma_W \sigma(V^T x) e^T P b\) \(\dot{V} = -\Gamma_V x (\sigma'(V^T x) \odot W) e^T P b\)
利用多任务经验加速新任务的自适应:
MAML框架应用:
控制屏障函数(CBF)约束: \(\dot{\hat{\theta}} = \text{Proj}_{safe}(-\Gamma \omega e)\)
其中投影确保安全约束: \(h(x) + \alpha \dot{h}(x,u) \geq 0\)
自适应控制提供了处理参数不确定性和时变系统的系统化方法。关键要点:
设计流程:
11.1 考虑一阶系统 $\dot{y} = -ay + bu$,其中 $a$ 未知但 $b=1$ 已知。设计MRAC使输出跟踪参考模型 $\dot{y}_m = -2y_m + 2r$。
提示:使用控制律 $u = \theta_1 r + \theta_2 y$,设计 $\theta_1$ 和 $\theta_2$ 的自适应律。
11.2 对于参数估计 $\hat{\theta}(t)$,若回归向量 $\phi(t) = [\sin(t), \cos(t)]^T$,判断是否满足持续激励条件。
提示:计算 $\int_t^{t+T} \phi(\tau)\phi^T(\tau)d\tau$ 并检查其正定性。
11.3 比较σ-修正和ε-修正的优缺点,各适用于什么场景?
提示:考虑参数漂移、稳态误差、噪声敏感性。
11.4 推导RLS算法的协方差更新公式 $P(t) = (I - K(t)\phi^T(t))P(t-1)/\lambda$。
提示:从矩阵求逆引理开始。
11.5 设计一个自适应控制器处理执行器饱和:$u = \text{sat}(v)$,其中 $v$ 是控制器输出。如何修改自适应律以处理饱和?
提示:考虑反计算(anti-windup)技术。
11.6 对于多输入多输出(MIMO)系统,如何设计解耦的自适应控制器?讨论交叉耦合对自适应性能的影响。
提示:考虑相对增益阵列(RGA)和解耦补偿器。
11.7 分析L1自适应控制如何通过频域分离实现鲁棒性。设计低通滤波器 $C(s)$ 需要考虑哪些因素?
提示:分析自适应回路和控制回路的带宽分离。
11.8 开放性问题:如何将强化学习与自适应控制结合?设计一个框架,利用RL改进自适应控制的长期性能。
提示:考虑元参数优化、经验回放、策略梯度方法。
错误:长时间运行后参数值变得不合理 原因:缺乏持续激励,扰动被误认为参数变化 解决:
错误:自适应开始时出现大的瞬态响应 原因:初始参数误差大,自适应增益过高 解决:
错误:控制信号出现高频抖动 原因:未建模高频动态被激发 解决:
错误:MIMO系统参数收敛缓慢或振荡 原因:参数间强耦合,条件数差 解决:
错误:测量噪声导致参数持续变化 原因:噪声被当作模型误差处理 解决: