四旋翼滑模控制

一、引言

之前介绍了四旋翼建模与pid双环控制器设计,本次打算分享一下四旋翼滑模控制器的设计,参考文献【1】(Jiang X Y , Su C L , Xu Y P , et al. An adaptive backstepping sliding mode method for flight attitude of quadrotor UAVs[J]. Journal of Central South University, 2018, 25(3):616-631…)

二、模型搭建

四旋翼的模型在我之前的博客(四旋翼无人机Matlab建模)已经介绍过,这里不再赘述,四旋翼的模型如下: { x ¨ = u 1 m ( s ψ s ϕ + c ψ c ϕ s θ ) + d 1 y ¨ = u 1 m ( s ψ s θ c ϕ − c ψ s ϕ ) + d 2 z ¨ = u 1 m c θ c ϕ − g + d 3 ϕ ¨ = θ ˙ ψ ˙ ( I y y − I z z I x x ) + u 2 I x x + d 4 θ ¨ = ϕ ˙ ψ ˙ ( I z z − I x x I y y ) + u 3 I y y + d 5 ψ ¨ = ϕ ˙ θ ˙ ( I x x − I y y I z z ) + u 4 I z z + d 6 ( 1 ) \left\{\begin{matrix} \ddot{x}=\frac{ u_{1}}{m}(s\psi s\phi +c\psi c\phi s\theta )+d_{1}\\ \ddot{y}=\frac{ u_{1}}{m}(s\psi s\theta c\phi - c\psi s\phi)+d_{2}\\ \ddot{z}=\frac{ u_{1}}{m}c\theta c\phi -g+d_{3}\\ \ddot{\phi }=\dot{\theta }\dot{\psi }(\frac{I_{yy}-I_{zz}}{I_{xx}})+\frac{u_{2}}{I_{xx}}+d_{4}\\ \ddot{\theta }=\dot{\phi }\dot{\psi }(\frac{I_{zz}-I_{xx}}{I_{yy}})+\frac{u_{3}}{I_{yy}}+d_{5}\\ \ddot{\psi }=\dot{\phi }\dot{\theta }(\frac{I_{xx}-I_{yy}}{I_{zz}})+\frac{u_{4}}{I_{zz}}+d_{6} \end{matrix}\right.(1) x¨=mu1(sψsϕ+cψcϕsθ)+d1y¨=mu1(sψsθcϕcψsϕ)+d2z¨=mu1cθcϕg+d3ϕ¨=θ˙ψ˙(IxxIyyIzz)+Ixxu2+d4θ¨=ϕ˙ψ˙(IyyIzzIxx)+Iyyu3+d5ψ¨=ϕ˙θ˙(IzzIxxIyy)+Izzu4+d6(1)式中, d i , ( i = 1 , 2...6 ) d_{i},(i=1,2...6) di,(i=1,2...6)是系统扰动。
但四旋翼模型(1)经过了部分简化合并,即在力矩平衡方程中将四旋翼螺旋桨的对无人机产生影响归到 d i d_{i} di干扰项中,没有进行表示。更常用的四旋翼的动力学模型如下 { x ¨ = u 1 m ( s ψ s ϕ + c ψ c ϕ s θ ) + d 1 y ¨ = u 1 m ( s ψ s θ c ϕ − c ψ s ϕ ) + d 2 z ¨ = u 1 m c θ c ϕ − g + d 3 ϕ ¨ = θ ˙ ψ ˙ ( I y y − I z z I x x ) + u 2 I x x + d 4 − I r I x x θ ˙ ω r θ ¨ = ϕ ˙ ψ ˙ ( I z z − I x x I y y ) + u 3 I y y + d 5 − I r I y y ϕ ˙ ω r ψ ¨ = ϕ ˙ θ ˙ ( I x x − I y y I z z ) + u 4 I z z + d 6 ( 2 ) \left\{\begin{matrix} \ddot{x}=\frac{ u_{1}}{m}(s\psi s\phi +c\psi c\phi s\theta )+d_{1}\\ \ddot{y}=\frac{ u_{1}}{m}(s\psi s\theta c\phi - c\psi s\phi)+d_{2}\\ \ddot{z}=\frac{ u_{1}}{m}c\theta c\phi -g+d_{3}\\ \ddot{\phi }=\dot{\theta }\dot{\psi }(\frac{I_{yy}-I_{zz}}{I_{xx}})+\frac{u_{2}}{I_{xx}}+d_{4}-\frac{I_{r}}{I_{xx}}\dot{\theta}\omega_{r}\\ \ddot{\theta }=\dot{\phi }\dot{\psi }(\frac{I_{zz}-I_{xx}}{I_{yy}})+\frac{u_{3}}{I_{yy}}+d_{5}-\frac{I_{r}}{I_{yy}}\dot{\phi}\omega_{r}\\ \ddot{\psi }=\dot{\phi }\dot{\theta }(\frac{I_{xx}-I_{yy}}{I_{zz}})+\frac{u_{4}}{I_{zz}}+d_{6} \end{matrix}\right.(2) x¨=mu1(sψsϕ+cψcϕsθ)+d1y¨=mu1(sψsθcϕcψsϕ)+d2z¨=mu1cθcϕg+d3ϕ¨=θ˙ψ˙(IxxIyyIzz)+Ixxu2+d4IxxIrθ˙ωrθ¨=ϕ˙ψ˙(IyyIzzIxx)+Iyyu3+d5IyyIrϕ˙ωrψ¨=ϕ˙θ˙(IzzIxxIyy)+Izzu4+d6(2)式中 ω r = ω 1 + ω 3 − ω 2 − ω 4 \omega_{r} = \omega_{1}+\omega_{3}-\omega_{2}-\omega_{4} ωr=ω1+ω3ω2ω4 I r I_{r} Ir是螺旋桨旋转的转动惯量。两个模型都可以使用,如果你想表达的更准确,建议使用模型(2)。下面在simulink搭建模型(2)并为其设计滑模控制器。在建立(2)的simulink模型时,需要注意的点在于怎么获得四旋翼各个旋翼的转速,该转速可以通过 u 1 , u 2 , u 3 , u 4 u_{1},u_{2},u_{3},u_{4} u1,u2,u3,u4算得。由四旋翼无人机Matlab建模可知,控制u的表达式如下 [ u 1 u 2 u 3 u 4 ] = [ ∑ j = 1 4 ρ ω j 2 L ρ ( ω 4 2 − ω 2 2 ) L ρ ( ω 1 2 − ω 3 2 ) ∑ j = 1 4 ( − 1 ) j γ ω j 2 ] = B [ ω 1 2 ω 2 2 ω 3 2 ω 4 2 ] ( 3 ) \begin{bmatrix} u_{1}\\ u_{2}\\ u_{3}\\ u_{4} \end{bmatrix}=\begin{bmatrix} \sum_{j=1}^{4}\rho \omega _{j}^{2}\\ L\rho(\omega _{4}^{2}-\omega _{2}^{2})\\ L\rho(\omega _{1}^{2}-\omega _{3}^{2})\\ \sum_{j=1}^{4}(-1)^{j}\gamma \omega _{j}^{2} \end{bmatrix}=B\begin{bmatrix} \omega_{1}^{2} \\ \omega_{2}^{2}\\ \omega_{3}^{2}\\ \omega_{4}^{2} \end{bmatrix}(3) u1u2u3u4=j=14ρωj2Lρ(ω42ω22)Lρ(ω12ω32)j=14(1)jγωj2=Bω12ω22ω32ω42(3)其中 B = [ ρ ρ ρ ρ 0 − L ρ 0 L ρ L ρ 0 − L ρ 0 − γ γ − γ γ ] ( 4 ) B = \begin{bmatrix} \rho & \rho& \rho& \rho\\ 0& -L\rho & 0& L\rho \\ L\rho & 0& -L\rho & 0\\ -\gamma& \gamma& -\gamma&\gamma \end{bmatrix}(4) B=ρ0LργρLρ0γρ0LργρLρ0γ(4)然后两边同时乘以 B − 1 B^{-1} B1,就可以得到各旋翼转速的平方,开方后得到各旋翼转速。B矩阵与四旋翼的机体坐标系方向以及控制力/力矩u的定义有关,该模块simulink模型如下:
在这里插入图片描述
具体代码如下

function Omegar = fcn(U1, U2, U3, U4)
%rho无人机升力系数 
%L四旋翼臂长
%gama无人机阻力系数
B = [rho rho rho rho;
    0 -L*rho 0 L*rho;
    L*rho 0 -L*rho 0;
    -gama gama -gama gama];
U = [U1 U2 U3 U4]';
BU = B\U;
Omega1 = sqrt(abs(BU(1)));
Omega2 = sqrt(abs(BU(2)));
Omega3 = sqrt(abs(BU(3)));
Omega4 = sqrt(abs(BU(4)));
Omegar  = Omega1 - Omega2 + Omega3 - Omega4;

整个模型如下:
在这里插入图片描述
参数选择如下:

参数名称参数值
无人机质量m 0.65 k g 0.65kg 0.65kg
重力加速度g 9.8 m / s 2 9.8m/s^{2} 9.8m/s2
无人机绕x轴转动惯量Ixx 7.5 × 1 0 − 3 k g / m 2 7.5\times10^{-3}kg/m^{2} 7.5×103kg/m2
无人机绕y轴转动惯量Iyy 7.5 × 1 0 − 3 k g / m 2 7.5\times10^{-3}kg/m^{2} 7.5×103kg/m2
无人机绕z轴转动惯量Izz 1.3 × 1 0 − 2 k g / m 2 1.3\times10^{-2}kg/m^{2} 1.3×102kg/m2
无人机转子转动惯量Ir 6 × 1 0 − 5 k g / m 2 6\times10^{-5}kg/m^{2} 6×105kg/m2
无人机臂长L 0.23 m 0.23m 0.23m
无人机升力系数rho 3.1 × 1 0 − 5 3.1\times10^{-5} 3.1×105
无人机阻力系数gama 7.5 × 1 0 − 7 7.5\times10^{-7} 7.5×107

三、内环控制器设计

模型搭建好了后,开始设计控制器。四旋翼是个欠驱动系统,四个输入控制六个状态,状态之间存在耦合,例如当四旋翼存在俯仰角时,四旋翼的x方向一定会出现位移。因此,常见的处理方式是将四旋翼设计为姿态与位置两个环,外环控制器的到姿态的期望,再让内环控制器完成无人机控制。先设计内环控制器(暂时先不考虑干扰与不确定性)。
以无人机横滚角 ϕ \phi ϕ为例,令 x 1 = ϕ , x 2 = ϕ ˙ x_{1} = \phi,x_{2} = \dot{\phi} x1=ϕ,x2=ϕ˙,根据模型(2),横滚角的子系统可以改写如下: { x 1 ˙ = x 2 x 2 ˙ = f ( θ ˙ , ψ ˙ ) + u 2 I x x ( 5 ) \left\{\begin{matrix} \dot{x_{1}}& = & x_{2}\\ \dot{x_{2}}& = &f(\dot{\theta},\dot{\psi})+\frac{u_{2}}{I_{xx}} \end{matrix}\right.(5) {x1˙x2˙==x2f(θ˙,ψ˙)+Ixxu2(5)式中 f ( θ ˙ , ψ ˙ ) = θ ˙ ψ ˙ ( I y y − I z z I x x ) − I r I x x θ ˙ ω r ( 6 ) f(\dot{\theta},\dot{\psi}) = \dot{\theta }\dot{\psi }(\frac{I_{yy}-I_{zz}}{I_{xx}})-\frac{I_{r}}{I_{xx}}\dot{\theta}\omega_{r}(6) f(θ˙,ψ˙)=θ˙ψ˙(IxxIyyIzz)IxxIrθ˙ωr(6)定义跟踪误差 e = x 1 − x d ( 7 ) e = x_{1}-x_{d}(7) e=x1xd(7)式中 x d x_{d} xd是期望轨迹,定义简单滑模面如下 s = e + e ˙ ( 8 ) s = e+\dot{e}(8) s=e+e˙(8)对滑模面进行求导 s ˙ = e ¨ + e ˙ = x 1 ¨ − x d ¨ + x 1 ˙ − x d ˙ ( 9 ) \dot{s}=\ddot{e}+\dot{e}=\ddot{x_{1}}-\ddot{x_{d}}+\dot{x_{1}}-\dot{x_{d}}(9) s˙=e¨+e˙=x1¨xd¨+x1˙xd˙(9)由(5)得 x 1 ¨ = x 2 ˙ = f ( θ ˙ , ψ ˙ ) + u 2 I x x ( 10 ) \ddot{x_{1}}=\dot{x_{2}}=f(\dot{\theta},\dot{\psi})+\frac{u_{2}}{I_{xx}}(10) x1¨=x2˙=f(θ˙,ψ˙)+Ixxu2(10)将(10)带入(9) s ˙ = f ( θ ˙ , ψ ˙ ) + u 2 I x x + x 1 ˙ − x d ¨ − x d ˙ ( 11 ) \dot{s}=f(\dot{\theta},\dot{\psi})+\frac{u_{2}}{I_{xx}}+\dot{x_{1}}-\ddot{x_{d}}-\dot{x_{d}}(11) s˙=f(θ˙,ψ˙)+Ixxu2+x1˙xd¨xd˙(11)设计 u 2 u_{2} u2使得 s ˙ = \dot{s}= s˙=趋近律,则设计 u 2 = I x x ( x d ¨ + x d ˙ − f ( θ ˙ , ψ ˙ ) − x 1 ˙ − s − s i g n ( s ) ) ( 12 ) u_{2}=I_{xx}(\ddot{x_{d}}+\dot{x_{d}}-f(\dot{\theta},\dot{\psi})-\dot{x_{1}}-s-sign(s))(12) u2=Ixx(xd¨+xd˙f(θ˙,ψ˙)x1˙ssign(s))(12)代入式(11),可以使得 s s ˙ < 0 s\dot{s}<0 ss˙<0,控制器设计完成,俯仰角与偏航角设计与横滚角相同,这里不在赘述,直接给结果。
设俯仰角 θ \theta θ的期望跟踪信号为 θ d \theta_{d} θd,则 e = θ − θ d e = \theta-\theta_{d} e=θθd e ˙ = θ ˙ − θ d ˙ \dot{e} = \dot{\theta}-\dot{\theta_{d}} e˙=θ˙θd˙ s = e + e ˙ s=e+\dot{e} s=e+e˙ f ( ϕ ˙ , ψ ˙ ) = ϕ ˙ ψ ˙ ( I z z − I x x I y y ) − I r I y y ϕ ˙ ω r f(\dot{\phi},\dot{\psi})=\dot{\phi }\dot{\psi }(\frac{I_{zz}-I_{xx}}{I_{yy}})-\frac{I_{r}}{I_{yy}}\dot{\phi}\omega_{r} f(ϕ˙,ψ˙)=ϕ˙ψ˙(IyyIzzIxx)IyyIrϕ˙ωr u 3 = I y y ( θ d ¨ − f ( ϕ ˙ , ψ ˙ ) − e ˙ − s − s i g n ( s ) ) ( 13 ) u_{3} = I_{yy}(\ddot{\theta_{d}}-f(\dot{\phi},\dot{\psi})-\dot{e}-s-sign(s))(13) u3=Iyy(θd¨f(ϕ˙,ψ˙)e˙ssign(s))(13)
同理,偏航角按同样方法设计,最终控制律为 u 4 = I z z ( ψ ¨ − f ( ϕ ˙ , θ ˙ ) − e ˙ − s − s i g n ( s ) ) ( 14 ) u_{4}=I_{zz}(\ddot{\psi}-f(\dot{\phi},\dot{\theta})-\dot{e}-s-sign(s))(14) u4=Izz(ψ¨f(ϕ˙,θ˙)e˙ssign(s))(14)最终完成内环设计,横滚角控制器simulink模型如下:
在这里插入图片描述
matlab function中代码如下

function u2 = fcn(fand, dfand, ddfand, fan, dfan, dtheta, dpsi, Omegar, Ixx, Iyy, Izz, Ir)
e = fan -fand;
de = dfan - dfand;
s = e + de;
f = dtheta*dpsi*(Iyy-Izz)/Ixx-Ir*dtheta*Omegar/Ixx;
u2 = Ixx*(ddfand+dfand-f-dfan-s-sign(s));

假设横滚角期望轨迹为sin,跟踪效果如下:
在这里插入图片描述
图中黄色的为sin曲线,蓝色的为无人机 ϕ \phi ϕ跟踪情况(无人机俯仰与偏航角控制器可用相同方法测试),从图像可以看到内环控制器设计没有问题,接下来进行外环控制器设计。

四、外环控制器设计

外环控制器控制的为无人机位置,先来讨论比较独立z子系统。
z ¨ = u 1 m c θ c ϕ − g ( 15 ) \ddot{z}=\frac{ u_{1}}{m}c\theta c\phi -g(15) z¨=mu1cθcϕg(15)该子系统就是一个简单二阶系统,定义理想跟踪指令为 z d z_{d} zd,跟踪误差 e z = z − z d ( 16 ) e_{z}= z-z_{d}(16) ez=zzd(16)滑模面设计为 s z = e z ˙ + e z ( 17 ) s_{z}=\dot{e_{z}}+e_{z}(17) sz=ez˙+ez(17)则控制律设计如下 u 1 = m c θ c ϕ ( g + z d ¨ − e z ˙ − s z − s i g n ( s z ) ) ( 18 ) u_{1}=\frac{m}{c\theta c\phi}(g+\ddot{z_{d}}-\dot{e_{z}}-s_{z}-sign(s_{z}))(18) u1=cθcϕm(g+zd¨ez˙szsign(sz))(18)
令z跟踪曲线为sin曲线,则在该控制器下无人机z方向跟踪情况如下
在这里插入图片描述
黄色为期望曲线,蓝色为跟踪曲线,z方向的控制器设计完成。

水平方向的x,y子系统与 ϕ , θ \phi,\theta ϕ,θ存在动态耦合,即x,y的变化实际由 ϕ , θ \phi,\theta ϕ,θ控制, u 1 u_{1} u1只是一个状态量。因此,xy方向的状态方程可以改写如下(忽略干扰): { x ¨ = u x u 1 m y ¨ = u y u 1 m ( 19 ) \left\{\begin{matrix} \ddot{x}&= &\frac{u_{x}u_{1}}{m} \\ \ddot{y}&= &\frac{u_{y}u_{1}}{m} \end{matrix}\right.(19) {x¨y¨==muxu1muyu1(19) u x = s ψ s ϕ + c ψ c ϕ s θ ( 20 ) u_{x} = s\psi s\phi +c\psi c\phi s\theta (20) ux=sψsϕ+cψcϕsθ(20) u y = s ψ s θ c ϕ − c ψ s ϕ ( 21 ) u_{y}= s\psi s\theta c\phi - c\psi s\phi(21) uy=sψsθcϕcψsϕ(21)按照滑模设计方法,可以设计出 u x , u y u_{x},u_{y} ux,uy的值 u x = m u 1 ( x d ¨ − e x − s x − s i g n ( s x ) ) ( 22 ) u_{x}=\frac{m}{u_{1}}(\ddot{x_{d}}-e_{x}-s_{x}-sign(s_{x}))(22) ux=u1m(xd¨exsxsign(sx))(22)其中 e x = x − x d e_{x}=x-x_{d} ex=xxd, s x = e x + e x ˙ s_{x}=e_{x}+\dot{e_{x}} sx=ex+ex˙, x d x_{d} xd为x期望跟踪值
u y = m u 1 ( y d ¨ − e y − s y − s i g n ( s y ) ) ( 23 ) u_{y}=\frac{m}{u_{1}}(\ddot{y_{d}}-e_{y}-s_{y}-sign(s_{y}))(23) uy=u1m(yd¨eysysign(sy))(23)根据(20),(21)可以得到姿态子系统的中间指令信号如下: { ϕ d = a r c s i n ( u x s i n ψ − u y c o s ψ ) θ d = a r c s i n ( u x − s i n ϕ s i n ψ c o s ϕ c o s ψ ) ( 24 ) \left\{\begin{matrix} \phi_{d}&= &arcsin(u_{x}sin\psi-u_{y}cos\psi) \\ \theta_{d}&= &arcsin(\frac{u_{x}-sin\phi sin\psi}{cos\phi cos\psi} ) \end{matrix}\right.(24) {ϕdθd==arcsin(uxsinψuycosψ)arcsin(cosϕcosψuxsinϕsinψ)(24)把(22),(23)代入(24)就可以得到 ϕ d , θ d \phi_{d},\theta_{d} ϕd,θd
至此,外环控制器设计完成,整体simulink模型如下
在这里插入图片描述
仿真simulink文件链接: 四旋翼滑模控制.

  • 34
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 36
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值