苗培梓+楊有為(等)
【摘 要】智能車(chē)的性能指標(biāo)主要取決于硬件電路和軟件程序,硬件設(shè)計(jì)除了機(jī)械結(jié)構(gòu),更重要的是主板電路的設(shè)計(jì),電路的走線和布局;軟件設(shè)計(jì)是智能車(chē)的司令部,是決定智能車(chē)性能優(yōu)良的核心和關(guān)鍵,而其中圖像信息的采集和處理以及相應(yīng)的控制算法顯得尤為重要。
【關(guān)鍵詞】智能車(chē);PID;圖像處理;道路識(shí)別
0 引言
隨著全球信息和科技革命的興起,智能化和信息化廣泛應(yīng)用于我們的生產(chǎn)生活當(dāng)中,而對(duì)智能汽車(chē)的需求和發(fā)展,亦受到眾多國(guó)家的重視和支持。近年來(lái),智能車(chē)己經(jīng)成為世界車(chē)輛工程領(lǐng)域研究的熱點(diǎn)和汽車(chē)工業(yè)增長(zhǎng)的新動(dòng)力,很多發(fā)達(dá)國(guó)家都將其納入到各自重點(diǎn)發(fā)展的智能交通系統(tǒng)當(dāng)中。我國(guó)的智能汽車(chē)產(chǎn)業(yè)目前處于起步階段,較發(fā)達(dá)國(guó)家的發(fā)展水平還很落后,因此,對(duì)智能車(chē)的研究有助于我們智能汽車(chē)工業(yè)的發(fā)展和進(jìn)步。
本智能車(chē)硬件平臺(tái)采用MC9S12XS128微處理器作為系統(tǒng)處理控制器,主要控制轉(zhuǎn)向舵機(jī)和驅(qū)動(dòng)電機(jī),調(diào)試平臺(tái)采用Code Warrior軟件。智能車(chē)的制作主要涉及單片機(jī)控制電路的設(shè)計(jì)、攝像頭圖像信號(hào)的采集及其處理、控制算法和控制策略?xún)?yōu)化等方面。
1 智能車(chē)系統(tǒng)設(shè)計(jì)
本智能車(chē)系統(tǒng)以 MC9S12XS128 單片機(jī)為核心控制單元,采用數(shù)字?jǐn)z像頭作為識(shí)別道路的傳感器,通過(guò)光電編碼器檢測(cè)模型車(chē)的速度,使用增量式 PID 閉環(huán)控制算法,通過(guò) PWM 波調(diào)節(jié)驅(qū)動(dòng)電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向舵機(jī)的角度。我們力求系統(tǒng)的簡(jiǎn)單高效,在滿足智能車(chē)性能的要求下,使硬件結(jié)構(gòu)最簡(jiǎn)單。
1.1 MC9S12XS128單片機(jī)簡(jiǎn)介
MC9S12XS128是16位單片機(jī),由16位中央處理單元、128KB程序Flash、8KB RAM、8KB數(shù)據(jù)Flash組成片內(nèi)存儲(chǔ)器。
1.2 攝像頭的選擇
攝像頭根據(jù)所傳達(dá)的信號(hào),可分為CCD攝像頭和CMOS攝像頭。CCD攝像頭又稱(chēng)為模擬攝像頭,其采集到的視頻信號(hào)是模擬信號(hào),需要經(jīng)過(guò)A/D模塊進(jìn)行數(shù)模轉(zhuǎn)換成數(shù)字值后再進(jìn)行處理和使用。CCD模擬攝像頭采集動(dòng)態(tài)圖像效果比較好,采集到的圖像信息比較清晰且穩(wěn)定性好,對(duì)比度也相對(duì)較高。但需要12V的工作電壓,對(duì)整個(gè)系統(tǒng)運(yùn)行來(lái)說(shuō)過(guò)于耗電。
CMOS攝像頭又稱(chēng)為數(shù)字?jǐn)z像頭,其內(nèi)部集成了A/D模塊,直接輸出數(shù)字值可以將采集到的視頻信號(hào)直接轉(zhuǎn)換成數(shù)字信號(hào)。CMOS數(shù)字?jǐn)z像頭硬件電路相對(duì)簡(jiǎn)單,工作電壓低,體積小,功耗也小,但圖像穩(wěn)定性不好,在動(dòng)態(tài)圖像的顯示中不如CCD攝像頭清晰。而在本智能車(chē)設(shè)計(jì)中,由于CMOS攝像頭已經(jīng)能滿足設(shè)計(jì)的性能要求,在考慮效率和功耗的基礎(chǔ)上,選用CMOS攝像頭系列的OV7620。
1.3 主板電路
主板上裝有組成本系統(tǒng)的主要電路,包括如下部件:攝像頭接口、舵機(jī)接口、電機(jī)驅(qū)動(dòng)電路、編碼器接口、撥碼開(kāi)關(guān)接口、電源接口、單片機(jī)最小系統(tǒng)板插座等。主板電路圖如圖1所示:
圖1 主板電路圖
1.4 主板電路原理圖
智能車(chē)主板電路主要有五個(gè)模塊:控制處理芯片、舵機(jī)驅(qū)動(dòng)模塊、電機(jī)驅(qū)動(dòng)模塊、圖像采集模塊、速度采集模塊和電源模塊。主板電路原理圖如圖2所示:
其中,MC9S12XS128單片機(jī)是系統(tǒng)的核心部分,它負(fù)責(zé)處理道路圖像數(shù)據(jù)、行駛速度等反饋信息,通過(guò)控制算法得出的控制量來(lái)對(duì)舵機(jī)與驅(qū)動(dòng)電機(jī)進(jìn)行控制。舵機(jī)模塊和驅(qū)動(dòng)模塊分別用于實(shí)現(xiàn)車(chē)模的轉(zhuǎn)向和驅(qū)動(dòng);圖像采集模塊由攝像頭和電平轉(zhuǎn)換電路組成,其功能是獲取前方路徑的圖像數(shù)據(jù);速度采集模塊由光電編碼器提供,通過(guò)檢測(cè)脈沖累積數(shù)來(lái)求得車(chē)模的速度值;電源模塊主要用于為系統(tǒng)其他各個(gè)模塊提供所需要的電源。此外還有串口通信,撥碼開(kāi)關(guān)等小模塊,功能是輔助調(diào)試和方便參數(shù)微調(diào)。
2 軟件開(kāi)發(fā)
當(dāng)系統(tǒng)的硬件部分都設(shè)計(jì)定型后,建立在其上的軟件系統(tǒng)便直接決定了系統(tǒng)的后續(xù)使用性能和智能化程度。軟件系統(tǒng)的基本設(shè)計(jì)思路就是能采集穩(wěn)定圖像且分析處理去噪,然后通過(guò)核心芯片的控制系統(tǒng),做出判斷并發(fā)出指令,根據(jù)實(shí)際路況和周?chē)h(huán)境,有效地控制電機(jī)驅(qū)動(dòng)和舵機(jī)轉(zhuǎn)向。軟件開(kāi)發(fā)主要涉及圖像采集、路徑識(shí)別、舵機(jī)控制和電機(jī)控制等。
2.1 智能車(chē)主程序設(shè)計(jì)思路
智能車(chē)軟件系統(tǒng)的開(kāi)發(fā),其實(shí)就是能控制智能車(chē)在道路上穩(wěn)定、安全、快速地跑完全程,也就是在眾多設(shè)計(jì)思路中,求解一個(gè)最優(yōu)解的問(wèn)題,就是在最短的時(shí)間內(nèi)跑完整個(gè)包含復(fù)雜環(huán)境的賽道;采取最優(yōu)的控制算法完成對(duì)賽道的識(shí)別并作出合理的執(zhí)行措施;并能夠很好地去除噪點(diǎn)且保證智能車(chē)運(yùn)行穩(wěn)定。
2.2 控制算法
經(jīng)過(guò)反復(fù)調(diào)試和測(cè)算,在采集圖像完整、道路信息正確的情況下,我們采用經(jīng)典的PID算法對(duì)智能車(chē)進(jìn)行閉環(huán)控制。假定單位反饋e(t)代表理想輸入與實(shí)際輸出的誤差,這個(gè)誤差信號(hào)被送到控制器,控制器處理算出誤差信號(hào)的積分值和微分值,并將它們與原誤差信號(hào)進(jìn)行線性組合,得到輸出量U(t)進(jìn)而控制PWM模塊,通過(guò)PWM模塊對(duì)舵機(jī)和電機(jī)進(jìn)行有效控制。PID控制器由比例單元P、積分單元I和微分單元D組成,其反饋輸入e(t)與輸出U(t)的關(guān)系為:
U(t)=Kp[e(t)+1/Ti∫e(t)dt+Td*de(t)/dt]
式中積分的上下限分別是0和t,其中Kp為比例系數(shù);Ti為積分時(shí)間常數(shù);Td為微分時(shí)間常數(shù)。本軟件設(shè)計(jì)采用增量式PID算法,PID控制算法是工程實(shí)際中應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律,其規(guī)律和特性已眾所熟知,此處就不再贅述。
2.3 中心線的確定
灰度值是指黑白圖像中點(diǎn)的顏色深度,范圍值從0到255變化,白色為255,黑色為0。我們采用的數(shù)字?jǐn)z像頭OV7620反饋的圖像信息就是黑白圖像,根據(jù)實(shí)際環(huán)境的變化,即光線明暗會(huì)隨著時(shí)間和路況的不同而發(fā)生變化,我們采用動(dòng)態(tài)閾值的處理辦法,對(duì)道路黑白圖像進(jìn)行二值化處理并去噪,就會(huì)得到我們需要的圖像。處理后的圖像通過(guò)液晶屏顯示出來(lái),如圖3所示:
圖3 道路實(shí)況二值化
道路的二值化處理結(jié)果的反饋信息,就是攝像頭的掃描結(jié)果,實(shí)際上也就是由行和列組成的一系列的數(shù)值。智能車(chē)的行駛需要一條系統(tǒng)自動(dòng)識(shí)別處理得到的行車(chē)線,其實(shí)就是沿著道路的中性線行駛,根據(jù)道路圖像的二值化處理結(jié)果,需要計(jì)算出道路的中心線。我們采取隔行隔列處理圖像的辦法,實(shí)際處理了50行74列,假定遇到彎道等復(fù)雜路況時(shí),我們只處理30行。攝像頭采集的黑白圖像離車(chē)身最近的一行是第50行。我們?cè)O(shè)定智能車(chē)的起步線為第50行的第37列,即為道路的中間點(diǎn),以此為基準(zhǔn),當(dāng)攝像頭掃描第49行時(shí),以50行的中心點(diǎn)作為本行的基準(zhǔn)點(diǎn)向兩邊掃描,以此類(lèi)推;當(dāng)一幅圖像掃描結(jié)束,我們記錄這幅圖像最后一行的中心點(diǎn),作為下一幅圖像第50行的中心點(diǎn),然后再以此為中心點(diǎn)向兩側(cè)掃描。如此執(zhí)行中心線提取的任務(wù),會(huì)增加圖像信息的準(zhǔn)確性,以上一行的中心點(diǎn)作為本行處理掃描的基準(zhǔn)點(diǎn),由于兩行數(shù)據(jù)的實(shí)際距離不大,故兩行的中心點(diǎn)數(shù)值偏差不會(huì)太大,即使是急彎道的相鄰兩行的中心點(diǎn)數(shù)值相差也不會(huì)很大,如若數(shù)值差別較大,那么就可以認(rèn)定為是噪點(diǎn),直接設(shè)置此點(diǎn)數(shù)據(jù)無(wú)效。此外,這樣的處理方式還會(huì)大大節(jié)省單片機(jī)的運(yùn)算處理時(shí)間,提到處理效率。有了穩(wěn)定且可靠的中心線,智能車(chē)就可以沿著中心線行駛了,我們的設(shè)計(jì)目的也就達(dá)到了。
【參考文獻(xiàn)】
[1]卓晴,黃開(kāi)勝,邵貝貝.學(xué)做智能車(chē)[M].北京:北京航空航天大學(xué)出版社,2007.
[責(zé)任編輯:丁艷]
【摘 要】智能車(chē)的性能指標(biāo)主要取決于硬件電路和軟件程序,硬件設(shè)計(jì)除了機(jī)械結(jié)構(gòu),更重要的是主板電路的設(shè)計(jì),電路的走線和布局;軟件設(shè)計(jì)是智能車(chē)的司令部,是決定智能車(chē)性能優(yōu)良的核心和關(guān)鍵,而其中圖像信息的采集和處理以及相應(yīng)的控制算法顯得尤為重要。
【關(guān)鍵詞】智能車(chē);PID;圖像處理;道路識(shí)別
0 引言
隨著全球信息和科技革命的興起,智能化和信息化廣泛應(yīng)用于我們的生產(chǎn)生活當(dāng)中,而對(duì)智能汽車(chē)的需求和發(fā)展,亦受到眾多國(guó)家的重視和支持。近年來(lái),智能車(chē)己經(jīng)成為世界車(chē)輛工程領(lǐng)域研究的熱點(diǎn)和汽車(chē)工業(yè)增長(zhǎng)的新動(dòng)力,很多發(fā)達(dá)國(guó)家都將其納入到各自重點(diǎn)發(fā)展的智能交通系統(tǒng)當(dāng)中。我國(guó)的智能汽車(chē)產(chǎn)業(yè)目前處于起步階段,較發(fā)達(dá)國(guó)家的發(fā)展水平還很落后,因此,對(duì)智能車(chē)的研究有助于我們智能汽車(chē)工業(yè)的發(fā)展和進(jìn)步。
本智能車(chē)硬件平臺(tái)采用MC9S12XS128微處理器作為系統(tǒng)處理控制器,主要控制轉(zhuǎn)向舵機(jī)和驅(qū)動(dòng)電機(jī),調(diào)試平臺(tái)采用Code Warrior軟件。智能車(chē)的制作主要涉及單片機(jī)控制電路的設(shè)計(jì)、攝像頭圖像信號(hào)的采集及其處理、控制算法和控制策略?xún)?yōu)化等方面。
1 智能車(chē)系統(tǒng)設(shè)計(jì)
本智能車(chē)系統(tǒng)以 MC9S12XS128 單片機(jī)為核心控制單元,采用數(shù)字?jǐn)z像頭作為識(shí)別道路的傳感器,通過(guò)光電編碼器檢測(cè)模型車(chē)的速度,使用增量式 PID 閉環(huán)控制算法,通過(guò) PWM 波調(diào)節(jié)驅(qū)動(dòng)電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向舵機(jī)的角度。我們力求系統(tǒng)的簡(jiǎn)單高效,在滿足智能車(chē)性能的要求下,使硬件結(jié)構(gòu)最簡(jiǎn)單。
1.1 MC9S12XS128單片機(jī)簡(jiǎn)介
MC9S12XS128是16位單片機(jī),由16位中央處理單元、128KB程序Flash、8KB RAM、8KB數(shù)據(jù)Flash組成片內(nèi)存儲(chǔ)器。
1.2 攝像頭的選擇
攝像頭根據(jù)所傳達(dá)的信號(hào),可分為CCD攝像頭和CMOS攝像頭。CCD攝像頭又稱(chēng)為模擬攝像頭,其采集到的視頻信號(hào)是模擬信號(hào),需要經(jīng)過(guò)A/D模塊進(jìn)行數(shù)模轉(zhuǎn)換成數(shù)字值后再進(jìn)行處理和使用。CCD模擬攝像頭采集動(dòng)態(tài)圖像效果比較好,采集到的圖像信息比較清晰且穩(wěn)定性好,對(duì)比度也相對(duì)較高。但需要12V的工作電壓,對(duì)整個(gè)系統(tǒng)運(yùn)行來(lái)說(shuō)過(guò)于耗電。
CMOS攝像頭又稱(chēng)為數(shù)字?jǐn)z像頭,其內(nèi)部集成了A/D模塊,直接輸出數(shù)字值可以將采集到的視頻信號(hào)直接轉(zhuǎn)換成數(shù)字信號(hào)。CMOS數(shù)字?jǐn)z像頭硬件電路相對(duì)簡(jiǎn)單,工作電壓低,體積小,功耗也小,但圖像穩(wěn)定性不好,在動(dòng)態(tài)圖像的顯示中不如CCD攝像頭清晰。而在本智能車(chē)設(shè)計(jì)中,由于CMOS攝像頭已經(jīng)能滿足設(shè)計(jì)的性能要求,在考慮效率和功耗的基礎(chǔ)上,選用CMOS攝像頭系列的OV7620。
1.3 主板電路
主板上裝有組成本系統(tǒng)的主要電路,包括如下部件:攝像頭接口、舵機(jī)接口、電機(jī)驅(qū)動(dòng)電路、編碼器接口、撥碼開(kāi)關(guān)接口、電源接口、單片機(jī)最小系統(tǒng)板插座等。主板電路圖如圖1所示:
圖1 主板電路圖
1.4 主板電路原理圖
智能車(chē)主板電路主要有五個(gè)模塊:控制處理芯片、舵機(jī)驅(qū)動(dòng)模塊、電機(jī)驅(qū)動(dòng)模塊、圖像采集模塊、速度采集模塊和電源模塊。主板電路原理圖如圖2所示:
其中,MC9S12XS128單片機(jī)是系統(tǒng)的核心部分,它負(fù)責(zé)處理道路圖像數(shù)據(jù)、行駛速度等反饋信息,通過(guò)控制算法得出的控制量來(lái)對(duì)舵機(jī)與驅(qū)動(dòng)電機(jī)進(jìn)行控制。舵機(jī)模塊和驅(qū)動(dòng)模塊分別用于實(shí)現(xiàn)車(chē)模的轉(zhuǎn)向和驅(qū)動(dòng);圖像采集模塊由攝像頭和電平轉(zhuǎn)換電路組成,其功能是獲取前方路徑的圖像數(shù)據(jù);速度采集模塊由光電編碼器提供,通過(guò)檢測(cè)脈沖累積數(shù)來(lái)求得車(chē)模的速度值;電源模塊主要用于為系統(tǒng)其他各個(gè)模塊提供所需要的電源。此外還有串口通信,撥碼開(kāi)關(guān)等小模塊,功能是輔助調(diào)試和方便參數(shù)微調(diào)。
2 軟件開(kāi)發(fā)
當(dāng)系統(tǒng)的硬件部分都設(shè)計(jì)定型后,建立在其上的軟件系統(tǒng)便直接決定了系統(tǒng)的后續(xù)使用性能和智能化程度。軟件系統(tǒng)的基本設(shè)計(jì)思路就是能采集穩(wěn)定圖像且分析處理去噪,然后通過(guò)核心芯片的控制系統(tǒng),做出判斷并發(fā)出指令,根據(jù)實(shí)際路況和周?chē)h(huán)境,有效地控制電機(jī)驅(qū)動(dòng)和舵機(jī)轉(zhuǎn)向。軟件開(kāi)發(fā)主要涉及圖像采集、路徑識(shí)別、舵機(jī)控制和電機(jī)控制等。
2.1 智能車(chē)主程序設(shè)計(jì)思路
智能車(chē)軟件系統(tǒng)的開(kāi)發(fā),其實(shí)就是能控制智能車(chē)在道路上穩(wěn)定、安全、快速地跑完全程,也就是在眾多設(shè)計(jì)思路中,求解一個(gè)最優(yōu)解的問(wèn)題,就是在最短的時(shí)間內(nèi)跑完整個(gè)包含復(fù)雜環(huán)境的賽道;采取最優(yōu)的控制算法完成對(duì)賽道的識(shí)別并作出合理的執(zhí)行措施;并能夠很好地去除噪點(diǎn)且保證智能車(chē)運(yùn)行穩(wěn)定。
2.2 控制算法
經(jīng)過(guò)反復(fù)調(diào)試和測(cè)算,在采集圖像完整、道路信息正確的情況下,我們采用經(jīng)典的PID算法對(duì)智能車(chē)進(jìn)行閉環(huán)控制。假定單位反饋e(t)代表理想輸入與實(shí)際輸出的誤差,這個(gè)誤差信號(hào)被送到控制器,控制器處理算出誤差信號(hào)的積分值和微分值,并將它們與原誤差信號(hào)進(jìn)行線性組合,得到輸出量U(t)進(jìn)而控制PWM模塊,通過(guò)PWM模塊對(duì)舵機(jī)和電機(jī)進(jìn)行有效控制。PID控制器由比例單元P、積分單元I和微分單元D組成,其反饋輸入e(t)與輸出U(t)的關(guān)系為:
U(t)=Kp[e(t)+1/Ti∫e(t)dt+Td*de(t)/dt]
式中積分的上下限分別是0和t,其中Kp為比例系數(shù);Ti為積分時(shí)間常數(shù);Td為微分時(shí)間常數(shù)。本軟件設(shè)計(jì)采用增量式PID算法,PID控制算法是工程實(shí)際中應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律,其規(guī)律和特性已眾所熟知,此處就不再贅述。
2.3 中心線的確定
灰度值是指黑白圖像中點(diǎn)的顏色深度,范圍值從0到255變化,白色為255,黑色為0。我們采用的數(shù)字?jǐn)z像頭OV7620反饋的圖像信息就是黑白圖像,根據(jù)實(shí)際環(huán)境的變化,即光線明暗會(huì)隨著時(shí)間和路況的不同而發(fā)生變化,我們采用動(dòng)態(tài)閾值的處理辦法,對(duì)道路黑白圖像進(jìn)行二值化處理并去噪,就會(huì)得到我們需要的圖像。處理后的圖像通過(guò)液晶屏顯示出來(lái),如圖3所示:
圖3 道路實(shí)況二值化
道路的二值化處理結(jié)果的反饋信息,就是攝像頭的掃描結(jié)果,實(shí)際上也就是由行和列組成的一系列的數(shù)值。智能車(chē)的行駛需要一條系統(tǒng)自動(dòng)識(shí)別處理得到的行車(chē)線,其實(shí)就是沿著道路的中性線行駛,根據(jù)道路圖像的二值化處理結(jié)果,需要計(jì)算出道路的中心線。我們采取隔行隔列處理圖像的辦法,實(shí)際處理了50行74列,假定遇到彎道等復(fù)雜路況時(shí),我們只處理30行。攝像頭采集的黑白圖像離車(chē)身最近的一行是第50行。我們?cè)O(shè)定智能車(chē)的起步線為第50行的第37列,即為道路的中間點(diǎn),以此為基準(zhǔn),當(dāng)攝像頭掃描第49行時(shí),以50行的中心點(diǎn)作為本行的基準(zhǔn)點(diǎn)向兩邊掃描,以此類(lèi)推;當(dāng)一幅圖像掃描結(jié)束,我們記錄這幅圖像最后一行的中心點(diǎn),作為下一幅圖像第50行的中心點(diǎn),然后再以此為中心點(diǎn)向兩側(cè)掃描。如此執(zhí)行中心線提取的任務(wù),會(huì)增加圖像信息的準(zhǔn)確性,以上一行的中心點(diǎn)作為本行處理掃描的基準(zhǔn)點(diǎn),由于兩行數(shù)據(jù)的實(shí)際距離不大,故兩行的中心點(diǎn)數(shù)值偏差不會(huì)太大,即使是急彎道的相鄰兩行的中心點(diǎn)數(shù)值相差也不會(huì)很大,如若數(shù)值差別較大,那么就可以認(rèn)定為是噪點(diǎn),直接設(shè)置此點(diǎn)數(shù)據(jù)無(wú)效。此外,這樣的處理方式還會(huì)大大節(jié)省單片機(jī)的運(yùn)算處理時(shí)間,提到處理效率。有了穩(wěn)定且可靠的中心線,智能車(chē)就可以沿著中心線行駛了,我們的設(shè)計(jì)目的也就達(dá)到了。
【參考文獻(xiàn)】
[1]卓晴,黃開(kāi)勝,邵貝貝.學(xué)做智能車(chē)[M].北京:北京航空航天大學(xué)出版社,2007.
[責(zé)任編輯:丁艷]
【摘 要】智能車(chē)的性能指標(biāo)主要取決于硬件電路和軟件程序,硬件設(shè)計(jì)除了機(jī)械結(jié)構(gòu),更重要的是主板電路的設(shè)計(jì),電路的走線和布局;軟件設(shè)計(jì)是智能車(chē)的司令部,是決定智能車(chē)性能優(yōu)良的核心和關(guān)鍵,而其中圖像信息的采集和處理以及相應(yīng)的控制算法顯得尤為重要。
【關(guān)鍵詞】智能車(chē);PID;圖像處理;道路識(shí)別
0 引言
隨著全球信息和科技革命的興起,智能化和信息化廣泛應(yīng)用于我們的生產(chǎn)生活當(dāng)中,而對(duì)智能汽車(chē)的需求和發(fā)展,亦受到眾多國(guó)家的重視和支持。近年來(lái),智能車(chē)己經(jīng)成為世界車(chē)輛工程領(lǐng)域研究的熱點(diǎn)和汽車(chē)工業(yè)增長(zhǎng)的新動(dòng)力,很多發(fā)達(dá)國(guó)家都將其納入到各自重點(diǎn)發(fā)展的智能交通系統(tǒng)當(dāng)中。我國(guó)的智能汽車(chē)產(chǎn)業(yè)目前處于起步階段,較發(fā)達(dá)國(guó)家的發(fā)展水平還很落后,因此,對(duì)智能車(chē)的研究有助于我們智能汽車(chē)工業(yè)的發(fā)展和進(jìn)步。
本智能車(chē)硬件平臺(tái)采用MC9S12XS128微處理器作為系統(tǒng)處理控制器,主要控制轉(zhuǎn)向舵機(jī)和驅(qū)動(dòng)電機(jī),調(diào)試平臺(tái)采用Code Warrior軟件。智能車(chē)的制作主要涉及單片機(jī)控制電路的設(shè)計(jì)、攝像頭圖像信號(hào)的采集及其處理、控制算法和控制策略?xún)?yōu)化等方面。
1 智能車(chē)系統(tǒng)設(shè)計(jì)
本智能車(chē)系統(tǒng)以 MC9S12XS128 單片機(jī)為核心控制單元,采用數(shù)字?jǐn)z像頭作為識(shí)別道路的傳感器,通過(guò)光電編碼器檢測(cè)模型車(chē)的速度,使用增量式 PID 閉環(huán)控制算法,通過(guò) PWM 波調(diào)節(jié)驅(qū)動(dòng)電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向舵機(jī)的角度。我們力求系統(tǒng)的簡(jiǎn)單高效,在滿足智能車(chē)性能的要求下,使硬件結(jié)構(gòu)最簡(jiǎn)單。
1.1 MC9S12XS128單片機(jī)簡(jiǎn)介
MC9S12XS128是16位單片機(jī),由16位中央處理單元、128KB程序Flash、8KB RAM、8KB數(shù)據(jù)Flash組成片內(nèi)存儲(chǔ)器。
1.2 攝像頭的選擇
攝像頭根據(jù)所傳達(dá)的信號(hào),可分為CCD攝像頭和CMOS攝像頭。CCD攝像頭又稱(chēng)為模擬攝像頭,其采集到的視頻信號(hào)是模擬信號(hào),需要經(jīng)過(guò)A/D模塊進(jìn)行數(shù)模轉(zhuǎn)換成數(shù)字值后再進(jìn)行處理和使用。CCD模擬攝像頭采集動(dòng)態(tài)圖像效果比較好,采集到的圖像信息比較清晰且穩(wěn)定性好,對(duì)比度也相對(duì)較高。但需要12V的工作電壓,對(duì)整個(gè)系統(tǒng)運(yùn)行來(lái)說(shuō)過(guò)于耗電。
CMOS攝像頭又稱(chēng)為數(shù)字?jǐn)z像頭,其內(nèi)部集成了A/D模塊,直接輸出數(shù)字值可以將采集到的視頻信號(hào)直接轉(zhuǎn)換成數(shù)字信號(hào)。CMOS數(shù)字?jǐn)z像頭硬件電路相對(duì)簡(jiǎn)單,工作電壓低,體積小,功耗也小,但圖像穩(wěn)定性不好,在動(dòng)態(tài)圖像的顯示中不如CCD攝像頭清晰。而在本智能車(chē)設(shè)計(jì)中,由于CMOS攝像頭已經(jīng)能滿足設(shè)計(jì)的性能要求,在考慮效率和功耗的基礎(chǔ)上,選用CMOS攝像頭系列的OV7620。
1.3 主板電路
主板上裝有組成本系統(tǒng)的主要電路,包括如下部件:攝像頭接口、舵機(jī)接口、電機(jī)驅(qū)動(dòng)電路、編碼器接口、撥碼開(kāi)關(guān)接口、電源接口、單片機(jī)最小系統(tǒng)板插座等。主板電路圖如圖1所示:
圖1 主板電路圖
1.4 主板電路原理圖
智能車(chē)主板電路主要有五個(gè)模塊:控制處理芯片、舵機(jī)驅(qū)動(dòng)模塊、電機(jī)驅(qū)動(dòng)模塊、圖像采集模塊、速度采集模塊和電源模塊。主板電路原理圖如圖2所示:
其中,MC9S12XS128單片機(jī)是系統(tǒng)的核心部分,它負(fù)責(zé)處理道路圖像數(shù)據(jù)、行駛速度等反饋信息,通過(guò)控制算法得出的控制量來(lái)對(duì)舵機(jī)與驅(qū)動(dòng)電機(jī)進(jìn)行控制。舵機(jī)模塊和驅(qū)動(dòng)模塊分別用于實(shí)現(xiàn)車(chē)模的轉(zhuǎn)向和驅(qū)動(dòng);圖像采集模塊由攝像頭和電平轉(zhuǎn)換電路組成,其功能是獲取前方路徑的圖像數(shù)據(jù);速度采集模塊由光電編碼器提供,通過(guò)檢測(cè)脈沖累積數(shù)來(lái)求得車(chē)模的速度值;電源模塊主要用于為系統(tǒng)其他各個(gè)模塊提供所需要的電源。此外還有串口通信,撥碼開(kāi)關(guān)等小模塊,功能是輔助調(diào)試和方便參數(shù)微調(diào)。
2 軟件開(kāi)發(fā)
當(dāng)系統(tǒng)的硬件部分都設(shè)計(jì)定型后,建立在其上的軟件系統(tǒng)便直接決定了系統(tǒng)的后續(xù)使用性能和智能化程度。軟件系統(tǒng)的基本設(shè)計(jì)思路就是能采集穩(wěn)定圖像且分析處理去噪,然后通過(guò)核心芯片的控制系統(tǒng),做出判斷并發(fā)出指令,根據(jù)實(shí)際路況和周?chē)h(huán)境,有效地控制電機(jī)驅(qū)動(dòng)和舵機(jī)轉(zhuǎn)向。軟件開(kāi)發(fā)主要涉及圖像采集、路徑識(shí)別、舵機(jī)控制和電機(jī)控制等。
2.1 智能車(chē)主程序設(shè)計(jì)思路
智能車(chē)軟件系統(tǒng)的開(kāi)發(fā),其實(shí)就是能控制智能車(chē)在道路上穩(wěn)定、安全、快速地跑完全程,也就是在眾多設(shè)計(jì)思路中,求解一個(gè)最優(yōu)解的問(wèn)題,就是在最短的時(shí)間內(nèi)跑完整個(gè)包含復(fù)雜環(huán)境的賽道;采取最優(yōu)的控制算法完成對(duì)賽道的識(shí)別并作出合理的執(zhí)行措施;并能夠很好地去除噪點(diǎn)且保證智能車(chē)運(yùn)行穩(wěn)定。
2.2 控制算法
經(jīng)過(guò)反復(fù)調(diào)試和測(cè)算,在采集圖像完整、道路信息正確的情況下,我們采用經(jīng)典的PID算法對(duì)智能車(chē)進(jìn)行閉環(huán)控制。假定單位反饋e(t)代表理想輸入與實(shí)際輸出的誤差,這個(gè)誤差信號(hào)被送到控制器,控制器處理算出誤差信號(hào)的積分值和微分值,并將它們與原誤差信號(hào)進(jìn)行線性組合,得到輸出量U(t)進(jìn)而控制PWM模塊,通過(guò)PWM模塊對(duì)舵機(jī)和電機(jī)進(jìn)行有效控制。PID控制器由比例單元P、積分單元I和微分單元D組成,其反饋輸入e(t)與輸出U(t)的關(guān)系為:
U(t)=Kp[e(t)+1/Ti∫e(t)dt+Td*de(t)/dt]
式中積分的上下限分別是0和t,其中Kp為比例系數(shù);Ti為積分時(shí)間常數(shù);Td為微分時(shí)間常數(shù)。本軟件設(shè)計(jì)采用增量式PID算法,PID控制算法是工程實(shí)際中應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律,其規(guī)律和特性已眾所熟知,此處就不再贅述。
2.3 中心線的確定
灰度值是指黑白圖像中點(diǎn)的顏色深度,范圍值從0到255變化,白色為255,黑色為0。我們采用的數(shù)字?jǐn)z像頭OV7620反饋的圖像信息就是黑白圖像,根據(jù)實(shí)際環(huán)境的變化,即光線明暗會(huì)隨著時(shí)間和路況的不同而發(fā)生變化,我們采用動(dòng)態(tài)閾值的處理辦法,對(duì)道路黑白圖像進(jìn)行二值化處理并去噪,就會(huì)得到我們需要的圖像。處理后的圖像通過(guò)液晶屏顯示出來(lái),如圖3所示:
圖3 道路實(shí)況二值化
道路的二值化處理結(jié)果的反饋信息,就是攝像頭的掃描結(jié)果,實(shí)際上也就是由行和列組成的一系列的數(shù)值。智能車(chē)的行駛需要一條系統(tǒng)自動(dòng)識(shí)別處理得到的行車(chē)線,其實(shí)就是沿著道路的中性線行駛,根據(jù)道路圖像的二值化處理結(jié)果,需要計(jì)算出道路的中心線。我們采取隔行隔列處理圖像的辦法,實(shí)際處理了50行74列,假定遇到彎道等復(fù)雜路況時(shí),我們只處理30行。攝像頭采集的黑白圖像離車(chē)身最近的一行是第50行。我們?cè)O(shè)定智能車(chē)的起步線為第50行的第37列,即為道路的中間點(diǎn),以此為基準(zhǔn),當(dāng)攝像頭掃描第49行時(shí),以50行的中心點(diǎn)作為本行的基準(zhǔn)點(diǎn)向兩邊掃描,以此類(lèi)推;當(dāng)一幅圖像掃描結(jié)束,我們記錄這幅圖像最后一行的中心點(diǎn),作為下一幅圖像第50行的中心點(diǎn),然后再以此為中心點(diǎn)向兩側(cè)掃描。如此執(zhí)行中心線提取的任務(wù),會(huì)增加圖像信息的準(zhǔn)確性,以上一行的中心點(diǎn)作為本行處理掃描的基準(zhǔn)點(diǎn),由于兩行數(shù)據(jù)的實(shí)際距離不大,故兩行的中心點(diǎn)數(shù)值偏差不會(huì)太大,即使是急彎道的相鄰兩行的中心點(diǎn)數(shù)值相差也不會(huì)很大,如若數(shù)值差別較大,那么就可以認(rèn)定為是噪點(diǎn),直接設(shè)置此點(diǎn)數(shù)據(jù)無(wú)效。此外,這樣的處理方式還會(huì)大大節(jié)省單片機(jī)的運(yùn)算處理時(shí)間,提到處理效率。有了穩(wěn)定且可靠的中心線,智能車(chē)就可以沿著中心線行駛了,我們的設(shè)計(jì)目的也就達(dá)到了。
【參考文獻(xiàn)】
[1]卓晴,黃開(kāi)勝,邵貝貝.學(xué)做智能車(chē)[M].北京:北京航空航天大學(xué)出版社,2007.
[責(zé)任編輯:丁艷]