前言:接上文,滑模控制主要的问题是抖振问题,接着我就学习了一下如何减小抖振,这里主要根据模糊控制来减小,看了一下模糊滑模控制,它是将符号函数的增益系数自适应,来减小滑模面附近的抖振,在这期间稍微有点感悟,这里简单记录一下模糊滑模的消抖问题。
1. 被控对象
以钟摆对象为对象,考虑外部干扰,采用普通滑模与模糊滑模分别进行控制,看看效果怎么样。
{
x
˙
1
=
x
2
x
˙
2
=
f
(
x
)
+
g
(
x
)
u
+
d
(
t
)
y
=
x
1
\begin{cases} \dot{x}_1=x_2\\ \dot{x}_2=f \left( x \right) +g \left( x \right) u+d\left( t \right)\\ y=x_1\\ \end{cases}
⎩
⎨
⎧x˙1=x2x˙2=f(x)+g(x)u+d(t)y=x1 其中,
f
(
x
)
=
0.5
sin
x
1
(
1
+
0.5
cos
x
1
)
x
2
2
−
10
sin
x
1
(
1
+
cos
x
1
)
0.25
(
2
+
cos
x
1
)
2
f \left( x \right) =\frac{0.5\sin x_1\left( 1+0.5\cos x_1 \right) x_{2}^{2}-10\sin x_1\left( 1+\cos x_1 \right)}{0.25\left( 2+\cos x_1 \right) ^2}
f(x)=0.25(2+cosx1)20.5sinx1(1+0.5cosx1)x22−10sinx1(1+cosx1),
g
(
x
)
=
1
0.25
(
2
+
cos
x
1
)
2
g \left( x \right) =\frac{1}{0.25\left( 2+\cos x_1 \right) ^2}
g(x)=0.25(2+cosx1)21,
d
(
t
)
=
10
cos
(
3
t
)
cos
(
x
1
)
d\left( t \right) =10\cos \left( 3t \right) \cos \left( x_1 \right)
d(t)=10cos(3t)cos(x1),系统状态初值为
[
1
,
0
]
T
\left[ 1,0\right] ^T
[1,0]T,理想跟踪指令为
p
i
6
sin
(
t
)
\frac{pi}{6}\sin \left( t \right)
6pisin(t) 。
2. 普通滑模控制器
取 e = x d − x 1 e=x_d-x_1 e=xd−x1,滑模面 s = c e + d e s=ce+de s=ce+de , s ˙ \dot{s} s˙ 取指数趋近律,可得控制律 u t = 1 / g ⋅ ( c ⋅ d e + θ ¨ d − f + K ⋅ s + ε ⋅ s g n ( s ) ) ut=1/g\cdot \left( c\cdot de+\ddot{\theta}_d-f+K\cdot s+\varepsilon \cdot sgn\left( s \right) \right) ut=1/g⋅(c⋅de+θ¨d−f+K⋅s+ε⋅sgn(s)) K K K即为增益系数,取为11, ε \varepsilon ε 取0.3,仿真结果如下:
角度跟踪效果:
角速度跟踪效果:
控制输入:
可以看出:系统的角度和角速度能够很快的跟踪上指定的信号,但由于增益系数 K K K 是固定的,导致在系统状态在靠近滑模面时仍然具有大的切换增益,于是系统状态在滑模面附近剧烈抖振,控制输入在0附近疯狂切换,控制输入的抖动程度为40左右。
3. 模糊滑模控制器
将模糊控制与滑模控制结合,不断调整增益系数
K
K
K 以使得系统状态在较远处有大的增益系数,而靠近滑模面时减小增益以减小系统在滑模面附近的来回抖振。
取滑模面
s
=
c
e
+
d
e
−
F
(
t
)
s=ce+de-F\left( t \right)
s=ce+de−F(t) ,取控制律
u
t
=
1
/
g
⋅
(
c
⋅
d
e
+
θ
¨
d
−
f
+
K
^
⋅
s
i
g
n
(
s
)
−
F
˙
(
t
)
)
ut=1/g\cdot \left( c\cdot de+\ddot{\theta}_d-f+\hat{K}\cdot sign\left( s \right) -\dot{F}\left( t \right) \right)
ut=1/g⋅(c⋅de+θ¨d−f+K^⋅sign(s)−F˙(t))即可实现模糊输出对外部扰动的逼近作用,其中
K
^
\hat{K}
K^ 为模糊控制输出。
模糊输入选为
s
⋅
s
˙
s\cdot \dot{s}
s⋅s˙ ,模糊输出为
Δ
K
\varDelta K
ΔK,输入区间选为
[
−
15
,
15
]
\left[ -15,15 \right]
[−15,15] ,输出区间选为
[
−
1.5
,
1.5
]
\left[ -1.5,1.5 \right]
[−1.5,1.5],模糊集选为
N
B
,
N
S
,
Z
O
,
P
S
,
P
B
NB,NS,ZO,PS,PB
NB,NS,ZO,PS,PB ,隶属函数选为高斯基函数,模糊规则为专家经验的
i
f
−
t
h
e
n
if-then
if−then 规则 ,即如果
s
s
˙
>
0
s\dot{s}>0
ss˙>0,则增大
K
K
K,如果
s
s
˙
<
0
s\dot{s}<0
ss˙<0,则减小
K
K
K,模糊推理为
M
a
m
d
a
n
i
Mamdani
Mamdani型,解模糊化选为面积重心法centroid,其他模糊参数根据经验选择。
仿真模型:
角度跟踪效果:
角速度跟踪效果:
控制输入:
对外部扰动的逼近作用:
之所以能够实现对外部扰动的逼近作用,是因为在设计控制器时用模糊项抵消了外部扰动项。
观察角度和角速度,由于增益系数在系统状态靠近滑模面时会减小,导致系统状态的跟踪时间比起固定增益系数会延长一点点,不是直接到达参考轨迹,而是慢慢贴合上,之后仍能够很好的跟踪上。
而观察控制输入,发现有很大的改善,不再像普通滑模控制的输入剧烈抖振,模糊滑模的输出平缓了很多,且曲线经我放大后也看不出来有抖振的现象,本次减抖效果很好,有效的解决了普通滑模控制带来的抖振问题。
另附:比例系数G,根据正常滑模控制的K和模糊控制的输出确定比例系数。
4. 仿真报错
当出现仿真不收敛的报错时,将求解器换为变步长即可。
5. 总结
对于模糊滑模控制,它相比单纯的滑模控制,可能会略微提高了一点收敛时间,但控制输入的抖振却明显降低了很多,两种控制在稳定之后均能很好的跟踪,感觉模糊控制也是类似自适应控制,都是通过在线调整参数使系统的状态更加符合环境的变化。
不过感觉模糊控制的参数选择很玄学,需要点经验。。
下一步学习计划:将模糊控制用于神经网络控制中…
更新,模糊神经网络已完成【模糊神经网络】基于模糊神经网络的倒立摆轨迹跟踪控制