《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于OV7620循跡的智能車算法研究
基于OV7620循跡的智能車算法研究
來源:微型機與應(yīng)用2013年第17期
于豐華,雷宇橋,胡玉杰,朱鳳武
(吉林農(nóng)業(yè)大學 工程技術(shù)學院,吉林 長春 130118)
摘要: 介紹了智能車模型系統(tǒng)。以MC9S12XS128微控制器為核心控制單元,通過OV7620數(shù)字攝像頭檢測賽道信息,并對所采集到的圖像進行二值化,提取兩邊黑色引導(dǎo)線,用于路徑識別;通過光電編碼器檢測模型車的速度,使用經(jīng)典PID控制算法控制舵機的轉(zhuǎn)向和驅(qū)動電機的轉(zhuǎn)速。
Abstract:
Key words :

摘  要: 介紹了智能車模型系統(tǒng)。以MC9S12XS128微控制器為核心控制單元,通過OV7620數(shù)字攝像頭檢測賽道信息,并對所采集到的圖像進行二值化,提取兩邊黑色引導(dǎo)線,用于路徑識別;通過光電編碼器檢測模型車的速度,使用經(jīng)典PID控制算法控制舵機的轉(zhuǎn)向和驅(qū)動電機的轉(zhuǎn)速。
關(guān)鍵詞: OV7620;算法;路徑識別;XS128

 當今汽車產(chǎn)業(yè)發(fā)展非常迅速,但隨之帶來的城市交通擁堵、交通事故也隨之增加。有統(tǒng)計顯示80%以上的交通擁堵和交通事故是人為原因造成的,隨著汽車飽有量越來越多如何解決這些問題就顯得十分重要,于是智能汽車算法的概念近些年被提出作為解決上述問題的一種方法。本文介紹了以O(shè)V7620數(shù)字攝像頭來采集路面信息,以XS128單片機作為控制核心,進行圖像處理、路徑識別并因此來控制電機轉(zhuǎn)速和舵機轉(zhuǎn)向的模擬自動駕駛汽車的研究[1]。
1 系統(tǒng)概述
 自動駕駛的智能車應(yīng)具有良好的自主道路識別能力和穩(wěn)定性,并能以較快的速度行駛以及穩(wěn)定的轉(zhuǎn)向能力。本文的自動駕駛智能車系統(tǒng)的設(shè)計主要包括以下兩部分:(1)自動駕駛智能車控制器的硬件電路設(shè)計,調(diào)整和改進模擬測試車模的機械結(jié)構(gòu),最大限度地發(fā)揮車模的機械性能。(2)結(jié)合軟件算法,使小車轉(zhuǎn)向準確、穩(wěn)定,能夠安全通過各種彎道和十字交叉路口,最大限度地模擬現(xiàn)實中的道路。同時在保證可靠運行的前提下,電路設(shè)計盡量簡潔緊湊,以減輕系統(tǒng)負載,提高自動駕駛智能車的靈活性,并以穩(wěn)定性為首要前提,實現(xiàn)車輛的快速運行。作為能夠自動識別道路運行的自動駕駛智能汽車,信息處理與控制算法至關(guān)重要,主要由運行在XS128單片機中的控制算法來完成。因此,控制算法的設(shè)計是本文的核心部分。
測試跑道采用普通白色KT板,寬度為50 cm,KT板兩邊各有約2.5 cm的黑色膠帶。如圖1所示。

2 系統(tǒng)的硬件設(shè)計
2.1 圖像傳感

 目前以圖像傳感器作為智能車路徑識別采集系統(tǒng),應(yīng)用比較多的圖像傳感器主要分為CCD和CMOS兩大類。CCD攝像頭具有對比度高、動態(tài)特性好的優(yōu)點,但需要工作在12 V電壓下,對于整個系統(tǒng)來說過于耗電,并且電路設(shè)計較為復(fù)雜,成本相對較高;CMOS攝像頭體積小,耗電量小,圖像穩(wěn)定性較高,電路設(shè)計簡單,工作在5 V電壓下即可,不用另作升壓電路,減少了設(shè)計難度。因此,經(jīng)過實驗論證之后決定采用CMOS攝像頭。本文路徑識別系統(tǒng)的信號采集部分所使用的傳感器為Omni Vision公司的CMOS圖像傳感器,CMOS攝像頭又分為數(shù)字和模擬兩種,而數(shù)字攝像頭和模擬攝像頭的區(qū)別在于模擬攝像頭在接入單片機之前需要加A/D轉(zhuǎn)換芯片,用來將模擬攝像頭采集的模擬信號轉(zhuǎn)換成能被單片機所識別的0~5 V電壓。數(shù)字攝像頭則可以直接將信號線連接到單片機,減少了單片機對A/D轉(zhuǎn)換的編程。本文采用OV7620數(shù)字攝像頭采集測試跑道的路徑信息,為路徑識別提供輸入信號[2]。
 數(shù)字攝像頭OV7620可以直接輸出8路數(shù)字圖像信號,簡化主板硬件電路的設(shè)計,總有效像素單元為664(水平方向)×492(垂直方向)像素;內(nèi)置10位雙通道A/D轉(zhuǎn)換器,輸出8位圖像數(shù)據(jù);具有自動增益和自動白平衡控制,能進行亮度、對比度、飽和度、Y校正等多種調(diào)節(jié)功能;其視頻時序產(chǎn)生電路可產(chǎn)生行同步、場同步、混合視頻同步等多種同步信號和像素時鐘等多種時序信號;工作功耗<120 mW,待機功耗<10 μW,能夠滿足本系統(tǒng)測試識別的要求。OV7620的有效像素為664×492,但實際處理時無法處理這么多的數(shù)據(jù),同時也沒有必要處理這么多的數(shù)據(jù)。通過串口采集圖像進行分析論證,采集40行120列作為圖像信號輸入。
 首先將圖像通過奇、偶場信號輸出,即隔行采集的方法得到一場數(shù)據(jù),若是采奇數(shù)行稱為奇場信號,若是采集偶數(shù)行則稱為偶場信號。奇場和偶場所采集的圖像是一樣的,只要用奇、偶其中一場就可以完成系統(tǒng)識別的要求。
 一場圖像的行數(shù)為246行,要從中提取40行作為本文模型車路徑識別系統(tǒng)的有效處理行,一場圖像的前15行左右為行消隱區(qū),16行之后為有效行。本文以17行做為圖像信號采集的第一行,由于OV7620攝像頭近處圖像看的比較清楚,遠處圖像看的比較模糊,為了能夠更好地反映測試跑道的情況,采取不等間距采行法,即從間隔1行到間隔6行,形成近處采集的行數(shù)少,遠處采集的行數(shù)多,最終所采集行數(shù)如表1所示。

 列數(shù)采用等距采集,采取隔4列提取一列的方式,最終通過行和列的采集得到40(行)×120(列)的圖像信號,作為本文模型車路徑識別算法的圖像輸入信號。
2.2 系統(tǒng)整體框圖
 由以上的分析確定系統(tǒng)的總體方案:采用CMOS攝像頭進行路徑檢測,舵機實現(xiàn)車輛的轉(zhuǎn)向控制,速度閉環(huán)控制方式對車輛速度實施精確控制。系統(tǒng)的整體框圖如圖2所示。

2.3.2 重心調(diào)整
 汽車在其他要素穩(wěn)定的情況下,車體重量對于車的加減速性能有著至關(guān)重要的影響,因此本文的機械設(shè)計中,在布置自動駕駛模型車的傳感器支架和設(shè)備時,應(yīng)該盡量減少不必要的配置,使車總重盡量減輕。車體重心高低主要影響車身運動中的穩(wěn)定性,對于拐彎的平滑性及穩(wěn)定性有很大的影響。在車體調(diào)整以及減輕車體總重量采用以下幾點:(1)將測試模型車的前后結(jié)合懸掛拆掉,僅保留前后車體連接的金屬片,并用膠體加固。這樣已經(jīng)足夠模型測試車轉(zhuǎn)向時候的平衡。(2)將車上各種設(shè)備盡量布置在車體轉(zhuǎn)動中心上,有利于車體在拐彎時的響應(yīng),車輛不易側(cè)翻。比如將電池移動到車子前部,將電路板放在靠后的位置,整車的重心基本上在中間位置。(3)為了降低整車重心,本文嚴格控制攝像頭傳感器及其安裝架的重量。本文采用了小巧的OV7620攝像頭,重量輕但卻能夠滿足采集圖像的精度。設(shè)計了輕巧的鋁合金CMOS夾持組件,便于攝像頭的拆卸,并采用了碳纖維管作為安裝傳感器的主桿,這樣不僅重量輕而且剛度也能達到要求[3]。
3 系統(tǒng)電路設(shè)計
3.1 電源模塊

 本文所設(shè)計的系統(tǒng)總電源供應(yīng)來自7.2 V大容量鎳鎘電池,但是單片機最小系統(tǒng)和一些芯片都需要5 V的電源,SD卡和無線調(diào)試模塊需要3.3 V低壓,伺服電機工作電壓范圍在4 V~6 V之間,CMOS攝像頭經(jīng)過改裝應(yīng)用5 V供電,驅(qū)動電路需要5 V的電源,直流電機需要7.2 V電池直接供電,圖5為系統(tǒng)的穩(wěn)壓模塊。

3.2 電機驅(qū)動
 電機控制從控制方法上可以分為開環(huán)控制和閉環(huán)控制兩種。開環(huán)控制在用法上比較簡單,只需考慮輸出,不需要反饋信號,使用比較簡單,但是速度控制的精度較低,不能適應(yīng)不同的環(huán)境。另一種為閉環(huán)控制,電機的速度控制信號輸出由需要的速度和電機的實際轉(zhuǎn)速兩者決定,即需要對電機的實際轉(zhuǎn)速進行采集和反饋。這種方法控制精度比較高,對賽道的適應(yīng)性較高。本文在電機驅(qū)動電路和硬件反饋電路上做了多組試驗,最終確定了一種硬件的閉環(huán)控制方案。根據(jù)電子調(diào)速器的硬件原理,采用8個mosfet搭建電機驅(qū)動電路。電機驅(qū)動電路并不使用全橋驅(qū)動,而是使用半橋。這種電路結(jié)構(gòu)的好處是它可以比全橋少用一半的MOSFET,或者說在相同體積內(nèi)可以多并聯(lián)一倍的MOSFET來提升驅(qū)動能力。此外,驅(qū)動電路中還有一個需要注意的地方,一般的MOSFET的開啟電壓至少在4.5 V以上,而負責剎車的MOSFET其參考點與電池正極是連通的,因此其開啟電壓至少在12 V以上。實際設(shè)計中,本文驅(qū)動電路使用了IRL2203作為驅(qū)動芯片,采用4并聯(lián)驅(qū)動、4并聯(lián)剎車的形式,使用IR2103作為mosfet driver,用MC34063升壓電路,升壓至12 V為mosfet driver供電。圖6為電機驅(qū)動電路。

 

 

3.3 速度檢測模塊
 本文自動駕駛智能車在調(diào)試中經(jīng)常遇到速度失控的情況,例如直道速度可以很高,而彎道速度過大就會出現(xiàn)側(cè)滑,最終沖出測試跑道。各種不同的道路組合后速度時常應(yīng)對遲緩,要想改變這種情況,速度的反饋檢測就成為了速度控制的重要任務(wù)。
 目前測速的方法有很多種,如:霍爾傳感器測速、紅外反射式光電測速、測速發(fā)電機、光電傳感器測速等等。通過多次試驗,霍爾測速法需加磁鋼而且間距不好控制,因此精度不高。測速發(fā)電機體積大、不易安裝,而且重量大,增大了電機負載,而且額外增加的ADC模塊也不適合;而光電傳感器檢測易受光源影響需加固定光源,因此也不能滿足要求;本文最終選擇了編碼器測速。
4 軟件設(shè)計
4.1 路徑識別

 目前智能車使用比較多的路徑識別方法是通過確定跑道兩邊黑線的位置,通過求均值提取中心線的方法進行路徑識別,所得到的中心線還需要進行曲率計算來確定是直道還是彎道。這種路徑識別算法對圖像的質(zhì)量要求比較高,增加了濾波的難度,同時編程比較復(fù)雜,數(shù)據(jù)運算量也比較大。
本文并沒有采用中心線提取的路徑識別算法,而是采用“全白”算法,“全白”算法指的是當所提取的圖像信息全部為白色的時候,認為是當前路況為直道[4]。
 首先將采樣的120列圖像分為兩部分:一部分是0~59,另一部分是60~119。將圖像分成左右兩個部分,是因為跑道有兩條黑線分別在左右兩端,這樣分割可以保證每一部分各有一條黑線。由于單片機是逐行接收數(shù)據(jù),為了提高整個系統(tǒng)的響應(yīng)速度,沒有必要對所采樣的40行數(shù)據(jù)都要進行判斷,只需對其中的幾行進行判斷即可。本文選擇判斷三行,這樣既可以減少圖像噪點所帶來的信號采集誤差,也可以使單片機能夠及時處理[5]。
 當攝像頭采集到原始圖像后,本文采取“縮列”的方式來減少梯形失真對整個系統(tǒng)的影響,以0~59列為例,若當前路況是直道,則反映到圖像上應(yīng)該是一條斜線且前端偏向圖像中心,所以只要是直道的情況下0~59列上一定有黑線。最終本文采用了“不全列”掃描法,“不全列”掃描法是在0~59、60~119這兩部分,只掃描其中的部分列,只要保證該部分列有黑線,即認為該范圍內(nèi)有黑線。最終得出如下數(shù)據(jù):在0~59列的左側(cè)圖像掃描27~32列,在60~119列的右側(cè)圖像掃描75~85列,而行數(shù)掃描4、5、6行。
根據(jù)得到的行、列數(shù)據(jù)進行路徑識別。首先要先選定一個閾值,本文經(jīng)過試驗得出在閾值=100的時候,OV7620的成像情況比較理想,能夠很好地反映測試跑道情況。
4.2 舵機算法
 彎道采用雙邊沿算法,采集到圖像中每一行的邊沿位置,并利用數(shù)組中存取兩個邊沿,進而利用雙邊沿實現(xiàn)彎急走外道,彎緩走內(nèi)道。這樣的好處是:在彎急時,由于車轉(zhuǎn)角比較大,車在大多數(shù)情況下會貼著內(nèi)道走,車輛行走的路徑的半徑比較小,一則轉(zhuǎn)彎的阻力非常大,二則程序中彎道減速非常大,這兩者的綜合結(jié)果是,車轉(zhuǎn)彎時車速非常慢,采用走外道的方法可以減弱這種狀況帶來的影響。在彎緩時,由于這時車速比較快,車的轉(zhuǎn)角大,車的轉(zhuǎn)彎阻力也不大,轉(zhuǎn)向等狀況比較好,可以走內(nèi)道減少行車路徑的長度節(jié)約時間。
本文方向采用PID控制,由于積分項會引起滯后,而舵機轉(zhuǎn)向?qū)討B(tài)響應(yīng)性能要求較高,合適的調(diào)節(jié)比例項也能夠很好地保證智能車行駛的穩(wěn)定性,故將積分系數(shù)IK置0。而由于攝像頭前瞻較遠,不需要通過微分項來提高動態(tài)響應(yīng)能力,加上微分項易受干擾,故將微分系數(shù)DK置0。轉(zhuǎn)向控制只使用比例項進行控制。將比例系數(shù)PK按智能車速度大小進行分段,速度小時使用小的比例系數(shù),高速時使用大的比例系數(shù),這樣在速度較低時能保證智能車不切彎過度,速度快時能提高響應(yīng)速度[6]。
4.3 控制策略與算法
 本文采用增量式PID算法用來控制步進電機(對直流電機也可以采用),其實如果對控制有更高的要求或者干擾因素較多,也可以對PID算法做各種改進,比如用梯形法做數(shù)值積分以提高精度,將差分改成一階數(shù)字濾波等。本文在實際調(diào)試的過程中,遇到過由于編碼器采樣得到的脈沖上升下降沿不夠陡峭,使得速度采樣出現(xiàn)不穩(wěn)定和失真,但由于這些附加處理比較耗費代碼的運行時間,出于代碼效率和實際效果的比較,因此本文沒有采用這些改進的方案[7]。
 本文介紹了基于OV7620攝像頭尋跡的智能車算法的研究。該系統(tǒng)以Freescale 16位單片機MC9S12XS128作為系統(tǒng)控制處理器,采用基于攝像頭的圖像采樣獲取賽道圖像信息,通過邊沿檢測方法提取賽道黑線,采用增量式PID控制算法,通過速度傳感器對小車形成速度閉環(huán)的控制。在硬件方面包括了電源分模塊供電和驅(qū)動電路等部分,軟件方面包括“全白”算法、“不全列”算法等,為無人駕駛汽車提出了一種新的思路。
參考文獻
[1] 程亞龍.基于CMOS傳感器的智能車路徑識別研究[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] 譚浩強.C語言程序設(shè)計[M].北京:清華大學出版社(第2版)[M].2003 1-120.
[5] 夏良正.數(shù)字圖像處理[M].南京:東南大學出版社,1999.
[6] 李紹民.圖像傳感器OV7620在自主足球機器人中的應(yīng)用[J].國外電子元器件,2004(10):11-14.
[7] OmniVision Technologies, Inc.OV7620/OV7120 Specification[Z]. 2001.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。