MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(4) 串级姿态控制
- MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(4) 串级姿态控制
- 1 前言
- 2 系统模型
- 3 控制器设计
- 3.1 位置跟踪子系统
- 3.2 速度跟踪子系统
- 3.3 关于滑模面
- 4 仿真结果
MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(4) 串级姿态控制
由于最近准备做一些真机实飞的工作,需要的一些更稳定的控制方法,姿态环的串级控制性能较好,主要体现在超调量较小,相比于以前的控制方法能有更好的性能,同时也作为我自己的笔记。
以前的控制方法:
MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(3) 无人机控制器设计(非PID).
F250仿真模型:
MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(5) F250旋翼仿真搭建.
https://github.com/mkb9559/F250Sim
F250Demo.
方法参考自:
[1]陈剑, 杜红彬. 四旋翼飞行器串级姿态稳定性优化控制研究[J]. 计算机仿真, 2017, 34(9):6.
1 前言
本博客需要一些现代控制理论中Lyapunov稳定性的一些理论知识。
您需要对滑模控制有一个初步的了解,可以参考:
[滑模控制器浅述] (1) 二阶系统的简单滑模控制器设计
下面将从一个最简单的二阶系统开始进行公式的推导,以方便理解,这个方法可以扩展到姿态控制器设计,应用到姿态控制也仅仅是代入系统动力学那一步代入的动力学模型不同而已。
2 系统模型
考虑二阶系统:
x
¨
=
u
\ddot{x}=u
x¨=u
3 控制器设计
这个二阶系统将由两个控制器串联而成,其分别掌管速度控制和位置控制。
3.1 位置跟踪子系统
首先考虑位置跟踪控制,控制目标是跟踪期望位置
x
d
{x}_{d}
xd.
考虑滑模面:
s
1
=
e
1
+
c
1
∫
0
t
e
1
d
τ
{{s}_{1}}={{e}_{1}}+{{c}_{1}}\int_{0}^{t}{{{e}_{1}}d\tau }
s1=e1+c1∫0te1dτ其中
c
1
>
0
{c}_{1}>0
c1>0,
e
1
=
x
d
−
x
{{e}_{1}}={{x}_{d}}-x
e1=xd−x为位置偏差,这里考虑的滑模面带积分项,目的是能够抗一定的外部恒定扰动,如机架非对称造成的质心偏离等,删除此项也是可以的,关于滑模面会在后面具体详细分析。
注:根据笔者测试,位置子系统控制速度,没有外部干扰,不带积分项较好,即
c
1
=
0
{c}_{1}=0
c1=0,而速度跟踪子系统会受到外力矩干扰,需要带上该积分项
考虑速度
v
v
v应当跟踪速度指定
v
d
{{v}_{d}}
vd,从而有速度偏差
v
e
=
v
d
−
v
{{v}_{e}}={{v}_{d}}-v
ve=vd−v,其中
v
=
x
˙
v=\dot{x}
v=x˙。
那么,容易得到
x
˙
=
v
=
v
d
−
v
e
\dot{x}=v={{v}_{d}}-{{v}_{e}}
x˙=v=vd−ve对滑模面求导:
s
˙
1
=
e
˙
1
+
c
1
e
1
=
x
˙
d
−
x
˙
+
c
1
e
1
{{\dot{s}}_{1}}={{\dot{e}}_{1}}+{{c}_{1}}{{e}_{1}}={{\dot{x}}_{d}}-\dot{x}+{{c}_{1}}{{e}_{1}}
s˙1=e˙1+c1e1=x˙d−x˙+c1e1替换
x
˙
\dot{x}
x˙,使得上式出现速度指令
v
d
{{v}_{d}}
vd:
s
˙
1
=
x
˙
d
−
x
˙
+
c
1
e
1
=
x
˙
d
−
v
d
+
v
e
+
c
1
e
1
{{\dot{s}}_{1}}={{\dot{x}}_{d}}-\dot{x}+{{c}_{1}}{{e}_{1}}={{\dot{x}}_{d}}-{{v}_{d}}+{{v}_{e}}+{{c}_{1}}{{e}_{1}}
s˙1=x˙d−x˙+c1e1=x˙d−vd+ve+c1e1
考虑稳定性:
V
1
=
1
2
s
1
s
1
{{V}_{1}}=\frac{1}{2}{{s}_{1}}{{s}_{1}}
V1=21s1s1
求导:
V
˙
1
=
s
1
s
˙
1
=
s
1
(
x
˙
d
−
v
d
+
v
e
+
c
1
e
1
)
\begin{aligned} & {{{\dot{V}}}_{1}}={{s}_{1}}{{{\dot{s}}}_{1}} \\ & ={{s}_{1}}\left( {{{\dot{x}}}_{d}}-{{v}_{d}}+{{v}_{e}}+{{c}_{1}}{{e}_{1}} \right) \end{aligned}
V˙1=s1s˙1=s1(x˙d−vd+ve+c1e1)可以令
v
d
=
x
˙
d
+
c
1
e
1
+
k
1
s
1
{{v}_{d}}={{\dot{x}}_{d}}+{{c}_{1}}{{e}_{1}}+{{k}_{1}}{{s}_{1}}
vd=x˙d+c1e1+k1s1其中
k
1
>
0
{k}_{1}>0
k1>0,此时
V
˙
1
=
s
1
s
˙
1
=
s
1
(
x
˙
d
−
v
d
+
v
e
+
c
1
e
1
)
=
−
k
1
s
1
2
+
s
1
v
e
\begin{aligned} & {{{\dot{V}}}_{1}}={{s}_{1}}{{{\dot{s}}}_{1}} \\ & ={{s}_{1}}\left( {{{\dot{x}}}_{d}}-{{v}_{d}}+{{v}_{e}}+{{c}_{1}}{{e}_{1}} \right) \\ & =-{{k}_{1}}s_{1}^{2}+{{s}_{1}}{{v}_{e}} \end{aligned}
V˙1=s1s˙1=s1(x˙d−vd+ve+c1e1)=−k1s12+s1ve当系统的速度跟踪上了速度指令,即
x
˙
→
v
d
\dot{x}\to {{v}_{d}}
x˙→vd,即
v
e
→
0
{{v}_{e}}\to 0
ve→0时,有
V
˙
1
=
−
k
1
s
1
2
≤
0
{{\dot{V}}_{1}}=-{{k}_{1}}s_{1}^{2}\le 0
V˙1=−k1s12≤0,那么,位置跟踪子系统渐进稳定。如何让系统的速度跟踪上速度指令就是下面速度跟踪子系统的任务了。
可以看出,位置子系统的收敛性能收到了速度子系统收敛的影响,因此,一般期望速度子系统的收敛速度要快于位置子系统,这可以通过较大的控制增益实现。
值得一提的是,
v
d
{{v}_{d}}
vd和
x
˙
d
{{\dot{x}}_{d}}
x˙d是不同的量,前者表示输入给系统的期望速度指令,是根据控制器设计计算得到的;而后者是与给定的期望轨迹相关。譬如:给定一个定点,那么期望速度
x
˙
d
{{\dot{x}}_{d}}
x˙d一直是0,但是由于系统要加速减速移动到期望位置,那么期望速度指令
v
d
{{v}_{d}}
vd肯定不会恒为0。
3.2 速度跟踪子系统
考虑速度跟踪控制,控制目标是跟踪前面计算出来的期望速度指令
v
d
{v}_{d}
vd.
相似地,考虑滑模面:
s
2
=
e
2
+
c
2
∫
0
t
e
2
d
τ
{{s}_{2}}={{e}_{2}}+{{c}_{2}}\int_{0}^{t}{{{e}_{2}}d\tau }
s2=e2+c2∫0te2dτ其中
c
2
>
0
{c}_{2}>0
c2>0,
e
2
=
v
d
−
x
˙
{{e}_{2}}={{v}_{d}}-{\dot{x}}
e2=vd−x˙为速度偏差。
对滑模面求导:
s
˙
2
=
e
˙
2
+
c
2
e
2
=
x
¨
d
−
x
¨
+
c
2
e
2
{{\dot{s}}_{2}}={{\dot{e}}_{2}}+{{c}_{2}}{{e}_{2}}={{\ddot{x}}_{d}}-\ddot{x}+{{c}_{2}}{{e}_{2}}
s˙2=e˙2+c2e2=x¨d−x¨+c2e2下面代入动力学模型,如果是不同的系统,这一步需要有所改变:
s
˙
2
=
e
˙
2
+
c
2
e
2
=
x
¨
d
−
u
+
c
2
e
2
{{\dot{s}}_{2}}={{\dot{e}}_{2}}+{{c}_{2}}{{e}_{2}}={{\ddot{x}}_{d}}-u+{{c}_{2}}{{e}_{2}}
s˙2=e˙2+c2e2=x¨d−u+c2e2考虑稳定性:
V
2
=
1
2
s
2
s
2
{{V}_{2}}=\frac{1}{2}{{s}_{2}}{{s}_{2}}
V2=21s2s2
求导:
V
˙
2
=
s
1
s
˙
2
=
s
2
(
x
¨
d
−
u
+
c
2
e
2
)
\begin{aligned} & {{{\dot{V}}}_{2}}={{s}_{1}}{{{\dot{s}}}_{2}} \\ & ={{s}_{2}}\left({{\ddot{x}}_{d}}-u+{{c}_{2}}{{e}_{2}}\right) \end{aligned}
V˙2=s1s˙2=s2(x¨d−u+c2e2)可以令
u
=
x
¨
d
+
c
2
e
2
+
k
2
s
2
{u}={{\ddot{x}}_{d}}+{{c}_{2}}{{e}_{2}}+{{k}_{2}}{{s}_{2}}
u=x¨d+c2e2+k2s2其中
k
2
>
0
{k}_{2}>0
k2>0,此时
V
˙
2
=
−
k
2
s
2
2
≤
0
{{\dot{V}}_{2}}=-{{k}_{2}}s_{2}^{2}\le 0
V˙2=−k2s22≤0系统渐进稳定。
3.3 关于滑模面
考虑如下形式的滑模面:
s
=
e
+
c
∫
0
t
e
d
τ
{s}={e}+{c}\int_{0}^{t}{{e}d\tau }
s=e+c∫0tedτ从结论而言,当抵达滑模面后
s
=
0
{s}=0
s=0,状态量能够收敛,即
e
→
0
{e}\to 0
e→0。而如何抵达该滑模面,已经由上面设计的控制器实现。
考虑抵达滑模面的情形,此时
s
=
0
{s}=0
s=0,有
0
=
e
+
c
∫
0
t
e
d
τ
0={e}+{c}\int_{0}^{t}{{e}d\tau }
0=e+c∫0tedτ对该方程微分,得:
e
˙
+
c
e
=
0
\dot{e}+ce=0
e˙+ce=0
关于这个形式在以前的博客中已经分析,其收敛时间为
∞
\infty
∞。
详见下文中会普通滑模收敛性能分析:
[滑模控制器浅述] (4) Terminal滑模简述及其与普通滑模收敛速度比较
当然选择如下不带积分的简单滑模面前文的控制设计方法也是可行的,只是抗慢变干扰能力会有所下降。
s
=
e
{s}={e}
s=e
4 仿真结果
设置参数:
c
1
=
0
{c}_1=0
c1=0,
k
1
=
4
k_1=4
k1=4,
c
2
=
1
c_2=1
c2=1,
k
2
=
10
k_2=10
k2=10,考虑机架结构非对称,结果如下:
速度指令跟踪
位置跟踪
可以看到几乎没有超调。
如果使用简单的PD控制则会出现静差
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)