子曰:“不憤不啟,不悱不發(fā)”。卓大大,我現(xiàn)在心好累。
提問
我的心好累呀
卓大大您好,我是一名信標(biāo)組的參賽選手 . 最近研究聲音定位已經(jīng)一個多星期了,一直在跟著您推文中的方法走,也曾像其他人求助,解決了很多問題,但是也遇到了一些新的問題,有些暫時想不明白,就想來請教一下。
購買的 TC264 核心板尚未拿到手,于是用上一屆的 K66 板子做實(shí)驗(yàn)。使用的麥克風(fēng)是 MAX9814 模塊,GAIN 接 5V。
?
一開始先用兩個麥克風(fēng),10khz 采集 2000 個數(shù)據(jù)做互相關(guān)運(yùn)算,結(jié)果存在數(shù)組內(nèi)。找出互相關(guān)的最大值對應(yīng)的下標(biāo) Nmax,這個下標(biāo)和 2000 的差 2000-Nmax 即為時間延遲 / 采樣間隔。
- 當(dāng) Nmax=0 時,對應(yīng)信標(biāo)在兩個麥克風(fēng)正前方,角度對應(yīng) 90 度;當(dāng) Nmax<0 時,對應(yīng)信標(biāo)在兩個麥克風(fēng)左側(cè),定義角度為 0;當(dāng) Nmax0 時,對應(yīng)信標(biāo)在兩個麥克風(fēng)的右側(cè),定義角度為 180 度。
實(shí)驗(yàn)布局示意圖
?
這里遇到的問題是求出的結(jié)果只有三個,兩個麥克風(fēng)距離算 8 厘米,最大時間間隔才 235 微妙,而采樣 100 微妙一次,這樣的結(jié)果就理所當(dāng)然了。
通過提高采樣速率,軟件插值,提高麥克風(fēng)間距,增加測量時間可以增加分辨率。我都嘗試了。
提高采樣速率和軟件插值效果明顯,可以做到互相關(guān)的最大值的坐標(biāo)從 3 個點(diǎn)內(nèi)的移動增大到 100 個點(diǎn)內(nèi)的 移動。我覺得這應(yīng)已經(jīng)很不錯了。
Chirp 信號波形
?
麥克風(fēng)間距受到 Chirp 半波長限制,增加采樣時間效果不明顯(試驗(yàn)從 1000 到 4000 個點(diǎn))。
然后我開始嘗試用三個麥克風(fēng)實(shí)現(xiàn)定位,作了一個等邊三角形固定麥克風(fēng)。以厘米為單位建立平面坐標(biāo),求解聯(lián)立的雙曲線方程,再代入第三個方程求得唯一解。
折騰半天算出來表達(dá)式非常長的一串,在電腦上運(yùn)行 C 語言程序,MATLAB 計算,代入數(shù)值答案都正確而且一致,說明等式?jīng)]有問題。
使用三角形麥克風(fēng)陣列測量揚(yáng)聲器的位置
?
把這些代碼移植到單片機(jī)里實(shí)踐,效果確實(shí)非常差:大部分時候算出來的 X,Y 坐標(biāo)只是符號正確而已,說明好壞知道我在哪個象限;有些符號都是錯誤的。我想這個數(shù)學(xué)模型是非常敏感的。在遠(yuǎn)點(diǎn)的地方雙曲線接近平行,0.1 厘米的誤差都會導(dǎo)致誤解或者提前相交 -- 失之毫厘,差之千里。
于是,我開始尋找誤差來源:麥克風(fēng)的誤差可以忽略不計;K66 的 ADC 采樣的誤差,一是 ADC 腳懸空時跳變較大(但是接入麥克風(fēng)后又是穩(wěn)定很多),而是一個 ADC 的才寄回干擾的其他的 ADC。這個挺明顯的,1 個麥克風(fēng)+2 個懸空使用虛擬示波器看波形,有聲音的時候 2 個懸空的也有不算小的波動。
采集到的波形信號
?
我找了個 RT1064 來做對比,發(fā)現(xiàn)這兩個指標(biāo)都好上不少;三是麥克風(fēng)不是一個點(diǎn),是一個圓柱體,加上等邊三角形的誤差,鳳城參數(shù)和我實(shí)際麥克風(fēng)間具有一定的差距。
然后尋找錯誤的來源:在 Chirp 的中頻段,有可能互相關(guān)的結(jié)果在 t 點(diǎn)和 T-t 點(diǎn)都是峰值(t 是時間延遲,T 是信號周期)。因?yàn)槲也杉降男盘柌⒉皇且粋€完整周期的 Chirp 信號,可能在我采集的這一段就是規(guī)律的正弦信號,往左往右都可以重合。
Chirp 信號的自相關(guān)信號
?
用完整的 Chirp 信號可以解決這個錯誤,但是在保證時間分辨率起碼在 10 微妙的情況下,不管是提高采樣頻率還是插值,一個 0.2048s 的信號的點(diǎn)起賣超過 20000 個。而且不知道信號的起始時間的情況下才采集這么長的時間也不一定才到完整的一幀 Chirp 信號。
所以我現(xiàn)在有點(diǎn)懷疑純麥克風(fēng)的方案。折騰了這么久,以為快要成功的時候又發(fā)現(xiàn)了 一大大堆不知道如何解決的問題。我現(xiàn)在也沒有力氣再重新飛線測試 RT1064 的結(jié)果了。
Chirp 信號的 FFT 幅度譜
?
萬一只是誤差非常非常大和非常大的區(qū)別呢?不知不覺寫了這么多,真的是麻煩卓老師了。
回復(fù):
采集數(shù)據(jù)的頻率只需要設(shè)置為 10kHz 就好了,不需要提高采樣頻率。這是因?yàn)閷?shí)際信號產(chǎn)生的 DAC 的頻率就是 10kHz,提高采樣頻率也不會提高數(shù)據(jù)的精度;提高自相關(guān)判斷的精度是采用 FFT+補(bǔ)零的方式來完成的;具體方法以后會進(jìn)行理論分析;對于聲源的定位,麥克風(fēng)陣列的極限越長,定位精度越高。可以伴隨追的車模運(yùn)動,自然產(chǎn)生拉長后的麥克風(fēng)陣列基線;需要假設(shè)能夠利用調(diào)頻接收模塊來獲得發(fā)送的信號。根據(jù)該信號的起始點(diǎn)來確定采集的起始點(diǎn)以保證能夠采集到完整的一幀 Chip 信號;在實(shí)際測試中,距離的重復(fù)誤差應(yīng)該在 1 厘米左右,如果大于這個誤差,請檢查一下你的電路中實(shí)際信號的幅值和噪聲。
公眾號留言
卓大大,可千萬別把電磁 AI 的賽道搞得太長,我剛試了一下,推車采集數(shù)據(jù)真的好累人啊 /::<身體累是一方面,心也累,都不知道辛辛苦苦采集的數(shù)據(jù)訓(xùn)練的結(jié)果會是啥鬼樣子。