實(shí)驗(yàn)裝置和數(shù)據(jù)采集
數(shù)據(jù)是通過(guò)基于 STM32F103RE 的 AD、DA 采樣板來(lái)控制音響發(fā)送 Chirp 聲音信號(hào)和采集 MIC 接收到的聲音信號(hào)的。
實(shí)驗(yàn)中測(cè)試面包板
1. 直線(xiàn)滑軌
演示中所使用的滑軌長(zhǎng)度大約為 1 米,滑塊有效移動(dòng)距離為 0.9 米。通過(guò) ZIGBEE 無(wú)線(xiàn)控制命令控制滑塊做直線(xiàn)均勻運(yùn)動(dòng)。
設(shè)置在滑軌上的聲音傳感器
實(shí)驗(yàn)中的 Chirp 聲音信號(hào)是由單片機(jī)產(chǎn)生并通過(guò) DA 輸出給藍(lán)牙音箱的播放。信號(hào)從數(shù)字緩沖區(qū)通過(guò) DA 轉(zhuǎn)換成模擬信號(hào),聲音信號(hào)經(jīng)過(guò) AD 轉(zhuǎn)換為數(shù)字信號(hào)的速率為都設(shè)置為 10kHz。輸出和輸入聲音的緩存區(qū)的長(zhǎng)度為 2500,聲波時(shí)間長(zhǎng)度為 0.25 秒。
實(shí)際聲音的長(zhǎng)度為 2048,。因此在輸出和采樣前后各有 250 個(gè)數(shù)據(jù)點(diǎn)(大約 25ms)靜音時(shí)間。下圖給出了一個(gè)典型的發(fā)送聲音信號(hào)和接收到的聲音采集信號(hào)波形。
每個(gè)采集數(shù)據(jù)包里的數(shù)據(jù)波形
采集數(shù)據(jù)處理
在每個(gè)位置點(diǎn)都采集到相應(yīng)的發(fā)送和接受數(shù)據(jù),通過(guò)相關(guān)計(jì)算獲得時(shí)間延遲。
1. 發(fā)送和接收數(shù)據(jù)之間的互相關(guān)系數(shù)計(jì)算
計(jì)算每個(gè)數(shù)據(jù)包里的發(fā)送信號(hào)與接收信號(hào)之間的相關(guān)系數(shù),從而確定最大的峰值位置。下圖給出了一個(gè)典型的發(fā)送和接受信號(hào)的相關(guān)結(jié)果曲線(xiàn):
第一個(gè)數(shù)據(jù)包中發(fā)送和接收數(shù)據(jù)之間的相關(guān)系數(shù)
2. 相關(guān)系數(shù)的最大、最小位置與數(shù)據(jù)采樣之間的關(guān)系
下圖將每個(gè)數(shù)據(jù)包中相關(guān)系數(shù)的最大值點(diǎn)和最小值點(diǎn)的位置與麥克位置之間的繪制出來(lái)。
隨著數(shù)據(jù)序號(hào)的增多,對(duì)應(yīng)接收聲音的麥克位置遠(yuǎn)離音箱,相關(guān)系數(shù)的極值位置也在發(fā)生變化,整體上隨著采用序列的增多而線(xiàn)性下降,反映了麥克的位置是線(xiàn)性遠(yuǎn)離聲源的位置。
相關(guān)系數(shù)最大值最小值的位置與數(shù)據(jù)采用之間的關(guān)系
數(shù)據(jù)中最大值的位置基本上都是單調(diào)下降,只是在后期出現(xiàn)了略微的抖動(dòng)。但是最小值的位置出現(xiàn)過(guò)較大的波動(dòng)。這說(shuō)明最大值的位置用于確定延遲時(shí)間比較穩(wěn)定。
下圖顯示了相關(guān)系數(shù)最大值和最小值隨著采樣點(diǎn)位置之間的關(guān)系。隨著采樣點(diǎn)增多,音箱和麥克風(fēng)之間的距離增加。相關(guān)系數(shù)的絕對(duì)值因?yàn)樵肼暤脑蚨紩?huì)下降。整體上極大值點(diǎn)的相關(guān)系數(shù)呈現(xiàn)單調(diào)下降的趨勢(shì),而極小值點(diǎn)的數(shù)值變化呈現(xiàn)非單調(diào)的形態(tài)。這也從另外一個(gè)角度反映了為什么前面相關(guān)系數(shù)極小值點(diǎn)的位置出現(xiàn)抖動(dòng)的原因。
相關(guān)系數(shù)最大值和最小值與采樣位置之間的關(guān)系
3. 分析相關(guān)峰值位置的變化與采樣距離之間的關(guān)系
對(duì)于相關(guān)系數(shù)最大值峰值點(diǎn)的變化從開(kāi)始的 2497,一直變化到最后的 2473。變化的數(shù)值: ?24。
由于實(shí)驗(yàn)中聲音信號(hào)的采集頻率Hz,所以上述峰值位置的變化所對(duì)應(yīng)的時(shí)間延遲為:
如果考慮到當(dāng)時(shí)的室溫為 25℃左右,對(duì)應(yīng)的空氣中聲音傳播的速度:
那么前面所對(duì)應(yīng)的距離為:
測(cè)量接收聲音的 MIC 實(shí)際移動(dòng)的距離為 0.671 米。這中間出現(xiàn)了?的誤差。
具體為什么?現(xiàn)在還不可得而知。
實(shí)際接收聲音的 MIC 移動(dòng)的距離
聲音延遲的分辨率與空間分辨率
通過(guò)相關(guān)運(yùn)算可以獲得聲音傳播的延遲,進(jìn)而獲得聲源與接收麥克之間的距離。
由于聲音信號(hào)是通過(guò)離散時(shí)間采樣,因此對(duì)于時(shí)間 延遲的分辨率就會(huì)受到采樣時(shí)間的影響。在前面給出了測(cè)量結(jié)果中可以看出時(shí)間延遲曲線(xiàn)呈現(xiàn)明顯的臺(tái)階,這是由于采樣時(shí)間所引起的時(shí)間分辨率引起的。
相關(guān)系數(shù)最大值最小值的位置與數(shù)據(jù)采用之間的關(guān)系
根據(jù)實(shí)驗(yàn)延遲計(jì)算出空間距離,同樣也會(huì)具有一個(gè)分辨率下限。。其中的是空氣中的升速,是聲音信號(hào)采樣時(shí)間。
下面討論如何提高聲音延遲的分辨率、計(jì)算效率、以及麥克的不同空間指向?qū)τ跍y(cè)量結(jié)果的影響。
快速相關(guān)運(yùn)算
1. 利用 FFT 加速計(jì)算相關(guān)運(yùn)算
(1)相關(guān)運(yùn)算的復(fù)雜度
對(duì)于兩個(gè)時(shí)間信號(hào),它們的相關(guān)運(yùn)算結(jié)果定義如下:
如果這兩個(gè)信號(hào)都是實(shí)值信號(hào),公式里面的共軛就可以省略。
對(duì)于兩個(gè)實(shí)數(shù)離散時(shí)間信號(hào),它們之間的普通相關(guān)運(yùn)算定義為:
從相關(guān)運(yùn)算定義來(lái)看,計(jì)算兩個(gè)長(zhǎng)度為的序列相關(guān)運(yùn)算,乘法、加法的計(jì)算復(fù)雜度與成正比。
(2)相關(guān)運(yùn)算與卷積運(yùn)算的關(guān)系
在信號(hào)運(yùn)算中,還有一個(gè)應(yīng)用更廣泛的運(yùn)算:卷積運(yùn)算。之間的卷積運(yùn)算定義為:
對(duì)比一下信號(hào)的相關(guān)運(yùn)算和卷積運(yùn)算的定義,可以看出它們之間的關(guān)系:
(3)快速卷積數(shù)值計(jì)算
之所以討論相關(guān)運(yùn)算與卷積運(yùn)算之間的關(guān)系,是為了尋找相關(guān)運(yùn)算的快速算法。
計(jì)算一個(gè)序列的離散傅里葉變換有相應(yīng)的快速算法 - 快速傅里葉變換,在為 2 的整數(shù)次冪的情況下,計(jì)算 FFT 的乘法,加法的復(fù)雜度都在的數(shù)量級(jí)別。正變換和反變換的復(fù)雜度相同。
在根據(jù)傅里葉變換的卷積定理,序列的時(shí)域卷積(和)運(yùn)算,在頻域是乘積運(yùn)算?;诖?,再利用前面討論的相關(guān)與卷積運(yùn)算之間的關(guān)系,可以得到計(jì)算兩個(gè)序列的相關(guān)運(yùn)算的快速算法:
在實(shí)際工程中,往往參與卷積的兩個(gè)信號(hào)實(shí)現(xiàn)已知,比如在利用聲音定位的時(shí)候,發(fā)送聲音信號(hào)往往是事先確定好的固定的 Chirp 信號(hào),每次參與計(jì)算的新的信號(hào)是接收到的回聲信號(hào)。所以在上面卷積的快速算法中,對(duì)于已知信號(hào)的 FFT 可以事先計(jì)算好并存儲(chǔ),實(shí)際運(yùn)算中只需要完成對(duì)新采集到信號(hào)的 FFT 計(jì)算,以及對(duì)乘積結(jié)果的反 FFT 計(jì)算。
最后需要補(bǔ)充一下,在利用上面公式計(jì)算的時(shí)候,還需要將兩個(gè)信號(hào)通過(guò)補(bǔ) 0,變成長(zhǎng)度等于兩個(gè)序列長(zhǎng)度之和減一。
2. 快速相關(guān)運(yùn)算結(jié)果
使用快速計(jì)算,比直接在時(shí)域中進(jìn)行卷積速度大大提高了。通過(guò)計(jì)算獲得 100 個(gè)采樣數(shù)據(jù)相關(guān)峰值點(diǎn),使用 FFT 需要大約:0.36 秒鐘;而使用普通的相關(guān)運(yùn)算則需要 200 秒左右。
下圖顯示了通過(guò)兩種方法所得到的相關(guān)峰值位置隨著麥克風(fēng)距離音箱位置變化而產(chǎn)生的延遲,這兩種方法所得到的結(jié)果是一樣的。
通過(guò) FFT 得到的相關(guān)結(jié)果峰值位置
快速算法和直接計(jì)算兩種方法的速度對(duì)比,可以通過(guò)下面兩個(gè)動(dòng)圖所顯示的計(jì)算過(guò)程能夠體會(huì)出來(lái)。
下面是應(yīng)用 FFT 快速計(jì)算機(jī)相關(guān)運(yùn)算的過(guò)程,結(jié)果幾乎瞬間給出。
使用 FFT 計(jì)算 100 點(diǎn)相關(guān)結(jié)果只需要 0.37 秒
下面則是直接計(jì)算卷積的過(guò)程,足足等了三分多鐘。
直接計(jì)算 100 點(diǎn)相關(guān)結(jié)果則需要 192 秒左右
提高相關(guān)運(yùn)算的空間精度
1. 為什么前面測(cè)量結(jié)果曲線(xiàn)中出現(xiàn)臺(tái)階
如果直接根據(jù)序列的相關(guān)結(jié)果峰值位置確定聲音延遲,那么聲音延遲的時(shí)間分辨率就是聲音信號(hào)的采樣時(shí)間,再根據(jù)聲音速度,可以計(jì)算出所對(duì)應(yīng)的測(cè)量距離的空間分辨率。
在采樣時(shí)間,20℃空氣速度,對(duì)應(yīng)的空間分辨率,也就是當(dāng)收音麥克與音源之間的距離變化小于 3.4 厘米時(shí),所測(cè)量得到的結(jié)果是一樣的。這也就解釋了前面 100 個(gè)位置點(diǎn)測(cè)量聲音延遲曲線(xiàn)出現(xiàn)了很多臺(tái)階的原因。
2. 如何提高測(cè)量結(jié)果的空間分辨率
提高基于聲音采樣數(shù)據(jù)相關(guān)方法測(cè)量距離的空間分辨率,可以通過(guò)提高 AD 采樣速率來(lái)解決。但這需要更高速的 AD 轉(zhuǎn)換器,更多的數(shù)據(jù)存儲(chǔ)內(nèi)存以及更快速數(shù)據(jù)計(jì)算能力。
除此之外,還可以通過(guò)數(shù)據(jù)插值處理的方法來(lái)提高測(cè)量結(jié)果的空間分辨率。
數(shù)據(jù)插值可從離散時(shí)間采樣數(shù)據(jù)中獲得時(shí)間更加密集的數(shù)據(jù)。插值分解成兩個(gè)過(guò)程:第一個(gè)過(guò)程是將離散時(shí)間信號(hào)恢復(fù)成一個(gè)連續(xù)時(shí)間信號(hào);第二個(gè)過(guò)程就是在連續(xù)時(shí)間信號(hào)的基礎(chǔ)上采用更加密集的是時(shí)間間隔采樣。
恢復(fù)成連續(xù)時(shí)間信號(hào)可以有零階保持、一階保持、理想插值等不同方法,它們都可以看成是離散時(shí)間采樣脈沖信號(hào)與一個(gè)插值函數(shù)進(jìn)行卷積的結(jié)果:
零階保持、一階保持、理想插值分別對(duì)應(yīng)的卷積信號(hào)是矩形信號(hào)、三角信號(hào)以及信號(hào)等。
不同的離散時(shí)間信號(hào)重建成連續(xù)時(shí)間信號(hào)的方法
使用理想插值所獲得的結(jié)果更加平滑,但計(jì)算起來(lái)相對(duì)比較復(fù)雜。但如果是從離散時(shí)間信號(hào)的傅里葉變換結(jié)果中恢復(fù)插值信號(hào)的話(huà),則有一個(gè)非常方便的方法,那就是通過(guò)對(duì)數(shù)據(jù)的 DFT 結(jié)果補(bǔ)零,獲得更長(zhǎng)的頻譜數(shù)據(jù),再通過(guò)反離散傅里葉變換,就可以得到原來(lái)數(shù)據(jù)的理想插值結(jié)果了。具體的 原理在信號(hào)與系統(tǒng)課程中會(huì)進(jìn)行介紹的。
由于前面在快速計(jì)算相關(guān)結(jié)果的時(shí)候,就利用了快速傅里葉變換,所以可以在最后一步進(jìn)行反傅里葉變換的時(shí)候,先進(jìn)行補(bǔ)零,然后在進(jìn)行。
3. 實(shí)驗(yàn)數(shù)據(jù)對(duì)比
下面給出了插值 10 倍之后所獲得的相關(guān)峰值位置結(jié)果,對(duì)比原始計(jì)算方法,可以看到經(jīng)過(guò)插值之后的結(jié)果明顯平滑多了。通過(guò)插值后的結(jié)果所獲得的空間分辨率就從原來(lái)的 3.6 厘米降低到 3.6 毫米了。
經(jīng)過(guò)空間插值細(xì)化后 10 倍后的相關(guān)峰值位置計(jì)算結(jié)構(gòu)
由于實(shí)驗(yàn)環(huán)境是在室內(nèi),存在著很多反射波的干擾,所以當(dāng)距離遠(yuǎn)了之后,距離測(cè)量出現(xiàn)了很多的波動(dòng),它們反映了空間中的很多駐波干擾。下圖給出了不同插值倍率下結(jié)果曲線(xiàn)。
隨著插值倍數(shù)增加,所得到延遲曲線(xiàn)變化
通過(guò)簡(jiǎn)單的差值就可以輕松提高測(cè)距的空間分辨率,所需要的代價(jià)就是計(jì)算時(shí)間加長(zhǎng)了。下面圖給出了插值的倍數(shù)與結(jié)果計(jì)算消耗的時(shí)間之間的關(guān)系,整體上呈現(xiàn)線(xiàn)性比例關(guān)系。
?
細(xì)化倍數(shù)和計(jì)算時(shí)間
室內(nèi)環(huán)境反射波對(duì)于測(cè)量結(jié)果的影響
由于是在室內(nèi)進(jìn)行實(shí)驗(yàn),麥克風(fēng)所接受到的聲音信號(hào)除了直接來(lái)自于聲源之外,可能還包括有四周墻壁的反射信號(hào)。如果聲源距離比較近,四周的反射聲波強(qiáng)度受到衰減,對(duì)于測(cè)量結(jié)果影響較小。
下面通過(guò)控制接受麥克的不同方向,考察一下測(cè)量結(jié)果是否受到影響。
使用舵機(jī)控制 MIC 的方向
將麥克放置距離音箱 30 厘米左右,方向從左到右旋轉(zhuǎn) 180°。對(duì)所獲得的聲音數(shù)據(jù)使用前面給出的插值細(xì)分方法,得到的聲音延遲時(shí)間。下圖給出了不同方向聲音延遲結(jié)果曲線(xiàn):
不同指向?qū)?yīng)的相關(guān)延遲結(jié)果
延遲時(shí)間對(duì)應(yīng)的最大值和最小值分別是:
在 10kHz 的采樣率下,上述時(shí)間差所對(duì)應(yīng)的距離變化為:
這個(gè) 3 厘米的變化距離和麥克風(fēng)轉(zhuǎn)動(dòng)過(guò)程中所引起的距離變化大體相當(dāng),說(shuō)明四周的反射波對(duì)于測(cè)量結(jié)果影響不大。同時(shí)所使用的 MIC 的方向指向性并不強(qiáng),可以對(duì)來(lái)自于 180°方向的聲波都能夠很好的探測(cè)。
下面是分別將麥克在距離音箱 10 厘米和 50 厘米處重新測(cè)量不同的指向?qū)τ跍y(cè)距結(jié)果的影響。
在 10 厘米距離下麥克不同方向?qū)?yīng)的聲音延遲
?
在 50 厘米距離下麥克不同方向?qū)?yīng)的聲音延遲
結(jié)論
根據(jù)前面的一些初步實(shí)驗(yàn)數(shù)據(jù),驗(yàn)證了普通的喇叭發(fā)出的 Chirp 聲音,通過(guò)小型全向麥克所獲得的聲音信號(hào)可以獲得空間分辨率在 0.5 厘米之內(nèi)的檢測(cè)精度。當(dāng)然,這個(gè)精度會(huì)受到麥克風(fēng)的與聲源之間的指向的影響,上述的測(cè)量誤差就會(huì)引入 3 個(gè)厘米的誤差。
3 個(gè)厘米誤差對(duì)于在賽場(chǎng)上比賽的智能車(chē)模來(lái)說(shuō),問(wèn)題不是很大。可以基于此設(shè)計(jì)出未來(lái)新型的室外聲音引導(dǎo)的信標(biāo)賽題組。