北京聯(lián)合大學(xué)自動(dòng)化學(xué)院 王夕巖
北京聯(lián)合大學(xué)電子信息技術(shù)實(shí)驗(yàn)實(shí)訓(xùn)基地 張翠霞
每年一度的全國(guó)大學(xué)生智能車競(jìng)賽吸引越來越多的有志學(xué)子參加。參賽的智能車無論從技術(shù)水平、技術(shù)含量越來越高,而智能交通系統(tǒng)也是智能車的重要構(gòu)成部分,在某種程度上其研究的主要目的在于降低日趨嚴(yán)重的交通事故發(fā)生率,提高現(xiàn)有道路交通的效率,緩解能源消耗和環(huán)境污染等問題。因此智能車的自動(dòng)駕駛的發(fā)展有著廣泛的前景。
由于光電智能車通過傳感器由128配置在光電二極管的線性陣列。在光電二極管的能量沖擊產(chǎn)生的光電流識(shí)別道路信息,以及利用加速度計(jì)讀取角度,陀螺儀讀取加速度,然后兩者融合在一起得到濾波后的角度和角速度,然后對(duì)電機(jī)進(jìn)行控制,并外加設(shè)計(jì)了手持顯示系統(tǒng)實(shí)現(xiàn)對(duì)智能車運(yùn)行參數(shù)的分析。
根據(jù)光電車循跡和光電傳感器方案的要求,智能車共包括五個(gè)部分:傳感器部分、人機(jī)接口部分、MC9S12XS128模塊、執(zhí)行機(jī)構(gòu)、電源部分。圖1為本系統(tǒng)的結(jié)構(gòu)圖。
圖1 智能車控制系統(tǒng)結(jié)構(gòu)
2.3.1 線性CCD的設(shè)計(jì)
通過調(diào)整曝光時(shí)間來適應(yīng)各種環(huán)境,在弱光環(huán)境增大曝光時(shí)間,在強(qiáng)光下減小曝光時(shí)間。但是曝光時(shí)間不能無限增大的,因?yàn)樵龃笃毓鈺r(shí)間勢(shì)必降低采樣率(每秒采樣次數(shù))采樣率低控制周期就長(zhǎng),智能車反應(yīng)就慢。因此1米的前瞻,3.5m/s的速度情況下,控制周期不得高于20ms(采樣率不得低于50Hz),否則智能車轉(zhuǎn)向機(jī)構(gòu)反應(yīng)再快也無法很好跟隨道路而沖出道路。控制周期不高于20ms就意味著曝光時(shí)間不能超過20ms。試驗(yàn)時(shí),我們將TSL1401線性CCD曝光時(shí)間調(diào)整到20ms(采用周期20ms),分別在強(qiáng)光、弱光、燈光不同環(huán)境進(jìn)行采用,采樣數(shù)據(jù)表明環(huán)境光線較弱時(shí)CCD輸出信號(hào)較低,以致道路黑線信息不夠明顯,晚上日光燈環(huán)境下輸出信號(hào)電壓值更低,幾乎接近0,根本無法辨別道路信息!考慮到智能車運(yùn)行部分時(shí)間會(huì)在晚上,因此必須在不降低采樣率的情況下,增大晚上弱光環(huán)境下線性CCD的輸出電壓。要增大輸出電壓,簡(jiǎn)單有效的方法就是放大輸出信號(hào),我們可以采用運(yùn)放來放大AO輸出信號(hào)。藍(lán)宙電子實(shí)踐表明增大運(yùn)放能非常有效的解決弱光時(shí)輸出電壓低問題,在晚上環(huán)境同樣能達(dá)到50Hz的采樣率,這是無運(yùn)放的線性CCD無法達(dá)到的。為了能保證輸出電壓在合理范圍(不飽和、不截止、能分辨賽道黑線),需要根據(jù)選定的鏡頭確定運(yùn)放放大倍數(shù)。選定的藍(lán)宙電子線性CCD模塊(鏡頭為無畸變鏡頭)中的運(yùn)放電路圖如圖2所示。
圖2 CCD模塊運(yùn)放電路
圖2 中運(yùn)放放大倍數(shù)A=1+R5/R4,此電路中A=11,也就是對(duì)TSL1401的AO信號(hào)進(jìn)行11倍放大。由于增加了運(yùn)放,白天環(huán)境下的采樣率可以調(diào)節(jié)到更高,甚至可以達(dá)到100Hz。增加了運(yùn)放也會(huì)帶來一個(gè)問題,就是在全黑的環(huán)境(例如蓋上鏡頭蓋)下線性CCD的輸出已經(jīng)不再接近0V,這里我們稱全黑的環(huán)境對(duì)應(yīng)的電壓為暗電壓,藍(lán)宙電子設(shè)計(jì)的CCD模塊暗電壓是1V左右。其實(shí)暗電壓完全不影響上層軟件提取道路黑線,我們可以把這個(gè)暗電壓當(dāng)做信號(hào)中的直流分量,將采集的每個(gè)像素點(diǎn)的電壓減去暗電壓就可以了,該方法已經(jīng)驗(yàn)證可行,讀者也可以實(shí)踐。
2.3.2 曝光時(shí)間自適應(yīng)策略
如果道路環(huán)境各個(gè)方向的光線均勻一致,我們可以在智能車出發(fā)前根據(jù)環(huán)境光線調(diào)節(jié)
一個(gè)合理的曝光時(shí)間,以得到合理的輸出,這樣智能車就能采用一個(gè)固定的曝光時(shí)間跑完全程。但是這是最理想的情況,實(shí)際比賽環(huán)境遠(yuǎn)沒有假設(shè)的這么理想,實(shí)際道路上會(huì)有諸多外界光線影響,而且夜晚道路上也可能有燈,因此智能車的前進(jìn)方向正對(duì)光線和背對(duì)光線不能采用同一曝光參數(shù),夜晚電燈下和離燈較遠(yuǎn)處也不能采用相同曝光參數(shù)。換句話說要想智能車跑完全程需要適時(shí)地、動(dòng)態(tài)的調(diào)整曝光參數(shù)。
圖3 曝光時(shí)間閉環(huán)控制
從圖3可看出,該曝光時(shí)間自適應(yīng)策略時(shí)間就是一個(gè)典型的閉環(huán)控制,控制對(duì)象是線性CCD模塊的曝光時(shí)間,反饋是線性CCD感應(yīng)到的曝光量。調(diào)節(jié)的目標(biāo)是設(shè)定曝光量。控制器的工作原理是將設(shè)定的曝光量減去實(shí)際曝光量,差值即為曝光量的偏差e,曝光量調(diào)節(jié)器用Kp乘以e再加上上次的曝光時(shí)間作為新的曝光時(shí)間進(jìn)行曝光,曝光時(shí)間調(diào)整后直接影響實(shí)際反饋的曝光量。如此反復(fù)進(jìn)行調(diào)節(jié)就能達(dá)到適應(yīng)環(huán)境光的目的。需要大家注意的是實(shí)際曝光量并不是某一個(gè)像素的曝光量,因?yàn)閱蝹€(gè)像素是無法反應(yīng)環(huán)境光強(qiáng)度的,實(shí)際曝光量應(yīng)該是一段時(shí)間和一定像素點(diǎn)強(qiáng)度的函數(shù)。藍(lán)宙電子的做法是取一次采集到的128個(gè)像素電壓的平均值作為曝光量當(dāng)量,設(shè)定的曝光量也就是設(shè)定的128像素點(diǎn)平均電壓。采用該策略后線性CCD采集到電壓值在正常的智能車運(yùn)行環(huán)境中都能保持在合理范圍內(nèi)。
圖4 曝光控制流程圖
2.3.3 曝光自適應(yīng)程序流程
曝光控制流程如圖4所示,其中主程序20ms執(zhí)行一次,主要完成CCD采樣、計(jì)算實(shí)際曝光量、計(jì)算曝光時(shí)間。
采集到的128像素點(diǎn)數(shù)據(jù)如圖5所示,該數(shù)據(jù)保存在Pi xel[128]數(shù)組中,實(shí)際曝光量當(dāng)量(128像素平均電壓)保存Pixel Aver ageVol t age全局變量中,曝光時(shí)間(單位ms)保存在Int egr at ionTime全局變量中。
圖5 采集128像素點(diǎn)數(shù)據(jù)
曝光控制數(shù)據(jù)采樣如圖6所示,曝光控制中斷程序每1ms執(zhí)行一次,每次中斷將Timer Cnt 20ms計(jì)數(shù)器自加,根據(jù)曝光時(shí)間Int egr at ionTime計(jì)算曝光點(diǎn)int egr ation_piont(取值范圍2~20),如果曝光點(diǎn)等于當(dāng)前計(jì)數(shù)器則開始曝光,當(dāng)Timer Cnt 20ms等于20時(shí),重置Timer Cnt 20ms,同時(shí)置位Timer Fl ag20ms標(biāo)志位,通知主程序20ms程序執(zhí)行。曝光控制原理實(shí)際就是發(fā)送一次啟動(dòng)和移位時(shí)序,從TSL1401的時(shí)序圖可看出每128時(shí)鐘序列的前18個(gè)周期是內(nèi)部復(fù)位(internal r eset),這18個(gè)周期不僅不曝光,還會(huì)將每個(gè)像素積分器電容放電,將積分電壓清零,18個(gè)周期后的便開始積分。中斷程序就是根據(jù)曝光時(shí)間在合適的曝光點(diǎn)輸出一個(gè)內(nèi)部復(fù)位序列。下一個(gè)20ms到達(dá)時(shí)會(huì)進(jìn)行數(shù)據(jù)采樣,采集到數(shù)據(jù)對(duì)應(yīng)的曝光時(shí)間就是輸出內(nèi)部復(fù)位到下次采樣的時(shí)間。而上一次20ms采樣到本次輸出內(nèi)部復(fù)位信號(hào)之間的曝光將在本次曝光時(shí)清除,數(shù)據(jù)沒有讀?。ú贿M(jìn)行AD轉(zhuǎn)換)。
圖6 曝光控制數(shù)據(jù)采樣
從圖6可看出,黑線特征非常明顯,可以采用找凹槽算法準(zhǔn)確的提取黑線位置。單行黑線提取算法如下,該算法之前是用于面陣攝像頭的,由于線性CCD相當(dāng)于面陣攝像頭的一行,因此該算法同樣適用于線性CCD。
本次選用的車模采用了韓國(guó)愛得美公司生產(chǎn)的Mat iz系列1:10模型車。
3.1線性CCD的安裝線性CCD作為外設(shè)進(jìn)行數(shù)據(jù)的采集需要將其單獨(dú)引出來,放置于頂部外端。這樣便于安裝和拆卸。
考慮到模型車的重心的高度和位置,主板放在模型的的前半部分,主板重心。
測(cè)速模塊才用增量式編碼器,增量式編碼器的安裝于車的最后部分。
差距決定了轉(zhuǎn)彎時(shí)的性能,差速調(diào)節(jié)時(shí)應(yīng)該不能太松和太緊,而且要避免和電機(jī)齒輪的間隙。
考慮到陀螺儀安裝要求,陀螺儀安裝必須水平。
在設(shè)計(jì)和編寫控制算法軟件之前,請(qǐng)先確認(rèn)自己的控制方案,根據(jù)自己的理解進(jìn)行裁剪和修改控制方案。同一個(gè)控制算法在軟件實(shí)現(xiàn)的時(shí)候由于采取的數(shù)據(jù)結(jié)構(gòu)不同,實(shí)現(xiàn)的C語言的代碼也各有差異。具體算法請(qǐng)見圖7所示。
圖7 主要算法控制方案
開發(fā)工具:
采用了USB接口的HCS12BDM下載工具,是支持Fr eescal eMC9S12系列16位單片機(jī)的BDM調(diào)試工具。
軟件上采用的是CodeWar r ior f or HCS12,經(jīng)過源程序的編寫,連接,通過BDM下載至MC9S12XS128,完成單片機(jī)的開發(fā)過程。CodeWar r i or是Met r ower ks公司專門面向Mot or ol a(Fr eescal e)設(shè)計(jì)的嵌入式應(yīng)用開發(fā)的軟件工具,包括集成開發(fā)環(huán)境IDE,處理器專家?guī)?,全芯片仿真,可視化參?shù)顯示工具,項(xiàng)目管理器,C交叉編譯器,匯編器,鏈接器以及調(diào)試器,支持在線編程和調(diào)試,給我們的開發(fā),設(shè)計(jì)工作帶來了很大的方便。
本文對(duì)基于線性CCD的智能車的自主駕駛技術(shù)進(jìn)行了論述和研究。同時(shí)開發(fā)了一款基于線性CCD智能車的自主識(shí)別道路的系統(tǒng)。在機(jī)械上通過更好的硬件、結(jié)構(gòu)和調(diào)試。讓車體運(yùn)行流暢,更加利于控制。在系統(tǒng)上優(yōu)化了穩(wěn)定性,和真實(shí)性,為數(shù)據(jù)的采集提供了保證。利用了線性CCD在道路系別以及控制算法。將車體在道路上發(fā)生偏離軌道和速度控制的更加完美。
[1]卓晴,黃開勝,邵貝貝.學(xué)做智能車[M].北京:北京航天航空出版社,2007.
[2]童詩白.模擬電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2001.
[3]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,1998.
[4]張宇河,董寧.計(jì)算機(jī)控制系統(tǒng)[M].北京:北京理工大學(xué)出版社,2002.
[5]陶永華,尹怡欣,葛蘆生.新型PID控制及其應(yīng)用[M].北京:機(jī)械工業(yè)出版社,1998.
[6]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001.
[7]張愷,周權(quán)等.基于光纖通信的光電跟蹤實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理2013,(03)70-73.
[8]侯國(guó)屏,王坤,葉齊鑫.LabVIEW7.1編程與虛擬儀器設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.
[9]周斌,李立國(guó),黃開勝.智能車光電傳感器布局對(duì)路徑識(shí)別的影響研究[J].電子產(chǎn)品世界,2006,5.