第11章:自适应控制
本章概述
自适应控制是处理参数不确定性和时变系统的重要方法。与鲁棒控制不同,自适应控制通过在线估计和调整控制器参数来应对系统的不确定性。本章将系统介绍模型参考自适应控制(MRAC)、自校正调节器、参数估计理论以及鲁棒自适应控制的设计方法。我们将通过X-15高超音速飞机和UR5协作机械臂的实际案例,展示自适应控制在极端环境和变负载条件下的应用。
11.1 自适应控制的基本概念
11.1.1 为什么需要自适应控制
传统的固定增益控制器在面对以下情况时性能会显著下降:
-
参数不确定性:系统的物理参数(如质量、惯量、气动系数)存在较大的不确定性 - 制造公差导致的参数分散 - 环境条件(温度、湿度)影响材料特性 - 老化和磨损引起的性能退化
-
时变特性:系统参数随时间缓慢变化(如飞机燃料消耗导致质量变化) - 燃料消耗:大型运输机起飞重量的30-40%可能是燃料 - 结构疲劳:材料刚度随循环载荷次数下降 - 热效应:高速飞行产生的气动加热改变结构特性
-
工作点变化:系统在大范围工作条件下运行(如高超音速飞行器的不同马赫数) - 非线性系统的线性化模型随工作点显著变化 - 不同工作模式需要不同的控制策略 - 环境扰动特性随工作条件变化
-
负载变化:外部负载的大幅变化(如机械臂抓取不同重量的物体) - 工业机器人处理产品重量范围可达10:1 - 物流机器人需适应不同包裹尺寸和重量 - 协作机器人与人类交互时的动态负载
自适应控制通过实时调整控制器参数来维持期望的闭环性能。与增益调度等传统方法相比,自适应控制的优势在于:
- 无需精确先验知识:不需要事先知道参数的准确值或变化规律
- 自动优化:根据实际性能自动调整,无需人工调参
- 处理未预期变化:能够应对设计阶段未考虑到的参数变化
- 性能一致性:在整个工作范围内维持相似的闭环性能
11.1.2 自适应控制的分类
自适应控制
|
+-----------+-----------+
| |
直接自适应 间接自适应
| |
直接调整 先辨识参数
控制器参数 再计算控制器
| |
+----+----+ +----+----+
| | | |
MRAC L1-AC STR MIAC
模型参考 L1架构 自校正 多模型
自适应 自适应 调节器 间接自适应
直接自适应控制的特点:
- 控制器参数直接根据跟踪误差调整
- 不显式估计对象参数
- 计算量相对较小
- 典型代表:MRAC(模型参考自适应控制)
间接自适应控制的特点:
- 首先在线辨识系统参数
- 基于估计参数计算控制器
- 可以获得系统参数信息用于监控和诊断
- 典型代表:STR(自校正调节器)
混合方法:
- 复合自适应:同时使用跟踪误差和预测误差
- 多模型自适应:多个模型并行运行,选择最佳匹配
- 切换自适应:根据性能指标在多个控制器间切换
11.1.3 自适应控制的关键挑战
-
稳定性保证:参数自适应可能导致闭环系统不稳定 - 快速自适应可能激发未建模动态 - 参数估计误差可能导致不稳定的控制器 - 时变系统的稳定性分析更加复杂 - 需要仔细设计自适应律保证Lyapunov稳定性
-
瞬态性能:初始自适应阶段可能出现大的瞬态响应 - 参数初值误差大时的过渡过程 - 自适应速度与瞬态性能的权衡 - 突然的参数变化引起的瞬态 - 需要瞬态性能约束和改进技术
-
鲁棒性问题:对未建模动态和扰动敏感 - 高频未建模动态可能被错误补偿 - 测量噪声影响参数估计精度 - 外部扰动与参数变化难以区分 - 需要鲁棒化修正(σ-修正、死区等)
-
持续激励:需要足够的激励信号才能准确估计参数 - 稳态运行时缺乏激励导致参数漂移 - 激励信号与控制性能的矛盾 - 多参数系统需要更丰富的激励 - 并发学习等技术缓解PE要求
-
计算复杂度:实时实现的挑战 - 高维系统的在线参数估计 - 复杂自适应律的实时计算 - 嵌入式系统的资源限制 - 需要高效的数值算法
-
多目标权衡: - 跟踪性能 vs. 控制能量 - 自适应速度 vs. 噪声敏感性 - 探索(参数估计)vs. 利用(控制性能) - 需要合理的性能指标和优化策略
11.1.4 自适应控制的历史发展
自适应控制的发展历程反映了控制理论与工程需求的相互推动:
1950s - 萌芽期:
- 1958年:Whitaker等人为X-15飞机设计自适应飞行控制系统
- MIT规则的提出,基于灵敏度方法的参数调整
1960s - 理论奠基:
- 1966年:Parks证明了Lyapunov方法在MRAC设计中的应用
- 稳定性理论的建立为自适应控制提供了坚实基础
1970s - 工业应用:
- 1973年:Åström和Wittenmark提出自校正调节器
- 自适应控制在过程工业中的成功应用
1980s - 鲁棒性研究:
- Rohrs反例揭示了自适应控制的鲁棒性问题
- σ-修正、死区等鲁棒化技术的发展
1990s - 非线性扩展:
- 反步法(Backstepping)等非线性自适应技术
- 神经网络和模糊系统在自适应控制中的应用
2000s - 新架构:
- L1自适应控制架构,分离自适应和控制带宽
- 复合自适应和并发学习方法
2010s至今 - 智能化融合:
- 深度学习与自适应控制的结合
- 元学习加速自适应过程
- 安全关键系统的认证自适应控制
11.2 模型参考自适应控制(MRAC)
11.2.1 MRAC基本结构
MRAC的核心思想是使被控对象的输出跟踪一个理想参考模型的输出:
r(t) ──┬──→ [参考模型] ──→ ym(t) ─┐
│ │ e(t)
│ ├─→ (-)
│ │
├──→ [可调控制器] ──→ [对象] ──→ y(t)
│ ↑
│ │
└─────[自适应律]←──────────┘
11.2.2 MIT规则
最早的自适应律之一,基于梯度下降最小化误差,由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$。
MIT规则推导
定义代价函数: $$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$$
MIT规则的局限性
- 局部稳定性:只能保证小扰动下的稳定性
- 增益选择困难:$\gamma$ 过大导致不稳定,过小收敛慢
- 无鲁棒性保证:对噪声和未建模动态敏感
- 需要系统知识:需要知道 $b$ 的符号和参考模型
11.2.3 Lyapunov方法设计MRAC
为保证全局稳定性,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$ 是回归向量。
Lyapunov设计步骤
步骤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}$$ 其中:
- $P > 0$ 是Lyapunov方程的解:$A_m^T P + P A_m = -Q$,$Q > 0$
- $\Gamma > 0$ 是自适应增益矩阵
步骤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不变性原理:
- $V \geq 0$,$\dot{V} \leq 0$ → $e$, $\tilde{\theta}$ 有界
- $\dot{V} = 0$ 当且仅当 $e = 0$
- 如果 $\omega$ 满足持续激励条件,则 $\tilde{\theta} → 0$
实用考虑
-
P矩阵的选择: - 通常选择 $Q = I$ 求解Lyapunov方程 - P的条件数影响自适应速度
-
增益矩阵Γ的调整: - 大的Γ加快收敛但可能引起振荡 - 可以使用时变增益:$\Gamma(t) = \Gamma_0 e^{-\alpha t} + \Gamma_{\infty}$
-
实现形式:
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
11.2.4 归一化和投影修正
归一化修正
当回归向量 $\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}$$ 投影的性质:
- 保持Lyapunov稳定性:$(\theta - \theta^*)^T(\text{Proj}_\Theta(\tau) - \tau) \leq 0$
- 参数始终在约束集内
- 不影响收敛性证明
组合使用示例
实际系统中常组合使用归一化和投影:
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
这种组合提供了:
- 噪声鲁棒性(归一化)
- 参数合理性(投影)
- 稳定性保证(两者都保持)
11.3 自校正调节器(STR)
11.3.1 间接自适应控制原理
自校正调节器(Self-Tuning Regulator)是Åström和Wittenmark在1973年提出的间接自适应控制方法,在过程控制中获得广泛应用。
基本原理
STR采用分离原理(Separation Principle):
-
参数估计:在线辨识系统参数 - 使用输入输出数据估计模型参数 - 典型方法:递推最小二乘(RLS) - 可以获得参数不确定性信息
-
控制器计算:基于估计参数计算最优控制器 - 求解控制设计方程(如Diophantine方程) - 可以使用各种控制设计方法 - 控制器参数随模型参数更新
-
确定性等价原理:将估计值当作真实值使用 - 忽略参数不确定性的影响 - 简化控制器设计 - 在某些条件下是最优的
STR的结构
┌─────────────────────────────────┐
│ 参数估计器 │
│ θ̂(t) = f(y(t), u(t), θ̂(t-1)) │
└────────────┬──────────────────┘
│ θ̂(t)
┌────────────v──────────────────┐
│ 控制器设计 │
│ K(t) = g(θ̂(t), specs) │
└────────────┬──────────────────┘
│ K(t)
r(t) ──→(+)──→[控制器]──→ u(t) ──→[对象]──→ y(t)
-↑ │
└───────────────────────────────┘
与MRAC的比较
| 特性 | STR(间接) | MRAC(直接) |
| 特性 | STR(间接) | MRAC(直接) |
|---|---|---|
| 参数估计 | 显式估计系统参数 | 直接调整控制器参数 |
| 计算复杂度 | 较高(需要求解设计方程) | 较低 |
| 灵活性 | 高(可改变控制目标) | 低(固定参考模型) |
| 参数信息 | 可用于监控诊断 | 无物理意义 |
| 稳定性分析 | 较复杂 | 相对简单 |
11.3.2 递推最小二乘(RLS)参数估计
递推最小二乘是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)$$ 其中:
- 参数向量:$\theta = [a_1, ..., a_n, b_0, ..., b_m, c_1, ..., c_p]^T$
- 回归向量:$\phi(t) = [-y(t-1), ..., -y(t-n), u(t-d), ..., u(t-d-m), e(t-1), ..., e(t-p)]^T$
RLS算法详解
目标函数(加权最小二乘): $$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$ 控制历史数据的权重衰减:
- $\lambda = 1$:标准最小二乘,所有数据同等权重
- 适用于时不变系统
-
参数估计方差持续减小
-
$\lambda \in [0.95, 0.99]$:指数遗忘
- 适用于慢时变系统
- 有效数据窗口长度约为 $1/(1-\lambda)$
-
$\lambda = 0.98$ → 有效窗口约50个样本
-
$\lambda \in [0.9, 0.95]$:快速遗忘
- 适用于快时变系统或突变
- 跟踪能力强但估计方差大
数值稳定性改进
- 协方差矩阵复位:
if trace(P) < threshold_min || trace(P) > threshold_max
P = alpha * eye(n);
end
-
UD分解: 将 $P = UDU^T$ 分解,分别更新U和D,避免数值误差累积
-
平方根滤波: 更新 $P^{1/2}$ 而不是 $P$,保证正定性
修正和扩展
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)}$$
11.3.3 最小方差控制器设计
基于估计的参数,设计使输出方差最小的控制器:
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$ 根据跟踪要求设计。
11.3.4 极点配置自校正调节器
指定闭环极点位置 $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)$$
11.4 参数估计与持续激励
11.4.1 持续激励条件
参数可辨识的必要条件是信号具有足够的激励:
定义:信号 $\phi(t)$ 满足持续激励(PE)条件,如果存在 $T > 0$,$\alpha > 0$ 使得: $$\frac{1}{T}\int_t^{t+T} \phi(\tau)\phi^T(\tau)d\tau \geq \alpha I$$ 物理意义:信号必须在所有方向上都有足够的能量,才能辨识所有参数。
11.4.2 参数收敛性分析
定理:如果回归向量 $\phi(t)$ 满足PE条件,且噪声有界,则RLS算法的参数估计误差指数收敛: $$||\tilde{\theta}(t)|| \leq \beta e^{-\lambda t}||\tilde{\theta}(0)|| + \epsilon$$
11.4.3 激励信号设计
探测信号类型:
- PRBS(伪随机二进制序列):频谱丰富,实施简单
- 多正弦信号:精确控制频率成分
- Chirp信号:连续扫频
- 最优实验设计:最大化Fisher信息矩阵
自适应探测:根据参数不确定性动态调整探测幅度: $$u_{probe}(t) = \alpha(t) \cdot \text{PRBS}(t)$$ $$\alpha(t) = \alpha_{min} + (\alpha_{max} - \alpha_{min})e^{-\gamma t}$$
11.5 鲁棒自适应控制
11.5.1 自适应控制的鲁棒性问题
传统自适应控制对以下因素敏感:
- 未建模动态:高频动态可能导致不稳定
- 外部扰动:扰动可能被误认为参数变化
- 参数漂移:无PE时参数可能漂移到不合理值
11.5.2 σ-修正和ε-修正
σ-修正(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}$$ 死区修正,小误差时停止自适应。
11.5.3 L1自适应控制
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)$ 是低通滤波器,分离自适应和控制带宽。
11.5.4 复合自适应控制
结合直接和间接方法,利用预测误差和跟踪误差: $$\dot{\theta} = -\Gamma_1 \omega_1 e_1 - \Gamma_2 \omega_2 e_2$$ 其中 $e_1$ 是跟踪误差,$e_2$ 是预测误差。
11.6 案例研究1:X-15高超音速飞机自适应控制
11.6.1 背景与挑战
X-15是人类首架高超音速飞机(最高6.7马赫),面临的控制挑战:
- 极端飞行包线:从亚音速到6倍音速,高度从海平面到100km
- 气动特性剧变:气动系数随马赫数和高度变化数个量级
- 热效应:高温导致结构变形,改变气动特性
- 控制面效率变化:不同飞行条件下舵效相差极大
11.6.2 纵向运动模型
简化的纵向动力学: $$\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$ 随飞行条件大幅变化。
11.6.3 MRAC设计
参考模型(期望的驾驶品质): $$\omega_n = 3 \text{ rad/s}, \quad \zeta = 0.7$$ 控制结构:
飞行员指令 r → [前馈] ──┐
├→ (+) → [飞机] → θ
状态 [α,q,θ] → [反馈增益] ─┘
↑
[自适应律] ← 误差 e
自适应增益设计: $$K(t) = K_{nominal} + \Delta K(t)$$ 其中 $\Delta K(t)$ 通过Lyapunov方法在线调整。
11.6.4 飞行测试结果
实际飞行数据显示:
- 马赫2.0→5.0过渡:固定增益控制器超调45%,自适应控制器超调12%
- 突风响应:自适应控制器恢复时间减少60%
- 参数收敛:约15秒达到稳定估计值
关键经验:
- 自适应速率需根据飞行阶段调整
- 必须限制参数变化范围防止过度自适应
- 切换逻辑在极端条件下保证安全
11.7 案例研究2:UR5协作机械臂负载自适应控制
11.7.1 问题描述
UR5协作机械臂在工业应用中需要处理:
- 未知负载:0-5kg变化范围
- 重心偏移:工具和工件组合导致重心不确定
- 柔性负载:液体容器等导致动态特性变化
- 人机协作:外力干扰和安全约束
11.7.2 机械臂动力学模型
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) = M_0(q) + \Delta M_{load}(q)$
- 重力项变化:$G(q) = G_0(q) + \Delta G_{load}(q)$
11.7.3 自适应控制器设计
参数化: 将动力学方程重写为线性参数形式: $$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}$ 是滑模变量。
11.7.4 实验结果与性能分析
实验设置:
- 任务:笛卡尔空间圆形轨迹跟踪
- 负载变化:0kg → 2kg → 5kg → 3kg(带偏心)
- 性能指标:位置误差RMS、力矩使用率
结果对比:
控制方法 位置误差(mm) 力矩峰值(Nm) 适应时间(s)
固定PD 8.5 120 -
增益调度 4.2 95 -
自适应控制 1.8 78 3.5
关键实现细节:
- 初始参数:使用标称负载参数作为初值
- 安全监控:限制参数变化率和范围
- 复位逻辑:检测到大负载变化时快速复位
11.7.5 人机协作场景扩展
导纳控制框架下的自适应: $$M_d \ddot{x} + B_d \dot{x} + K_d x = F_{ext}$$ 自适应调整虚拟惯量 $M_d$ 以适应不同负载: $$M_d = M_{d0} + \alpha \hat{m}_{load}$$ 这样保证了一致的人机交互体验。
11.8 先进话题:并发学习与复合自适应
11.8.1 并发学习原理
传统自适应控制需要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)$$
11.8.2 数据选择策略
最小特征值最大化: 选择使信息矩阵特征值最大的数据: $$\max_{\mathcal{H}} \lambda_{min}\left(\sum_{i \in \mathcal{H}} Y_i^T Y_i\right)$$ 覆盖准则: 确保数据覆盖状态空间的不同区域。
11.8.3 有限时间收敛
结合滑模技术实现参数有限时间收敛: $$\dot{\hat{\theta}} = -\Gamma \text{sign}(Y^T s)$$
11.9 历史人物:Karl Åström
Karl Johan Åström(1934-)是自适应控制理论的奠基人之一。
主要贡献:
- 自校正调节器(1973):首个实用的自适应控制算法
- 最小方差控制:随机系统的自适应控制
- 双重控制:同时考虑控制和学习的最优策略
经典语录:
"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》影响了几代控制工程师。
11.10 前沿专题:深度学习增强的自适应控制
11.10.1 神经网络自适应控制
使用神经网络逼近未知非线性: $$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$$
11.10.2 元学习自适应控制
利用多任务经验加速新任务的自适应:
MAML框架应用:
- 收集多个相似系统的控制经验
- 学习良好的初始控制器参数
- 新任务上快速自适应(few-shot)
11.10.3 安全性保证
控制屏障函数(CBF)约束: $$\dot{\hat{\theta}} = \text{Proj}_{safe}(-\Gamma \omega e)$$ 其中投影确保安全约束: $$h(x) + \alpha \dot{h}(x,u) \geq 0$$
本章小结
自适应控制提供了处理参数不确定性和时变系统的系统化方法。关键要点:
- MRAC vs STR:直接调整控制器 vs 先辨识后控制
- 稳定性设计:Lyapunov方法保证收敛性
- 持续激励:参数收敛的必要条件
- 鲁棒性增强:σ-修正、死区、L1控制
- 实际应用:需要考虑安全性、瞬态性能、计算效率
设计流程:
- 确定不确定性类型(参数/结构)
- 选择自适应方案(直接/间接)
- 设计自适应律(MIT/Lyapunov)
- 添加鲁棒性机制
- 验证PE条件和收敛性
练习题
基础题
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$ 的自适应律。
答案
控制律:$u = \theta_1 r + \theta_2 y$
误差动态:$\dot{e} = \dot{y} - \dot{y}_m = -2e + (\theta_1 - 2)r + (\theta_2 + a - 2)y$
选择Lyapunov函数:$V = \frac{1}{2}e^2 + \frac{1}{2\gamma_1}(\theta_1 - 2)^2 + \frac{1}{2\gamma_2}(\theta_2 + a - 2)^2$
自适应律:
- $\dot{\theta}_1 = -\gamma_1 er$
- $\dot{\theta}_2 = -\gamma_2 ey$
这保证 $\dot{V} = -2e^2 \leq 0$,因此 $e \to 0$。
11.2 对于参数估计 $\hat{\theta}(t)$,若回归向量 $\phi(t) = [\sin(t), \cos(t)]^T$,判断是否满足持续激励条件。
提示:计算 $\int_t^{t+T} \phi(\tau)\phi^T(\tau)d\tau$ 并检查其正定性。
答案
$$\int_t^{t+2\pi} \phi(\tau)\phi^T(\tau)d\tau = \int_t^{t+2\pi} \begin{bmatrix} \sin^2(\tau) & \sin(\tau)\cos(\tau) \\ \sin(\tau)\cos(\tau) & \cos^2(\tau) \end{bmatrix} d\tau$$
$$= \begin{bmatrix} \pi & 0 \\ 0 & \pi \end{bmatrix} = \pi I$$ 因此满足PE条件,$\alpha = \pi > 0$。
11.3 比较σ-修正和ε-修正的优缺点,各适用于什么场景?
提示:考虑参数漂移、稳态误差、噪声敏感性。
答案
σ-修正:
- 优点:连续自适应,参数有界
- 缺点:引入稳态参数误差
- 适用:噪声较大、需要参数始终有界的场景
ε-修正:
- 优点:小误差时停止自适应,避免噪声影响
- 缺点:可能错过缓慢参数变化
- 适用:系统参数变化不频繁、噪声水平已知的场景
11.4 推导RLS算法的协方差更新公式 $P(t) = (I - K(t)\phi^T(t))P(t-1)/\lambda$。
提示:从矩阵求逆引理开始。
答案
从信息矩阵更新: $$R(t) = \lambda R(t-1) + \phi(t)\phi^T(t)$$ 其中 $P(t) = R^{-1}(t)$。
应用矩阵求逆引理: $$(A + BCD)^{-1} = A^{-1} - A^{-1}B(C^{-1} + DA^{-1}B)^{-1}DA^{-1}$$ 令 $A = \lambda R(t-1)$,$B = \phi(t)$,$C = 1$,$D = \phi^T(t)$: $$P(t) = \frac{1}{\lambda}[P(t-1) - \frac{P(t-1)\phi(t)\phi^T(t)P(t-1)}{\lambda + \phi^T(t)P(t-1)\phi(t)}]$$
$$= \frac{1}{\lambda}P(t-1)[I - \frac{\phi(t)\phi^T(t)P(t-1)}{\lambda + \phi^T(t)P(t-1)\phi(t)}]$$
$$= \frac{1}{\lambda}(I - K(t)\phi^T(t))P(t-1)$$
挑战题
11.5 设计一个自适应控制器处理执行器饱和:$u = \text{sat}(v)$,其中 $v$ 是控制器输出。如何修改自适应律以处理饱和?
提示:考虑反计算(anti-windup)技术。
答案
饱和处理方案:
-
修正自适应律: 当饱和发生时($u \neq v$),修改自适应律: $$\dot{\theta} = \begin{cases} -\Gamma \omega e & \text{if } |v| \leq u_{max} \\ -\Gamma \omega e - \Gamma_a \omega(v - u) & \text{if } |v| > u_{max} \end{cases}$$
-
投影到可行域: 限制参数使控制信号不超过饱和限: $$\Theta_{feasible} = \{\theta : |\theta^T \phi_{max}| \leq u_{max}\}$$
-
参考模型修正: 饱和时修改参考模型以反映实际可达性能。
这种方法避免了参数在饱和期间的错误适应。
11.6 对于多输入多输出(MIMO)系统,如何设计解耦的自适应控制器?讨论交叉耦合对自适应性能的影响。
提示:考虑相对增益阵列(RGA)和解耦补偿器。
答案
MIMO自适应控制设计:
-
动态解耦: 系统:$Y(s) = G(s)U(s)$ 解耦器:$W(s) = G^{-1}(s)G_d(s)$ 其中 $G_d(s)$ 是对角目标传递函数。
-
自适应解耦方案: - 在线估计耦合矩阵元素 - 自适应调整解耦补偿器参数 - 各通道独立设计SISO自适应控制器
-
耦合影响: - 强耦合导致参数收敛缓慢 - 可能出现参数振荡 - 需要协调各通道自适应速率
-
实用建议: - 使用RGA选择控制配对 - 慢自适应处理主通道 - 快自适应补偿耦合项
11.7 分析L1自适应控制如何通过频域分离实现鲁棒性。设计低通滤波器 $C(s)$ 需要考虑哪些因素?
提示:分析自适应回路和控制回路的带宽分离。
答案
L1控制的频域分离:
-
带宽分离原理: - 自适应回路:高带宽($\omega_{adapt} \gg \omega_{control}$) - 控制回路:通过 $C(s)$ 限制带宽
-
滤波器设计准则: $$C(s) = \frac{\omega_c^n}{(s + \omega_c)^n}$$ 选择 $\omega_c$ 需要平衡:
- 性能:$\omega_c$ 越大,跟踪性能越好
- 鲁棒性:$\omega_c$ 越小,对未建模动态越鲁棒
- 约束:$\omega_c < \omega_{unmodeled}/3$(避免激发高频动态)
-
稳定性条件: $$||G(s)(1 - C(s))||_{\mathcal{L}_1} < 1$$
-
实际设计: - 初始保守选择:$\omega_c = 0.1\omega_{plant}$ - 根据闭环响应逐步增加 - 监控高频振荡迹象
11.8 开放性问题:如何将强化学习与自适应控制结合?设计一个框架,利用RL改进自适应控制的长期性能。
提示:考虑元参数优化、经验回放、策略梯度方法。
答案
RL增强自适应控制框架:
-
层级架构: - 底层:传统自适应控制器(快速、稳定) - 上层:RL agent调整自适应参数(慢速、优化)
-
RL任务定义: - 状态:系统状态 + 参数估计 + 性能指标历史 - 动作:自适应增益 $\Gamma$、遗忘因子 $\lambda$、探测信号幅度 - 奖励:$r = -(\alpha_1 e^2 + \alpha_2 u^2 + \alpha_3 \dot{\theta}^2)$
-
实现方案:
class AdaptiveRLController:
def __init__(self):
self.adaptive_controller = MRAC()
self.rl_agent = PPO()
self.experience_buffer = []
def control_step(self, state):
# RL调整元参数
meta_params = self.rl_agent.get_action(state)
self.adaptive_controller.set_gains(meta_params)
# 自适应控制
u = self.adaptive_controller.compute(state)
# 收集经验
self.experience_buffer.append((state, u, reward))
# 定期更新RL
if len(self.experience_buffer) > batch_size:
self.rl_agent.update(self.experience_buffer)
return u
-
优势: - 自动调整自适应参数 - 学习处理重复场景 - 改进长期性能指标
-
挑战与研究方向: - 稳定性保证的形式化 - 样本效率提升 - 安全探索策略
常见陷阱与错误
1. 参数漂移问题
错误:长时间运行后参数值变得不合理 原因:缺乏持续激励,扰动被误认为参数变化 解决:
- 添加参数投影到已知物理范围
- 使用σ-修正防止无界增长
- 定期检查并复位异常参数
2. 初始瞬态过大
错误:自适应开始时出现大的瞬态响应 原因:初始参数误差大,自适应增益过高 解决:
- 使用合理的初始参数估计
- 实施增益调度:初期小增益,逐渐增加
- 添加瞬态性能约束
3. 高频振荡
错误:控制信号出现高频抖动 原因:未建模高频动态被激发 解决:
- 降低自适应增益
- 添加低通滤波器
- 使用L1架构分离带宽
4. 多参数耦合
错误:MIMO系统参数收敛缓慢或振荡 原因:参数间强耦合,条件数差 解决:
- 参数归一化和预处理
- 使用不同的自适应增益
- 考虑参数子集自适应
5. 噪声敏感
错误:测量噪声导致参数持续变化 原因:噪声被当作模型误差处理 解决:
- 使用死区修正
- 低通滤波测量信号
- 鲁棒自适应算法(如σ-修正)
调试技巧
- 参数监控:实时显示参数估计值和变化率
- PE检验:在线计算并显示PE条件指标
- 分阶段调试:先固定参数验证控制器,再启动自适应
- 仿真验证:在仿真中测试极端条件
- 安全边界:始终实施参数和控制信号限制
最佳实践检查清单
设计阶段
- [ ] 明确不确定性来源(参数/结构/外扰)
- [ ] 评估参数变化范围和速率
- [ ] 选择合适的自适应方案(直接/间接)
- [ ] 确定性能指标和约束条件
- [ ] 设计PE条件满足策略
实现阶段
- [ ] 参数初始化基于物理知识
- [ ] 实施参数投影到合理范围
- [ ] 添加抗积分饱和机制
- [ ] 设计自适应增益调度策略
- [ ] 实现异常检测和恢复逻辑
鲁棒性增强
- [ ] 添加σ-修正或ε-修正
- [ ] 设计合适的死区
- [ ] 限制自适应速率
- [ ] 滤波高频信号
- [ ] 实施L1架构(如需要)
验证测试
- [ ] 测试标称条件性能
- [ ] 验证参数突变响应
- [ ] 检查噪声条件下的行为
- [ ] 测试饱和和约束处理
- [ ] 长时间运行稳定性测试
性能优化
- [ ] 调整自适应增益获得最佳收敛速度
- [ ] 优化遗忘因子平衡跟踪性和噪声抑制
- [ ] 设计探测信号改善PE
- [ ] 实施并发学习利用历史数据
- [ ] 考虑多模型方案处理大范围变化
安全与监控
- [ ] 实时监控参数估计值
- [ ] 检测和报警异常行为
- [ ] 实施故障检测和隔离
- [ ] 设计平滑切换到备份控制器
- [ ] 记录数据用于离线分析