MATLAB Simmechanics/Simscope四旋翼无人机控制仿真(3) 无人机控制器设计(非PID)
MATLAB Simmechanics/Simscope四旋翼无人机控制仿真(3) 无人机控制器设计(非PID)
如果您是非控制专业,那么PID控制足够控制前文所搭建的无人机了:
MATLAB Simmechanics/Simscope四旋翼无人机控制仿真(2) Simulink模型调节.
本博客需要一些现代控制理论中Lyapunov稳定性的一些理论知识。
https://pan.baidu.com/s/1fp8CGDLyQ4PMTlj3JunSwQ
密码:35nb
1 前言
关于无人机的控制原理这里将不再赘述,控制信息流可以用下面这个图说明:

关于无人机动力学模型推导,这里也不再赘述,不过根据欧拉角旋转顺序,模型会有一些sin和cos上的细微差别,下面直接引用一种动力学模型:

其中ϕ,θ和ψ分别为滚转角,俯仰角和偏航角,其中红框标出的一般被认为是位置干扰,在小姿态角假设下一般会被忽略,因此会变为:

原文:
Bouabdallah, S. , P. Murrieri , and R. Siegwart . “Design and control of an indoor micro quadrotor.” IEEE International Conference on Robotics and Automation, 2004. Proceedings. ICRA '04. 2004 IEEE, 2004.
2 非线性约束
从前面的控制信息流里面可以看到,无人机只有4个控制输入,其期望的俯仰和滚转角是根据水平控制求解的,而不是给定参考的因此,考虑ux和uy:

反解上式,得到期望俯仰和滚转角:

3 控制器设计
其实6个通道的控制器设计过程都很相似,下面只以滚转角ϕ为例。
使用的方法是经典的反步法,如果笔者把书上关于反步法介绍搬过来,那么笔者自己也不能理解书上在说啥哈哈,因此这里将用一种很通俗的方法叙述并设计:
首先滚转角状态方程,令x1=ϕ,x2=ϕ˙:
{x˙1=x2x˙2=Ixlu2+θ˙ψ˙(Iy−Iz)
定义误差:
e1=x1d−x1
首先考虑x2作为系统独立输入,要找到一个能使得e1→0的状态反馈控制律x2=φ(x1),因此定义误差:
e2=x2−φ(x1)
考虑:
V1=21e12
求导:
V˙1=e˙1e1=e1(x˙1d+e2−x˙1)=e1(x˙1d−x2)=e1(x˙1d−e2−φ(x1))
φ(x1)中不含x2相关项,因此这里交叉项 e1e2会保留,令φ(x1)=x˙1d+c1e1,c1>0,则:
V˙1=−e1e2−c1e12
由上式可知:
e˙1=−e2−c1e1
因此,上式求导得:
e˙2=−e¨1−c1e˙1
考虑:
V2=V1+21e22
求导:
V˙2=V˙1+e˙2e2=−c1e12+e2(e˙2−e1)=−c1e12+e2(−e¨1−c1e˙1−e1)=−c1e12+e2(−x¨1d+x˙2−c1e˙1−e1)
为了上式稳定,令 −x¨1d+x˙2−c1e˙1−e1=−c2e2,c2>0,得:
x¨2=x¨1d+c1e˙1+e1−c2e2=x¨1d+c1e˙1+e1−c2(−e˙1−c1e1)=x¨1d+(c1+c2)e˙1+(1+c1c2)e1
求解u2:
Ixlu2+θ˙ψ˙(Iy−Iz)=x¨1d+(c1+c2)e˙1+(1+c1c2)e1u2=l[x¨1d+(c1+c2)e˙1+(1+c1c2)e1]Ix−θ˙ψ˙(Iy−Iz)
调节系数的时候可以用下式:
u2=l[x¨1d+k1e˙1+k2e1]Ix−θ˙ψ˙(Iy−Iz)
其中:
{k1>0k2>1
上式总能解出c1和c2。
4 控制效果
这里简单放一下:


