智能控制——专家控制
⭐⭐⭐✰✰
1 问题描述
考虑一个无人水面艇(USV)航向跟踪控制系统。无人艇的非线性动力学模型如下:
$$
T\ddot{\psi}+KH(\dot{\psi})=K\delta+d(t)
$$
其中:
- 状态变量$\psi$为航向角(单位:弧度);$r=\dot{\psi}$为转艏角速度(单位:弧度/秒)
- 控制输入$\delta$为舵角(单位:弧度),也是控制器的输出,通常受限,$|\delta|\leq\delta_{max}$
- 系统参数𝑇为船舶的追随性指数,体现惯性;𝐾为船舶的旋回性指数;$H(\dot{\psi})=\alpha\dot{\psi}+\beta\dot{\psi}^3$ 为一个关键的非线性函数,用于描述船舶在不同转速下的转向特性,参数𝛼、𝛽决定了非线性程度。
- 外部扰动$d(t)=A_dsin(\omega_dt)+n(t)$,代表综合环境扰动(如风、浪、流),其中 𝑛(t)为随 机白噪声。
- 系统参数:输入舵角$\delta$受限为$|\delta|\leq0.5rad$,$d(t)=0.1sin(0.1t)$模拟持续的环境扰动 (如风浪流)。系统参数为$T=2.0s,K=0.8s^{-1}、\alpha=1.0、\beta=0.5$
- 扰动参数:$A_d=0.1,\omega_d=0.1$,$n(t)$为均值为0,方差为0.01的白噪声
- 初始条件:$\psi(0)=0.1rad,r(0)=0rad/s$
- 控制目标:设计控制器,通过调节舵角$\delta$,使船舶航向$\psi$能够跟踪时变的参考航向$\psi_{ref}(t)$(如阶跃信号、斜坡信号或正弦信号)
接下来:
- 进行专家控制器设计:基于误差 $𝑒=𝜓_{𝑟𝑒𝑓}−𝜓$和误差变化率 $𝑒𝑐=𝑒̇$,设计一个直接映射到舵角𝛿的规则库。
- 进行专家PID控制器设计:基于(1)中相同的𝑒和𝑒𝑐,设计一个用于动态调整 PID 参数(𝐾𝑝,𝐾𝑖,𝐾𝑑)的规则库,再由标准PID算法计算𝛿
- 仿真与对比分析:在MATLAB/Simulink中搭建上述船舶模型,在相同条件下仿真实现上述两个控制器,并从超调量、调节时间、稳态误差、控制输入平滑性和鲁棒性(参数摄动下的性能)五个维度进行定量对比
2 问题分析与建模
本题目给出了一个非线性模型,其中控制器输出是δ,被控对象是$ψ$,目的是用专家控制设置控制器和PID控制器来实现$ψ$跟踪$ψ_{ref}$
首先对模型进行分析:
$$
T\ddot{\psi}+KH(\dot{\psi})=K\delta+d(t)
$$
从控制器输出开始,先乘上增益K再加上干扰d(t)得到右边式子,然后需要由此得到$\ddot{\psi}$,再经过两次积分得到$\psi$,因为:
$$
\ddot{\psi}=\frac{1}{T}(K\delta+d(t)-KH(\dot{\psi}))
$$
可以画出:

其中$n(t)$用的Random Number模块作为白噪声;$d(t)$是正弦信号扰动,$\omega_d=0.1,A_d=0.1$;中间的函数模块即$H(\dot{\psi})$;$\psi_0$为初始值0.1rad。前三者具体参数配置如下图。

得到了控制对象的基本模型,就可以把所需要的$e,ec$表示出来然后输入进控制器进行控制了。
3 控制器规则库设计
3.1 专家控制器
专家控制器输入为$e,ec$,输出为δ,用S-Function模块来写,可以得到如图所示的结构。


由S-Function的原理图,我们首先可以写出其主函数:
1 | |
然后是初始化函数配置相关参数,本控制器没有内部状态变量,输入变量2个,输出变量1个。
1 | |
而对于计算导数、更新状态、计算下一个采样时间、仿真结束四个子函数在此处都用不到,给予默认配置。
而我们的规则库主要体现在计算输出子函数mdlOutputs上
先创建若干条规则:
- 饱和控制:偏差很大时,打满舵,以求最快速度纠正。
- 增强控制:偏差中等且仍在变大,用中等舵角抑制其增长。
- 保守控制:偏差中等但已在缩小,用小舵角柔和纠正,防止超调。
- 精细控制:接近目标,启用类似PID的精细控制,平滑稳定。
- 微调控制:默认情况,施加一个微小恒定的纠正力。
- 输出限制:$|\delta|\leq0.5rad$
再对应转化为代码语言,按照图上的顺序,两个输入中u(1)是e,u(2)是ec
1 | |
3.2 专家PID控制器

结构与专家控制器一致,只是控制器的S-Function的规则库不一样。
S-Function大致结构和专家控制器一致,初始化参数设计不同,其规则库体现在状态更新子函数mdlUpdate上
初始化函数:此时定义三个内部状态:累积e积分、上次采样的e、得到的舵角(便于输出)
1 | |

上图为数字PID控制算法,我们所控的Kp,Ki,Kd参数直接就是每个环节前面的系数。
首先设定一组基础PID值,要求能够实现控制,无其他性能指标要求。令$K_P=1.2,K_I=0.3,K_D=0.4$,模拟运行一下:


可见能够实现控制,因此这组默认值是合理的。并由此为基础编写规则库
有若干条规则:
- 抗饱和:偏差极大,切换为Bang-Bang控制,也就是直接开到满舵,绕过PID。
- 加速响应:误差在扩大,增强P和D以抑制偏差增长,削弱 I 防积分饱和。
- 抑制超调:误差在缩小,减弱控制作用,使系统平稳接近目标。
- 消除静差:接近目标,增强积分作用以消除稳态误差,减弱P和D防振荡。
- 抗积分饱和:给积分定上下限,同时偏差较大时清零积分。
1 | |
4 模型对比
扰动量初始值等其他参数都相等的情况下,观察控制器控制$ψ$跟踪$ψ_{ref}$d
4.1 阶跃输入
让$ψ_{ref}$为阶跃输入,从0.5阶跃到1

上图左侧为专家控制,右侧为专家PID控制;可以看到当$ψ_{ref}$较小时,控制器受扰动影响较大,输出会产生震荡,并且通过对比,专家PID控制的抗干扰能力比专家控制强,专家控制已经明显受正弦干扰影响而产生周期震荡了。
让$ψ_{ref}$为阶跃输入,从10阶跃到15 。同时为了测试鲁棒性在扰动中新增一个干扰变量。由于δ有限幅,令扰动量为0.2

专家控制响应为:(左侧为阶跃响应ψ,右侧为控制输入δ)


专家PID控制响应为:(左侧为阶跃响应ψ,右侧为控制输入δ)


传统PID控制响应为(参数用专家PID的基础参数$K_P=1.2,K_I=0.3,K_D=0.4$并且设置抗积分饱和):左边ψ右边δ


由图可得出超调量、调节时间、稳态误差、控制输入的平滑性和鲁棒性
| 超调σ | 调节时间ts(2%) | 稳态误差 | δ的平滑性 | δ的鲁棒性 | |
|---|---|---|---|---|---|
| 专家控制器 | 2.02%(几乎无超调) | 20.882s | 0(但是一直在振荡) | δ非常不平滑,各种跳变产生了梳子形状的图象 | 当给另外的干扰时,δ为适应随之变化,但是最终的响应的均值略微变大,出现了稳态误差,鲁棒性较差 |
| 专家PID控制 | 0.99%(几乎无超调) | 15.392s | 0(几乎不振荡,较为稳定) | δ虽然也存在锯齿,但是相比于专家控制较为平滑 | 当给另外的干扰时,δ也随之变化,最终响应不变,没有稳态误差,但是比起扰动前出现了非常轻微的振荡,鲁棒性较好 |
| 传统PID控制 | 1.79%(几乎无超调) | 15.196 | 0(微弱振荡,比专家PID强烈一点,但是整体上还是非常稳定) | δ的平滑性介于专家控制和专家PID控制之间,存在一些特别剧烈变化的锯齿 | 当给另外的干扰时,δ也随之变化,最终响应不变,没有稳态误差,而且扰动前后的振荡情况几乎完全一致,鲁棒性极强 |
总结得出:
- 三种控制方法都实现了几乎无超调的控制指标,并且稳态误差都为0
- 调节时间专家PID比专家控制更短,说明其调节速度更快
- 最终专家控制一直在振荡,而专家PID几乎不震荡,说明专家PID调节策略更加稳定,效果更好
- 对专家控制来说,其规则库直接令控制输入δ阶跃变化,这导致其平滑性远不如专家PID控制
- 参数变化时,专家控制最后甚至出现了稳态误差,其鲁棒性也不如专家PID控制
由此可以看出,专家PID控制整体上是优于专家控制的;而专家PID控制在某些方面如控制输入δ平滑性上优于传统PID,而传统PID在鲁棒性上优于专家PID控制
4.2 斜坡输入
定义$\psi_{ref}$为初始值0.1,斜率0.05的斜坡输入,观察两种控制器的响应。
专家控制器响应:

专家PID控制器响应:

传统PID控制器响应:

专家PID控制明显振荡更小,效果更好,整体上比专家控制更强。
4.3 正弦输入
定义$\psi_{ref}$为偏置10,振幅0.5,角频率0.1的正弦输入,观察两种控制器的响应
专家控制器响应:

专家PID控制器响应:

传统PID控制器响应:

可见专业PID控制对正弦输入的跟踪效果也比专业控制强,且δ的平滑程度、鲁棒性都更好,专业PID控制更强。