數(shù)字形態(tài)學濾波器與智能車路徑記憶
引言
本文引用地址:http://m.butianyuan.cn/article/81348.htm “飛思卡爾”杯全國大學生智能車競賽規(guī)則明確指出,智能車在賽道上連續(xù)跑兩圈,并記錄其中最好的單圈成績,這使路徑記憶算法成為可能。如圖1所示,賽道記憶算法在第一圈以最安全的速度緩慢駛過一圈,并將賽道信息保存下來,第二圈根據(jù)保存下來的信息進行車速和轉角決策的相應最優(yōu)化,從而在第二圈取得好成績。無論智能車的傳感器前瞻距離有多遠,在跑圈時它都只能預測在一段有限距離內(nèi)賽道的情況。而采用賽道記憶算法的智能車,在第二圈時已對整個賽道有了全面的認識,從而在相同條件下,將比不使用賽道記憶的智能車更具優(yōu)勢。
第一圈準確記憶賽道信息是第二圈控制策略的基礎,是比賽成敗的關鍵。但是在第一圈中不論控制策略如何優(yōu)秀,賽車總會或多或少的偏離賽道,舵機的轉角信息總會出現(xiàn)一定程度的毛刺和擾動等粗大誤差,其幅值足以引起處理器的誤判。如果不加處理直接應用于第二圈控制,會對賽車造成嚴重干擾,不能以極限速度跑完比賽或者沖出賽道。通常的處理方法有兩種:一是通過閾值比較丟棄干擾值,但同時賽道信息也會同干擾信息一起被丟棄;二是通過低通濾波將干擾平均到多個位置,但同時破壞了賽道原始信息,而且在干擾幅值很大的時候效果也不是很明顯。
數(shù)學形態(tài)學(Mathematical Morphology)是一種新型的數(shù)字圖像處理方法和理論,其主要內(nèi)容是設計一整套的變換(運算)、概念和算法,用以描述圖像的基本特征。提供了非常有效的非線性濾波技術,該技術只取決于信號的局部形狀特征。因此,它在諸如形狀分析、模式識別、視覺校驗、計算機視覺等方面,要比傳統(tǒng)的線性濾波更為有效。
算法的選取與實驗結果對比
數(shù)學形態(tài)學的運算以腐蝕和膨脹這兩種基本運算為基礎,引出了其它幾個常用的數(shù)學形態(tài)運算。數(shù)學形態(tài)學中最常見的基本運算只有七種,分別為:腐蝕、膨脹、開運算、閉運算、擊中、細化和粗化,它們是全部形態(tài)學的基礎。它們的定義如下:
設X代表一個數(shù)字圖像,我們假定該圖像是二值的,即取值只有1或0,則X表示一個二進制信號集合,B是一個簡單的緊集合,稱為“結構元素”。X被B膨脹和腐蝕的結果可以分別定義為:
在數(shù)字圖形處理領域中,數(shù)學形態(tài)學主要用于非線性變形,它可以局部地修改信號的幾何特征,并提供有關信號的幾何特征信息。根據(jù)不同的信號的形態(tài)特征,可以采用不同的數(shù)學形態(tài)學運算對信號進行處理,這些數(shù)學形態(tài)與運算都被視為數(shù)學形態(tài)濾波器。在這種應用方法中,每一個信號都被視為適當?shù)木S數(shù)的歐幾里德空間中的集合。數(shù)學形態(tài)濾波器被定義為集合的運算,它使信號的圖形變形,以提供關于其幾何結構的數(shù)字化信息。對于被視為集合的二進制信號,腐蝕、膨脹、開運算和閉運算是最簡單的形態(tài)運算。這些濾波器還可以引申到多維信號中去。此時,形態(tài)濾波器利用的是灰值圖的數(shù)學形態(tài)運算的定義。下面將探討如何將數(shù)學形態(tài)濾波器應用到舵機轉角信號(一維數(shù)字信號)的處理中,實現(xiàn)去除脈沖噪聲和減小擾動,以及在單片機上編程實現(xiàn)和快速運算的方法。
數(shù)學形態(tài)濾波器通常是用在二維圖形的處理,為把數(shù)學形態(tài)濾波器推廣到一維的信號的處理中,下面再介紹一下腐蝕、膨脹、開運算和閉運算這一個基本運算在一維信號處理中的定義:
設H、K分別為h[n]和k[n]的定義域,長度分別為N和M,一般N>M。H和K均為整數(shù)集合。
h[n]指包含舵機轉角信號的數(shù)字化序列,k[n]指結構元素序列。
h被k腐蝕:
采用數(shù)字形態(tài)濾波方法,還要選用合理的算法。其中,如何選取模板序列的長度是關鍵,如果模板序列過長會將有用信號當作噪聲濾除,過短則達不到濾除噪聲的目的。在采樣速率一定的情況下,序列的長度與時間成正比,這要求模板的長度要小于模型車的最小轉彎時間,大于舵機擾動的最長時間。第一圈讓模型車勻速通過,這樣處理有兩個優(yōu)點:
1) 可以固定最小轉彎時間,從而確定模板的長度。非勻速通過時速轉彎時間不定,要求模板長度可變,從而造成后續(xù)處理復雜,穩(wěn)定性不高。
2) 采樣序列的順序可以直接轉化為位移量,便于后續(xù)控制策略處理。相對于非勻速通過速度與時間乘積得到的位移,直接轉化得到的位移更準確(在標準的韓國賽道上,實驗模型車直接轉化得到的賽道長度誤差小于5cm,速度與時間乘積得到賽道長度誤差在10cm以上)。
實驗系統(tǒng)在圖2所示的賽道上,智能車對賽道信息的采樣速率為200Hz,以1.5m/s的速度勻速跑完第一圈的數(shù)據(jù)如圖3所示。可以看到在彎道中,舵機的轉角信息存在著嚴重的毛刺和擾動,不能直接用于第二圈的控制策略。圖4為matlab中采用3階巴特沃茲濾波處理后的結果,干擾的抑制效果仍然不理想,而且運算量偏大,單片機難以承受。圖5為采用形態(tài)學濾波處理后的數(shù)據(jù),賽道信息完整準確,可以較好的應用于后續(xù)控制策略。
圖2 實驗系統(tǒng)采用的賽道
圖3 第一圈記錄的賽道信息
圖 4 3階巴特沃茲濾波器處理后數(shù)據(jù)
圖5 形態(tài)學濾波處理后的數(shù)據(jù)
數(shù)學形態(tài)濾波的快速算法
由于數(shù)學形態(tài)濾波器只由加法、減法和比較運算構成,其運算相對簡單,因此,它很適合于在計算功能相對較弱的單片機上應用并能取得很好的效果。以往單片機由于受存儲容量、計算速度及字長的限制而使大多數(shù)的數(shù)字濾波器較難實現(xiàn),而形態(tài)濾波器則為單片機應用數(shù)字濾波器代替以往的模擬濾波器提供了一條新的途徑。
由腐蝕的定義可知,欲計算f(n)的腐蝕值,需要知道該點前w(w為結構元素的寬度)點的數(shù)據(jù);而要計算f(n)膨脹后的結果,則需要知道該點后w點的數(shù)據(jù)。由于運算是一個腐蝕運算接著一個膨脹運算后得到的,在長度為L的數(shù)據(jù)中只有從第w點到第(L-w+1)點,才可以得到開運算的結果。
如圖6所示,我們定義一個模板序列,該序列的長度和結構元素的寬度相同。該模板的初始值由前w個點的腐蝕值組成。以第n點為例,沿該點向前的方向對模板序列的值進行膨脹運算,運算的結果即為該點的開運算的結果。同時,沿該點向后的方向繼續(xù)進行腐蝕運算,得到第(n+1)點的腐蝕值。將(n+1)點的腐蝕值作為模板序列的最后一個點,并將模板序列前(w-1)點順次向前移動一個位置。更新后的模板值即可用來做 (n+1)點的膨脹運算,得到在(n+1)點的開運算值。如此繼續(xù)下去,就可完成全部的開運算。在做閉運算也可采用類似的方法來提高計算的速度。
圖6 數(shù)學形態(tài)濾波快速算法
這樣,對長度為N的一段數(shù)據(jù),用M個零作為其結構元素進行處理時,當采用一般方法進行計算,需要進行2×M×N次的比較運算。而當采用快速算法時,能夠在比較最大值的同時得到最小值,減少(N-M+1)×M次比較運算,使程序的執(zhí)行速度提高了近一倍,而且,由于采用這種快速算法,可以實現(xiàn)路徑記憶信息的實時處理,很大程度上方便了第二圈控制策略的制定,因此,它使得形態(tài)濾波這種方法更加適合應用于路徑信息的處理中。
實驗及結論
通過對不同傳感器方案(光電管和CCD)的智能車在不同賽道多次實驗發(fā)現(xiàn),對于光電管方案和CCD方案的智能車,賽道記憶算法都能一定程度上提高第二圈速度。智能車采用形態(tài)學濾波算法處理賽道記憶數(shù)據(jù)后,不但行駛的穩(wěn)定性、準確性有了較大的提升,而且沒有大幅增加MCU的資源消耗,同時可以支持復雜的控制策略。上述方案具有很強的通用性,適用于不同傳感器方案、不同控制算法的智能車。
評論