韓彩霞,黃藝,羅子波
(武漢文理學(xué)院,湖北武漢 430345)
全國大學(xué)生智能汽車競賽是教育部自動化專業(yè)教指委主辦,多加半導(dǎo)體公司協(xié)辦的全國性大學(xué)生高規(guī)格賽事。采用校內(nèi)賽、賽區(qū)賽直到全國總決賽的形式[1-2],該競賽是一個非常好的探索自動駕駛技術(shù)的平臺,競賽要求是參賽隊員研制一臺無需人為干涉,可以自主完成各種任務(wù)的尋跡小車。其設(shè)計內(nèi)容涵蓋了控制、模式識別、傳感技術(shù)、汽車電子、電氣、計算機(jī)、機(jī)械、能源等多個學(xué)科的知識,對學(xué)生知識融合和實踐動手能力的培養(yǎng)具有良好的推動作用[3-4]。
智能車主控采用英飛凌TC264 單片機(jī),使用神眼MT9V034 灰度攝像頭采集賽道信息,對賽道圖像進(jìn)行二值化處理,轉(zhuǎn)換為黑白圖像,便于進(jìn)行賽道元素的識別與處理[5-6]。
輔助傳感器為電磁傳感器和陀螺儀傳感器,結(jié)合攝像頭圖像可以更加準(zhǔn)確地處理賽道各元素。TFT 彩屏可以將攝像頭采集的圖像顯示在屏幕上,并且可以顯示補線后的圖像效果以及電感采集信息,為了方便上位機(jī)查看圖像,主板預(yù)留藍(lán)牙接口留做人機(jī)交互使用[7-8]。系統(tǒng)整體結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)框圖
智能車電源系統(tǒng)是由鋰電池組提供電能,相比以前鎳鉻電池,鋰電池的能量密度更高,大幅度降低了車身重量。鋰電池選用松下21 700 高倍率電池,其內(nèi)阻只有12 mΩ,瞬時放電電流可達(dá)50 A,持續(xù)最高放電電流可達(dá)30 A。在兩節(jié)電池串聯(lián)的情況下,智能車啟動或快速切換速度過程中電池組輸出電壓跌落不會超過1 V,系統(tǒng)供電穩(wěn)定性得到了保障,整車供電原理圖如圖2 所示。
圖2 供電原理圖
智能車最小系統(tǒng)電源的紋波越小越好,紋波嚴(yán)重會導(dǎo)致地線電平不穩(wěn),其結(jié)果往往是系統(tǒng)突然復(fù)位[9-10]。并且英飛凌TC264單片機(jī)功耗較大,需要保證1 A 電流,電源管理芯片直接由電池組電壓轉(zhuǎn)3.3 V供電時,電源管理芯片內(nèi)部將消耗5 W 的電能,這些電能將以熱能的形式散發(fā)到周圍介質(zhì)中,眾所周知半導(dǎo)體在高溫情況下性能會急劇下降,溫度過高時甚至?xí)龎碾娫垂芾硇酒?,所以先采用LM2596 降壓再使用線性穩(wěn)壓器ASM1117 降壓到3.3 V,其優(yōu)點是線性穩(wěn)壓器發(fā)熱量低,最小系統(tǒng)供電更穩(wěn)定。
舵機(jī)響應(yīng)速度與輸入電壓成正比,為了獲得較好的轉(zhuǎn)彎效果,將舵機(jī)供電設(shè)計為電壓可調(diào)模塊,使用的電源管理芯片為AS1015。電磁采集與調(diào)理電路和攝像頭模塊對紋波要求較高,并且這兩個模塊耗電不大,所以直接選用TPS73xx 線性穩(wěn)壓芯片為其供電,該款芯片優(yōu)點是具有低紋波和低壓差的性能。
智能車主要采用攝像頭獲取賽道灰度圖像,Otsu 是一種圖像二進(jìn)制分割閾值的方法,最早是在20 世紀(jì)70 年代末提出的。根據(jù)灰度將圖像特征分為前景和背景兩部分,背景和前景之間的差異越大,圖像兩部分之間的差異就越大,前景和背景被分割[11-14]。
智能車輔助傳感器為電感,其左右兩端電感對彎道元素比較敏感,兩個內(nèi)八電感對環(huán)島電磁線切線方向比較敏感,中間的豎直電感和水平電感則對三岔路口比較敏感,利用這幾個特征加上圖像的判斷,就可以準(zhǔn)確的識別各元素。采集的電感初始值跳變比較大,所以采用均值濾波方法連續(xù)采集五次電感值后進(jìn)行冒泡排序,剔除最大值與最小值后再取平均值。
智能車采集的圖像原始大小為188×120 像素,對于分辨率可以適當(dāng)縮放到合適大小,優(yōu)點是可以減少單片機(jī)的處理時間,但同時較小的分辨率會導(dǎo)致圖像細(xì)節(jié)丟失,因此,需要選擇合適的縮放比例才能既不丟失圖像有效信息,又能夠保證單片機(jī)處理速度。經(jīng)過多次分析、調(diào)整選取94×60 像素分辨率大小圖像。并確定圖像主跑行為第33 行,第一次掃描邊界是從中心列第47 列開始左右掃描,隨后往上掃描的中心列是由之前確定的中心列往左右掃描。變中心列掃描的好處是避免小車在大彎道中心列丟失,導(dǎo)致掃描邊界出錯,賽道基本圖像如圖3 所示。
圖3 賽道基本圖像
緊接著對掃線后邊界異常情況進(jìn)行補線處理,主要分為近端補線和遠(yuǎn)端補線。在近端只丟一邊邊界的情況下,可以用另外一邊邊界加上或減去賽道寬度,對于左右都丟線的情況取中心列為中線。在遠(yuǎn)端只丟右邊邊界情況下,用上一行右邊界加上左邊界的上一行與當(dāng)前行的變化值,就可得到右邊界,遠(yuǎn)端沒有使用賽道寬度直接補線是因為賽道寬度數(shù)組是在直道時取的值,對于遠(yuǎn)端有曲線變化趨勢的情況,用上一行與當(dāng)前行差值可以更好地體現(xiàn)賽道曲線變化。
補線完成后每行的中線值可以看作一個點,這些點有時離散程度比較大,為了利用好中線數(shù)據(jù),可將這些點進(jìn)行最小二乘法及一次方擬合得到斜率,再結(jié)合中線可以使小車在大彎道的輸出值增大,增強(qiáng)小車轉(zhuǎn)彎力度。
坡道的識別無非是讓智能車平穩(wěn)而快速的通過坡道,其根本在于坡道識別后處理器對智能車的速度控制,以下為智能車行駛狀態(tài)分析以及檢測策略[15]。坡道元素識別方法主要是基于陀螺儀采集的俯仰角度,當(dāng)俯仰角大于設(shè)定閾值時可判定當(dāng)前為坡道。小車處于上坡狀態(tài)時,攝像頭翹起容易掃到賽道以外的物體引起誤判,此時需關(guān)閉其他元素判斷,小車下坡時車身俯仰角小于設(shè)定角度閾值,小車需進(jìn)行減速處理,避免下坡后速度過快沖出賽道。
電感在智能車上主要是輔助攝像頭判斷圓環(huán)及三岔路。首先確定電感的排布,經(jīng)過多次嘗試,選擇使用6 電感排布方案,排布方式如圖4 所示,需注意的是電感之間間隔不能太近,避免產(chǎn)生互感現(xiàn)象,導(dǎo)致數(shù)據(jù)采集有誤。
圖4 電感排布方式
電磁桿上左右兩端電感對彎道元素比較敏感,兩個內(nèi)八電感對環(huán)島電磁線切線方向比較敏感,中間的豎直電感和水平電感則是對三岔路口比較敏感,利用這幾個特征以及圖像進(jìn)行判斷,就可以準(zhǔn)確地識別賽道各元素[16]。
采集的電感初始值跳變比較大,所以需要進(jìn)行濾波,在連續(xù)采集五次電感值后進(jìn)行冒泡排序,剔除最大值與最小值再取平均值。
對于環(huán)島元素的識別,由于電磁線在環(huán)島入口與直道疊加,導(dǎo)致中間電感采集值非常大,并且在識別左圓環(huán)時左八字電感數(shù)值明顯大于右八字電感,結(jié)合賽道寬度和左邊界丟失可確定當(dāng)前元素為環(huán)島。
環(huán)島采用橢圓補線方法,這里只介紹左圓環(huán)入環(huán)處理思路,右圓環(huán)同理。左環(huán)島入環(huán)是左邊界丟線,右邊界正常,并且左八電感值明顯大于右八電感值,中間橫電感值暴增,確定當(dāng)前元素為環(huán)島。然后確定左邊界的特殊列,并向右平移10 列,以40 行開始向上搜索,搜到黑點,用公式計算出橢圓短半軸長度,長半軸是固定值為70,橢圓中心也是固定值為(60,0),入環(huán)只需要補1/4 即可,代入橢圓參數(shù)方程就可以算出一條邊界,入環(huán)補線示意圖如圖5 所示。
智能車在完成入環(huán)后需要清除補線,以免補線過度使小車撞到環(huán)島內(nèi)路肩上。補線完成的標(biāo)志是左邊第二列連續(xù)白點數(shù)小于24,左右斷點搜索原理就是運用遞歸算法。出環(huán)補線也是采用橢圓補線,與入環(huán)不同的是短半軸稍微擴(kuò)大一些就可以順滑出環(huán)。
三岔路是第十六屆比賽首次新加元素,比賽道上鋪設(shè)兩圈電磁線,第一圈電磁線經(jīng)過三岔路入口時先走三岔路段的一邊,電磁線再次經(jīng)過三岔路口時走另外一邊,所以電磁傳感器在三岔路口正上方時,中間橫電感與豎直電感小于特定值,圖像上賽道左右丟線行數(shù)大于特定值就可以判斷當(dāng)前為三岔路入口。然后進(jìn)行單邊拉線,其補線方法是用直道賽道寬度一半作為右邊界。這樣補出來的中心線往左偏,就可以順利進(jìn)入三岔路段,補線示意圖如圖6 所示。
圖6 三岔路入口補線示意圖
入三岔路后小車采集的電感值明顯小于正常賽道電感值,那么進(jìn)入三岔路段后可以鎖定小車在三岔路的狀態(tài),出三岔路時,由于兩根電磁線匯聚,小車采集的電感值突增,再結(jié)合圖像進(jìn)行單邊拉線就可以控制小車順利使出三岔路段。
智能車開始時必須在車庫內(nèi)發(fā)車,為了更好地控制小車的全程運行狀態(tài),設(shè)計狀態(tài)控制函數(shù),發(fā)車后只需要將舵機(jī)輸出值固定,車身轉(zhuǎn)過40°后攝像頭可掃描到賽道,再解除舵機(jī)固定賦值交由單片機(jī)進(jìn)行自動處理。入庫是第二次掃到斑馬線賦值固定打角,車身在旋轉(zhuǎn)一定角度后剛好完全進(jìn)入車庫內(nèi),停車就可完成此次比賽。由于斑馬線特征獨特,只需單獨編寫函數(shù)進(jìn)行識別,選取圖像第38 行為識別行,白黑跳變與黑白跳變相差不多則判定為斑馬線,具體實現(xiàn)代碼如下:
小車運行過程中,需要實時收集車輛的各種參數(shù)信息,因此,設(shè)計快速調(diào)參是非常重要的。
主要是環(huán)島及三岔路入口和出口信息,因為需要判定電感值,需要現(xiàn)場取值,以往常用的方法是在賽道上記錄電感值大小,然后在程序?qū)?yīng)位置修改常量值,經(jīng)編譯器編譯完畢后下載到單片機(jī)中,這樣非常浪費比賽時間,還有可能因為參數(shù)輸錯導(dǎo)致小車無法正常識別賽道元素。
英飛凌TC264 自帶96KB EEPROM,可以將各元素需要判斷的閾值以采集到的當(dāng)前實際值存入對應(yīng)扇區(qū),當(dāng)小車運行到剛才存儲元素附近時就滿足判斷條件,省去了修改編譯下載環(huán)節(jié),大大節(jié)省了時間,在每次進(jìn)行變量存儲時一般遵循先擦除后寫入的規(guī)則,避免數(shù)據(jù)沒有擦除就寫入而導(dǎo)致存儲數(shù)據(jù)有誤。調(diào)參界面如圖7 所示。
本設(shè)計基于TC264 單片機(jī)控制核心,通過攝像頭傳感器采集賽道圖像信息,電磁傳感器和陀螺儀傳感器輔助判斷各元素,主控芯片分析小車當(dāng)前的賽道元素,進(jìn)行補線處理,能夠識別出直道、彎道、環(huán)島、三岔路及坡道,并且對于較難的元素環(huán)島采用橢圓補線處理,很好地解決了小車入環(huán)出界問題,對于新元素三岔路采用單邊賽道寬度拉線的方式,實現(xiàn)了道路信息采集、元素分析和自動尋跡功能的智能小車的設(shè)計。