摘 要: 介紹了智能車(chē)模型系統(tǒng)。以MC9S12XS128微控制器為核心控制單元,通過(guò)OV7620數(shù)字?jǐn)z像頭檢測(cè)賽道信息,并對(duì)所采集到的圖像進(jìn)行二值化,提取兩邊黑色引導(dǎo)線,用于路徑識(shí)別;通過(guò)光電編碼器檢測(cè)模型車(chē)的速度,使用經(jīng)典PID控制算法控制舵機(jī)的轉(zhuǎn)向和驅(qū)動(dòng)電機(jī)的轉(zhuǎn)速。
關(guān)鍵詞: OV7620;算法;路徑識(shí)別;XS128
當(dāng)今汽車(chē)產(chǎn)業(yè)發(fā)展非常迅速,但隨之帶來(lái)的城市交通擁堵、交通事故也隨之增加。有統(tǒng)計(jì)顯示80%以上的交通擁堵和交通事故是人為原因造成的,隨著汽車(chē)飽有量越來(lái)越多如何解決這些問(wèn)題就顯得十分重要,于是智能汽車(chē)算法的概念近些年被提出作為解決上述問(wèn)題的一種方法。本文介紹了以O(shè)V7620數(shù)字?jǐn)z像頭來(lái)采集路面信息,以XS128單片機(jī)作為控制核心,進(jìn)行圖像處理、路徑識(shí)別并因此來(lái)控制電機(jī)轉(zhuǎn)速和舵機(jī)轉(zhuǎn)向的模擬自動(dòng)駕駛汽車(chē)的研究[1]。
1 系統(tǒng)概述
自動(dòng)駕駛的智能車(chē)應(yīng)具有良好的自主道路識(shí)別能力和穩(wěn)定性,并能以較快的速度行駛以及穩(wěn)定的轉(zhuǎn)向能力。本文的自動(dòng)駕駛智能車(chē)系統(tǒng)的設(shè)計(jì)主要包括以下兩部分:(1)自動(dòng)駕駛智能車(chē)控制器的硬件電路設(shè)計(jì),調(diào)整和改進(jìn)模擬測(cè)試車(chē)模的機(jī)械結(jié)構(gòu),最大限度地發(fā)揮車(chē)模的機(jī)械性能。(2)結(jié)合軟件算法,使小車(chē)轉(zhuǎn)向準(zhǔn)確、穩(wěn)定,能夠安全通過(guò)各種彎道和十字交叉路口,最大限度地模擬現(xiàn)實(shí)中的道路。同時(shí)在保證可靠運(yùn)行的前提下,電路設(shè)計(jì)盡量簡(jiǎn)潔緊湊,以減輕系統(tǒng)負(fù)載,提高自動(dòng)駕駛智能車(chē)的靈活性,并以穩(wěn)定性為首要前提,實(shí)現(xiàn)車(chē)輛的快速運(yùn)行。作為能夠自動(dòng)識(shí)別道路運(yùn)行的自動(dòng)駕駛智能汽車(chē),信息處理與控制算法至關(guān)重要,主要由運(yùn)行在XS128單片機(jī)中的控制算法來(lái)完成。因此,控制算法的設(shè)計(jì)是本文的核心部分。
測(cè)試跑道采用普通白色KT板,寬度為50 cm,KT板兩邊各有約2.5 cm的黑色膠帶。如圖1所示。
2 系統(tǒng)的硬件設(shè)計(jì)
2.1 圖像傳感
目前以圖像傳感器作為智能車(chē)路徑識(shí)別采集系統(tǒng),應(yīng)用比較多的圖像傳感器主要分為CCD和CMOS兩大類(lèi)。CCD攝像頭具有對(duì)比度高、動(dòng)態(tài)特性好的優(yōu)點(diǎn),但需要工作在12 V電壓下,對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō)過(guò)于耗電,并且電路設(shè)計(jì)較為復(fù)雜,成本相對(duì)較高;CMOS攝像頭體積小,耗電量小,圖像穩(wěn)定性較高,電路設(shè)計(jì)簡(jiǎn)單,工作在5 V電壓下即可,不用另作升壓電路,減少了設(shè)計(jì)難度。因此,經(jīng)過(guò)實(shí)驗(yàn)論證之后決定采用CMOS攝像頭。本文路徑識(shí)別系統(tǒng)的信號(hào)采集部分所使用的傳感器為Omni Vision公司的CMOS圖像傳感器,CMOS攝像頭又分為數(shù)字和模擬兩種,而數(shù)字?jǐn)z像頭和模擬攝像頭的區(qū)別在于模擬攝像頭在接入單片機(jī)之前需要加A/D轉(zhuǎn)換芯片,用來(lái)將模擬攝像頭采集的模擬信號(hào)轉(zhuǎn)換成能被單片機(jī)所識(shí)別的0~5 V電壓。數(shù)字?jǐn)z像頭則可以直接將信號(hào)線連接到單片機(jī),減少了單片機(jī)對(duì)A/D轉(zhuǎn)換的編程。本文采用OV7620數(shù)字?jǐn)z像頭采集測(cè)試跑道的路徑信息,為路徑識(shí)別提供輸入信號(hào)[2]。
數(shù)字?jǐn)z像頭OV7620可以直接輸出8路數(shù)字圖像信號(hào),簡(jiǎn)化主板硬件電路的設(shè)計(jì),總有效像素單元為664(水平方向)×492(垂直方向)像素;內(nèi)置10位雙通道A/D轉(zhuǎn)換器,輸出8位圖像數(shù)據(jù);具有自動(dòng)增益和自動(dòng)白平衡控制,能進(jìn)行亮度、對(duì)比度、飽和度、Y校正等多種調(diào)節(jié)功能;其視頻時(shí)序產(chǎn)生電路可產(chǎn)生行同步、場(chǎng)同步、混合視頻同步等多種同步信號(hào)和像素時(shí)鐘等多種時(shí)序信號(hào);工作功耗<120 mW,待機(jī)功耗<10 μW,能夠滿足本系統(tǒng)測(cè)試識(shí)別的要求。OV7620的有效像素為664×492,但實(shí)際處理時(shí)無(wú)法處理這么多的數(shù)據(jù),同時(shí)也沒(méi)有必要處理這么多的數(shù)據(jù)。通過(guò)串口采集圖像進(jìn)行分析論證,采集40行120列作為圖像信號(hào)輸入。
首先將圖像通過(guò)奇、偶場(chǎng)信號(hào)輸出,即隔行采集的方法得到一場(chǎng)數(shù)據(jù),若是采奇數(shù)行稱(chēng)為奇場(chǎng)信號(hào),若是采集偶數(shù)行則稱(chēng)為偶場(chǎng)信號(hào)。奇場(chǎng)和偶場(chǎng)所采集的圖像是一樣的,只要用奇、偶其中一場(chǎng)就可以完成系統(tǒng)識(shí)別的要求。
一場(chǎng)圖像的行數(shù)為246行,要從中提取40行作為本文模型車(chē)路徑識(shí)別系統(tǒng)的有效處理行,一場(chǎng)圖像的前15行左右為行消隱區(qū),16行之后為有效行。本文以17行做為圖像信號(hào)采集的第一行,由于OV7620攝像頭近處圖像看的比較清楚,遠(yuǎn)處圖像看的比較模糊,為了能夠更好地反映測(cè)試跑道的情況,采取不等間距采行法,即從間隔1行到間隔6行,形成近處采集的行數(shù)少,遠(yuǎn)處采集的行數(shù)多,最終所采集行數(shù)如表1所示。
列數(shù)采用等距采集,采取隔4列提取一列的方式,最終通過(guò)行和列的采集得到40(行)×120(列)的圖像信號(hào),作為本文模型車(chē)路徑識(shí)別算法的圖像輸入信號(hào)。
2.2 系統(tǒng)整體框圖
由以上的分析確定系統(tǒng)的總體方案:采用CMOS攝像頭進(jìn)行路徑檢測(cè),舵機(jī)實(shí)現(xiàn)車(chē)輛的轉(zhuǎn)向控制,速度閉環(huán)控制方式對(duì)車(chē)輛速度實(shí)施精確控制。系統(tǒng)的整體框圖如圖2所示。
2.3.2 重心調(diào)整
汽車(chē)在其他要素穩(wěn)定的情況下,車(chē)體重量對(duì)于車(chē)的加減速性能有著至關(guān)重要的影響,因此本文的機(jī)械設(shè)計(jì)中,在布置自動(dòng)駕駛模型車(chē)的傳感器支架和設(shè)備時(shí),應(yīng)該盡量減少不必要的配置,使車(chē)總重盡量減輕。車(chē)體重心高低主要影響車(chē)身運(yùn)動(dòng)中的穩(wěn)定性,對(duì)于拐彎的平滑性及穩(wěn)定性有很大的影響。在車(chē)體調(diào)整以及減輕車(chē)體總重量采用以下幾點(diǎn):(1)將測(cè)試模型車(chē)的前后結(jié)合懸掛拆掉,僅保留前后車(chē)體連接的金屬片,并用膠體加固。這樣已經(jīng)足夠模型測(cè)試車(chē)轉(zhuǎn)向時(shí)候的平衡。(2)將車(chē)上各種設(shè)備盡量布置在車(chē)體轉(zhuǎn)動(dòng)中心上,有利于車(chē)體在拐彎時(shí)的響應(yīng),車(chē)輛不易側(cè)翻。比如將電池移動(dòng)到車(chē)子前部,將電路板放在靠后的位置,整車(chē)的重心基本上在中間位置。(3)為了降低整車(chē)重心,本文嚴(yán)格控制攝像頭傳感器及其安裝架的重量。本文采用了小巧的OV7620攝像頭,重量輕但卻能夠滿足采集圖像的精度。設(shè)計(jì)了輕巧的鋁合金CMOS夾持組件,便于攝像頭的拆卸,并采用了碳纖維管作為安裝傳感器的主桿,這樣不僅重量輕而且剛度也能達(dá)到要求[3]。
3 系統(tǒng)電路設(shè)計(jì)
3.1 電源模塊
本文所設(shè)計(jì)的系統(tǒng)總電源供應(yīng)來(lái)自7.2 V大容量鎳鎘電池,但是單片機(jī)最小系統(tǒng)和一些芯片都需要5 V的電源,SD卡和無(wú)線調(diào)試模塊需要3.3 V低壓,伺服電機(jī)工作電壓范圍在4 V~6 V之間,CMOS攝像頭經(jīng)過(guò)改裝應(yīng)用5 V供電,驅(qū)動(dòng)電路需要5 V的電源,直流電機(jī)需要7.2 V電池直接供電,圖5為系統(tǒng)的穩(wěn)壓模塊。
3.2 電機(jī)驅(qū)動(dòng)
電機(jī)控制從控制方法上可以分為開(kāi)環(huán)控制和閉環(huán)控制兩種。開(kāi)環(huán)控制在用法上比較簡(jiǎn)單,只需考慮輸出,不需要反饋信號(hào),使用比較簡(jiǎn)單,但是速度控制的精度較低,不能適應(yīng)不同的環(huán)境。另一種為閉環(huán)控制,電機(jī)的速度控制信號(hào)輸出由需要的速度和電機(jī)的實(shí)際轉(zhuǎn)速兩者決定,即需要對(duì)電機(jī)的實(shí)際轉(zhuǎn)速進(jìn)行采集和反饋。這種方法控制精度比較高,對(duì)賽道的適應(yīng)性較高。本文在電機(jī)驅(qū)動(dòng)電路和硬件反饋電路上做了多組試驗(yàn),最終確定了一種硬件的閉環(huán)控制方案。根據(jù)電子調(diào)速器的硬件原理,采用8個(gè)mosfet搭建電機(jī)驅(qū)動(dòng)電路。電機(jī)驅(qū)動(dòng)電路并不使用全橋驅(qū)動(dòng),而是使用半橋。這種電路結(jié)構(gòu)的好處是它可以比全橋少用一半的MOSFET,或者說(shuō)在相同體積內(nèi)可以多并聯(lián)一倍的MOSFET來(lái)提升驅(qū)動(dòng)能力。此外,驅(qū)動(dòng)電路中還有一個(gè)需要注意的地方,一般的MOSFET的開(kāi)啟電壓至少在4.5 V以上,而負(fù)責(zé)剎車(chē)的MOSFET其參考點(diǎn)與電池正極是連通的,因此其開(kāi)啟電壓至少在12 V以上。實(shí)際設(shè)計(jì)中,本文驅(qū)動(dòng)電路使用了IRL2203作為驅(qū)動(dòng)芯片,采用4并聯(lián)驅(qū)動(dòng)、4并聯(lián)剎車(chē)的形式,使用IR2103作為mosfet driver,用MC34063升壓電路,升壓至12 V為mosfet driver供電。圖6為電機(jī)驅(qū)動(dòng)電路。
3.3 速度檢測(cè)模塊
本文自動(dòng)駕駛智能車(chē)在調(diào)試中經(jīng)常遇到速度失控的情況,例如直道速度可以很高,而彎道速度過(guò)大就會(huì)出現(xiàn)側(cè)滑,最終沖出測(cè)試跑道。各種不同的道路組合后速度時(shí)常應(yīng)對(duì)遲緩,要想改變這種情況,速度的反饋檢測(cè)就成為了速度控制的重要任務(wù)。
目前測(cè)速的方法有很多種,如:霍爾傳感器測(cè)速、紅外反射式光電測(cè)速、測(cè)速發(fā)電機(jī)、光電傳感器測(cè)速等等。通過(guò)多次試驗(yàn),霍爾測(cè)速法需加磁鋼而且間距不好控制,因此精度不高。測(cè)速發(fā)電機(jī)體積大、不易安裝,而且重量大,增大了電機(jī)負(fù)載,而且額外增加的ADC模塊也不適合;而光電傳感器檢測(cè)易受光源影響需加固定光源,因此也不能滿足要求;本文最終選擇了編碼器測(cè)速。
4 軟件設(shè)計(jì)
4.1 路徑識(shí)別
目前智能車(chē)使用比較多的路徑識(shí)別方法是通過(guò)確定跑道兩邊黑線的位置,通過(guò)求均值提取中心線的方法進(jìn)行路徑識(shí)別,所得到的中心線還需要進(jìn)行曲率計(jì)算來(lái)確定是直道還是彎道。這種路徑識(shí)別算法對(duì)圖像的質(zhì)量要求比較高,增加了濾波的難度,同時(shí)編程比較復(fù)雜,數(shù)據(jù)運(yùn)算量也比較大。
本文并沒(méi)有采用中心線提取的路徑識(shí)別算法,而是采用“全白”算法,“全白”算法指的是當(dāng)所提取的圖像信息全部為白色的時(shí)候,認(rèn)為是當(dāng)前路況為直道[4]。
首先將采樣的120列圖像分為兩部分:一部分是0~59,另一部分是60~119。將圖像分成左右兩個(gè)部分,是因?yàn)榕艿烙袃蓷l黑線分別在左右兩端,這樣分割可以保證每一部分各有一條黑線。由于單片機(jī)是逐行接收數(shù)據(jù),為了提高整個(gè)系統(tǒng)的響應(yīng)速度,沒(méi)有必要對(duì)所采樣的40行數(shù)據(jù)都要進(jìn)行判斷,只需對(duì)其中的幾行進(jìn)行判斷即可。本文選擇判斷三行,這樣既可以減少圖像噪點(diǎn)所帶來(lái)的信號(hào)采集誤差,也可以使單片機(jī)能夠及時(shí)處理[5]。
當(dāng)攝像頭采集到原始圖像后,本文采取“縮列”的方式來(lái)減少梯形失真對(duì)整個(gè)系統(tǒng)的影響,以0~59列為例,若當(dāng)前路況是直道,則反映到圖像上應(yīng)該是一條斜線且前端偏向圖像中心,所以只要是直道的情況下0~59列上一定有黑線。最終本文采用了“不全列”掃描法,“不全列”掃描法是在0~59、60~119這兩部分,只掃描其中的部分列,只要保證該部分列有黑線,即認(rèn)為該范圍內(nèi)有黑線。最終得出如下數(shù)據(jù):在0~59列的左側(cè)圖像掃描27~32列,在60~119列的右側(cè)圖像掃描75~85列,而行數(shù)掃描4、5、6行。
根據(jù)得到的行、列數(shù)據(jù)進(jìn)行路徑識(shí)別。首先要先選定一個(gè)閾值,本文經(jīng)過(guò)試驗(yàn)得出在閾值=100的時(shí)候,OV7620的成像情況比較理想,能夠很好地反映測(cè)試跑道情況。
4.2 舵機(jī)算法
彎道采用雙邊沿算法,采集到圖像中每一行的邊沿位置,并利用數(shù)組中存取兩個(gè)邊沿,進(jìn)而利用雙邊沿實(shí)現(xiàn)彎急走外道,彎緩走內(nèi)道。這樣的好處是:在彎急時(shí),由于車(chē)轉(zhuǎn)角比較大,車(chē)在大多數(shù)情況下會(huì)貼著內(nèi)道走,車(chē)輛行走的路徑的半徑比較小,一則轉(zhuǎn)彎的阻力非常大,二則程序中彎道減速非常大,這兩者的綜合結(jié)果是,車(chē)轉(zhuǎn)彎時(shí)車(chē)速非常慢,采用走外道的方法可以減弱這種狀況帶來(lái)的影響。在彎緩時(shí),由于這時(shí)車(chē)速比較快,車(chē)的轉(zhuǎn)角大,車(chē)的轉(zhuǎn)彎阻力也不大,轉(zhuǎn)向等狀況比較好,可以走內(nèi)道減少行車(chē)路徑的長(zhǎng)度節(jié)約時(shí)間。
本文方向采用PID控制,由于積分項(xiàng)會(huì)引起滯后,而舵機(jī)轉(zhuǎn)向?qū)?dòng)態(tài)響應(yīng)性能要求較高,合適的調(diào)節(jié)比例項(xiàng)也能夠很好地保證智能車(chē)行駛的穩(wěn)定性,故將積分系數(shù)IK置0。而由于攝像頭前瞻較遠(yuǎn),不需要通過(guò)微分項(xiàng)來(lái)提高動(dòng)態(tài)響應(yīng)能力,加上微分項(xiàng)易受干擾,故將微分系數(shù)DK置0。轉(zhuǎn)向控制只使用比例項(xiàng)進(jìn)行控制。將比例系數(shù)PK按智能車(chē)速度大小進(jìn)行分段,速度小時(shí)使用小的比例系數(shù),高速時(shí)使用大的比例系數(shù),這樣在速度較低時(shí)能保證智能車(chē)不切彎過(guò)度,速度快時(shí)能提高響應(yīng)速度[6]。
4.3 控制策略與算法
本文采用增量式PID算法用來(lái)控制步進(jìn)電機(jī)(對(duì)直流電機(jī)也可以采用),其實(shí)如果對(duì)控制有更高的要求或者干擾因素較多,也可以對(duì)PID算法做各種改進(jìn),比如用梯形法做數(shù)值積分以提高精度,將差分改成一階數(shù)字濾波等。本文在實(shí)際調(diào)試的過(guò)程中,遇到過(guò)由于編碼器采樣得到的脈沖上升下降沿不夠陡峭,使得速度采樣出現(xiàn)不穩(wěn)定和失真,但由于這些附加處理比較耗費(fèi)代碼的運(yùn)行時(shí)間,出于代碼效率和實(shí)際效果的比較,因此本文沒(méi)有采用這些改進(jìn)的方案[7]。
本文介紹了基于OV7620攝像頭尋跡的智能車(chē)算法的研究。該系統(tǒng)以Freescale 16位單片機(jī)MC9S12XS128作為系統(tǒng)控制處理器,采用基于攝像頭的圖像采樣獲取賽道圖像信息,通過(guò)邊沿檢測(cè)方法提取賽道黑線,采用增量式PID控制算法,通過(guò)速度傳感器對(duì)小車(chē)形成速度閉環(huán)的控制。在硬件方面包括了電源分模塊供電和驅(qū)動(dòng)電路等部分,軟件方面包括“全白”算法、“不全列”算法等,為無(wú)人駕駛汽車(chē)提出了一種新的思路。
參考文獻(xiàn)
[1] 程亞龍.基于CMOS傳感器的智能車(chē)路徑識(shí)別研究[J].機(jī)械制造與研究,2007,36(5)13-15.
[2] Freescale Sem iconductor, Inc. MC9S12DG128 Device User Guide[M]. 2007.
[3] SHOJI M. CMOS Digital Circuit Technology Prentic Hal1[Z].1988.
[4] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社(第2版)[M].2003 1-120.
[5] 夏良正.數(shù)字圖像處理[M].南京:東南大學(xué)出版社,1999.
[6] 李紹民.圖像傳感器OV7620在自主足球機(jī)器人中的應(yīng)用[J].國(guó)外電子元器件,2004(10):11-14.
[7] OmniVision Technologies, Inc.OV7620/OV7120 Specification[Z]. 2001.