備戰第16屆智慧型車 控制處理高階 模糊PID演算法

2021-10-10 17:52:47 字數 2817 閱讀 7473

三、總結

模糊pid演算法近幾年被廣泛用於智慧型車競賽之中

博主將用最簡單的方式讓初學者明白如何使用

建議先理解基礎的pid演算法

根據經驗而來的,個人不建議更改

int rule[7]

[7]=

,//0

,//1

,//2

,//3

,//4

,//5

,//6};

//模糊規則表

eff:kp的取值分為7等份

dff:kd的取值分為7等份

uff:kp或者kd對應的誤差的取值範圍等分

e:此時的誤差

ec:誤差的誤差

說明:kp與kd的計算方式一樣,只需要更改uff的範圍即可,返回值即為kp\kd

計算完成以後即可帶入pid公式計算位置式pid或者增量式pid

float

fuzzy

(float e,

float ec)

;/*輸入量d語言值特徵點*/

float dff[7]

=;/*輸出量u語言值特徵點(根據賽道型別選擇不同的輸出值)*/

float uff[7]

=;float u=0;

/*偏差,偏差微分以及輸出值的精確量*/

float pf[2]

=,df[2]

=,uf[4]

=;/*偏差,偏差微分以及輸出值的隸屬度*/

int pn=

0,dn=

0,un[4]

=;float t1=

0,t2=

0,t3=

0,t4=

0,temp1=

0,temp2=0;

/*隸屬度的確定*/

/*根據pd的指定語言值獲得有效隸屬度*/

if(e>eff[0]

&& e)else

if(e<=eff[2]

)else

if(e<=eff[3]

)else

if(e<=eff[4]

)else

if(e<=eff[5]

)else

if(e<=eff[6]

)}else

if(e<=eff[0]

)else

if(e>=eff[6]

) pf[1]

=1-pf[0]

;//判斷d的隸屬度

if(ec>dff[0]

&&ec)else

if(ec<=dff[2]

)else

if(ec<=dff[3]

)else

if(ec<=dff[4]

)else

if(ec<=dff[5]

)else

if(ec<=dff[6]

)}//不在給定的區間內

else

if(ec<=dff[0]

)else

if(ec>=dff[6]

) df[1]

=1-df[0]

;/*使用誤差範圍優化後的規則表rule[7][7]*/

/*輸出值使用13個隸屬函式,中心值由uff[7]指定*/

/*一般都是四個規則有效*/

un[0]

=rule[pn+2]

[dn+2]

; un[1]

=rule[pn+3]

[dn+2]

; un[2]

=rule[pn+2]

[dn+3]

; un[3]

=rule[pn+3]

[dn+3]

;if(pf[0]

<=df[0]

)//求小

uf[0]

=pf[0]

;else

uf[0]

=df[0]

;if(pf[1]

<=df[0]

) uf[1]

=pf[1]

;else

uf[1]

=df[0]

;if(pf[0]

<=df[1]

) uf[2]

=pf[0]

;else

uf[2]

=df[1]

;if(pf[1]

<=df[1]

) uf[3]

=pf[1]

;else

uf[3]

=df[1]

;/*同隸屬函式輸出語言值求大*/

if(un[0]

==un[1]

)if(un[0]

==un[2]

)if(un[0]

==un[3]

)if(un[1]

==un[2]

)if(un[1]

==un[3]

)if(un[2]

==un[3]

) t1=uf[0]

*uff[un[0]

];t2=uf[1]

*uff[un[1]

];t3=uf[2]

*uff[un[2]

];t4=uf[3]

*uff[un[3]

];temp1=t1+t2+t3+t4;

temp2=uf[0]

+uf[1]

+uf[2]

+uf[3]

;//模糊量輸出

u=temp1/temp2;

return u;

}

第十五屆智慧型車競賽敗北有感

依稀記得,大一下學期被老師帶進實驗室,正值14屆智慧型車進行之際,從早到晚每個時間段,都會有學長學姐在調車,看到一輛輛智慧型車巡線飛奔,我想明年的我會不會也有自己的車,能不能站在省賽乃至國賽的賽場上,走向頒獎臺。2019年末,15屆智慧型車比賽的訊息依舊不確定,但在學長的帶領下,我們已經著手學習智慧...

第十四屆智慧型車培訓 數碼管

數碼管顯示原理 tec9607 數碼管驅動晶元字元表 led驅動器tec9607引腳功能簡介 數碼管的控制埠及時序 數碼管控制原理總結 微控制器通過三個io口來控制tec9607 led驅動器,從而來完成對5個數碼管的控制。傳輸資料方式 序列通訊 三個io口的作用 1 si 序列輸入資料,由微處理器...

第十五屆智慧型車賽比賽 比賽組織參考文件

第十五屆全國大學生智慧型車競賽 比賽組織參考文件 全國大學生智慧型車競賽秘書處 2020 07 27 monday 2020年由於全球新冠肺炎大流行的影響,使得第十五屆智慧型車競賽在組織比賽工作上出現了較大的影響。在8月份組織賽會制線下比賽的賽區包括有東北 華北 華東 西部 和浙江省賽區。華南賽區採...