基于模糊控制和PID控制的自主車輛速度跟蹤控制含MATLAB仿真程序_第1頁(yè)
基于模糊控制和PID控制的自主車輛速度跟蹤控制含MATLAB仿真程序_第2頁(yè)
基于模糊控制和PID控制的自主車輛速度跟蹤控制含MATLAB仿真程序_第3頁(yè)
基于模糊控制和PID控制的自主車輛速度跟蹤控制含MATLAB仿真程序_第4頁(yè)
基于模糊控制和PID控制的自主車輛速度跟蹤控制含MATLAB仿真程序_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、設(shè)計(jì)原理設(shè)計(jì)思想:油門(mén)控制采用增量式PID控制算法,剎車控制采用模糊控制算法,最后通過(guò)選擇規(guī)則進(jìn)行選擇控制量輸入。選擇規(guī)則:首先定義速度偏差-50 km/he(k)50km/h,-20ec= e(k)- e(k-1)20,閥值eswith=10km/h。若:e(k)<0 e(k)>- eswith and throttlr_10 選擇油門(mén)控制 否則:先將油門(mén)控制量置0,再選擇剎車控制若:0<e(k) 先選擇剎車控制,再選擇油門(mén)控制若:e(k)=0 直接跳出選擇剎車控制:剎車采用模糊控制算法1.確定模糊語(yǔ)言變量e基本論域取-50,50,ec基本論域取-20,20,剎車控制量

2、輸出u基本論域取-30,30,這里我將這三個(gè)變量按照下面的公式進(jìn)行壓縮離散化: 其中,n為離散度。e、ec和u均取離散度n=3,離散化后得到三個(gè)量的語(yǔ)言值論域分別為:E=EC=U=-3,-2,-1,0,1,2,3其對(duì)應(yīng)語(yǔ)言值為 NB,NM,NS,ZO, PS,PM,PB 2.確定隸屬度函數(shù)E/EC和U取相同的隸屬度函數(shù),邊界選取鐘形隸屬度函數(shù),中間取三角形隸屬度函數(shù),即: 說(shuō)明:邊界選擇鐘形隸屬度函數(shù),中間選用三角形隸屬度函數(shù),圖像略。實(shí)際EC和E輸入值若超出論域范圍,則取相應(yīng)的端點(diǎn)值。 3.模糊控制規(guī)則由隸屬度函數(shù)可以得到語(yǔ)言值隸屬度(通過(guò)圖像直接可以看出)如下表:表1:E/EC和U語(yǔ)言值隸

3、屬度向量表-3-2-10123NB10.500000P0NM010.50000P1NS00.510.5000P2ZO000.510.500P3PS0000.510.50P4PM00000.510P5PB000000.51P6設(shè)置模糊規(guī)則庫(kù)如下表:表2:模糊規(guī)則表UEECNBNMNSZOPSPMPBNBPBPBPMPMPSZOZONMPBPMPMPSZOZONSNSPMPMPSPSZONSNSZOPMPSPSZOZONSNMPSPSPSZOZOZONSNMPMPSZOZOZONSNMNBPBZOZOZONS*NMNMNB3.模糊推理由模糊規(guī)則表3可以知道輸入E與EC和輸出U的模糊關(guān)系,這里我取兩

4、個(gè)例子做模糊推理如下:if (E is NB) and (EC is NM) then (U is PB)那么他的模糊關(guān)系子矩陣為:其中,,即表1中NB對(duì)應(yīng)行向量,同理可以得到, , if (E is NB or NM) and (EC is NB) then (U is PB),結(jié)果略。按此法可得到27個(gè)關(guān)系子矩陣,對(duì)所有子矩陣取并集得到模糊關(guān)系矩陣如下:由R可以得到模擬量輸出為:4.去模糊化由上面得到的模擬量輸出為1×7的模糊向量,每一行的行元素(u(zij)對(duì)應(yīng)相應(yīng)的離散變量zj,則可通過(guò)加權(quán)平均法公式解模糊:從而得到實(shí)際剎車控制量的精確值u。油門(mén)控制:油門(mén)控制采用增量式PID

5、控制,即:其中ki=kp×ts/Ti,=kp×Td/ts只需要設(shè)置、Ti、Td三個(gè)參數(shù)即可輸出油門(mén)控制量。二、調(diào)整參數(shù)按照上述算法流程,應(yīng)用MATLAB進(jìn)行仿真實(shí)現(xiàn),在參數(shù)調(diào)試過(guò)程中采用如下方法:首先將油門(mén)和剎車分開(kāi)進(jìn)行調(diào)整參數(shù),最后再將調(diào)整好的參數(shù)寫(xiě)入總程序中調(diào)整。1.油門(mén)PID參數(shù)調(diào)節(jié)油門(mén)只需要調(diào)整kp、Ti、Td三個(gè)參數(shù),根據(jù)經(jīng)驗(yàn),首先令Ti、Td為0,kp由0逐漸增大,在增大kp的過(guò)程可知,kp越大系統(tǒng)調(diào)節(jié)時(shí)間越短并趨于穩(wěn)定,在達(dá)到一定程度后,繼續(xù)增大系統(tǒng)將出現(xiàn)波動(dòng)。 kp=0.1 kp=0.4kp=0.9調(diào)節(jié)Ti的過(guò)程發(fā)現(xiàn),Ti對(duì)系統(tǒng)穩(wěn)定性影響并不大,將Ti由10

6、增大到30的過(guò)程中系統(tǒng)輸出沒(méi)有變化。 Ti=10 Ti=30在給Td賦值時(shí),最開(kāi)始從1增大,發(fā)現(xiàn)系統(tǒng)越來(lái)越不穩(wěn)定,于是逐漸減小,到0.003時(shí)趨于穩(wěn)定,它的可調(diào)節(jié)范圍很小,隨其值的減小最大誤差值逐漸減小,增大則系統(tǒng)趨于不穩(wěn)定。 kp=0.001 kp=0.002kp=0.0032.剎車調(diào)節(jié)首先,為了適應(yīng)該系統(tǒng),將剎車輸出量限制在-150,150之內(nèi)(最初設(shè)計(jì)其范圍為-30,30),對(duì)于該控制,可調(diào)節(jié)參數(shù)較多,包括隸屬度函數(shù)、模糊規(guī)則表、輸入輸出變量區(qū)間、語(yǔ)言值論域、模糊推理及解模糊方法等等,這里由于模糊規(guī)則需要經(jīng)驗(yàn)設(shè)定,本算法沒(méi)有實(shí)際參考,所以這里只調(diào)整規(guī)則表,其他參數(shù)固定不變。以下為最初設(shè)計(jì)

7、的模糊規(guī)則表:UEECNBNMNSZONBPBPBPMPMNMPBPMPMPSNSPMPMPSPSZOPMPSPSZOPSPSPSZOZOPMPSZOZOZOPBZOZOZOZO由于實(shí)際剎車控制中對(duì)于加速采取比較單一的置零(在選擇規(guī)則中設(shè)定)輸出,所以在規(guī)則表中e<0部分沒(méi)有規(guī)則,然而為了仿真方便,使參數(shù)調(diào)節(jié)更清晰,重新定義模糊規(guī)則表如下:UEECNBNMNSZOPSPMPBNBPBPBPMPMPSZOZONMPBPMPMPSZOZONSNSPMPMPSPSZONSNSZOPSZOZOZOZONSNMPSPSPSZOZOZONSNMPMPSZOZOZONSNMNBPBZOZOZONS*N

8、MNMNB與此同時(shí),將剎車的輸出變量取反,以此來(lái)實(shí)現(xiàn)減速的效果!在調(diào)整模糊規(guī)則表的時(shí)候,必須依據(jù)輸入變量e和ec的范圍逐個(gè)檢驗(yàn),按照他們各自的語(yǔ)言值以及相應(yīng)的輸出語(yǔ)言值進(jìn)行調(diào)整。例如,初始速度為50,期望速度為0,即e=-50,ec=-50,則此時(shí)輸出對(duì)應(yīng)模糊規(guī)則表中第一行第一列PB,而下一時(shí)刻ec幾乎為0,所以在調(diào)節(jié)過(guò)程中,主要進(jìn)行對(duì)EC變量的ZO行進(jìn)行調(diào)節(jié),若響應(yīng)時(shí)間短,則增大相應(yīng)輸出語(yǔ)言值,反之亦然。仿真時(shí),分兩段,首先加速,之后減速,采用上面的模糊規(guī)則表,得到如下圖像:從圖像的上升階段分析可以看出,其加速階段并不能達(dá)到穩(wěn)態(tài)值,但對(duì)于剎車控制可以忽略其影響,而減速階段實(shí)際上已經(jīng)比較理想,

9、我取穩(wěn)態(tài)誤差達(dá)到5%穩(wěn)定,則此規(guī)則達(dá)到穩(wěn)態(tài)的時(shí)間為7.4s,這里嘗試進(jìn)行如下修改,將規(guī)則表中帶下劃線的部分以此改為:PM,PS,PS,ZO,即,增大了輸出語(yǔ)言值。則得到如下圖像:此規(guī)則達(dá)到穩(wěn)定的時(shí)間為6.9s,由此分析模糊規(guī)則的調(diào)整規(guī)則如下:若想加快響應(yīng)時(shí)間,增大誤差和誤差變化率負(fù)大區(qū)域附近的輸出語(yǔ)言值,并增大誤差變化率零區(qū)域附近的輸出語(yǔ)言值,可能還會(huì)引起超調(diào)量的增大,所以只需做臨近語(yǔ)言值之間的變化。3.整體調(diào)節(jié)此時(shí)將剎車與油門(mén)同時(shí)加到仿真模型中,分別做加速和減速仿真,依據(jù)分別調(diào)節(jié)時(shí)的規(guī)律做微量調(diào)節(jié)就可以基本達(dá)到要求。4.待解決問(wèn)題在調(diào)試過(guò)程中發(fā)現(xiàn),油門(mén)控制(PID)過(guò)程在達(dá)到穩(wěn)態(tài)時(shí)出現(xiàn)抖動(dòng),

10、并且三個(gè)參數(shù)對(duì)他的影響很小,具體原因待考證;油門(mén)控制給系統(tǒng)的輸入值出現(xiàn)大波動(dòng),每一次達(dá)到峰值持續(xù)相同時(shí)間后變?yōu)?再持續(xù)一段時(shí)間又變?yōu)榉逯?;模糊控制的語(yǔ)言值論域較小,對(duì)于擴(kuò)大語(yǔ)言值論域?qū)ο到y(tǒng)的影響還有待驗(yàn)證;模糊控制的輸入變量壓縮方式有待驗(yàn)證其合理性;模糊控制與PID控制的相互配合,在該程序中,由于兩種控制的輸出控制量不同,在給到仿真系統(tǒng)時(shí)很難統(tǒng)一;油門(mén)與上車的選擇規(guī)則與實(shí)際系統(tǒng)還存在很大的改進(jìn)。附錄MATLAB仿真程序function kk=bingji(A)for i=1:49 for k=1:7 for j=1:26 n=7*j+k; if(A(i,k)>=A(i,n) kk(i,k

11、)=A(i,k); else A(i,k)=A(i,n); kk(i,k)=A(i,k); end end endendfunction o=dikaer(A,n,B,N)for i=1:n for j=1:N if(A(i)<=B(j) C(i,j)=A(i); else C(i,j)=B(j); end o=C; end end return;function T=flisan(a,b,n,x) y=(a+b)/2+(b-a)*x/(2*n); T=round(y); return; function mm=bell(x,a,b,c)z=abs(x-c)/a)(2b);y=1/(1+

12、z);mm=y;return;function ooo=jbing(A,B) for i=1:49 for j=1:7 if(A(i,j)<B(i,j) A(i,j)=B(i,j); end end ooo=A; end return;function MM=jdikaer(A,n,B,m)for i=1:m for j=1:n if(A(j)<B(j,i) B(j,i)=A(j); end end MM=B;endreturn;function oo=jiao(A,B) for i=1:7 for j=1:7 if(A(i,j)>B(i,j) A(i,j)=B(i,j);

13、end end oo=A; end return;function mm=lbell(x,a,b,c)if(x<c) mm=1;elsez=(x-c)/a;v=abs(z);n=v(2*b);y=1/(1+n);mm=y;endreturn;function L=lisan(a,b,n,x) y=2*n*x/(b-a)-n*(a+b)/(b-a); L=y; return; function UU=max(A) for i=1:7 for j=1:49 if(A(j,i)>=Q(i) Q(i)=A(i,j); end end UU=Q; end return;function su

14、m1=mean(U) a=-3 -2 -1 0 1 2 3; sum2=0;sum3=0; for i=1:7 sum2=sum2+U(i); sum3=sum3+U(i)*a(i); end sum1=sum3/sum2; return;function mm=rbell(x,a,b,c)if(x>c) mm=1;elsez=(x-c)/a;v=abs(z);n=v(2*b);y=1/(1+n);mm=y;endreturn;function mww=trig(x,a,b,c) if(x<=a) mww=0; else if(x>a&&x<=b) mw

15、w=(x-a)/(b-a); else if(x>b&&x<=c) mww=(c-x)/(c-b); else if(x>c) mww=0; end end end end return; function ooo=xbing(A,B) for i=1:7 if(A(i)<B(i) A(i)=B(i); end ooo=A; end return;clear all%*Ä£ºýËã·¨%/*Á¥Êô¶ÈÏ&

16、#242;Á¿*%P0=1,0.5,0,0,0,0,0;%*NBP1=0,1,0.5,0,0,0,0;%*NMP2=0,0.5,1,0.5,0,0,0;%*NSP3=0,0,0.5,1,0.5,0,0;%*ZOP4=0,0,0,0.5,1,0.5,0;%*PSP5=0,0,0,0,0.5,1,0;%*PMP6=0,0,0,0,0,0.5,1;%*PB%*ÓïÑÔÖµ*%NB=-3;NM=-2;NS=-1;ZO=0;PS=1;PM=2;PB=3;%/*Ä£ºý¹

17、30;Ôò±í*%Pg=PB PB PM PM PS ZO ZO; PB PM PM PS ZO ZO NS; PM PM PS PS ZO NS NS; PM PS PS ZO ZO NS NM; PS PS ZO ZO ZO NS NM; PS ZO ZO ZO NS NM NB; ZO ZO ZO NS NM NM NB;%/*¸ù¾ÝÄ£ºý¹æÔò±í¼ÆËã

18、6;£ºý¹ØÏµ¾ØÕóR*%R1_=dikaer(xbing(P0,P1),7,P0,7);R1_=reshape(R1_,1,49);R1=dikaer(R1_,49,P6,7);R2_=dikaer(xbing(P2,P3),7,P0,7);R2_=reshape(R2_,1,49);R2=dikaer(R2_,49,P5,7);R3_=dikaer(P0,7,P1,7);R3_=reshape(R3_,1,49);R3=dikaer(R2_,49,P6,7);R4_=dika

19、er(xbing(P1,P2),7,P1,7);R4_=reshape(R4_,1,49);R4=dikaer(R4_,49,P5,7);R5_=dikaer(P3,7,P1,7);R5_=reshape(R5_,1,49);R5=dikaer(R5_,49,P4,7);R6_=dikaer(xbing(P0,P1),7,P2,7);R6_=reshape(R6_,1,49);R6=dikaer(R6_,49,P5,7);R7_=dikaer(xbing(P2,P3),7,P2,7);R7_=reshape(R7_,1,49);R7=dikaer(R7_,49,P4,7);R8_=dikaer

20、(P0,7,P3,7);R8_=reshape(R8_,1,49);R8=dikaer(R8_,49,P5,7);R9_=dikaer(xbing(P1,P2),7,P3,7);R9_=reshape(R9_,1,49);R9=dikaer(R9_,49,P4,7);R10_=dikaer(P3,7,P3,7);R10_=reshape(R10_,1,49);R10=dikaer(R10_,49,P3,7);R11_=dikaer(xbing(P0,P1),7,P4,7);R11_=reshape(R11_,1,49);R11=dikaer(R11_,49,P4,7);P45=xbing(P4

21、,P5);R12_=dikaer(xbing(P2,P3),7,P45,7);R12_=reshape(R12_,1,49);R12=dikaer(R12_,49,P3,7);R13_=dikaer(P0,7,P5,7);R13_=reshape(R13_,1,49);R13=dikaer(R13_,49,P4,7);R14_=dikaer(P1,7,P5,7);R14_=reshape(R14_,1,49);R14=dikaer(R14_,49,P3,7);P01=xbing(P0,P1);R15_=dikaer(xbing(P01,P2),7,P6,7);R15_=reshape(R15_

22、,1,49);R15=dikaer(R15_,49,P3,7);R16_=dikaer(P3,7,P6,7);R16_=reshape(R16_,1,49);R16=dikaer(R16_,49,P2,7);R17_=dikaer(P4,7,P0,7);R17_=reshape(R17_,1,49);R17=dikaer(R17_,49,P4,7);R18_=dikaer(xbing(P5,P6),7,P0,7);R18_=reshape(R18_,1,49);R18=dikaer(R18_,49,P3,7);R19_=dikaer(xbing(P4,P5),7,P1,7);R19_=resh

23、ape(R19_,1,49);R19=dikaer(R19_,49,P3,7);R20_=dikaer(P6,7,xbing(P1,P2),7);R20_=reshape(R20_,1,49);R20=dikaer(R20_,49,P2,7);P23=xbing(P2,P3);R21_=dikaer(P4,7,xbing(P23,P4),7);R21_=reshape(R21_,1,49);R21=dikaer(R21_,49,P3,7);R22_=dikaer(P5,7,xbing(P23,P4),7);R22_=reshape(R22_,1,49);R22=dikaer(R22_,49,P

24、2,7);R23_=dikaer(P6,7,xbing(P3,P4),7);R23_=reshape(R23_,1,49);R23=dikaer(R23_,49,P1,7);R24_=dikaer(P4,7,P5,7);R24_=reshape(R24_,1,49);R24=dikaer(R24_,49,P2,7);R25_=dikaer(P5,7,P5,7);R25_=reshape(R25_,1,49);R25=dikaer(R25_,49,P1,7);R26_=dikaer(P6,7,xbing(P6,P5),7);R26_=reshape(R26_,1,49);R26=dikaer(R

25、26_,49,P0,7);R27_=dikaer(xbing(P4,P5),7,P6,7);R27_=reshape(R27_,1,49);R27=dikaer(R27_,49,P1,7);m=R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R23,R24,R25,R26,R27;R=bingji(m); %*³õʼ»¯±äÁ¿e=0;ec=0;y_1=0;y_2=0;u=0;u_1=

26、0;u_2=0;u_3=0;e_1=0;e_2=0;Eswith=10;throttle_1=0;brake_1=0;x=0 0 0;ts=0.001;sys=tf(1,1,2,1,'inputdelay',0.5);dsys=c2d(sys,ts,'zoh');num,den=tfdata(dsys,'v');for k=1:1:40000%*¿ØÖÆÏµÍ³time(k)=k*ts;if(k<20000) vd(k)=50;else vd(k)=0;end

27、y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; e=vd(k)-y(k); ec=e-e_1; u_3=u_2; u_2=u_1; u_1=u; y_2=y_1; y_1=y(k); x(1)=e; x(2)=(e-e_1)/ts; x(3)=x(3)+e*ts;%*ÓÍÃÅ¿ØÖÆkp=0.42;Ti=30;Td=0.0018;%* vd(k)=1 % kp=0.42;Ti=30;Td=0.0018;%* vd(k)=1% kp=0.0015;Ti=0.01;

28、Td=0.002;%*vd(k)=1*time(k)+10% kp=0.0015;Ti=0.001;Td=0.002;%* vd(k)=1*time(k)2+time(k)+2;ki=kp*ts/Ti;kd=kp*Td/ts;dthrottle=kp*x(1)+kd*x(2)+ki*x(3); throttle=u_1+dthrottle;if(throttle>2000) throttle=2000;endif(throttle<-2000) throttle=-2000;end%*ɲ³µ¿ØÖÆ%

29、/*ѹËõÊäÈë±äÁ¿*%E=lisan(-50,50,3,e);EC=lisan(-20,20,3,ec);%/*¼ÆËãʵ¼ÊÎó²î¡¢Îó²î±ä»¯ÂʵÄÁ¥Êô

30、;¶ÈÏòÁ¿*%E_R(1)=lbell(E,1,4,-3);E_R(2)=trig(E,-3,-2,0);E_R(3)=trig(E,-3,-1,1);E_R(4)=trig(E,-2,0,2);E_R(5)=trig(E,-1,1,3);E_R(6)=trig(E,0,2,3);E_R(7)=rbell(E,1,4,3);EC_R(1)=lbell(EC,1,4,-3);EC_R(2)=trig(EC,-3,-2,0);EC_R(3)=trig(EC,-3,-1,1);EC_R(4)=trig(EC,-2,0,2);EC_R(5

31、)=trig(EC,-1,1,3);EC_R(6)=trig(EC,0,2,3);EC_R(7)=rbell(EC,1,4,3);%/*¼ÆËãÄ£ºýÁ¿Êä³ö*%U_R1=dikaer(E_R,7,EC_R,7);U_R1=reshape(U_R1,1,49);U_R2=jdikaer(U_R1,49,R,7);U_R=max(U_R2);u_L=mean(U_R);%ÐèÒª¸Ä½

32、;ø%/*¼ÆË㾫ȷÁ¿Êä³ö*%brake=-flisan(-2000,2000,3,u_L);e_2=e_1;e_1=e;%/*Ñ¡Ôñ¹æÔòif (e<0) if (e>-Eswith)|(throttle_1=0) if(throttle<=throttle_1) throttle_1=throttle;% throttle_1=throttle_1-throttle; u=throttle; Q(k)=u; W(k)=0; else throttle=0; throttle_1=throttle; u=throttle; Q(k)=u; W(k)=0; end else if(throttle_1=0) brake_1=brake; u=brake; W(k)=u; Q(k)=0; el

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論