謝雨軒,車馳東
(上海交通大學 船舶海洋工程國家重點實驗室,上海 200240)
空間聲源定位是噪聲與振動控制領域中的一個重要問題。波束形成技術是一項處理陣列信號的技術,應用于聲吶、雷達等領域,傳統波束形成技術需要傳感器數量多,計算復雜,一般是針對聲源離接收點較遠的情況。對于船艙、車輛內部這種聲源離接收點較近的情況,若采用較少的傳感器,運用傳統的波束形成算法,對于多點聲源工況的聲定位,不能取得很好的結果。
Yang-Hann Kim等較系統地闡述了傳統波束形成算法[1]。所謂波束形成(beamforming)算法是運用一個掃描向量(scan vector)和實驗結果在空間域上進行內積,在每個方位上能得到一個歸一化的“波束形成能量”,觀察該能量大小在空間方位上的分布,能量大的方位即聲源的方位。基于此算法,許多學者在不同工況下進行了算法改進、陣列改進等相關研究。P.Chiariotti等運用了平均波束形成方法來消除噪聲,對車內噪聲進行試驗[2]。Alaa Abdeen等研究了圓形陣列的精確性和實時性能,對單點源進行測試并得到較好的結果[3]。從眾多文獻的方法可以看出目前的相關研究存在兩個局限性:一是需要的傳感器數量較多,一般在25個以上,才能得到較為符合實際的結果,二是大部分文獻都采用單點聲源作為例子,并不能說明多點聲源的情況。
李雷等將遺傳算法應用到天線陣信號傳輸的波束形成算法中,證明了遺傳算法和波束形成算法結合的可能性[4]。遺傳算法是一種全局概率優化算法,是數值解而非解析解,對于常規方法無法求解的非線性方程組,只要給定較準確的解析域,基于其全局收斂特性,能得到較為準確的結果。羅亞中等在收斂可靠性、計算成本方面對于遺傳算法解非線性方程組的優勢進行了論證[5]。
本文則采用改進掃描向量的波束形成非線性方程組算法,運用有限傳感器采集的信號,按照平面聲源理論列出非線性方程,通過參數優化,運用遺傳算法解出常規方法不好求解的非線性方程組,再運用波束形成算法在空間域上解出“波束形成能量”相對于空間角度的分布,從而對聲源定位。
若聲源S到傳感器陣列的距離L遠大于傳感器的間距d,且其間距大于聲波的波長λ(即當L>>d并且d>λ),此時傳感器陣列收到關于聲源S的聲信號可近似地看作平面波,這是波束形成理論的基本假設。
單一聲源定位模型如圖1、圖2所示,其中θ為聲源與陣列垂直面的夾角(方位角),ω為聲頻率,相鄰傳感器的聲程差為dsinθ。

圖1 平面波示意圖

圖2 負載陣列計算示意圖
在聲源定位中,由m個傳感器構成的陣列的實測信號向量為

其中pi(ω)為第個傳感器測得的響應。
根據波束形成理論,當單一聲源S的方位角為θ時,可將第i個傳感器的理論響應定義為掃描矢量(scan vector)

其中m為傳感器的個數,φ為初相位為響應時間差,c為聲速。
由全部掃描矢量構成理論響應列陣

定義“波束形成能量”

β的大小反應了實測響應信號和理論響應信號的相關程度。對于某個θ,通過改變φ,將得到的最大的β作為該θ對應的β,通過改變θ,可以計算出β隨θ的變化(掃描),而當β最大時對應的θ即是聲源所在的可能性最大的方位。
上述方法對于單一點源的定位可得出較好的結果,但隨著源個數的增多,采用式(2)作為掃描向量和實測值進行內積會造成很大誤差。這是因為,波束形成相當于以掃描向量為基礎特征對波形進行特征識別,式(2)為單個正弦波,反應的是單點源,而多點源工況下采集到的數據波形是不同正弦波的疊加,與單個正弦波形狀相差很大。
對于多個源的情況,需對傳統波束形成算法進行改進。假設n個源的方位角、幅值和初相位分別為θk,Ak和φ(kk=1,2,3…n。k通常根據方位角大小依次編號),這時第i個傳感器的理論響應實際是n個聲源作用的矢量疊加,因此將掃描向量改變為

基于改進掃描向量表達式(5),可利用2.1小節所述方法定義“波束形成能量”,并通過多維掃描進行聲源定位。但是隨著聲源數目增多,計算量將幾何增長。這是因為對于n個源有3n-1個掃描維度,分別是n-1個Ak維度,n個θk維度和n個φk維度,計算量過大且易引起誤差。
為了克服這一問題,本文采用了一種簡化的分步計算方法:首先基于遺傳算法,利用各傳感器響應,求解出各源的幅值,并得到方位角和初相位與參考源參數(通常取θ1、φ1)的相對關系,如此可將3n-1維掃描簡化為關于θ1、φ1的二維掃描,參照2.1小節單一源的波束形成進行識別。
利用m個傳感器定位n個點聲源,每個傳感器的響應均為n個正弦信號的矢量疊加,如圖3所示。第i個傳感器對相鄰兩個(第k和第k+1個)聲源響應的相位差Δδ(ii=1,2,3…,n-1)可以表示成

αk和γk分別表征相鄰聲源的初相位差以及到第i個傳感器的聲程差引起的相位差。

圖3 多聲源疊加示意圖
各傳感器的總響應可以表示為

將式(6)、式(7)代入式(8),再將式(8)代入式(9),其中為實測值為圖2中第i個傳感器的響應幅值為圖2中第i個傳感器相對于第1個傳感器的相位差。通過式(9)的實部和虛部可列出由2m-2個方程組成的方程組,用于求解3n-2個未知數,理論上當2m≥3n時,方程組可解。
對于上述非線性方程組,常規求解方法難以求解,本文采用遺傳算法求解。
遺傳算法是一種全局最優化算法。本文求解流程圖如圖4。
解出αi、γi、Ai之后,只要確定θ1和φ1,即可確定所有的參數。
對θ1、φ1進行掃描,將掃描結果進行疊加,即可得到基于改進算法的“能量-角度”曲線。
觀察“能量-角度”曲線,得到聲源所在的方位。
為了驗證改進算法的有效性,在半消聲室內進行聲源定位實驗,見圖5。聲源和接受裝置的布置如圖6所示。

圖4 遺傳算法流程圖

圖5 實驗室示意圖

圖6 試驗布置示意圖
所采用的聲源為兩個小型揚聲器,由信號發生器提供正弦噪聲信號。接受裝置為一Y型三向傳感器陣列,每列設5個電容傳聲器,見圖7、圖8。實驗中兩個聲源在不同的工況(間隔距離)下發出頻率為300 Hz的噪聲信號,由傳感器陣列接受信號,分別按傳統及改進波束形成算法進行處理后進行比較。實驗工況見表1。
各傳感器測得的時間信號經濾波后得到圖9、圖10所示的曲線,橫坐標為時間,縱坐標為聲壓幅值。四條曲線反應了相鄰四個傳感器的信息,可用于計算傳感器之間的相位差和幅值差。

圖7 陣列正視圖

圖8 陣列側視圖

表1 工況表

圖9 時間信號曲線整體

圖10 時間信號曲線局部
圖11至圖14、圖15至圖18所示的分別是運用傳統算法和改進算法時工況一的定位結果,其中圖11至圖13、圖15至圖17分別是三個陣列“波束形成能量”隨方位角的掃描結果,圖14、圖18分別為經三個方向的“波束形成能量”處理后合成的聲源定位效果圖。

圖11 工況一陣列一能量(傳統)

圖12 工況一陣列二能量(傳統)

圖13 工況一陣列三能量(傳統)

圖14 工況一定位結果(傳統)
圖19至圖22為工況二、三時兩種算法定位效果的比較。為簡便計,這兩個工況下的能量分布省略。
定義定位的相對誤差η來表示聲源定位結果的準確度。

圖15 工況一陣列一能量(改進)

圖16 工況一陣列二能量(改進)

圖17 工況一陣列三能量(改進)

圖18 工況一定位結果(改進)

其中Δs表示定位點與聲源點的圖像距離,S表示定位圖像的圖像尺度。相對誤差統計見表2。

圖19 工況二定位結果(傳統)

圖20 工況二定位結果(改進)

圖21 工況三定位結果(傳統)

圖22 工況三定位結果(改進)
由圖14、圖18的比較及表2中的結果可見:在兩個聲源相聚較近時,等效于單一聲源,兩種算法定位結果基本一致。
由圖19、圖20的比較、圖21、圖22的比較以及表2的結果可見:當兩個聲源的距離增大時,改進算法可以有效提高定位精度,并準確定位多個源的位置。

表2 定位相對誤差
針對傳統波束形成算法的局限性,提出改進掃描向量對多點源噪聲進行定位。基于遺傳算法對多源參數的相互關系進行求解,大大降低掃描維度,簡化計算。通過實驗,比較了兩種算法的定位效果。由比較可見:當多個聲源相距較近的時候,這些源等效于單一點源,兩種算法定位結果基本一致;但當聲源相互距離增大時,改進算法可以有效提高定位精度,從而驗證了其有效性。