0. 狗追鴨子
在去年(2019)9月18日在公眾號(TSINGHUAZHUOQING)給出了NXP公司宋巖發(fā)送過來的一個短視頻:在水塘里一只狗在追咬一只鴨子。
 狗追鴨子
當時全國大學生智能車競賽秘書處準備將進行了四屆的信標組,由原來的光電導航,改變成聲音導航,由此也可以使得該組別的能夠適應在各種場地環(huán)境,包括室外場地。
那么利用聲波定位完成導航究竟能夠給出多大精度的導航信息?是否會受到環(huán)境噪聲的影響?是否會受到周圍墻壁反射和中間障礙的影響?
現(xiàn)在受到疫情影響反正也出不去。動手做幾個小實驗來確定一下這些問題,以便確定該方案是否可行。
聲音測距精度到底有多大?
在前兩天介紹了聲源測距的基本原理和數(shù)據(jù)處理方法。為了能夠在單片機上快速完成運動,可以借助于FFT提高計算速度以及完成對相關(guān)結(jié)果的插值來減少采樣時間對空間分辨率的影響。
那么測量的結(jié)果究竟會有多大的精度呢?下面通過一組實驗來探討一下。
實驗場地和方法
為了能夠模擬未來在信標導航比賽中的實際情況,聲源和接收的麥克風都距離地面比較近,將發(fā)射聲波的藍牙音箱放置在距離地面17.5厘米高,接收信號的聲音探頭也放置在相同的高度。他們之間的距離可以改動。

1. 分別在不同距離采集數(shù)據(jù)
調(diào)整揚聲器與麥克風之間的距離,分別在相距145厘米,100厘米、50厘米、15厘米下測量聲音傳播距離。下面是幾個不同距離下發(fā)送和接收到的聲音波形。
在100厘米處采集音頻數(shù)據(jù)對應的示波器得到的輸入輸出波形。
 示波器顯示的發(fā)送和接收到的音頻信號
在53厘米處采集音頻數(shù)據(jù)對應的示波器得到的輸入輸出波形。
 示波器采集到的輸出和反射的聲音信號
在15厘米處采集音頻數(shù)據(jù)對應的示波器得到的輸入輸出波形。
 ```示波器采集到的輸入輸出
2. 數(shù)據(jù)處理結(jié)果
總共有四個位置的四組數(shù)據(jù),每個位置采集了50次發(fā)送和接收的數(shù)據(jù)波形。將每組數(shù)據(jù)使用相關(guān)差分方法獲得相關(guān)系數(shù)峰值位置,并求出50次結(jié)果的均值和方差。結(jié)果如下表所示:
| 序號 |
距離(cm) |
相關(guān)峰值 |
方差 |
| 1 |
15 |
4994.6 |
0.0 |
| 2 |
50 |
4983.855 |
0.000225 |
| 3 |
100 |
4969.485 |
0.00883 |
| 4 |
145 |
4956.079 |
0.00361 |
現(xiàn)在室溫溫度Troom=25Troom?=25攝氏度。聲音速度為(m/s):Vsound=331.4+0.6×Tair=346.65Vsound?=331.4+0.6×Tair?=346.65
數(shù)據(jù)采樣時間Ts=0.1msTs?=0.1ms,那么一個采樣時間聲音傳播距離:Ds=Ts×Vsound=3.4665cmDs?=Ts?×Vsound?=3.4665cm
根據(jù)前面測量得到的各個位置相關(guān)峰值位置,再根據(jù)采樣時間聲音傳播距離Ds=3.4665cmDs?=3.4665cm,可以計算出根據(jù)聲音時間差所得到的距離:
| 序號 |
位置實測距離(cm) |
相關(guān)峰值差 |
計算距離(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 |
可以看到根據(jù)聲音信號延遲所得到的及算距離比起實際測量的距離普遍大大了5厘米左右。這可能是因為所測量距離都是按照藍牙音箱的前面面板的位置開始計量的,但實際上音箱內(nèi)部的喇叭的振動膜要比音箱前面板還是往后的,所以實際距離應該比測量距離大。
根據(jù)上面表格,可以計算出四個位置之間的差值,如下表所示,這樣就消除了測量距離的系統(tǒng)誤差。
| 序號 |
距離差(cm) |
峰值位置 |
計算距離差(cm) |
| 1 |
50-15 |
10.7450 |
37.13 |
| 2 |
100-50 |
14.37 |
49.66 |
| 3 |
145-100 |
13.406 |
46.33 |
通過處理后的結(jié)果可以看出根據(jù)聲音傳播速度差所得到的距離差與實際測量值是很接近的。其中數(shù)據(jù)誤差最大不超過5%。
雙通道麥克測定音源方位
使用兩個相距一定距離的麥克同時測量聲波傳播距離,根據(jù)距離差值可以獲得音源的方向和距離。
1. 接收雙聲道麥克風的布局
使用了兩個駐極體麥克風來接收聲源的聲音。它們的固定方式如下圖所示。
左右兩個麥克風的距離為26.5厘米,距離地面的高度為15厘米。

接收聲音的左右聲道麥克風的布局
2. 發(fā)送聲音的揚聲器和滑軌
固定在滑軌上的聲源采用8ΩΩ的動圈式揚聲器。它的尺寸和固定的高度見下圖所示。它外部固定一個與其尺寸相當?shù)脑瓉淼匿X質(zhì)燈罩,可以減少揚聲器外部聲音斷路,提高發(fā)送聲音的效率。

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

實驗平臺
3. 驅(qū)動聲源喇叭的功放
驅(qū)動聲源揚聲器的音頻功率放大器是一款雙聲道的音箱音頻放大器。適配電源為12V,BTL輸出。前端帶有音量、左右平衡、高音、低音調(diào)解旋鈕。
實驗中只是用其中一路來驅(qū)動滑軌上的揚聲器。

驅(qū)動聲源揚聲器的音頻功率放大器
4. 數(shù)據(jù)發(fā)送和接收
下圖是發(fā)送和接收聲音數(shù)據(jù)的帶有單片機的實驗面包板。它的原理在如下相關(guān)博文中進行了介紹:
- 基于STM32F103F ADDA板制作
- 聲音定位硬件電路

發(fā)送和接收聲音的數(shù)據(jù)采集單片機實驗面包板
5. 數(shù)據(jù)采集
設置麥克陣列在相距滑軌不同的距離下,控制揚聲器從左移動到右,每個位置下發(fā)出Chirp聲音。接收并存儲該聲音數(shù)據(jù)。

麥克與滑軌之間的距離
分別將麥克放置在距離滑軌100厘米、50厘米、25厘米左右。滑軌帶著喇叭移動,分別測量聲源到兩個喇叭之間的距離。
1. 在一米處的采集數(shù)據(jù)
 在1米處采集到的D1,D2數(shù)據(jù)
2. 在50厘米處采集的數(shù)據(jù)
 在50厘米處采集到的D1,D2數(shù)據(jù)
3. 在25厘米處采集的數(shù)據(jù)
 在25厘米處接收到的D1,D2的數(shù)據(jù)
6.結(jié)果分析
(1)實驗數(shù)據(jù)理論模型
根據(jù)勾股定理,聲源在滑軌上的移動距離和接收聲音的麥克風之間的距離為:L1=(x1?x0)2+y21????????????√L1?=(x1??x0?)2+y12??

滑塊移動距離與聲源和接收傳感器之間的距離關(guān)系
下圖就是在x0=50, y1=25, x1在[0,100]范圍內(nèi),L1與x1之間的關(guān)系:
 橫向運動距離 與直線距離之間的關(guān)系曲線
(2)根據(jù)采集數(shù)據(jù)估計麥克的方位
從前面實驗所得到的不同位置的d1,d2數(shù)據(jù)曲線來看,它們都大體呈現(xiàn)與上面理論模型相近的性質(zhì)。只是在實驗中粗略的知道y1,x0,x1的數(shù)據(jù),實際上測量并不精確。再加上實驗中聲速也是一個變化量,所以直接使用原始數(shù)據(jù)來驗證它是否符合理論模型就會有困難。
下面先假設數(shù)據(jù)符合上面的理論模型,然后在對未知的x0, y1, x1進行估計,然后再驗證模型的精確性。
在這里先假設以下兩點是準確的:
(1)滑軌是直線的;滑軌移動距離ΔDΔD是可以實現(xiàn)測量得到的,它等于:ΔD=0.79mΔD=0.79m。
(2)每個數(shù)據(jù)點都是在起始點xstartxstart?和終止點xstopxstop?之間的均勻采樣。假設起始點xstart=0xstart?=0,終止點xstop=ΔDxstop?=ΔD。
(3)采集數(shù)據(jù)的個數(shù)N=100,數(shù)據(jù)為:{Ln},n=0,1,...,N?1{Ln?},n=0,1,...,N?1
這個數(shù)據(jù)時通過聲音傳播速度計算得到的,它與真實距離之間相差一個比例aa,即:dn=a?Lndn?=a?Ln?
然后通過采集所得到的數(shù)據(jù){Ln}{Ln?}擬合下面的公式:
x1n=xstop?xstartN?1?n+xstart=ΔDN?1?nx1n?=N?1xstop??xstart???n+xstart?=N?1ΔD??n
Lna=(x1n?x0)2+y21?????????????√aLn??=(x1n??x0?)2+y12??
未知參數(shù)包括有:{a,x0,y1}{a,x0?,y1?}。
模型優(yōu)化算法采用python中的scipy.optimize優(yōu)化工具完成模型參數(shù)估計。下面給出了三個不同位置下的估計參數(shù)和擬合結(jié)果
- 在1米處的數(shù)據(jù)進行參數(shù)估計
使用左右兩個聲道的距離完成估計的參數(shù)分別是:
- 左聲道:a=0.8857, x0=0.5006, y1=1.0319
- 右聲道:a=0.8958,x0=0.2341, y1=1.0445
兩個聲道的數(shù)據(jù)是同時測量的,測量的條件相似,它們的距離比例因子a的數(shù)值基本相同,大約在0.9左右。
兩個聲道的x0相差大約為0.266米,這與直接使用鋼尺測量兩個麥克風的中心位置距離0.265米在誤差范圍1mm內(nèi)是相同的;
由于兩個麥克風擺放位置是平行與滑軌,所以它們距離滑軌的距離y0應該是相同的,它們的結(jié)果反映了這一點。由于實際測兩個麥克風與滑軌的距離為0.9日左右,所以將y1乘以距離因子a,則等于:D=a×y1=0.8857×1.0319=0.913D=a×y1?=0.8857×1.0319=0.913。這就與實際距離相吻合了。

兩個聲道數(shù)據(jù)和參數(shù)估計后擬合數(shù)據(jù)
- 在0.5米處的數(shù)據(jù)處理
使用左右兩個聲道的距離完成估計的參數(shù)分別是:
- 左聲道:a=0.8145, x0=0.4787, y1=0.6492
- 右聲道:a=0.7907,x0=0.2326, y1=0.6177

左右兩個聲道原始數(shù)據(jù)和參數(shù)估計后的擬合數(shù)據(jù)
- 在0.25米處的數(shù)據(jù)處理
使用左右兩個聲道的距離完成估計的參數(shù)分別是:
- 左聲道:a=0.7180, x0=0.5241, y1=0.354
- 右聲道:a=0.7039,x0=0.2644, y1=0.349

左右兩個聲道原始數(shù)據(jù)和參數(shù)估計后的擬合數(shù)據(jù)
有了兩個麥克的距離差,就可以反過來計算聲源的方向和位置。
聲音導航是否會受到環(huán)境影響?
1. 是否會受到環(huán)境噪聲的影響?
下面分別測量一下在周圍環(huán)境比較安靜時測量距離和大聲播放音樂時測量距離結(jié)果。
首先是在周圍環(huán)境相對比較安靜時,測量聲波傳遞距離。下面顯示了示波器看到的兩個聲源通道電壓波形。說明周圍聲源還是比較安靜的。
 在沒有環(huán)境干擾的情況下兩個聲道的音頻電壓信號
測量兩個通道的麥克風距離。總共測量100次,每次之間相隔1.5秒,對應的距離數(shù)值如下圖所示。
 安靜情況下采集到兩個聲道的距離數(shù)值
兩個通道的均值和方差分別是:
mean(d1)=0.8753,var(d1)=5.3×10?8mean(d1)=0.8753,var(d1)=5.3×10?8
mean(d2)=0.8275,var(d2)=7.52×10?7mean(d2)=0.8275,var(d2)=7.52×10?7
下面在環(huán)境內(nèi)播放歌曲音頻,作為背景干擾。此時兩個通道的的電壓波形如下圖所示。這個電壓幅值比測距所使用的Chirp聲音信號還要大。
 在有背景音樂的情況下兩個聲道的音頻電壓信號
測量兩個通道的距離,測量100組數(shù)據(jù),每次相隔1.5秒。兩個通道測量所得到的距離數(shù)值如下圖所示:
 有背景音樂情況下采集到兩個聲道的距離數(shù)值
兩個通道的距離均值和方差分別是:
mean(d1)=0.8785,var(d1)=1.356×10?6mean(d1)=0.8785,var(d1)=1.356×10?6
mean(d2)=0.8275,var(d2)=1.256×10?6mean(d2)=0.8275,var(d2)=1.256×10?6
通過上面實驗結(jié)果可以看出使用Chirp信號進行測距受到普通的環(huán)境聲音的影響是很小的。
2. 是否會受到周圍反射物的影響?
在聲源和接收麥克附近如果存在墻壁或者大型的反射物,會對聲波產(chǎn)生反射,從而改變原來的聲場。這種影響有多大呢?
下面帶有棋盤格的木板邊長1.15米。厚度15毫米。將該木板搬移到測試現(xiàn)場的四周,靠近接收的麥克,或者揚聲器,在此過程中連續(xù)測量聲音傳播距離,觀察測量距離受到該反射木板的影響。
 大型木板用于擺放在聲源和接收麥克后面和側(cè)面
下面是在移動木板的過程中,測量得到的50個距離數(shù)值??梢钥吹皆摂?shù)值范圍波動在五個厘米的范圍內(nèi)。
 在聲源和麥克周圍移動大型木板對聲音傳播距離的影響
3. 是否會受到遮擋物的影響?
如果中間有小型的物體,不遮擋聲波的傳遞,對于測距沒有太大的影響。下面分別使用一個小型的塑料箱和稍大一點的紙盒子從聲源和麥克風之間經(jīng)過,測量聲波傳遞距離。
(1)使用小型的塑料盒子:

小型塑料箱進行遮擋
測量聲音傳播距離的變化如下面的曲線所示。兩個聲道所顯示的距離上下波動了4厘米。
 在有小型塑料從中間移動過對距離的影響
(2)使用較大的紙盒子
下面是將較大的紙盒子從聲源到接收麥克之間經(jīng)過。
 中間設置有較大紙盒子移動過
下圖顯示了測量聲波傳遞距離的變化。顯示距離變化波動了大約8厘米左右。

大型紙箱子從中間移動過對距離的影響
從上面的測試可以看出,在聲源與接收麥克之間如果有較大的物體,將會使得測量聲波傳播距離增加。增加的幅值隨著遮擋的物體的尺寸增加而增加。
結(jié)論
經(jīng)過簡單的幾組實驗,分別驗證了通過聲音導航可以達到的測距和方位的精度,對比了環(huán)境噪聲和障礙物對于測距的影響。說明了基于聲音導航可以滿足智能車競賽中作為信標的方式。
為了降低信號處理難度,在上述實驗中聲音發(fā)送的標準信號是作為已知的信號參與計算的。這就使得計算結(jié)果的精度和對環(huán)境噪聲的抗干擾性都得到了提高。

Dog Chasing Duck
在本文開頭的動圖中,為什么鴨子總能被狗發(fā)現(xiàn)并被追逐,是因為它在受到驚嚇或者心情愉悅的時候總是嘎嘎的叫喚。如果鴨子保持沉默,悄悄的走開,也許就不會引起狗的興趣了。
|