周 瑋,高琳琳,姚建紅,袁青松
(常熟理工學(xué)院 汽車工程學(xué)院,江蘇 常熟 215500)
現(xiàn)有情況下,智能小車以追求高速度為目標(biāo),未涉及防撞系統(tǒng)設(shè)計(jì). 智能小車在尋跡過程中,受場(chǎng)地因素影響較大,在彎道和十字路口處易沖出賽道,故本文對(duì)彎道識(shí)別及進(jìn)出口十字路口算法進(jìn)行了優(yōu)化.同時(shí)針對(duì)智能小車在沖出賽道后速度較高,在沒有圍欄的情況下撞向堅(jiān)硬的墻體或者障礙物,容易對(duì)傳感器及車身造成損害的缺點(diǎn),本文設(shè)計(jì)了防撞系統(tǒng),該防撞系統(tǒng)可以在小車撞向障礙物之前及時(shí)制動(dòng),保證了小車行駛的安全. 本文設(shè)計(jì)思路可以延伸運(yùn)用至家用汽車上,如在大霧天氣行駛中,難以判斷前方運(yùn)行狀況時(shí),該系統(tǒng)通過自行檢測(cè),可有效避免與前方障礙物相撞,保證乘客的乘車安全[1].
圖1 整體系統(tǒng)控制框架圖
整體系統(tǒng)由防撞系統(tǒng)、圖像采集與處理、速度轉(zhuǎn)向系統(tǒng)組成. 圖像采集與處理、速度轉(zhuǎn)向系統(tǒng)控制智能小車完成尋跡;防撞系統(tǒng)起保護(hù)與避障作用,整體系統(tǒng)框架如圖1所示.
圖像采集與處理包括采集賽道信息、賽道處理、提取中線3部分. 采集賽道信息是指利用線性CCD采集賽道上的光線,然后將其轉(zhuǎn)化為128個(gè)灰度值,存放在一維數(shù)組中. 而智能小車尋跡賽道是依據(jù)不同顏色對(duì)光線的反射強(qiáng)度不同設(shè)計(jì)的. 在對(duì)光的反射中,白色最強(qiáng),藍(lán)色弱于白色,黑色最弱,故所設(shè)計(jì)的尋跡賽道是白色的. 賽道鋪設(shè)在藍(lán)色地墊上,賽道兩邊用寬度約為25 mm的黑色膠帶包住,部分賽道圖如圖2所示. 由于光線的反射強(qiáng)度不同,所以線性CCD采集到的灰度值大小會(huì)不同. 其中白色處大于藍(lán)色處,藍(lán)色處大于黑色處,所采集到的灰度值圖像如圖3所示. 其中橫坐標(biāo)代表像素點(diǎn)的位置,縱坐標(biāo)代表灰度值的大小. 根據(jù)灰度值跳變點(diǎn)可以較容易地提取賽道邊界,然后根據(jù)不同的賽道判斷是否需要執(zhí)行補(bǔ)線決策,最終找到賽道中線位置.
速度轉(zhuǎn)向系統(tǒng)包括速度控制和舵機(jī)控制兩部分. 速度控制使智能小車在運(yùn)行過程中始終處于目標(biāo)速度,速度控制使智能小車達(dá)到直道加速、彎道減速的目的. 舵機(jī)控制針對(duì)的是智能小車的轉(zhuǎn)向問題,智能小車在直道中和十字路段處需要使舵機(jī)處于中間位置,而在彎道處,舵機(jī)需要向左或者向右打一定的角度,以保證小車順利通過彎道.
防撞系統(tǒng)選用超聲波傳感器作為主要傳感器. 當(dāng)智能小車沖出賽道時(shí),啟動(dòng)超聲波傳感器,檢測(cè)智能小車與前方物體的距離,若該距離小于設(shè)定的距離,則緊急制動(dòng)小車,從而達(dá)到防撞效果.
圖2 部分賽道圖
圖3 賽道灰度值圖
首先將CCD采集到的數(shù)據(jù)放到一維數(shù)組中. 由于賽道的特殊性,CCD反饋的這組數(shù)據(jù)大小不同,且在黑色膠帶處的數(shù)據(jù)會(huì)出現(xiàn)跳變點(diǎn),所以將對(duì)賽道的分析轉(zhuǎn)換為對(duì)數(shù)組數(shù)據(jù)的分析. 在數(shù)據(jù)處理中,采用從中間向兩側(cè)的數(shù)據(jù)處理方法,尋找跳變點(diǎn)的位置,再根據(jù)跳變點(diǎn)所處的位置,判斷智能小車所處路段,智能小車在不同路段需要執(zhí)行不同的處理決策[2].
在整個(gè)賽道中,除了直線賽道和障礙賽道外,其余各處賽道均會(huì)出現(xiàn)丟線問題. 如果在丟線的情況下不采取補(bǔ)線措施,智能小車無法提取正確的中線,將無法完成尋跡. 故要先進(jìn)行賽道識(shí)別,判斷當(dāng)前賽道種類,判斷是否需要采取補(bǔ)線措施.
智能小車在直道上運(yùn)行時(shí)要進(jìn)行加速處理,故要對(duì)直道進(jìn)行預(yù)先判斷. 由于賽道的特殊性,在黑色膠帶處的灰度值最小,故會(huì)在黑線處產(chǎn)生跳變點(diǎn),如圖4所示,將這兩個(gè)點(diǎn)的坐標(biāo)記錄下來. 直線賽道呈對(duì)稱分布,故跳變點(diǎn)1的位置坐標(biāo)與跳變點(diǎn)2的位置坐標(biāo)也會(huì)處于一個(gè)對(duì)稱區(qū)間內(nèi). 所以當(dāng)采集到兩跳變點(diǎn)的位置處于對(duì)稱區(qū)間內(nèi)時(shí),便執(zhí)行直道加速?zèng)Q策.
小車在進(jìn)入彎道時(shí)要執(zhí)行兩個(gè)決策:第一,入彎減速;第二,入彎轉(zhuǎn)向. 先用攝像頭拍攝彎道處的一幅圖(見圖5). 從圖像上不難發(fā)現(xiàn),智能小車在進(jìn)入彎道時(shí),其一側(cè)會(huì)出現(xiàn)丟線的現(xiàn)象. 后改用線性CCD進(jìn)行測(cè)試,如圖6彎道波形圖所示,在彎道處的灰度值會(huì)出現(xiàn)一側(cè)沒有跳變點(diǎn)的現(xiàn)象,這樣就無法提取準(zhǔn)確的中線,從而無法控制智能小車的轉(zhuǎn)向. 所以,我們要在彎道處做出補(bǔ)線決策. 另外,依據(jù)上述特性可知,彎道處會(huì)出現(xiàn)一側(cè)丟線的現(xiàn)象. 根據(jù)這一特征,我們可以設(shè)置彎道標(biāo)志位,當(dāng)進(jìn)入彎道時(shí)進(jìn)行降速處理,并且開始對(duì)彎道做出補(bǔ)線決策.
圖4 直道波形圖
圖5 彎道丟線二值化圖
圖6 彎道波形圖
十字路口的特點(diǎn)是左右都會(huì)丟線. 先用攝像頭在十字路口處拍攝一幅圖像,如圖7所示. 不難發(fā)現(xiàn),十字路口的左右處均會(huì)出現(xiàn)丟線問題. 后改用線性CCD在十字路口處采集波形,如圖8所示. 從上位機(jī)上不難發(fā)現(xiàn)十字路處的波形均無跳變點(diǎn),這樣就無法提取中線,如果不加以處理,智能小車就會(huì)在十字路口處出現(xiàn)“搖擺”現(xiàn)象. 故根據(jù)十字路口無跳變點(diǎn)這一特點(diǎn),可以較容易地找出十字路口.
直道上提取中線的方法如下:采用從中間向兩側(cè)尋找邊界的方法,因?yàn)楹谏吔缗c白色賽道的灰度值差距較大,所以在某一處灰度值肯定會(huì)出現(xiàn)跳變. 如果該點(diǎn)右側(cè)的點(diǎn)大于左側(cè)的幾個(gè)像素點(diǎn)(從中間向左尋找)并大于某一特定的差值,則認(rèn)定該點(diǎn)為邊界點(diǎn). 最終在直線賽道上找到兩個(gè)坐標(biāo)點(diǎn),記錄這兩個(gè)點(diǎn)的位置,分別為“LeftMAX”,“RingtMIN”. 這兩個(gè)點(diǎn)便為兩側(cè)黑線的位置,最終將這兩個(gè)位置相加除2,得到的就是中線[3].
彎道處提取中線的方法如下:先由中間兩側(cè)尋找黑線,由于彎道處一定有一側(cè)丟線,一定有一側(cè)能找到黑線. 如果是采集到左邊丟線,那么判定智能小車即將進(jìn)行右轉(zhuǎn)彎,需要左側(cè)補(bǔ)線. 此時(shí)用64(賽道的中間位置)減去賽道寬度,得到左側(cè)位置. 如果采集到右邊丟線,需要右側(cè)補(bǔ)線,那么判定智能小車即將進(jìn)行左轉(zhuǎn)彎,此時(shí)用64(賽道的中間位置)加上賽道寬度,得到右側(cè)位置. 最終記錄下兩個(gè)點(diǎn)的位置,分別為“LeftMAX”,“RingtMIN”. 這兩個(gè)點(diǎn)便為兩側(cè)黑線的位置,最終將這兩個(gè)位置相加除2,得到的就是中線.
十字路口處提取中線的方法如下:由于十字路口處均與一小段直線賽道相連,所以當(dāng)智能小車在到達(dá)十字路口前和經(jīng)過十字路口時(shí),均處于直線行駛的狀態(tài),故智能小車判斷出十字路段時(shí),直接將中線值定義為賽道的中間值,即64. 而舵機(jī)轉(zhuǎn)角大小與舵機(jī)轉(zhuǎn)向需根據(jù)實(shí)際中線與設(shè)定中線(設(shè)定中線值為64)之間差值來定,故當(dāng)智能小車處于十字路口時(shí),實(shí)際中線與設(shè)定中線差值為0,舵機(jī)便處于中間位置,此時(shí)不會(huì)出現(xiàn)“搖擺”現(xiàn)象.
圖7 十字路口二值化圖
圖8 十字路口波形圖
圖像采集與處理的目的是控制小車行駛速度與舵機(jī)轉(zhuǎn)向的前提. 由于賽道是模擬正常的道路系統(tǒng),會(huì)出現(xiàn)彎道、十字路口等路況,所以智能小車必須要進(jìn)行轉(zhuǎn)向控制. 整個(gè)智能小車的設(shè)計(jì)以追求高速度為主要目標(biāo),在行駛過程中要做到直道加速,提高其動(dòng)力性,彎道減速,保證順利過彎.
舵機(jī)利用PWM波進(jìn)行控制,其中舵機(jī)轉(zhuǎn)角與周期、PWM波關(guān)系如圖9所示. 在智能小車實(shí)際運(yùn)行中,舵機(jī)轉(zhuǎn)角大小與舵機(jī)轉(zhuǎn)向所依據(jù)的參數(shù)是實(shí)際中線與設(shè)定中線(設(shè)定中線值為64)之間的差值. 利用該差值調(diào)整PWM波,從而改變舵機(jī)的轉(zhuǎn)向與轉(zhuǎn)角[4].
圖9 舵機(jī)輸出轉(zhuǎn)角與輸入信號(hào)脈沖寬度的關(guān)系
智能小車速度控制有開環(huán)控制和閉環(huán)控制兩種方式. 但開環(huán)控制無數(shù)據(jù)反饋,不能確定智能小車是否達(dá)到目標(biāo)速度,故本文選用閉環(huán)控制,同時(shí)采用PID精確控制車速. 由于車模始終處于運(yùn)動(dòng)過程中,車速不像開環(huán)那樣處于穩(wěn)定狀態(tài),所以靜態(tài)誤差基本沒有影響,故選用PD控制. 控制公式如式1所示,控制原理圖如圖10所示.
防撞系統(tǒng)需要先判斷智能小車是否沖出賽道,具體判斷方法如下:當(dāng)智能小車沖出賽道時(shí),很難采集到黑線. 由于智能小車在十字路口處也難以采集到黑線,但時(shí)間較短,故當(dāng)智能小車連續(xù)1.5 s以上未采集到數(shù)據(jù)時(shí),則判斷為沖出賽道,此時(shí)啟動(dòng)超聲波傳感器.
超聲波傳感器在啟動(dòng)后,會(huì)向單片機(jī)實(shí)時(shí)傳送采集到的距離,單片機(jī)根據(jù)所返回的距離做出如下決策:如圖11所示,單片機(jī)內(nèi)部設(shè)置兩個(gè)固定閾值Stop1、Stop2. 當(dāng)反饋的距離大于Stop1時(shí),智能小車?yán)^續(xù)前進(jìn),不執(zhí)行任何操作. 當(dāng)反饋的距離大于Stop2且小于或等于Stop1時(shí),單片機(jī)輸出一個(gè)不斷減小的電機(jī)PWM值,致使智能小車開始大幅度降速. 待距離小于或等于Stop2時(shí),單片機(jī)輸出一個(gè)為零的電機(jī)PWM值,使得智能小車的車速為0,從而防止撞擊障礙物[5].
圖10 PID控制原理圖
圖11 防撞系統(tǒng)圖
按照上述要求,完成整個(gè)系統(tǒng)的搭建. 將搭建好的智能小車(圖12)放在具有障礙物的賽道上,檢測(cè)其防撞性能,要求智能小車檢測(cè)到障礙物時(shí)立即停車,該效果可以在OLED上顯示. 在正常行駛時(shí),顯示界面如圖13所示;遇到障礙物啟動(dòng)避障系統(tǒng)如圖14所示.
本文所述尋跡系統(tǒng)先用線性CCD采集賽道處的灰度值,然后處理賽道,對(duì)丟線處補(bǔ)線以及十字路口處做相關(guān)處理決策,最終求取中線. 利用所求中線,計(jì)算與理論位置的偏差,用該偏差控制舵機(jī)的轉(zhuǎn)向,同時(shí)根據(jù)賽道類型控制電機(jī)轉(zhuǎn)速,實(shí)現(xiàn)彎道減速、直道加速的目的. 防撞系統(tǒng)需要使智能小車在撞上障礙物之前停下來,從而保障智能小車的安全. 按照上述設(shè)計(jì)出實(shí)物,經(jīng)實(shí)驗(yàn)發(fā)現(xiàn)優(yōu)化后的尋跡算法提高了智能小車行駛車速和過彎穩(wěn)定性;所設(shè)計(jì)的防撞系統(tǒng)可在智能小車撞向障礙物之前提前制動(dòng),保障了智能小車的安全.
圖 12 實(shí)物圖
圖13 正常工作界面
圖14 避障工作界面