李松凱,王海宇,張永洪,王明全
(東北大學 信息科學與工程學院,沈陽110004)
引 言
在現代社會中,設備智能化越來越重要,機器能幫助人類實現很多無法做到的工作,例如救援領域。以前,攝像頭主要用于記錄圖像、影像,但隨著數字圖像處理的快速發展,攝像頭獲取到的圖像數據經過算法分析能從圖像中獲取到大量信息數據,因此攝像頭也被應用到很多智能領域。
本文基于傳統智能車模型,引入攝像頭,能夠動態獲取路徑信息。以往應用攝像頭的智能車設備中,大部分通過攝像頭獲取圖像數據,通過軟件進行二值化提取,圖像處理算法獲取到控制信息,最后通過PID 算法控制車體運行。這種結構,軟件二值化會占用部分單片機性能,同時PID算法在智能車控制中存在不足之處,為此提出了一種新型的智能車結構方案。通過傳統CMOS動態獲取路徑信息,然后進行硬件二值化,采用硬件電路分擔單片機的工作;同時,對于PID的一些不足之處,本文提出了一種基于神經網絡算法的控制算法,有效解決了控制難題。
智能車的整體硬件方案由以下幾個部分組成:通過CMOS攝像頭OV7620結合硬件二值化電路完成賽道信息采集,結合K60單片機進行處理,采用PWM 技術結合舵機與電機完成小車的轉向與速度控制,并且整合編碼器完成了速度的閉環控制。系統的整體框架如圖1所示。

圖1 系統整體框架
OV7620數字攝像頭作為圖像采集模塊的芯片,這款攝像頭能夠直接輸出灰度圖像,更加利于后期開發。
由于小車使用7.2V/2 000mAh Ni-cd供電,而單片機系統、路徑識別的傳感器等均使用3.3V 與5V 的電源。編碼器需要5V 電源,電機則需要7.2V 電源直接供電,所以需要設計一個高效穩定的電壓轉換電路,電路圖如圖2所示。

圖2 電壓轉換電路的設計
OV7620采用5V 供電,由感光芯片、成像鏡頭以及一些外圍電路組成。當光線透過鏡頭照射到感光芯片上時,感光芯片就將其當前灰度值轉化成相應的電壓值,最終將視頻信號輸出到信號線上。而攝像頭視頻信號中除了包含圖像信號之外,還包括行同步信號、行消隱信號、場同步信號、場消隱信號以及槽脈沖信號、前均衡脈沖、后均衡脈沖等。因此,若要采集視頻信號,就必須通過視頻同步分離電路準確地把握各種信號之間的邏輯關系。本文使用了LM1881芯片對黑白電視信號進行視頻同步分離,得到行同步、場同步信號,如圖3所示。
對于硬件二值化方案,采用比較器,將輸入的信號進行電壓值判定,再進行二值化,最終將比較器輸出連接到單片機,此時單片機收到的只是二值化之后的數字信號,從而減輕了單片機的負擔。硬件二值化電路如圖4所示。

圖3 OV7620的視頻信號時序圖
在電機驅動模塊的設計方案中,有兩種可以使用:一種是通過BTS7960 半 橋 芯 片,使用兩片來搭成完整的電機驅動;另一種是通過MOS管來搭建驅動電路,使用4個MOS管以及外圍電路,構成H 橋電路對電機進行驅動。使用BTS7960半橋芯片方案的優點是外圍電路相對簡單,并且具有過熱保護的功能,使用MOS管搭建驅動電路的優點在于通過的電流大。在實際應用中發現,由BTS7960搭建的電路在車速達到2.5m/s的時候會出現過熱保護的情況,導致電機不能正常工作。所以本文最終選定使用MOS管搭建電機驅動模塊,如圖5所示。

圖4 硬件二值化電路
程序包括各個模塊的初始化、賽道圖像的采集與處理、圖像的畸變矯正、舵機與電機的PID控制、電機速度的采集,以及障礙、起跑線的檢測等,具體過程如圖6所示。
2.2.1 原始圖像的獲取及特點分析
在理解OV7620的時序之后,通過單片機的外部中斷引腳按照相應的時序檢測場中斷信號、行中斷信號、像素中斷信號,通過DMA 模塊可采集到相應的圖像,并且對采集的行數、列數進行調整,就能夠得到比較完整的原始圖像了。
采集到圖像后,需要對其進行處理以提取主要的賽道信息,這是由于賽道的路況復雜,以及現場光源的不確定性、賽道的反光等各種因素,圖像效果會大打折扣。因此,在軟件上必須排除干擾因素,對賽道進行有效識別,并提供盡可能多的賽道信息供決策使用。
由于攝像頭自身的特性,圖像會產生梯形式失真,使得攝像頭看到的信息不真實,因此需要利用賽道進行測量,通過矯正計算還原出真實賽道信息。原始圖像是經電路轉換得到的二維數據矩陣,遠處的圖像小,近處的圖像大,黑線為梯形狀。單片機通過硬件電路將每一行的黑白跳變點記錄下來,保存到數組里,通過遍歷所有的行和列就可以完成賽道邊沿的提取。

圖5 電機驅動模塊的電路設計

圖6 主程序流程圖
2.2.2 圖像的畸變矯正
由于采集到的原始圖像會有梯形失真或桶形失真,并不能反映賽道的真實信息,在經過測試之后,發現桶形失真對于賽道特征的判斷影響較小,所以最終方案是進行了梯形校正,分為水平校正與垂直校正。在通過攝像頭的高度、視野范圍的測量之后,最終完成了對圖像的畸變校正,效果如圖7所示。

圖7 原始圖像校正后效果圖
目前智能車的尋徑方式主要有兩種:一種為尋中線前進;另一種在直道時尋中線,進彎道后一直貼內道行駛。這兩種方法都有一定的問題:一方面,在拐彎時,無論是沿中線還是一直貼內道都不是最省時的過彎方式;另一方面,若在直道和彎道采用不同的處理方式,在臨界狀態下給出的控制量會劇烈波動,不利于系統的穩定。
為了避免這些問題,建立了一個數學模型:

其中,Y 為模型輸出,θ5i為圖像第5i行賽道的曲率,k5i為圖像第5i行的賽道的曲率的權重,m 為有效處理行的個數,e為車頭和賽道中心的偏差長度,k1為曲率系數,k2為偏差系數。
該 模 型 通 過 將 全 圖 信 息 綜合,體現了遠近不同位置的路況對智能車前進方向的影響,通過k5i保證了遠處路況對當前運動方向只是參考,而非起主導作用。通過除以有效處理行的個數m,保證了各種路況下θ的穩定。同時,模型通過使i≥6時,k5i<0,智能車實現了“外內外”的過彎方式,又通過k1θ與k2Δ 的加和使得智能車在走最快路徑的同時不偏離賽道。
最后提取了15 種路況信息帶入模型對系數進行逆推,將得出的模型應用在智能車上,取得了較好的效果。
2.4.1 舵機控制算法的設計
在經過矯正以及對路徑優化進行建模之后,得到的輸出量就可以用于舵機的控制,選用位置式PD 進行舵機的控制。一方面舵機經過實際測試不需要積分項就能實現較好的跟隨性;另一方面由于舵機的控制實際是開環的,并不能夠及時反映變化的趨勢。因此,微分項的引入能夠在一定程度上彌補對未來變化的預測,使得控制并不是很滯后。
同時,為了避免小車舵機的輸出超過范圍造成損壞,需要對舵機的輸出量設置死區,達到能夠讓小車平穩過彎的效果。
2.4.2 電機控制算法的設計
為了使小車速度更快、更穩定,電機的控制也尤為重要,并且需要將電機的控制與舵機的控制結合起來,比如小車在直線上需要加速,進入彎道時需要減速,出彎道需要加速等。由于攝像頭的前瞻滿足在小車運行的時候視野覆蓋較大的范圍,因此能夠對小車前方的賽道進行相應的判斷。
對于小車電機速度控制,采取的是增量式PI算法進行處理,基本思想是直道加速,彎道減速。將每場圖像得到的控制輸出量與PI參考速度值構成二次曲線關系。在實際測試中,小車直道和彎道相互過渡時加減速比較靈敏,與舵機轉向控制配合的較好。每20ms檢測一次小車的速度,計算出小車當前速度與期望速度的差值,并據此作出調整, 36 32 實際效果證明了小車可以實現在不同速度下的穩定運行。
結 語
本文討論了以K60單片機作為控制器載體,使用數字攝像頭OV7620作為獲取賽道圖像信息的傳感器,通過PID算法來實現對電機、舵機的控制。實驗證明,此設計硬件合理,軟件穩定高效,能夠實現對于小車的高速、穩定控制。
[1]卓晴,黃開勝,邵貝貝.學做智能車—挑戰“飛思卡爾”杯[M].北京:北京航空航天大學出版社,2007.
[2]邵貝貝.單片機嵌入式應用的在線開發方法[M].北京:清華大學出版社,2004.
[3]譚浩強.C程序設計[M].北京:清華大學出版社,2004.
[4]仇慎謙.PID 調節規律和過程控制[M].南京:江蘇科學技術出版社,1987.
[5]李寧,劉啟新.電機自動控制系統[M].北京:機械工業出版社,2003.