李旭東, 廖中浩, 孟 嬌
(1. 吉林大學(xué) 通信工程學(xué)院, 長春 130022; 2. 吉林省農(nóng)業(yè)機(jī)械研究院 生產(chǎn)力促進(jìn)中心, 長春 130021)
智能車系統(tǒng)是智能汽車的迷你版本, 二者在信息提取及處理、 控制系統(tǒng)構(gòu)成和控制方案整定方面有諸多相似之處, 可以說智能車系統(tǒng)是智能汽車良好的實驗平臺。攝像頭傳感器在對道路信息的提取和處理方面具有較大優(yōu)勢, 故基于攝像頭的智能車控制系統(tǒng)研究將推動智能汽車的發(fā)展。智能汽車對減少交通事故、 提升自動化技術(shù)和增加駕乘舒適性等方面有積極作用。在研究智能汽車過程中, 同時涵蓋了傳感器、 模式識別、 自動控制和信息融合等多項技術(shù), 這勢必促進(jìn)相關(guān)產(chǎn)業(yè)的發(fā)展, 在一定程度上反映了一個國家自動化研究的水平。當(dāng)前, 多數(shù)智能車設(shè)計采用識別單邊黑色引導(dǎo)線的算法, 雖然實現(xiàn)較為容易, 但由于賽道信息量較少易引起誤識別問題。筆者設(shè)計的智能車采用飛思卡爾公司的MC9S12XS128單片機(jī)作為控制器, 由電池管理、 賽道采集、 驅(qū)動模塊、 轉(zhuǎn)向模塊和速度測量等單元配合構(gòu)成硬件系統(tǒng), 可用CMOS(Complementary Metal Oxide Semiconductor)傳感器對兩邊具有黑色引導(dǎo)線的白色道路進(jìn)行識別。通過改進(jìn)賽道識別算法獲取前方道路信息, 并采用動態(tài)控制策略[1]控制智能車的行駛方向及速度, 使智能車在多種類型路徑下都能較快地行駛。
圖1 硬件系統(tǒng)框圖
智能車硬件系統(tǒng)以MC9S12XSl28為主控制器, 使用PWM(Pulse Width Modulation)模塊控制舵機(jī)轉(zhuǎn)角和電機(jī)轉(zhuǎn)速, 用脈沖累加器采集車速信號。同時整合速度測量模塊、 電池管理模塊、 賽道信息采集模塊和直流電機(jī)驅(qū)動模塊等[2](見圖1)。
智能車行駛時需進(jìn)行閉環(huán)速度控制, 以便消除各種因素干擾, 使車輛能平穩(wěn)沿著跑道運行。速度傳感器采用500線的瑞普ZSP3004型光電編碼器、 5 V直流供電, 用鋁片將其固定在車輛后輪附近。光電編碼器通過后輪軸上的齒輪與電機(jī)齒輪嚙合, 把光電編碼器的信號輸出連接到芯片的PT7引腳上, 并將該引腳配置成脈沖累加器。通過每5 ms對脈沖累加器的值進(jìn)行讀取計算, 可獲得較準(zhǔn)確的車輛速度。
筆者采用7.2 V電池為智能車系統(tǒng)供電。其中單片機(jī)模塊及其外圍電路、 CMOS攝像頭和測速模塊均需要5 V直流工作電壓。由于LM2940芯片具有輸出壓降小、 轉(zhuǎn)換效率高和過流保護(hù)功能等特點, 采用該芯片配合濾波電容構(gòu)成簡易5 V穩(wěn)壓電路。該電路可為單片機(jī)、 攝像頭、 編碼器和外圍電路供電。為提高車輛的響應(yīng)速度, 保證動力充沛, 采用電池直接供電方法對舵機(jī)和驅(qū)動電機(jī)供電。
CMOS攝像頭集成度高, 成像質(zhì)量較好, 使用方便, 應(yīng)用廣泛。筆者選用型號為OV7620的單板數(shù)字?jǐn)z像頭作為賽道信息采集模塊核心部分, 配合信號轉(zhuǎn)換電路構(gòu)成整個模塊, 采用VGA(Video Graphics Array)黑白320×240模式, 只需5 V電壓即可正常工作。經(jīng)過計算和調(diào)試得知, 每場采集數(shù)據(jù)點數(shù)為120×30個, 如不采用分頻電路, 而直接用單片機(jī)內(nèi)部計數(shù)器計數(shù)采樣點, 可在保證像素點數(shù)量充足的前提下, 充分利用單片機(jī)存儲空間。
以三極管或MOS(Metal Oxide Semiconductor)管為主控芯片搭建的普通H橋驅(qū)動電路, 其構(gòu)成復(fù)雜, 控制繁瑣, 發(fā)熱量大, 且無過熱保護(hù)功能, 容易失效。為滿足智能車快速響應(yīng)和頻繁加減速要求, 以半橋驅(qū)動芯片BTS7960B為主體, 配合隔離芯片74HC08組成電機(jī)驅(qū)動模塊, 所以, 可在提供智能車動力的同時防止電流倒灌入單片機(jī)。BTS7960B芯片瞬時驅(qū)動電流接近45 A, 內(nèi)阻很小、 功耗較低, 在發(fā)熱過大時有自動關(guān)閉的保護(hù)功能。通過該芯片將供電電壓調(diào)制成頻率固定、 寬度可變的PWM電壓輸出, 從而改變平均電壓, 進(jìn)而控制直流電機(jī)的轉(zhuǎn)速[3]。實驗證明, 一個電動機(jī)用兩片BTS7960B形成全橋驅(qū)動電路效果良好, 可以滿足電機(jī)驅(qū)動的需求。
智能車軟件設(shè)計主要由兩方面組成: 1) 對攝像頭采集的圖像進(jìn)行識別, 并去除圖像中因光線引起的噪點, 準(zhǔn)確提取行駛路徑中的黑色引導(dǎo)線; 2) 根據(jù)攝像頭采集處理得到的跑道信息和車速檢測模塊獲取的車速信息, 結(jié)合控制算法輸出舵機(jī)的角度控制量和電機(jī)的速度控制量, 從而使智能車能沿黑色引導(dǎo)線快速行駛。其軟件流程如圖2所示。
圖2 軟件流程圖
1) 賽道采集。攝像頭將采集的像素點轉(zhuǎn)換成連續(xù)的電壓信號, 并通過視頻信號端輸出, 電壓信號的大小反映了對應(yīng)像素點的灰度值。掃描一行后, 視頻信號端會輸出一個行同步脈沖, 以表示掃描換行。然后, 跳過相鄰行開始掃描下一行, 如此循環(huán)直到該場的視頻信號掃描結(jié)束。輸出端會輸出一段場消隱區(qū), 該區(qū)中包括場同步脈沖, 表示新一場圖像的到來。攝像頭每秒掃描25幅圖像, 每幅又分奇、 偶兩場, 即每秒掃描50場圖像。經(jīng)實測, S12單片機(jī)經(jīng)過超頻80 MHz以后, 每場圖像采集30行數(shù)據(jù)、 每行采到120個像素點為宜。通過程序控制, 這些行數(shù)據(jù)在距離車輛前方10~130 cm的范圍內(nèi)均勻分布, 每行像素點在賽道邊緣采集較密集, 而在賽道中間分布較稀疏。在此狀態(tài)下, 有足夠的數(shù)據(jù)用于賽道識別, 使單片機(jī)資源得到充分利用, 做到數(shù)據(jù)采集數(shù)量和處理速度的平衡。
2) 除噪及引導(dǎo)線識別。在引導(dǎo)黑線提取識別前, 先做圖像除噪處理。噪點一般是一個或兩個孤立噪點, 表示黑線信息的像素點因距攝像頭距離不同, 數(shù)量也不盡相同。在距離車輛前方40 cm內(nèi)約有12個像素點, 稍遠(yuǎn)處為9個像素點, 距離車輛前方80~100 cm范圍大約有4個像素點。筆者采用軟件除噪, 通過借鑒九宮格除噪法, 對采集的像素點做除噪處理。當(dāng)該像素點周圍8個方向的像素點都是同一性質(zhì)(黑色點)時, 該像素點與其周圍的8個像素點的性質(zhì)相同, 否則是另一性質(zhì)的像素點(白色點)[4]。
引導(dǎo)線識別是把攝像頭所拍攝圖像反映賽道信息的部分提取出來。這是一個圖像分割的過程。圖像分割是計算機(jī)進(jìn)行圖像處理與分析的重要環(huán)節(jié), 是基本的計算機(jī)視覺技術(shù)。分割圖像的基本依據(jù)有兩個: 連續(xù)性和相似性。筆者主要以黑線線寬的連續(xù)性、 黑線軌跡的連續(xù)性和黑線內(nèi)側(cè)白板的寬度作為識別標(biāo)準(zhǔn), 分別判定兩側(cè)的黑色引導(dǎo)線。對經(jīng)過除噪處理的像素點陣, 先搜索最底部的兩個有效行, 判斷是否存在有效的黑色像素點, 如果有, 則根據(jù)前兩行黑線中心和黑線寬度確定下一行的搜索范圍和黑線寬度范圍, 然后對全場圖像進(jìn)行判斷。30行處理完后, 找出一行有多個中心值的點, 讓其與上一行黑線中心值或下一行黑線中心值作差, 并取絕對值。絕對值最小的點即為要找的中心值, 從而找到一條黑線。再對另一側(cè)圖像做相同處理, 得到兩條黑線的位置[5,6]。
3) 識別路徑信息及賽道策略。提取引導(dǎo)線后, 開始對賽道進(jìn)行識別。在兩條黑色引導(dǎo)線的確定位置取出像素點, 采用三點法計算賽道曲率, 采樣并計算的像素點距離智能車前輪位置分別約為15 cm、 60 cm和105 cm。根據(jù)計算的賽道前方曲率, 將賽道劃分為: 直道、 大S彎道、 小S彎道和彎道。4種賽道分別對應(yīng)不同的賽道策略, 在直線賽道, 車輛會高速通過且舵機(jī)限位處理非常嚴(yán)格, 否則會造成車輛嚴(yán)重晃動。小S彎道需找到賽道中點并加速沿賽道中心位置沖過, 若在這里產(chǎn)生誤識別, 前輪連續(xù)打角會產(chǎn)生較大行駛阻力, 甚至導(dǎo)致車輛沖出賽道。為在大S彎道條件下更好地進(jìn)行路線選擇, 實現(xiàn)賽車“切彎”效果[7], 筆者對轉(zhuǎn)向 PID(Proportional Integral Differential)參數(shù)設(shè)定進(jìn)行了修正, 在以前 PID輸出的基礎(chǔ)上加上受斜率控制的參量, 控制器的輸出量在原先設(shè)定的PID參數(shù)基礎(chǔ)上, 將輸出量乘以賽道斜率的2次系數(shù), 實現(xiàn)了大S彎道過彎路徑優(yōu)化。在處理彎道時, 根據(jù)轉(zhuǎn)彎半徑的不同采用不同策略, 在車輛處于急彎時, 先將車速降到一個安全區(qū)間并給舵機(jī)較大打角, 以保證安全通過。
理論上講, 三點法計算的曲率能較正確地反映實際賽道的彎曲情況。但因該算法僅與路徑中3個點的位置有關(guān), 故得出的曲率是攝像頭所看到的路徑整體曲率。該特點給賽車帶來一個好處: 即賽車在小S型彎道時可直線沖過。因為算法中對路徑進(jìn)行了濾波, 濾除了中間部分的彎曲, 使路徑變直[8,9]。同時, 在車運行過程中經(jīng)常會出現(xiàn)半幅圖像有黑線或整幅圖像都沒有黑線的情況。如果出現(xiàn)這兩種情況, 需將車的舵機(jī)保持上一次的轉(zhuǎn)角, 直到正常圖像恢復(fù)到視野。
PID控制是工程實際中應(yīng)用最廣泛的調(diào)節(jié)器控制方法, 其結(jié)構(gòu)簡單, 可靠性高, 參數(shù)整定方便, 控制效果良好, 應(yīng)用十分廣泛。單位反饋PID 控制的結(jié)構(gòu)圖如圖3所示。
圖3 PID控制器結(jié)構(gòu)
單位反饋E代表理想輸出與實際輸出的誤差, 這個誤差信號被送到控制器, 控制器算出誤差信號的積分值和微分值, 并將它們與原誤差信號進(jìn)行線性組合, 得到輸出量U。U被送到執(zhí)行機(jī)構(gòu), 得到輸出C, 這樣就獲得了新的輸出信號。這個新的輸出信號被再次送到感應(yīng)器與期望的輸出值R比較, 用來發(fā)現(xiàn)新的誤差信號, 重復(fù)進(jìn)行這個過程。設(shè)計中PID控制主要的功能是, 在閉環(huán)系統(tǒng)中, 利用即時速度的反饋, 使智能車實時速度盡快接近目標(biāo)速度, 以改善智能車的加減速性能、 增強(qiáng)響應(yīng)能力, 適應(yīng)各種賽道情況。為滿足電機(jī)的快速響應(yīng)和穩(wěn)定輸出要求, 同時經(jīng)實驗比對, 采用增量式PI(Proportional Integral)算法加模糊控制指令的組合, 增量式PI算法表達(dá)式: Δu(k)=Kp(e(k)-e(k-1))+Kie(k)。其中Kp為比例系數(shù),Ki為積分常數(shù),e(k)為此刻采樣值與給定值的偏差。當(dāng)目標(biāo)速度和設(shè)定速度的差大于設(shè)定值時, 采用模糊控制, 使輸出達(dá)到最大或反向最大, 使現(xiàn)實速度盡快接近目標(biāo)速度。當(dāng)接近目標(biāo)速度時, 采用PI算法[10], 使其盡快穩(wěn)定在目標(biāo)速度上, 從而達(dá)到設(shè)計目標(biāo)。
由于已經(jīng)獲得了賽道中心線的位置, 所以計算偏航距離的問題是選取中心線的位置, 并以計算對應(yīng)的偏航距離作為當(dāng)前的偏航距離。該方案中控制程序運行周期約為35 ms, 如果智能車平均運行速度為2.5 m/s, 則在下一次控制參數(shù)輸出前, 智能車大約前進(jìn)8 cm, 智能車所處賽道環(huán)境將會改變較大。所以智能車方向控制只是半實時控制, 這是所有使用攝像頭作為主要尋線傳感器的車輛不可避免的問題[11,12]。因為算法的滯后性, 智能車在算法處理過程中需要將自身位置適當(dāng)前移。當(dāng)參數(shù)調(diào)整合適時, 智能車可在入彎處提前轉(zhuǎn)彎, 使賽車沿彎道內(nèi)側(cè)行駛, 實現(xiàn)賽道過彎路線優(yōu)化。經(jīng)實驗得知, 最終選取距車前10 cm左右的一行數(shù)據(jù)作為參考量, 根據(jù)此行偏移量作為車輛相對于賽道的偏航距離進(jìn)行車體橫向控制, 以達(dá)到行駛路徑優(yōu)化效果[13]。
對前輪的控制, 由于舵機(jī)和被控對象的慣性相對較小, 可由執(zhí)行機(jī)構(gòu)準(zhǔn)確執(zhí)行, 進(jìn)行開環(huán)控制。為做到快速響應(yīng), 舵機(jī)選用適應(yīng)性PD(Proportional Differential)控制[14], 即控制參數(shù)根據(jù)不同的彎道曲率而變化, 彎道曲率越大, 相應(yīng)比例控制參數(shù)會有所增加而微分控制參數(shù)保持, 所以使舵機(jī)具有較快的響應(yīng)速度和較好的平穩(wěn)特性。
經(jīng)過實際測試的結(jié)果證明, 該智能小車能在具有雙邊黑色引導(dǎo)線的白色底面跑道上以較快的速度平穩(wěn)前行, 工作穩(wěn)定可靠; 通過對路徑信息的采集、 識別和處理后, 可準(zhǔn)確識別路徑信息, 賽道識別策略和電機(jī)控制策略均有顯著效果, 路徑選擇策略和速度控制效果良好, 達(dá)到了預(yù)期設(shè)計目標(biāo)。
參考文獻(xiàn):
[1]王子輝, 葉云岳. 基于CMOS傳感器的智能循跡小車圖像識別技術(shù)研究 [J]. 傳感技術(shù)學(xué)報, 2009(4): 484-488.
WANG Zi-hui, YE Yun-yue. Based on CMOS Sensor Intelligent Tracking Car Image Recognition Technology Research [J]. Sensing Technology Journal, 2009(4): 484-488.
[2]KASZUBIAK J, TORNOW M, KUHN R W, et al. Real-Time Vehicle and Lane Detection with Embedded Hardware [C]∥Proceedings of the IEEE Intelligent Vehicles Symposium. Las Vegas, USA: IEEE Press, 2005: 619-624.
[3]劉鳴, 張翰林, 隆昌宇. 基于CMOS傳感器的智能車賽道自動尋跡系統(tǒng) [J]. 光機(jī)電信息, 2010, 27(10): 59-62.
LIU Ming, ZHANG Han-lin, LONG Chang-yu. Based on CMOS Sensor Intelligent Car Track Automatic Tracing System [J]. OME Information, 2010, 27(10): 59-62.
[4]BROGGI A, BERTOZZI M, FASCIOLI A. ARGO and the Mille Migliain Automatico Tour [J]. Proceedings of IEEE Intelligent System, 1999, 14(1): 55-64.
[5]劉富強(qiáng), 田敏, 振程. 智能汽車中基于視覺的道路檢測與跟蹤算法 [J]. 同濟(jì)大學(xué)學(xué)報: 自然科學(xué)版, 2007, 35(11): 1535-1541.
LIU Fu-qiang, TIAN Min, ZHEN Cheng. Intelligent Vehicle Based on Visual Road Detection and Tracking Algorithm [J]. Journal of Tongji University: JCR Science Edition, 2007, 35(11): 1535-1541.
[6]黃嫻, 張曦煌, 陸冬磊. 基于攝像頭的智能車路徑識別系統(tǒng)的設(shè)計 [J]. 電腦知識與技術(shù), 2010, 28(6): 8083-8085.
HUANG Xian, ZHANG Xi-huang, LU Dong-lei. Based on the Camera Intelligent Vehicle Path Recognition System Design [J]. Computer Knowledge and Technology, 2010, 28(6): 8083-8085.
[7]劉九維, 陳鋒, 邢嵐. 數(shù)字式CMOS攝像頭在智能車中的應(yīng)用 [J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2010(7): 42-44.
LIU Jiu-wei, CHEN Feng, XING Lan. Digital CMOS Camera in the Application of Intelligent Vehicle [J]. Single-Chip Microcomputer and Embedded System Application, 2010(7): 42-44.
[8]張云洲, 師恩義, 吳成東. 基于CCD的智能車導(dǎo)航系統(tǒng)研究 [J]. 東北大學(xué)學(xué)報: 自然科學(xué)版, 2009, 30(2): 162-165.
ZHANG Yun-zhou, SHI En-yi, WU Cheng-dong. Based on CCD Intelligent Vehicle Navigation System Research [J]. Journal of Northeastern University: JCR Science Edition, 2009, 30(2): 162-165.
[9]MINGUEZ J, MONTANO L. Sensor Based Robot Motion Generation in Unknown, Dynamic and Troublesome Scenarios [J]. Robotics and Autonomous Systems, 2005, 52(4): 290-311.
[10]GONZALEV-GALVANE E J, CRUZ-RAMIREZ S R, SEELINGER M J, et al. An Efficient Multi-Camera, Multi-Target Scheme for the Three-Dimensional Control of Robots Using Uncalibrated Vision [J]. Robotics and Computer Integrated Manufacturing, 2003, 19(5): 387-400.
[11]WILKINSON M H F. Optimizing Edge Detectors for Robust Automatic Threshold Selection, Coping with Edge Curvature and Noise [J]. Graphical Models and Image Processing, 1998, 60(5): 385-401.
[12]RICBARD L, MAGIN. Fractional Calculus in Bioengineering [J]. Critical Reviews in Biomedical Engineering, 2004, 32(1): 191-193.
[13]卓晴, 黃開勝, 邵貝貝. 學(xué)做智能車 [M].北京: 北航出版社, 2007.
ZHUO Qing, HUANG Kai-sheng, SHAO Bei-bei. Learning How to do Intelligent Car [M]. Beijing: Beihang University Press, 2007.
[14]WASIK Z, SAFFIOTTI A. A Fuzzy Behavior-Based Control System for Manipulation [C]∥IEEE International Conference on Intelligent Robots and Systems. New York, USA: IEEE, 2002: 1596-1601.