[关闭]
@Aurora-xi 2019-01-14T17:14:53.000000Z 字数 8203 阅读 966

基于BP神经网络的四旋翼PID控制研究


一、四旋翼控制系统模型的建立

(一)四旋翼的动力学模型

坐标系是描述飞行器位置与运动规律的参考基准。四旋翼包含两个坐标系,分别是自身机体坐标系与全局导航坐标系,因此在建立四旋翼模型前需要对两个坐标系进行转换。

从机体坐标系到导航坐标系的转换矩阵R为

其中为偏航角,为俯仰角,为翻滚角,坐标旋转顺序为ZYX。

为了建立飞行器的动力学模型,并且不失一般性,对四旋翼飞行器做出如下假设:
1. 四旋翼飞行器为均匀对称的刚体;
2. 惯性坐标系E的原点与飞行器几何中心及质心位于同一位置;
3. 四旋翼飞行器所受阻力和重力不受飞行高度等因素影响,总保持不变;
4. 四旋翼飞行器各个方向的拉力与推进器转速的平方成正比例。

结合线运动方程和角运动方程可得到四旋翼飞行器的非线性运动方程
整理后的公式如下

其中
为四旋翼飞行器的四个独立控制通道的控制输入量
为垂直速度控制量
为翻滚输入控制量
为俯仰输入控制量
为偏航输入控制量
为四旋翼飞行器的质量
为四旋翼的惯性矩阵
为旋翼中心到坐标系原点的距离

(二)四旋翼控制系统的传递函数

整个模型可以看成由线运动和角运动两个独立的子系统构成,角运动不受线运动的影响,而线运动受角运动的影响。
以此为前提同时忽略微型扰动,以姿态角和角速度直接的准积分关系为基础,可得到四旋翼飞行器的运动方程:

通过测量待测试的四轴飞行器的基本参数,并参阅相关文献,可得出四轴飞行器的参数表1。

表1 四轴飞行器参数

参数 数值
0.8
0.25
3.19
7.53
2.348
2.348
5.301

根据控制系统的传递函数,并结合四轴飞行器的参数表(表1),可得到各通道的传递函数表2。

表2 各通道传递函数

通道 传递函数
俯仰通道传递函数
横滚通道传递函数
偏航通道传递函数
X轴向俯仰角传递函数
Y轴向滚转角传递函数
Z轴向传递函数

二、传统PID控制研究

PID控制,即比例-积分-微分控制,是自动控制原理中的一种控制方法,也可以称为是校正方法。
PID控制主要是对系统偏差进行比例、积分、微分三种操作并线性组合成控制量,以减小系统误差,提高系统响应速度和响应效果。

对模拟信号进行的模拟PID控制,也可以称作连续PID控制,公式表示为:

式中,为比例系数,为积分时间常数,为微分时间常数。对上式进行拉氏变换:

PID控制器的传递函数为:

对连续PID控制以一定离散化方法离散后就可以得到数字PID控制。离散的本质是采样,假设采样为周期采样,采样周期为T,离散自变量为n,则离散PID控制可以表示为

根据上式,写出n-1时刻的控制量


得到

为积分系数,为微分系数,可以将上式简化为

根据上述公式编写代码并调试,参数取值如下表

传递函数
2 0.02 1
1.9 6 0.1
9 0.01 10
2.2 8 0。1
3.1 1 0.25
30 1 1

在MATLAB上编写代码如下

  1. clc;
  2. clear ;
  3. ts=0.001; %采样时间
  4. sys=tf(92,[1,367,0]);
  5. dsys=c2d(sys,ts,'z'); %把控制函数离散化,转化为拆分方程
  6. [num,den]=tfdata(dsys,'v'); %离散化后提取分子、分母 ,提取拆分方程系数
  7. u_1=0.0;
  8. u_2=0.0;
  9. y_1=0.0;
  10. y_2=0.0;
  11. x=[0,0,0];
  12. error_1=0;
  13. error_2=0;
  14. for k=1:1:10000
  15. time(k)=k*ts; %采样次数
  16. kp=9;ki=0.01;kd=10; %初始化PID
  17. rin(k)=1; %Step Signal ,阶跃信号
  18. du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller 控制系数
  19. u(k)=u_1+du(k);
  20. if u(k)>=10 %Restricting the output of controller,输出限幅
  21. u(k)=10;
  22. end
  23. if u(k)<=-10
  24. u(k)=-10;
  25. end
  26. %Linear model
  27. yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; %实际输出
  28. error(k)=rin(k)-yout(k); %Return of parameters 误差
  29. u_2=u_1; %保存上上次输入 为下次计算
  30. u_1=u(k); %保存上一次控制系数 为下次计算
  31. y_2=y_1; %保存上上次次输出 为下次计算
  32. y_1=yout(k); %保存上一次输出 为下次计算
  33. x(1)=error(k)-error_1; %Calculating P
  34. x(2)=error(k)-2*error_1+error_2; %Calculating D
  35. x(3)=error(k); %Calculating I
  36. error_2=error_1;
  37. error_1=error(k);
  38. end
  39. plot(time,rin,'b',time,yout,'r'); %输入 和实际控制输出
  40. xlabel('time(s)'),ylabel('rin,yout');

以俯仰通道、横滚通道、偏航通道为例,仿真出单位阶跃输入时PID图像如下:
俯仰通道
俯仰通道PID图像
横滚通道
横滚通道PID图像
偏航通道
偏航通道PID图像

通过仿真图可知,无论如何调节的值都无法完全消除超调和抖动。在各个通道中,偏航通道的超调量最大,最不稳定,自动控制效果最差。这主要是因为在PID控制中各参数对控制器的作用各不相同但又相互影响。随着值的增加,闭环系统的超调量增加,响应速度加快,控制时间加长,稳态误差减小,但值不能一味的增加,否则超调量将会大大增加导致系统变得极不稳定。随着值的增加,系统的超调量减小,但系统的响应速度减慢。随着值的增加,系统的超调量增大,经过起始上升阶段后响应速度减慢。

为了达到更为理想的自动控制效果,我们在PID参数调节中加入了神经网络自学习能力,根据系统的实时性自动调节PID参数。

三、BP神经网络PID控制器设计

(一)BP神经网络概述

BP神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。

BP网络能学习和存储大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

3层BP神经网络结构图

权值是这条路径的实现概率。在每层神经元和相邻层的连接路径。

阈值是临界值,当外界刺激达到一定的阈值时,神经元才会受刺激,影响下一个神经元。

BP神经网络权值和阈值的初值一般是随机产生的。

(二)BP神经网络与PID控制的结合

BP神经网络具有逼近任意非线性函数的能力,可以通过BP神经网络训练和学习来实时调整PID控制器的参数,找到某一最优控制下的P、I和D参数。

设控制器中的BP神经网络是一个3层BP网络,有M个输入节点,Q个隐层节点。输入节点对应系统运行的状态,输出节点分别对应PID控制器的3个可调参数

上文已推出,经典增量式数字PID的控制算式为:

BP神经网络PID的控制算式为:

将BP神经网络模型加入之前的代码,选取学习速率0.25,惯性因子0.05,编写代码如下:

  1. clear all;
  2. xite=0.25; %学习速率
  3. alfa=0.05; %惯性因子
  4. In=4;h=5;Out=3; %神经网络结构
  5. wi=[-0.6394 -0.2696 -0.3756 -0.7023;
  6. -0.8603 -0.2013 -0.05024 -0.2596;
  7. -1.0749 0.5543 -1.6820 -0.5437;
  8. -0.3625 -0.0724 -0.6463 -0.2859;
  9. 0.1425 0.0279 -0.5406 -0.7660];
  10. %wi=0.50*rands(h,In); %中间层加权系数wi初始化
  11. wi1=wi;wi2=wi;wi3=wi;
  12. wo=[0.7576 0.2616 0.5820 -0.1416 -0.1325;
  13. -0.1146 0.2949 0.8352 0.2205 0.4508;
  14. 0.7201 0.4566 0.7672 0.4962 0.3632];
  15. %wo=0.50*rands(Out,h); %输出层加权系数wo初始化
  16. wo1=wo;wo2=wo;wo3=wo;
  17. x=[0,0,0]; %比例,积分,微分赋初值
  18. u1=0;u2=0;u3=0;u4=0;u5=0;
  19. y1=0;y2=0;y3=0;
  20. oh=zeros(h,1); %神经网络中间层输出
  21. I=oh; %神经网络中间层输入
  22. error1=0;
  23. error2=0;
  24. ts=0.001; %采样周期均值
  25. for k=1:1:1000 %仿真开始,共6000
  26. time(k)=k*ts;
  27. rin(k)=1.0;
  28. a(k)=1.2*(1-0.8*exp(-0.1*k));
  29. y(k)=a(k)*y1/(1+y1^2)+u1;
  30. error(k)=rin(k)-y(k);
  31. xi=[rin(k),y(k),error(k),1];
  32. x(1)=error(k)-error1; %比例输出
  33. x(2)=error(k); %积分输出
  34. x(3)=error(k)-2*error1+error2; %微分输出
  35. ed=[x(1);x(2);x(3)];
  36. I=xi*wi; %中间层的输入,即输入层输入*权值
  37. for j=1:1:h
  38. oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j))); %激活函数作用下中间层的输出
  39. end
  40. K=wo*oh; %输出层的输入,即隐含层输入*权值
  41. for j=1:1:Out
  42. K(j)=exp(K(j))/(exp(K(j))+exp(-K(j))); %输出层的输出,即kp,ti,td
  43. end
  44. kp(k)=K(1);ti(k)=K(2);td(k)=K(3);
  45. Kd=[kp(k),ti(k),td(k)];
  46. du(k)=Kd*ed;
  47. u(k)=u1+du(k);
  48. if u(k)>=10 %限制控制器输出
  49. u(k)=10;
  50. end
  51. if u(k)<=-10
  52. u(k)=-10;
  53. end
  54. %权值wiwo的在线调整
  55. dyu(k)=sign((y(k)-y1)/(u(k)-u1+0.0000001));
  56. %输出层
  57. for j=1:1:Out
  58. dK(j)=2/(exp(K(j))+exp(-K(j)))^2;
  59. end
  60. for i=1:1:Out
  61. de3(i)=error(k)*dyu(k)*ed(i)*dK(i);
  62. end
  63. for j=1:1:Out
  64. for i=1:1:h
  65. dwo=xite*de3(j)*oh(i)+alfa*(wo1-wo2);
  66. end
  67. end
  68. wo=wo1+dwo+alfa*(wo1-wo2);
  69. %隐含层
  70. for i=1:1:h
  71. dO(i)=4/(exp(I(i))+exp(-I(i)))^2;
  72. end
  73. seg=de3*wo;
  74. for i=1:1:h
  75. de2(i)=dO(i)*seg(i);
  76. end
  77. dwi=xite*de2*xi;
  78. wi=wi1+dwi+alfa*(wi1-wi2);
  79. %参数更新
  80. u5=u4;
  81. u4=u3;
  82. u3=u2;
  83. u2=u1;
  84. u1=u(k);
  85. y2=y1;
  86. y1=y(k);
  87. wo3=wo2;
  88. wo2=wo1;
  89. wo1=wo;
  90. wi3=wi2;
  91. wi2=wi1;
  92. wi1=wi;
  93. error2=error1;
  94. error1=error(k);
  95. end
  96. plot(time,rin,'b',time,y,'r');
  97. xlabel('时间(秒)');ylabel('系统输出');

在单位阶跃响应时对偏航通道仿真得PID图像如下:
加入BP神经网络后

由图可见,加入BP神经网络模型后,不管是控制时间还是超调量等各方面,控制效果都有显著提升。

四、比较和总结

通过典型PID控制器和BP神经网络控制器的仿真图,我们可以看出典型PID调节控制器超调、抖动明显,而且无论怎么调节都无法消除。由于参数由比例、积分、微分环节调整,而其内部又相互影响,无法达到完美。
而BP神经网络控制器可以通过BP神经网络训练和学习来实时调整PID控制器的参数,找到某一最优控制下的P、I和D参数,使超调量和响应时间同时降低,具有良好的控制效果。使控制系统具有更强的稳定性。

将神经网络和PID相结合,利用神经网络的自学习能力和逼近任意函数的能力,可在线进行PID参数调整,有效地控制较复杂的被控对象,大大改善了常规PID控制器的性能,同时也显示了神经网络在解决高度非线性和严重不确定系统方面的潜能。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注