github仓库
对于一个系统
x˙=f(x)+ux→xd
其中不清楚 f(x) 的具体表达形式,但是 f(x) 是有界的,并且 ∣f(x)∣<ρ(x)
引入误差 e=xd−x ⇒ e˙=x˙d−f(x)−u,定义李雅普诺夫函数 V(e)=21e2
不妨令
u=ke+x˙d+uaux
其中 uaux 是一个辅助的控制器
滑膜控制器: uaux=ρ(x)e∣e∣,而这个会导致系统不断抖动
High Gain: uaux=ε1ρ2e 用足够大的输入抵消不确定性
带入 V˙,得
V˙=ee˙=e(x˙d−f(x)−ke−x˙d−ε1ρ2e)=−ef(x)−ke2−ε1ρ2e2⇓V˙≤−ke2+ρ∣e∣(1−ε1ρ∣e∣)
此时出现两种情况
case 1:
ρ∣e∣>ε⇓1−ε1ρ∣e∣<0⇓ρ∣e∣(1−ε1ρ∣e∣)<0⇓V˙≤−ke2
case 2:
ρ∣e∣≤ε⇓0≤1−ε1ρ∣e∣≤1⇓ρ∣e∣(1−ε1ρ∣e∣)≤ρ∣e∣≤ε⇓V˙≤−ke2+ε=−2kV+εIntroduce s(t)>0⇓V˙+2kV=ε−s(t)解微分方程⇓V=21e2=21e(0)2exp(−2kt)−exp(−2kt)∫0texp(2kτ)s(τ)dτ+2kε(1−exp(−2kt))由于第二项总是大于0的⇓21e2≤21e(0)2exp(−2kt)+2kε(1−exp(−2kt))两边同时乘2开平方⇓∣e(t)∣≤∣e0∣exp(−2kt)+kε−kεexp(−2kt)t→∞⇓∣e(t)∣≤kε
这就是系统最终会保持一个误差,但是当 ε 足够小,误差就很小,但是这也导致输入 uaux=ε1ρ2e 会非常大,需要做一个权衡
High Frequency: uaux=ρ∣e∣+ερ2e 相当于把滑模控制的抖动幅度减小了
带入 V˙ 得
V˙=−ef(x)−ke2−eρ∣e∣+ερ2e≤∣e∣∣f(x)∣−ke2−ρ∣e∣+ερ2e2⇓V˙≤−ke2+∣e∣ρ(1−ρ∣e∣+ερ∣e∣)=−ke2+ερ∣e∣+ερ∣e∣0≤ρ∣e∣+ερ∣e∣≤1⇓V˙≤−ke2+ε=−2kV+εIntroduce s(t)>0⇓V˙+2kV=ε−s(t)解微分方程⇓V=21e2=21e(0)2exp(−2kt)−exp(−2kt)∫0texp(2kτ)s(τ)dτ+2kε(1−exp(−2kt))由于第二项总是大于0的⇓21e2≤21e(0)2exp(−2kt)+2kε(1−exp(−2kt))两边同时乘2开平方⇓∣e(t)∣≤∣e0∣exp(−2kt)+kε−kεexp(−2kt)t→∞⇓∣e(t)∣≤kε
但是这个 ε 过小时,并不会导致系统的输入过大
例子
对于一个系统
x˙=ax2+u=f(x)+ux→xd
在先前是设定 a 是一个常数,但在此控制系统中,认为 a 是一个有界( ∣a∣≤∣a∣,其中 a 已知 )的数,并非是一个常数, a 是一个 [−1,1] 之间的一个随机数
系统的目标依旧是 x→xd,设定 e=xd−x,得到 e˙=x˙d−x˙=x˙d−f(x)−u
引入一个函数 ρ(x)(实际上可以是函数,也可以是一个固定的上界)使得 ∣f(x)∣≤ρ(x),设定