写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝
个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。
🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒
若您觉得内容有价值,还请评论告知一声,以便更多人受益。
转载请注明出处,尊重原创,从我做起。
👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜
在这里,您将收获的不只是技术干货,还有思维的火花!
📚 系列专栏:【运动控制】系列,带您深入浅出,领略控制之美。🖊
愿我的分享能为您带来启迪,如有不足,敬请指正,让我们共同学习,交流进步!
🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~
文章目录
引言
本篇博客重点讲解鲁棒控制中的滑模控制,内容整理自 B站知名up主 DR_CAN 的视频,作为博主的学习笔记,分享给大家共同学习。
一、鲁棒控制的定义与重要性
1.1 鲁棒控制的英文含义
鲁棒控制本身听上去不是很好理解,所以回归到它的英文Robust
,它的含义就是强壮的意思。鲁棒当然就是它的音译,当理解了含义之后,就可以明白鲁棒控制,即控制器设计是很强壮的。
1.2 维基百科上的定义
在维基百科上面有这样一段话介绍鲁棒控制:
To achieve robust performance and/or stabilty in presence of bounded modeling error.
其中有两点需要注意:presence
和 bounded
。即存在有界误差。它的应用也非常广泛,比如空调系统,或者巡航系统,因为都存在一些误差,但是这些误差都是有界的,比如空调室外温度是有界的。比如巡航系统不管是在雨天或者在雪地,摩擦系数也都是有界的,但是是不确定的误差。
1.3 自适应控制示例
举个例子,有这样的系统:
x
˙
=
a
x
2
+
u
\dot { x } = a x ^ { 2 } + u
x˙=ax2+u叫做 自适应控制(Adaptive Controller)。
假设
a
a
a 是未知常数,可以令
u
=
x
˙
d
+
x
2
∫
0
t
e
x
2
d
t
+
k
e
u = \dot { x } d + x ^ { 2 } \int _ { 0 } ^ { t } e x ^ { 2 } d t + k e
u=x˙d+x2∫0tex2dt+ke 使得
x
x
x 趋向于
x
d
x_d
xd。在鲁棒控制中,条件变得更加苛刻:
a
a
a 不再是常数,只知道
a
a
a 是有界的数,即
∣
a
∣
≤
∣
a
‾
∣
| a | \le | \overline { a } |
∣a∣≤∣a∣ 目标依然是令
x
→
x
d
x \rightarrow x_d
x→xd ,即
x
d
−
x
=
e
→
0
x _ { d } - x = e \rightarrow 0
xd−x=e→0 其中,
e
e
e 是误差。
二、鲁棒控制器设计
如何设计控制器呢?
先看一般形式:
x
˙
=
f
(
x
)
+
u
\dot { x } = f ( x ) + u
x˙=f(x)+u 目标是令
x
→
x
d
x \rightarrow x_d
x→xd ,误差的动态方程就是
e
˙
d
=
x
˙
d
−
x
˙
=
x
˙
d
−
f
(
x
)
−
u
\dot { e } _ { d } = \dot { x } _ { d } - \dot { x } = \dot { x } _ { d } - f ( x ) - u
e˙d=x˙d−x˙=x˙d−f(x)−u 前提条件是
∣
f
(
x
)
∣
<
ρ
(
x
)
| f ( x ) | < \rho ( x)
∣f(x)∣<ρ(x) 。可以令
u
=
x
˙
d
+
k
e
+
ρ
∣
e
∣
e
u = \dot { x }_d + k e + \rho \frac { | e | } { e }
u=x˙d+ke+ρe∣e∣ 其中
∣
e
∣
e
=
sgn
(
e
)
{
1
0
−
1
e
>
0
e
=
0
e
<
0
\frac{|e|}{e}=\text{sgn} \left( e \right) \left\{ \begin{array}{c} \begin{array}{c} 1\\ 0\\ \end{array}\\ -1\\ \end{array} \right. \begin{array}{c} e>0\\ e=0\\ e<0\\ \end{array}
e∣e∣=sgn(e)⎩
⎨
⎧10−1e>0e=0e<0 在图上画出来的图形如下:
三、数学证明
下面证明为什么这样的控制器设计可以使系统稳定。
3.1 李雅普诺夫稳定性
从李亚普诺夫方程的角度考虑问题,令
V
(
e
)
=
1
2
e
2
V { ( e ) } = \frac { 1 } { 2 } e ^ { 2 }
V(e)=21e2 对其求导可得
V
˙
(
e
)
=
e
e
˙
=
e
(
x
˙
d
−
f
(
x
)
−
u
)
=
e
(
x
˙
d
−
f
(
x
)
−
x
˙
d
−
k
e
−
ρ
∣
e
∣
e
)
=
−
k
e
2
−
e
f
(
x
)
−
ρ
∣
e
∣
≤
−
k
e
2
+
∣
e
∣
∣
f
(
x
)
∣
−
ρ
∣
e
∣
≤
−
k
e
2
+
∣
e
∣
ρ
−
ρ
∣
e
∣
\begin{aligned} \dot V\left( e \right) &=e\dot{e}=e\left( \dot{x}_d-f\left( x \right) -u \right)\\ &=e\left( \dot{x}_d-f\left( x \right) -\dot{x}_d-ke-\rho \frac{|e|}{e} \right)\\ &=-ke^2-ef\left( x \right) -\rho |e|\\ &\leq -ke^2+|e||f\left( x \right) |-\rho |e|\\ &\le -ke^2+|e|\rho -\rho |e|\\ \end{aligned}
V˙(e)=ee˙=e(x˙d−f(x)−u)=e(x˙d−f(x)−x˙d−ke−ρe∣e∣)=−ke2−ef(x)−ρ∣e∣≤−ke2+∣e∣∣f(x)∣−ρ∣e∣≤−ke2+∣e∣ρ−ρ∣e∣ 即
V
˙
(
e
)
≤
−
k
e
2
\dot V{ ( e ) } \leq - k e ^ { 2 }
V˙(e)≤−ke2 再回过头看
V
(
e
)
=
1
2
e
2
V { ( e ) } = \frac { 1 } { 2 } e ^ { 2 }
V(e)=21e2,可以推出来
2
V
(
e
)
=
e
2
2 V { ( e ) } = e ^ { 2 }
2V(e)=e2 代入
V
˙
(
e
)
≤
−
2
k
V
(
e
)
\dot V ( e ) \leq - 2 k V { (e) }
V˙(e)≤−2kV(e) 移到左边来
V
˙
(
e
)
+
2
k
V
(
e
)
≤
0
\dot { V } { ( e ) } + 2 k V { ( e ) } \leq 0
V˙(e)+2kV(e)≤0 得到微分方程不等式,引入新的大于
0
0
0 的函数
S
(
t
)
S(t)
S(t),可以写成
V
˙
(
e
)
+
2
k
V
(
e
)
+
S
(
t
)
=
0
\dot { V } { ( e ) } + 2 k V { ( e ) } + S { ( t ) } = 0
V˙(e)+2kV(e)+S(t)=0
V
˙
(
e
)
+
2
k
V
(
e
)
=
−
S
(
t
)
\dot V { ( e ) } + 2 k V ( e ) = - S ( t )
V˙(e)+2kV(e)=−S(t) 上式为一阶线性非齐次方程。
通解为
V
(
t
)
=
V
(
0
)
e
−
2
k
t
−
e
−
2
k
t
∫
0
t
e
2
k
t
s
(
τ
)
d
τ
.
V { ( t ) } = V { ( 0 ) } e^ {- 2 k t} - e^{- 2 k t } \int _ { 0 } ^ { t } e^{ 2 k t }s (\tau ) d \tau .
V(t)=V(0)e−2kt−e−2kt∫0te2kts(τ)dτ. 注意:此处的
e
−
2
k
t
e^ {- 2 k t}
e−2kt 为指数函数,不是误差。
3.2 进一步分析
在积分项里知道
s
(
τ
)
>
0
s (\tau )>0
s(τ)>0,因为这是设的
s
(
τ
)
>
0
s (\tau )>0
s(τ)>0。知道
e
e
e 的指数都是大于
0
0
0 的,所以积分项里的内容是大于
0
0
0 的,积分项外面的这一项
e
−
2
k
t
e^ {- 2 k t}
e−2kt 也一定是大于
0
0
0 的。所以整个减去的这一项都是大于
0
0
0 的,可以得到
V
(
t
)
≤
V
(
0
)
e
−
2
k
t
V { ( t ) } \le V { ( 0 ) } e^{ - 2 k t}
V(t)≤V(0)e−2kt 在这种情况下,把
V
(
t
)
V(t)
V(t) 代进去
1
2
e
2
(
t
)
≤
1
2
e
2
(
0
)
exp
(
−
2
k
t
)
\frac { 1 } { 2 } e ^ { 2 } ( t ) \le \frac { 1 } { 2 } e ^ { 2 } ( 0 ) \text{exp} ( - 2 k t )
21e2(t)≤21e2(0)exp(−2kt)
两边开方可得到
∣
e
(
t
)
∣
≤
∣
e
(
0
)
∣
exp
(
−
k
t
)
| e ( t ) | \leq | e ( 0 ) | \text{exp} ( - k t )
∣e(t)∣≤∣e(0)∣exp(−kt) 是一种指数渐进稳定的形式。
四、滑模控制原理
下面做的这一系列的工作,就是为了证明当
x
˙
=
f
(
x
)
+
u
\dot { x } = f ( x ) + u
x˙=f(x)+u 其中,
∣
f
(
x
)
∣
<
ρ
(
x
)
| f ( x ) | < \rho ( x )
∣f(x)∣<ρ(x) 时,可以令
u
=
x
˙
d
+
k
e
+
ρ
∣
e
∣
e
u = \dot { x }_d + k e + \rho \frac { | e | } { e }
u=x˙d+ke+ρe∣e∣ 这样就可以令
e
=
x
d
−
x
→
0
,
t
→
0
e=x_d-x\rightarrow0,t\rightarrow0
e=xd−x→0,t→0
现在把式子代进来
e
˙
=
x
˙
d
−
x
˙
=
x
˙
d
−
f
(
x
)
−
u
=
−
k
e
−
f
(
x
)
−
ρ
(
x
)
e
∣
e
∣
\dot { e } = \dot { x } _ { d } -\dot x=\dot x_d- f ( x ) - u =- k e - f ( x ) - \rho ( x ) \frac { e } { | e | }
e˙=x˙d−x˙=x˙d−f(x)−u=−ke−f(x)−ρ(x)∣e∣e 把
u
u
u 代进去
e
=
−
k
e
−
f
(
x
)
−
ρ
(
x
)
e
∣
e
∣
e = - k e - f ( x ) - \rho ( x ) \frac { e } { | e | }
e=−ke−f(x)−ρ(x)∣e∣e
先看前面一部分
e
=
−
k
e
e = - k e
e=−ke ,观察函数的相平面:
横轴是 e e e,纵轴是 e ˙ \dot e e˙,它是一条这样的线,在左半平面时, e < 0 e<0 e<0, e ˙ > 0 \dot e>0 e˙>0,所以它将沿着线向右移动;在右半平面时, e > 0 e>0 e>0, e ˙ < 0 \dot e<0 e˙<0,所以它将沿着线向左移动,最后都移动到 0 0 0 点。
引入后面这两项 − f ( x ) − ρ ( x ) e ∣ e ∣ - f ( x ) - \rho ( x ) \frac { e } { | e | } −f(x)−ρ(x)∣e∣e,其中 f ( x ) f(x) f(x) 项是本身系统的项,而 ρ ( x ) e ∣ e ∣ \rho ( x ) \frac { e } { | e | } ρ(x)∣e∣e 是引入的控制项。
上面两项的目标是当系统偏离这条线时,引导系统状态滑到这条线上去。系统的状态变量可能在这条线的左面,也有可能在这条线的右边,但是因为有后面的一项,会不断地把系统状态往这条线上引导,所以这样的过程叫做滑模控制(Sliding Mode)。
滑模控制(Sliding Mode Control, SMC) 是一种鲁棒控制方法。鲁棒控制是指控制系统在面对模型不确定性、外部干扰和未建模动态时,仍能保持期望性能的能力。滑模控制通过设计一个滑动面和相应的控制律,使得系统状态在滑动面上滑动,即使在存在不确定性和干扰的情况下,也能保证系统的最终稳定性和期望的性能。
五、实例解析
现在来解刚刚的例子:
x
˙
=
a
x
2
+
u
\dot { x } = a x ^ { 2 } + u
x˙=ax2+u 其中,
a
a
a 有界,即
∣
a
∣
≤
∣
a
‾
∣
| a | \le | \overline { a } |
∣a∣≤∣a∣ ,
a
x
2
a x ^ { 2 }
ax2 就是一般形式中的
f
(
x
)
f(x)
f(x)
∣
f
(
x
)
∣
=
∣
a
∣
x
2
≤
∣
a
‾
∣
x
2
<
∣
a
‾
∣
(
x
2
+
0.1
)
| f ( x ) | = | a | x ^ { 2 } \leq | \overline { a } | x ^ { 2 } < | \overline { a } | ( x ^ { 2 } + 0 . 1 )
∣f(x)∣=∣a∣x2≤∣a∣x2<∣a∣(x2+0.1) 后面括号里不管写多少都可以,因为引入了常数以后,小于号就一定成立了,这就是
ρ
(
x
)
\rho(x)
ρ(x),
所以就可以令
u
=
k
e
+
x
˙
d
+
∣
a
‾
∣
(
x
2
+
0.1
)
∣
e
∣
e
u = k e + \dot { x } _ { d } + | \overline { a } |( x ^ { 2 } + 0 . 1 ) \frac { | e | } { e }
u=ke+x˙d+∣a∣(x2+0.1)e∣e∣ 这就是滑模控制器。
六、总结
大家可以自己设计 Simulink 验证。比如可以令 a a a 是小于 3 3 3 的随机数,随时间不断变化,看控制器的反应。
在下一篇博客里会再介绍两种另外的鲁棒控制器,并把它们放在一起给做比较。
本篇博客的内容就到这里,欢迎大家关注后续内容。
参考资料
【Advanced控制理论】17_Robust Controller_非线性鲁棒控制器_Sliding Mode_滑模控制
后记:
🌟 感谢您耐心阅读这篇关于 滑模控制原理与应用实例解析 的技术博客。 📚
🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢
🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀
🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡
🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀