室外聲音信標可行性分析

0. 狗追鴨子

在去年(2019)9月18日在公衆號(TSINGHUAZHUOQING)給出了NXP公司宋巖發送過來的一個短視頻:在水塘裏一隻狗在追咬一隻鴨子。
狗追鴨子

狗追鴨子

當時全國大學生智能車競賽祕書處準備將進行了四屆的信標組,由原來的光電導航,改變成聲音導航,由此也可以使得該組別的能夠適應在各種場地環境,包括室外場地。

那麼利用聲波定位完成導航究竟能夠給出多大精度的導航信息?是否會受到環境噪聲的影響?是否會受到周圍牆壁反射和中間障礙的影響?

現在受到疫情影響反正也出不去。動手做幾個小實驗來確定一下這些問題,以便確定該方案是否可行。

聲音測距精度到底有多大?

在前兩天介紹了聲源測距的基本原理和數據處理方法。爲了能夠在單片機上快速完成運動,可以藉助於FFT提高計算速度以及完成對相關結果的插值來減少採樣時間對空間分辨率的影響。

那麼測量的結果究竟會有多大的精度呢?下面通過一組實驗來探討一下。

實驗場地和方法

爲了能夠模擬未來在信標導航比賽中的實際情況,聲源和接收的麥克風都距離地面比較近,將發射聲波的藍牙音箱放置在距離地面17.5釐米高,接收信號的聲音探頭也放置在相同的高度。他們之間的距離可以改動。
實驗中的音箱和拾音器的位置和高度

1. 分別在不同距離採集數據

調整揚聲器與麥克風之間的距離,分別在相距145釐米,100釐米、50釐米、15釐米下測量聲音傳播距離。下面是幾個不同距離下發送和接收到的聲音波形。

在100釐米處採集音頻數據對應的示波器得到的輸入輸出波形。
示波器顯示的發送和接收到的音頻信號

示波器顯示的發送和接收到的音頻信號

在53釐米處採集音頻數據對應的示波器得到的輸入輸出波形。
示波器採集到的輸出和反射的聲音信號

示波器採集到的輸出和反射的聲音信號

在15釐米處採集音頻數據對應的示波器得到的輸入輸出波形。
示波器採集到的輸入輸出音頻

```示波器採集到的輸入輸出

2. 數據處理結果

總共有四個位置的四組數據,每個位置採集了50次發送和接收的數據波形。將每組數據使用相關差分方法獲得相關係數峯值位置,並求出50次結果的均值和方差。結果如下表所示:

序號 距離(cm) 相關峯值 方差
1 15 4994.6 0.0
2 50 4983.855 0.000225
3 100 4969.485 0.00883
4 145 4956.079 0.00361

現在室溫溫度Troom=25T_{room} = 25攝氏度。聲音速度爲(m/s):Vsound=331.4+0.6×Tair=346.65V_{sound} = 331.4 + 0.6 \times T_{air} = 346.65

數據採樣時間Ts=0.1msT_s = 0.1ms,那麼一個採樣時間聲音傳播距離:Ds=Ts×Vsound=3.4665  cmD_s = T_s \times V_{sound} = 3.4665 \:\:cm

根據前面測量得到的各個位置相關峯值位置,再根據採樣時間聲音傳播距離Ds=3.4665  cmD_s = 3.4665\,\,cm,可以計算出根據聲音時間差所得到的距離:

序號 位置實測距離(cm) 相關峯值差 計算距離(cm)
1 15 5.40 18.66
2 50 16.15 55.79
3 100 30.52 105.45
4 145 43.92 151.77

可以看到根據聲音信號延遲所得到的及算距離比起實際測量的距離普遍大大了5釐米左右。這可能是因爲所測量距離都是按照藍牙音箱的前面面板的位置開始計量的,但實際上音箱內部的喇叭的振動膜要比音箱前面板還是往後的,所以實際距離應該比測量距離大。

根據上面表格,可以計算出四個位置之間的差值,如下表所示,這樣就消除了測量距離的系統誤差。

序號 距離差(cm) 峯值位置 計算距離差(cm)
1 50-15 10.7450 37.13
2 100-50 14.37 49.66
3 145-100 13.406 46.33

通過處理後的結果可以看出根據聲音傳播速度差所得到的距離差與實際測量值是很接近的。其中數據誤差最大不超過5%。

 

雙通道麥克測定音源方位

使用兩個相距一定距離的麥克同時測量聲波傳播距離,根據距離差值可以獲得音源的方向和距離。

1. 接收雙聲道麥克風的佈局

使用了兩個駐極體麥克風來接收聲源的聲音。它們的固定方式如下圖所示。
左右兩個麥克風的距離爲26.5釐米,距離地面的高度爲15釐米。

接收聲音的左右聲道麥克風的佈局

接收聲音的左右聲道麥克風的佈局

2. 發送聲音的揚聲器和滑軌

固定在滑軌上的聲源採用8Ω\Omega的動圈式揚聲器。它的尺寸和固定的高度見下圖所示。它外部固定一個與其尺寸相當的原來的鋁質燈罩,可以減少揚聲器外部聲音斷路,提高發送聲音的效率。

滑軌上的聲源尺寸和高度

固定揚聲器的滑軌可以做維運動,運動的範圍大約0.7米。驅動器可以通過WiFi接收到運動距離的指令。

實驗平臺

實驗平臺

3. 驅動聲源喇叭的功放

驅動聲源揚聲器的音頻功率放大器是一款雙聲道的音箱音頻放大器。適配電源爲12V,BTL輸出。前端帶有音量、左右平衡、高音、低音調解旋鈕。

實驗中只是用其中一路來驅動滑軌上的揚聲器。

驅動聲源揚聲器的音頻功率放大器

驅動聲源揚聲器的音頻功率放大器

4. 數據發送和接收

下圖是發送和接收聲音數據的帶有單片機的實驗麪包板。它的原理在如下相關博文中進行了介紹:

  1. 基於STM32F103F ADDA板製作
  2. 聲音定位硬件電路

發送和接收聲音的數據採集單片機實驗麪包板

發送和接收聲音的數據採集單片機實驗麪包板

5. 數據採集

設置麥克陣列在相距滑軌不同的距離下,控制揚聲器從左移動到右,每個位置下發出Chirp聲音。接收並存儲該聲音數據。

麥克與滑軌之間的距離

麥克與滑軌之間的距離

分別將麥克放置在距離滑軌100釐米、50釐米、25釐米左右。滑軌帶着喇叭移動,分別測量聲源到兩個喇叭之間的距離。

1. 在一米處的採集數據
在1米處採集到的D1,D2數據

在1米處採集到的D1,D2數據

2. 在50釐米處採集的數據
在50釐米處採集到的D1,D2數據

在50釐米處採集到的D1,D2數據

3. 在25釐米處採集的數據
在25釐米處接收到的D1,D2的數據

在25釐米處接收到的D1,D2的數據

6.結果分析

(1)實驗數據理論模型
根據勾股定理,聲源在滑軌上的移動距離和接收聲音的麥克風之間的距離爲:L1=(x1x0)2+y12L_1 = \sqrt {\left( {x_1 - x_0 } \right)^2 + y_1^2 }

滑塊移動距離與聲源和接收傳感器之間的距離關係

滑塊移動距離與聲源和接收傳感器之間的距離關係

下圖就是在x0=50, y1=25, x1在[0,100]範圍內,L1與x1之間的關係:
橫向運動距離 與直線距離之間的關係曲線

橫向運動距離 與直線距離之間的關係曲線

(2)根據採集數據估計麥克的方位

從前面實驗所得到的不同位置的d1,d2數據曲線來看,它們都大體呈現與上面理論模型相近的性質。只是在實驗中粗略的知道y1,x0,x1的數據,實際上測量並不精確。再加上實驗中聲速也是一個變化量,所以直接使用原始數據來驗證它是否符合理論模型就會有困難。

下面先假設數據符合上面的理論模型,然後在對未知的x0, y1, x1進行估計,然後再驗證模型的精確性。
在這裏先假設以下兩點是準確的:
(1)滑軌是直線的;滑軌移動距離ΔD\Delta D是可以實現測量得到的,它等於:ΔD=0.79m\Delta D = 0.79m
(2)每個數據點都是在起始點xstartx_{start}和終止點xstopx_{stop}之間的均勻採樣。假設起始點xstart=0x_{start} = 0,終止點xstop=ΔDx_{stop} = \Delta D
(3)採集數據的個數N=100,數據爲:{Ln},n=0,1,...,N1\left\{ {L_n } \right\},n = 0,1,...,N - 1
這個數據時通過聲音傳播速度計算得到的,它與真實距離之間相差一個比例aa,即:dn=aLnd_n = a \cdot L_n

然後通過採集所得到的數據{Ln}\left\{ {L_n } \right\}擬合下面的公式:

x1n=xstopxstartN1n+xstart=ΔDN1nx_{1n} = {{x_{stop} - x_{start} } \over {N - 1}} \cdot n + x_{start} = {{\Delta D} \over {N - 1}} \cdot n

Lna=(x1nx0)2+y12{{L_n } \over a} = \sqrt {\left( {x_{1n} - x_0 } \right)^2 + y_1^2 }

未知參數包括有:{a,x0,y1}\left\{ {a,x_0 ,y_1 } \right\}

模型優化算法採用python中的scipy.optimize優化工具完成模型參數估計。下面給出了三個不同位置下的估計參數和擬合結果

  1. 在1米處的數據進行參數估計
    使用左右兩個聲道的距離完成估計的參數分別是:
  • 左聲道:a=0.8857, x0=0.5006, y1=1.0319
  • 右聲道:a=0.8958,x0=0.2341, y1=1.0445

兩個聲道的數據是同時測量的,測量的條件相似,它們的距離比例因子a的數值基本相同,大約在0.9左右。

兩個聲道的x0相差大約爲0.266米,這與直接使用鋼尺測量兩個麥克風的中心位置距離0.265米在誤差範圍1mm內是相同的;

由於兩個麥克風擺放位置是平行與滑軌,所以它們距離滑軌的距離y0應該是相同的,它們的結果反映了這一點。由於實際測兩個麥克風與滑軌的距離爲0.9日左右,所以將y1乘以距離因子a,則等於:D=a×y1=0.8857×1.0319=0.913D = a \times y_1 = 0.8857 \times 1.0319 = 0.913。這就與實際距離相吻合了。

兩個聲道數據和參數估計後擬合數據

兩個聲道數據和參數估計後擬合數據

  1. 在0.5米處的數據處理
    使用左右兩個聲道的距離完成估計的參數分別是:
  • 左聲道:a=0.8145, x0=0.4787, y1=0.6492
  • 右聲道:a=0.7907,x0=0.2326, y1=0.6177

左右兩個聲道原始數據和參數估計後的擬合數據

左右兩個聲道原始數據和參數估計後的擬合數據

  1. 在0.25米處的數據處理
    使用左右兩個聲道的距離完成估計的參數分別是:
  • 左聲道:a=0.7180, x0=0.5241, y1=0.354
  • 右聲道:a=0.7039,x0=0.2644, y1=0.349

左右兩個聲道原始數據和參數估計後的擬合數據

左右兩個聲道原始數據和參數估計後的擬合數據

有了兩個麥克的距離差,就可以反過來計算聲源的方向和位置。

聲音導航是否會受到環境影響?

1. 是否會受到環境噪聲的影響?

下面分別測量一下在周圍環境比較安靜時測量距離和大聲播放音樂時測量距離結果。

首先是在周圍環境相對比較安靜時,測量聲波傳遞距離。下面顯示了示波器看到的兩個聲源通道電壓波形。說明周圍聲源還是比較安靜的。
在沒有環境干擾的情況下兩個聲道的音頻電壓信號

在沒有環境干擾的情況下兩個聲道的音頻電壓信號

測量兩個通道的麥克風距離。總共測量100次,每次之間相隔1.5秒,對應的距離數值如下圖所示。
安靜情況下採集到兩個聲道的距離數值

安靜情況下採集到兩個聲道的距離數值

兩個通道的均值和方差分別是:
mean(d1)=0.8753,    var(d1)=5.3×108mean\left( {d1} \right) = 0.8753,\,\,\,\,{\mathop{\rm var}} (d1) = 5.3 \times 10^{ - 8}

mean(d2)=0.8275,    var(d2)=7.52×107mean\left( {d2} \right) = 0.8275,\,\,\,\,{\mathop{\rm var}} (d2) = 7.52 \times 10^{ - 7}

下面在環境內播放歌曲音頻,作爲背景干擾。此時兩個通道的的電壓波形如下圖所示。這個電壓幅值比測距所使用的Chirp聲音信號還要大。
在有背景音樂的情況下兩個聲道的音頻電壓信號

在有背景音樂的情況下兩個聲道的音頻電壓信號

測量兩個通道的距離,測量100組數據,每次相隔1.5秒。兩個通道測量所得到的距離數值如下圖所示:
有背景音樂情況下採集到兩個聲道的距離數值

有背景音樂情況下採集到兩個聲道的距離數值

兩個通道的距離均值和方差分別是:
mean(d1)=0.8785,    var(d1)=1.356×106mean\left( {d1} \right) = 0.8785,\,\,\,\,{\mathop{\rm var}} (d1) = 1.356 \times 10^{ - 6}

mean(d2)=0.8275,    var(d2)=1.256×106mean\left( {d2} \right) = 0.8275,\,\,\,\,{\mathop{\rm var}} (d2) = 1.256 \times 10^{ - 6}

通過上面實驗結果可以看出使用Chirp信號進行測距受到普通的環境聲音的影響是很小的。

2. 是否會受到周圍反射物的影響?

在聲源和接收麥克附近如果存在牆壁或者大型的反射物,會對聲波產生反射,從而改變原來的聲場。這種影響有多大呢?

下面帶有棋盤格的木板邊長1.15米。厚度15毫米。將該木板搬移到測試現場的四周,靠近接收的麥克,或者揚聲器,在此過程中連續測量聲音傳播距離,觀察測量距離受到該反射木板的影響。
大型木板用於擺放在聲源和接收麥克後面和側面

大型木板用於擺放在聲源和接收麥克後面和側面

下面是在移動木板的過程中,測量得到的50個距離數值。可以看到該數值範圍波動在五個釐米的範圍內。
在聲源和麥克周圍移動大型木板對聲音傳播距離的影響

在聲源和麥克周圍移動大型木板對聲音傳播距離的影響

3. 是否會受到遮擋物的影響?

如果中間有小型的物體,不遮擋聲波的傳遞,對於測距沒有太大的影響。下面分別使用一個小型的塑料箱和稍大一點的紙盒子從聲源和麥克風之間經過,測量聲波傳遞距離。

(1)使用小型的塑料盒子:

小型塑料箱進行遮擋

小型塑料箱進行遮擋

測量聲音傳播距離的變化如下面的曲線所示。兩個聲道所顯示的距離上下波動了4釐米。
在有小型塑料從中間移動過對距離的影響

在有小型塑料從中間移動過對距離的影響

(2)使用較大的紙盒子
下面是將較大的紙盒子從聲源到接收麥克之間經過。
中間設置有較大紙盒子移動過

中間設置有較大紙盒子移動過

下圖顯示了測量聲波傳遞距離的變化。顯示距離變化波動了大約8釐米左右。

大型紙箱子從中間移動過對距離的影響

大型紙箱子從中間移動過對距離的影響

從上面的測試可以看出,在聲源與接收麥克之間如果有較大的物體,將會使得測量聲波傳播距離增加。增加的幅值隨着遮擋的物體的尺寸增加而增加。

結論

經過簡單的幾組實驗,分別驗證了通過聲音導航可以達到的測距和方位的精度,對比了環境噪聲和障礙物對於測距的影響。說明了基於聲音導航可以滿足智能車競賽中作爲信標的方式。

爲了降低信號處理難度,在上述實驗中聲音發送的標準信號是作爲已知的信號參與計算的。這就使得計算結果的精度和對環境噪聲的抗干擾性都得到了提高。

Dog Chasing Duck

Dog Chasing Duck

在本文開頭的動圖中,爲什麼鴨子總能被狗發現並被追逐,是因爲它在受到驚嚇或者心情愉悅的時候總是嘎嘎的叫喚。如果鴨子保持沉默,悄悄的走開,也許就不會引起狗的興趣了。

發佈了275 篇原創文章 · 獲贊 199 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章