黃永青 胡清濤
摘 要:介紹了基于VC++的模糊控制汽車(chē)倒車(chē)仿真系統(tǒng)基本設(shè)計(jì),建立在汽車(chē)倒車(chē)數(shù)學(xué)模型的基礎(chǔ)上,通過(guò)模糊控制程序,并通過(guò)微軟基礎(chǔ)類(lèi)設(shè)計(jì)仿真界面,使汽車(chē)在倒車(chē)時(shí)的狀態(tài)及其運(yùn)動(dòng)軌跡能夠動(dòng)態(tài)的顯示。在設(shè)計(jì)中,汽車(chē)倒車(chē)模型與控制器采用模塊化設(shè)計(jì)方法,具有一定的通用性,易于擴(kuò)展。通過(guò)該系統(tǒng)可以找到汽車(chē)倒車(chē)的“死區(qū)”范圍,檢驗(yàn)并改進(jìn)控制方法。模糊控制方法控制汽車(chē)倒車(chē)運(yùn)動(dòng)軌跡圓滑,倒車(chē)準(zhǔn)確,具有很好的魯棒性。
關(guān)鍵詞:汽車(chē)倒車(chē);模糊控制;仿真系統(tǒng);微軟基礎(chǔ)類(lèi)(MFC)
0 引言
倒車(chē)行駛時(shí)由于視線受到限制,不易看清車(chē)后道路和障礙,加之倒車(chē)時(shí),后輪變?yōu)榍皩?dǎo),前輪變?yōu)楹蟾饔^感覺(jué)上發(fā)生差異,控制轉(zhuǎn)向的位置也發(fā)生了變化,使之成為困擾駕駛者的一個(gè)難題。如果我們給汽車(chē)裝一個(gè)智能倒車(chē)系統(tǒng)就可以有效的避免由于倒車(chē)而造成的經(jīng)濟(jì)損失和人身安全。本文利用模糊控制理論,把人的經(jīng)驗(yàn)控制策略的自然語(yǔ)言轉(zhuǎn)化為計(jì)算機(jī)能夠接受的算法語(yǔ)言所描述的控制算法,模擬人的思維方式對(duì)一些無(wú)法構(gòu)造數(shù)學(xué)模型的被控對(duì)象進(jìn)行有效地控制。
1 汽車(chē)倒車(chē)的詳細(xì)描述
在停車(chē)場(chǎng)上停著一輛汽車(chē)(如圖1所示)?,F(xiàn)要求將汽車(chē)倒回場(chǎng)地的一端的中點(diǎn)(0,0)處,使汽車(chē)順直向前。在倒車(chē)的過(guò)程中只能后退不能向前并且不能超過(guò)X軸。設(shè)v為汽車(chē)的速度;L為汽車(chē)的長(zhǎng)度;X為汽車(chē)后端中點(diǎn)橫坐標(biāo);Y為汽車(chē)后端中點(diǎn)縱坐標(biāo);Θ為汽車(chē)前輪舵角;Ψ為汽車(chē)傾角;α為停車(chē)區(qū)中點(diǎn)(0.,0)到汽車(chē)后端中點(diǎn)的連線與汽車(chē)中軸線的夾角;β為汽車(chē)中軸線與y軸的夾角。α,β的值可有X,Y和Ψ通過(guò)幾何運(yùn)算求得,所以控制對(duì)象的狀態(tài)變量為X,Y,Ψ。初始狀態(tài)t=0時(shí),X,Y,Ψ已知,分別為X[0],Y[0],Ψ[0]。終止?fàn)顟B(tài)t=tf時(shí),上述變量的值也已給定,分別為:X[tf]=-0,Y[tf]=0,Ψ[tf]=90o。倒車(chē)的約束條件:-45o≤Θ≤45o;汽車(chē)倒車(chē)運(yùn)動(dòng)的微分方程組為:
2 汽車(chē)倒車(chē)模糊控制器構(gòu)建
2.1 根據(jù)經(jīng)驗(yàn)產(chǎn)生模糊控制策略
當(dāng)距離比較遠(yuǎn)的時(shí)候,應(yīng)當(dāng)努力調(diào)整小車(chē)的正向,使之與終點(diǎn)到(X,Y)連線的方向一致,同時(shí)應(yīng)當(dāng)減小汽車(chē)實(shí)際的正向與最終要求正向的夾角β。當(dāng)距離比較近的時(shí)候,應(yīng)當(dāng)努力減小汽車(chē)與終點(diǎn)水平位置的偏差,同是減小汽車(chē)實(shí)際的正向與最終要求正向的夾角β。
2.2 模糊控制專(zhuān)家經(jīng)驗(yàn)數(shù)學(xué)簡(jiǎn)化如下
當(dāng)距離遠(yuǎn)時(shí):θ=x/8+β;當(dāng)距離近時(shí):θ=-3α+2β;由于θ的計(jì)算比較復(fù)雜,我們可以將θ的計(jì)算過(guò)程放在模糊推理系統(tǒng)之外完成。先計(jì)算出θ1(遠(yuǎn)距離)和 θ2(近距離),再將θ1和θ2根據(jù)遠(yuǎn)近的模糊感念來(lái)進(jìn)行模糊綜合。我們?cè)偻ㄟ^(guò)汽車(chē)的坐標(biāo)計(jì)算出來(lái):D=(X2+Y2)1/2
2.3 建立T-S模型的模糊推理系統(tǒng)
由以上分析可知,其輸入變量為(D,θ1,θ2),輸出變量為θ。其中D的隸屬度函數(shù)有兩條,分別代表“遠(yuǎn)”和“近”。由于在模糊規(guī)則的前項(xiàng)條件里不包含θ1,θ2,因而不用給他們指定隸屬度函數(shù)。這樣的T-S模型系統(tǒng)的模糊規(guī)則只有兩條:如果D是“遠(yuǎn)”的,則θ=θ1;如果D是“近”的,則θ=θ2。
3 汽車(chē)仿真系統(tǒng)詳細(xì)設(shè)計(jì)
3.1 汽車(chē)倒車(chē)仿真模型
在實(shí)際的倒車(chē)中,根據(jù)汽車(chē)的當(dāng)前狀態(tài)(Xt,Yt,Ψt),計(jì)算θ1、θ2和距離D,把計(jì)算的結(jié)果傳輸給模糊控制器進(jìn)行模糊綜合后得到控制量θ,再把控制量θ輸入到汽車(chē)倒車(chē)的數(shù)學(xué)模型求得汽車(chē)新的狀態(tài)(Xt+1,Yt+1,Ψt+1)。同時(shí)把此狀態(tài)送入顯示模塊進(jìn)行顯示,并且判斷是否到達(dá)車(chē)位或者越界,如此循環(huán)進(jìn)行直到停止。
3.2 模糊控制器的程序設(shè)計(jì)如下
模糊控制器采用加權(quán)平均解模糊,作為CTruckDlg類(lèi)的內(nèi)部程序,代碼如下:
float CTruckDlg::Controler(float dis,float W1,float W2)
{
// dis為距離D,W1為θ1,W2為θ2
float m_wheel;
if(dis>7)
m_wheel=W2;
else if(dis>=3&&dis<=7)
m_wheel=-0.25*(dis-7)*W1+0.25*(dis-3)*W2;
else
m_wheel=W1;
if(m_wheel>45)
m_wheel=45;
if(m_wheel<-45)
m_wheel=-45;
return m_wheel;
}
3.3 顯示模塊設(shè)計(jì)
顯示模塊包括3部分:汽車(chē)倒車(chē)顯示區(qū)域、參數(shù)設(shè)置和顯示區(qū)域和汽車(chē)模型繪制函數(shù)。汽車(chē)倒車(chē)顯示區(qū)域是有MFC的圖片控件構(gòu)成,背景坐標(biāo)為一幅事先畫(huà)好的坐標(biāo)圖像。汽車(chē)模型在該圖片控件上進(jìn)行繪制。參數(shù)設(shè)置和顯示區(qū)域由MFC的編輯框控件、靜態(tài)控件和按鈕控件組成。主要對(duì)汽車(chē)的形狀(長(zhǎng)度)、位置以及仿真系統(tǒng)的參數(shù)進(jìn)行設(shè)置,并可在整個(gè)仿真過(guò)程中動(dòng)態(tài)顯示。
4 結(jié)語(yǔ)
通過(guò)對(duì)模糊控制汽車(chē)倒車(chē)仿真系統(tǒng)的設(shè)計(jì),可以加快對(duì)智能倒車(chē)系統(tǒng)的開(kāi)發(fā),同時(shí)模糊控制作為汽車(chē)倒車(chē)的控制算法具有倒車(chē)準(zhǔn)確、魯棒性強(qiáng)的優(yōu)點(diǎn),與傳統(tǒng)控制算法相比有明顯優(yōu)勢(shì)。
參考文獻(xiàn)
[1]于偉,張乃堯,白帆.倒車(chē)問(wèn)題的模糊優(yōu)化控制方案[J].機(jī)電一體化,2001,(5):21-24.
[2]吳小莉,林哲輝.MATLAB輔助模糊系統(tǒng)設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2002.
[3]楊智,楊李成.在MATLAB語(yǔ)言中間接實(shí)現(xiàn)C語(yǔ)言鏈接[J].蘭州理工大學(xué)學(xué)報(bào),1998,(4):56-60.
(作者單位:1.華潤(rùn)水泥(封開(kāi))有限公司;2.華潤(rùn)水泥(金沙)有限公司)