


摘 要:在全國大學生“飛思卡爾”杯智能汽車競賽的背景下,設計出一種能夠自動識別路徑、跟蹤賽道雙邊引導線的智能小車軟件控制系統。智能小車以飛思卡爾(Freescale)公司的MC9S12XS128為檢測和控制核心,根據不同的環境狀況動態確定黑白二值化閾值之后,對攝像頭采集到的圖像進行處理,從而準確判斷不同類型的賽道,進一步控制舵機和電機。使用舵機轉向閉環控制算法和電機速度閉環控制算法,結合經典的PID控制算法,實現直道加速、彎道減速的優化。智能小車最終可以在黑色雙邊引導線的白色背景賽道上自動識別路徑行駛。
關鍵詞:智能小車;MC9S12XS128;圖像處理;閉環控制;PID控制
中圖分類號:TP311 文獻標識碼:A
Abstract:Under the background of "Freescale" cup national college students smart car competition,design a control system software.Under this system,the smart car can automatically identify paths and trace the track of bilateral guide line.Tracking smart car system is designed based on the control chip of system of Freescale MC9S12XS128 MCU.After determine the black and white binarization threshold according to the different environmental conditions,run a series of processing on the images captured by the camera.Then,make an accurate judgment in the different shapes of the circuit to further control of steering gear and motor.Using steering gear steering closed-loop control algorithm and motor speed closed-loop control algorithm,combined with the classic PID control algorithm to achieve optimization of car was straight-line acceleration,deceleration in bend.Smart car could eventually automatically identify route which has the bilateral guide line of the white on black background and run steadily.
Keywords:smart car;MC9S12XS128;image processing;closed-loop control;PID control
1 引言(Introduction)
智能車控制系統的設計以汽車電子為背景,涵蓋自動控制、模式識別、傳感技術、計算機、機械與汽車工程等多門學科,是一項新興的綜合性技術。智能車系統是智能汽車的迷你版本,二者在信息提取及處理、控制系統構成和控制方案整定方面有諸多相似之處,可以說智能車系統是智能汽車良好的實驗平臺。
智能車系統主要包括三個大部分,分別為車模總體機械結構、硬件電路系統、軟件算法控制系統。如果說硬件是智能車行駛的基礎,那么程序算法就是靈魂。高效的程序則是智能車高速平穩自動尋跡的基礎。
2 系統總體設計(General design of system)
2.1 概述
智能小車控制系統采用飛思卡爾公司的16位單片機MC9S12XS128為檢測和控制核心[1]。以COMS數字攝像頭OV7620為路徑檢測傳感器,以歐姆龍500線編碼器為速度檢測傳感器,根據攝像頭檢測到的賽道信息[2],以及編碼器采集到的小車速度信息,基于XS128單片機通過智能小車軟件控制系統對小車進行舵機轉向和電機驅動的控制,使智能車系統達到所需的穩定性及快速性要求,從而實現小車的智能化行駛,如圖1所示。
2.1.1 需求規定
(1)在小車功能方面
最終完成的基于攝像頭傳感器的智能小車,要能夠做到在此軟件控制系統的支撐下,完成按規則繞賽道運行一周的任務。在準確識別賽道并穩定運行一周的基礎上[3],期望小車的速度越快越好,即完成比賽的用時越短越好。
(2)在小車性能方面
第一,要求智能小車軟件控制系統應具有良好的運行效率,行駛速度盡可能快,能夠快速準確判斷出不同類型的彎道,并及時躲避在賽道上的障礙物;第二,應具有良好的靈活性,使行駛速度、自身調整角度都可以靈活改變;第三,應提供良好的測試模式,使設計人員可以方便的觀察、調整的小車運行模式;第四,應具有良好的可擴展性,從而為日后升級系統提供方便。
2.1.2 運行環境
2.2 系統各模塊設計
2.2.1 基于核心板MC9S12XS128的主程序(main函數)設計
(1)流程圖(圖2)
PLL_Init( ):初始化鎖相環函數;
SCI_Init( ):串口初始化函數;
PIT_Init( ):PIT定時器中斷初始化函數;
PWM_Init( ):脈沖寬度調試模塊初始化函數;
PH_Init( ):初始化單片機PH口函數(用于接收編碼器測速信息);
OV7620_Init( ):初始化攝像頭函數(用于OV7620信息采集)。
2.2.2 圖像采集模塊
(1)流程圖(圖3)
(2)定義
存儲原始圖像矩陣的二維數組:Image_Data[ROW][LIN]。
(3)解釋
攝像頭是智能車的眼睛,我們將采用數字攝像頭進行賽道采集,在采集時,我們利用行、場中斷進行數據采集。在每次捕捉到40個行中斷之后,觸發一次場中斷,其中,在行中斷的中斷子函數中利用單片機讀出圖像數據。由于單片機的處理能力有限,所以不能對攝像頭的一場圖像中所有行的所有像素點都進行處理,但為了獲得理想的賽道信息和足夠的前瞻量,需要通過多次實驗,需要選擇出合適的行和每一行中需要采集的像素點數。最終,將所采集的數據存在一個二維數組中,得到原始的圖像矩陣,以便后續處理。
2.2.3 圖像處理模塊
(1)流程圖(圖4)
(2)定義
BEST_THRESHOLD( ):確定最佳黑白二值化閾值函數。
(3)解釋
在圖像處理模塊,為了能夠做到識別不同光線環境下的賽道,首先需要確定一個合適的黑白二值化閾值,確定閾值后,在保持原始圖像矩陣大小不變的前提下,對其進行均值濾波,在此算法基礎上對原始圖像進行二值化處理,從而達到降噪的目的,最終通過攝像頭的上位機獲取到賽道的二值圖像。
2.2.4 電機驅動模塊
(1)電機驅動模塊采取速度閉環控制原理,結構示意圖如圖5所示。
speed_error=setV-backV:本次速度的偏差值=設定速度值-編碼器讀回的小車實際速度值;
last_speed_error:上一次的速度偏差值;
pre_speed_error:上上次的速度偏差值;
derta_M:經過PID控制器處理過后的速度改變量。
(3)解釋
取三次速度偏差值,經過PID控制器的處理,得到處理后的速度改變量,作用在設定速度setV上,通過調整過后的PWM波來控制電機的轉動,使小車在不同類型賽道上行駛時有一個合適的速度。
2.2.5 舵機轉向模塊
(1)舵機轉向模塊采取運動方向閉環控制算法,結構示意圖如圖6所示。
Error[S_ROW]:原始偏差數組;
angle_error=E2:本次角度的偏差值=處理后的偏差值E2;
last_angle_error:上一次的角度偏差值;
pre_angle_error:上上次的角度偏差值;
derta_S經過PID控制器處理過后的角度改變量。
(3)解釋
通過獲取到的賽道信息,提取出賽道的中線,與圖像的中線進行比較,將每一行的偏差值存儲在數組Error[S_ROW]中,使用加權算法得到偏差值E2,取三次角度偏差值(指E2),經過PID控制器的處理,得到處理后的角度改變量,作用在舵機的參考零點上,通過調整過后的PWM波來控制舵機的轉向量。
2.2.6 調試模塊
為了能夠對編碼器采集到的小車速度以及攝像頭采集到的賽道圖像進行檢測,還需要完善調試檢測模塊。實際使用中,我們將成品藍牙模塊與USB-TTL模塊連接并連接至電腦,將另一個藍牙模塊連接至單片機的UART1組,即S2、S3口,該口定義為TXD、RXD,通過串口SCI接收與發送數據,接受到的數據我們通過上位機軟件,串口助手進行接收。所接收到的圖像如圖7所示(以十字路口的識別為例)。
3.1 PID控制算法
3.1.1 PID控制算法簡介
PID控制器是一種線性控制器,它根據給定值與實際輸出值構成控制偏差。將偏差的比例(P)、積分(I)和微分(D)通過線性組合構成控制量[4],對被控對象進行控制,故稱PID控制器,原理框圖如圖8所示。
在計算機控制系統中,使用的是數字PID控制器,控制規律為
式中,:采樣序號,=0,1,2,…;:第次給定值;:第次實際輸出值;:第次輸出控制量;:第次偏差;:第次偏差;:比例系數;:積分時間常數;:微分時間常數;:采樣周期。
3.1.2 增量式PID
由上文中公式可得
則
得增量式PID控制算法公式
可以看出由于一般計算機控制系統采用恒定的采樣周期T,一旦確定了KP、KI、KD,只要使用前后三次量值的偏差,即可由上式求出控制增量[5]。
3.2 圖像采集時如何躲避消隱區
在攝像頭進行圖像信息采集時會產生消隱區失真的問題,故使用延時函數,通過延時作用來跳過圖像采集時的消隱信號,保證圖像不失真。
3.3 黑白二值化閾值的確定
要想從原始圖像數組中分離出白色賽道、黑色邊界和藍色的底布,必須在程序上設置一個灰度的閾值,當像素點灰度值大于該閾值時為白色賽道,當像素點灰度值小于該閾值時為非賽道,所以要將此值設置在藍色底布和白色賽道之間。但是由于比賽場地燈光,以及底布藍色深淺的不同,所界定的閾值也應該相應的改變,所以采用動態閾值可以大大提高小車對比賽環境的適應性[6]。
在此采用最大類間方差法:對原始圖像矩陣,記為前景與背景的分割閾值,前景點數占圖像比例為,平均灰度為;背景點數占圖像比例為,平均灰度為。圖像的總平均灰度為;從最小灰度值到最大灰度值遍歷,當使得值最大時,即為分割的最佳閾值。
3.4 圖像降噪時的均值濾波算法
為了使獲取到的圖像信息更加準確,需要對原始的圖像進行降噪處理,在這里我們使用均值濾波算法。均值濾波的基本原理是用平均值代替原圖像中的各個像素值,即對待處理的當前像素點[7],選擇一個小窗口(如一個3×3的矩陣),該窗口由其近鄰的若干像素點組成,求窗口中所有像素點的平均值,再把該均值賦予當前像素點,作為處理后圖像在該點上的灰度,即為該模板中包含當前像素點在內的像素總個數。
在具體實現過程中,我們將在原始圖像矩陣中依次取3*3的矩陣,采用九宮格形式[8],將每一次計算的均值賦給該矩陣的左上角元素,得到處理過后圖像矩陣,根據動態設定的閾值進行二值化操作,得到最終的賽道的二值圖像。
3.5 電機驅動模塊Set_V的確定
由于在不同類型的賽道上小車行駛的速度不同,故設定值Set_V不能始終為一個固定值參與到電機控制環中。
解決方法:考慮到直道速度快,彎道速度較慢,建立Set_V
和E2之間的二次曲線的模型關系,即,其中,,使用MATLAB仿真結果如圖9所示。
3.6 賽道中線的提取
前提:規定白色為1,黑色為0。具體操作:提取二值化賽道圖像(圖10)的一行,從該行數組的第一個元素開始判斷,當連續的1達到一定個數時(暫時規定10個1為標準),則第一個檢測到的1所在的位置確定為Left;從該行數組的最后一個元素開始倒序判斷,同樣,當連續的1達到一定個數時,第一個檢測到的1所在的位置確定為Right,每行數組均進行此操作,將每一行的所在的位置進行存儲,得到賽道中線信息,并分別與圖像的中心線位置做差,得到的數據存儲到Error[S_ROW]即為原始偏差數組。
3.7 對原始偏差數組的加權處理算法
小車速度大小V對圖像遠近處偏差值權重大小的影響:車速慢時舵機不用提前打角,只需利用近處的圖像便可跑好,但是車速快時,由于舵機要提前打角,所以即使遠處的圖像不夠真實準確,對于快速行駛的小車來說遠處的圖像也顯得很重要。
因此,當獲取到原始偏差數組Error[S_ROW]后,需要通過加權處理,對數組中不同行的元素乘以不同的權值,最終得到較為準確的偏差量E2,該權值分配需滿足如圖11所示的關系。
圖11 對原始偏差數組的加權處理示意圖
Fig.11 The deviation of the original array weighting diagram
4 結論(Conclusion)
經過調試和檢測的結果證明,在基于MC9S12XS128的智能車軟件控制系統的作用下,小車能夠在黑色雙邊引導線的白色背景賽道上自動識別路徑平穩行駛。通過PID控制算法的優化,實現了直道加速、彎道減速的設想;在圖像采集時,使用延時函數在一定程度上解決了圖像消隱區失真問題;均值濾波的降噪處理對于采集到的圖像進行了進一步的完善;閉環控制算法更是保證了小車行駛的穩定性和快速性。相信通過進一步的探索與完善,這個智能小車軟件控制系統會得到越來越廣泛的應用。
參考文獻(References)
[1] Zhang.L.,Q.H.Song.Design of Smart Car Servosystem Based on Camera[J].Manufacturing Science and Technology,2012:5923-5927.
[2] Jiang.Z.J.,M.F.Wang,P.Guo.The Road Information Video Capture and Processing Research for Smart Car Based on CMOS Camera[J].Proceedings of 2009 International Conference on Information,Electronic and Computer Science,Vols I and II,2009:96-101.
[3] Ye.M.J.,C.H.Hu.Design of Electromagnetic Smart Car System[J].Mechanical and Electronics Engineering III,2012:343-346.
[4] 張飛飛,楊雪松.基于MC9S12XS128單片機的路徑圖像識別智能小車[J].甘肅科技,2013(13):12-14.
[5] 陶永華.新型PID控制及其應用──第一講PID控制原理和自整定策略[J].工業儀表與自動化裝置,1997(04):60-64;46.
[6] 孔巖,董奧,王勇.攝像頭型智能車的賽道類型處理[J].電子世界,2016(11):134.
[7] 王惠華,等.基于二值圖像連通域提取的圖像濾波方法[J].北京印刷學院學報,2015,06:39-41.
[8] 李旭東,廖中浩,孟嬌.基于CMOS攝像頭的智能車控制系統設計及實現[J].吉林大學學報(信息科學版),2013(04):414-418.
作者簡介:
李碧月(1996-),女,本科生.研究領域:電子信息工程.