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

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

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

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

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

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

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

麥克與滑軌之間的距離
分別將麥克放置在距離滑軌100厘米、50厘米、25厘米左右。滑軌帶著喇叭移動(dòng),分別測(cè)量聲源到兩個(gè)喇叭之間的距離。
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í)驗(yàn)數(shù)據(jù)理論模型
根據(jù)勾股定理,聲源在滑軌上的移動(dòng)距離和接收聲音的麥克風(fēng)之間的距離為:L1=(x1?x0)2+y21????????????√L1?=(x1??x0?)2+y12??

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

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

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

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

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

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

Dog Chasing Duck
在本文開(kāi)頭的動(dòng)圖中,為什么鴨子總能被狗發(fā)現(xiàn)并被追逐,是因?yàn)樗谑艿襟@嚇或者心情愉悅的時(shí)候總是嘎嘎的叫喚。如果鴨子保持沉默,悄悄的走開(kāi),也許就不會(huì)引起狗的興趣了。
|