蘇俊杰 胡杰
摘 要:文章基于聲源定位技術(shù)研發(fā)出一款在移動(dòng)過程中自動(dòng)避障的小車,其以 STM32F103C8T6為主控開發(fā)板,將 K210 搭載麥克風(fēng)陣列作為聲源處理裝置,并且采用時(shí)延算法得出聲源到達(dá)不同麥克風(fēng)陣列的時(shí)間差,從而計(jì)算出聲源和小車的距離以及角度。為了使角度更加準(zhǔn)確,加上了卡爾曼濾波。測試結(jié)果表明,小車到達(dá)聲源的位置較為準(zhǔn)確。
關(guān)鍵詞:時(shí)延算法;聲源定位;超聲波測距;麥克鳳陣列;STM32
中圖法分類號(hào):TN912文獻(xiàn)標(biāo)識(shí)碼:A
1 引言
聲源定位小車是一種基于聲學(xué)傳感技術(shù)的智能機(jī)器人,它能夠在那些復(fù)雜的環(huán)境中實(shí)現(xiàn)一些聲源的定位和跟蹤,具有廣泛的應(yīng)用前景。
目前,聲源定位小車已在安防、智能家居、醫(yī)療等領(lǐng)域得到了廣泛的應(yīng)用,例如,在安防領(lǐng)域,聲源定位小車可以通過定位報(bào)警設(shè)備的聲源位置,實(shí)現(xiàn)對(duì)安全隱患的及時(shí)發(fā)現(xiàn)和處理;在智能家居領(lǐng)域,聲源定位小車可以作為家庭智能助手,對(duì)家庭中的各種聲源進(jìn)行識(shí)別和分析,從而實(shí)現(xiàn)智能家居的控制和管理。然而,聲源定位小車在實(shí)際應(yīng)用中面臨著許多挑戰(zhàn),如復(fù)雜的聲音環(huán)境、定位精度、運(yùn)動(dòng)控制等方面的問題。因此,本文旨在研究和實(shí)現(xiàn)一種基于聲學(xué)傳感技術(shù)的聲源定位小車,通過對(duì)聲學(xué)信號(hào)的采集和分析,實(shí)現(xiàn)聲源的準(zhǔn)確定位和跟蹤,以及對(duì)小車的運(yùn)動(dòng)控制。
本文基于麥克風(fēng)陣列實(shí)現(xiàn)聲源定位。麥克風(fēng)陣列聲源定位技術(shù)在陣列信號(hào)處理技術(shù)蓬勃發(fā)展的契機(jī)下誕生,能夠在多種場景下對(duì)各種聲音信號(hào)源定位。用麥克風(fēng)陣列來采集處理聲波信號(hào)受到越來越多學(xué)者及專家的關(guān)注[1] 。
2 總體設(shè)計(jì)
系統(tǒng)設(shè)計(jì)方案如圖1 所示,以實(shí)現(xiàn)聲源定位的要求。其采用“6 + 1”形式的數(shù)字麥克風(fēng)陣列進(jìn)行聲源收集,K210 負(fù)責(zé)對(duì)收集到的聲源進(jìn)行處理和聲源定位,STM32F103C8T6 作為主控,傳感器模塊包括編碼器、超聲波測距模塊、OLED 顯示屏,驅(qū)動(dòng)模塊有電機(jī)和驅(qū)動(dòng)電路。
3 硬件設(shè)計(jì)
基于整體設(shè)計(jì)方案,本文對(duì)系統(tǒng)的主要部分進(jìn)行詳細(xì)設(shè)計(jì)。
3.1 STM32F103C8T6 主控板
STM32F103C8T6 為系統(tǒng)的主控板,它主要獲取K210 通過串口發(fā)送的數(shù)據(jù)、收集超聲波測距模塊傳過來的距離信息,使小車避障,并通過K210 發(fā)來的數(shù)據(jù)驅(qū)動(dòng)小車。
3.2 K210 核心模塊
K210 可結(jié)合機(jī)器視覺和機(jī)器聽覺能力,提供更強(qiáng)大的功能,如圖2 所示,在應(yīng)用中可以通過聲源定位對(duì)目標(biāo)進(jìn)行跟蹤,可以根據(jù)麥克風(fēng)陣列確定一個(gè)說話人的方向。K210 的FPIOA 特性,支持每個(gè)外設(shè)隨意映射到任意引腳,這使得K210 可以有多個(gè)I2S 的通道來處理麥克風(fēng)陣列收集的音頻。
3.3 OLED 顯示屏
硬件的顯示模塊使用0.96 寸的OLED 屏幕,并采用I2C 的通信協(xié)議來連接STM32,精致小巧的特點(diǎn)使它便于安裝在小車上并實(shí)時(shí)顯示聲源的角度和水平的距離。
3.4 麥克風(fēng)陣列
麥克風(fēng)陣列模塊由7 個(gè)數(shù)字麥克風(fēng)組成,其中6 個(gè)麥克風(fēng)圍繞在四周不同方向,每個(gè)麥克風(fēng)夾角為60°,還有1 個(gè)在模塊正中央。另外12 個(gè)LED 指示燈,方便指示聲源位置,麥克風(fēng)陣列的12 個(gè)燈珠將整體劃分為12 等份,角間距為π/6。麥克風(fēng)陣列如圖3 所示。
3.5 超聲波測距模塊
超聲波是一種頻率高于20 000 赫茲的聲波,超聲波測距模塊(HC?SR04 模塊) 可以測得最近距離2cm,最遠(yuǎn)距離4 m,測量角度可以達(dá)到15°,具有性能穩(wěn)定,方向性好,穿透能力強(qiáng),易于獲得較集中的聲能,便于使用的優(yōu)點(diǎn)。
3.6 驅(qū)動(dòng)電路
驅(qū)動(dòng)電路的功率元器件由LR7843 型MOSFET 管組成,直流電機(jī)采用可逆雙極型橋式驅(qū)動(dòng)器,極大地提升了電機(jī)的轉(zhuǎn)速[2] 。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 系統(tǒng)主程序
先初始化各個(gè)模塊,以麥克風(fēng)陣列S 圖標(biāo)正方向?yàn)樽鴺?biāo)原點(diǎn),右邊為X 正軸,豎直向上為Y 軸建立坐標(biāo)系,以S 圖標(biāo)正下方角度為0 度,順時(shí)針度數(shù)依次增加,當(dāng)麥克風(fēng)陣列接收到聲源的信號(hào),K210 記錄聲源到達(dá)每個(gè)麥克風(fēng)的時(shí)間,從而通過時(shí)延算法,計(jì)算出聲源的角度和距離。K210 通過串口將計(jì)算出的角度和距離發(fā)送給STM32,并在OLED 顯示屏實(shí)時(shí)顯示發(fā)送過來的角度和距離。STM32 收到數(shù)據(jù)后會(huì)驅(qū)動(dòng)電機(jī)讓小車朝著聲源的方向移動(dòng),在移動(dòng)的過程中,超聲波測距模塊會(huì)檢測小車的前面有無障礙物。
4.2 TDOA
4.2.1 基本概念
該設(shè)計(jì)采用基于TDOA 到達(dá)時(shí)間差定位原理和廣義互相關(guān)函數(shù)的時(shí)延估計(jì)(Generalized Cross CorrelationPHAse Transformation,GCC?PHAT)原理[3] 。在有2 個(gè)麥克風(fēng)M1 和M2 并有噪聲的情況下收到聲源,對(duì)其建立模型,具體如下:
x1(t)= s(t-τ1)+n1(t) (1)
x2(t)= s(t-τ2)+n2(t) (2)
其中,τ1 和τ2 分別是聲源到達(dá)2 個(gè)麥克風(fēng)的延遲時(shí)間,n1(t)和n2(t)為加性噪聲。那么聲源信號(hào)到達(dá)2個(gè)麥克風(fēng)的TDOA 為:
在麥克風(fēng)陣列幾何形狀已知的情況下,聲源定位問題變?yōu)閷?duì)時(shí)延的估計(jì)問題。在確定麥克風(fēng)陣列的排布后,聲源定位問題進(jìn)一步變?yōu)閷?duì)時(shí)延估算的問題。
4.2.2 時(shí)延估計(jì)
時(shí)延估計(jì)常用的有很多種方法,如使用廣義互相關(guān)函數(shù)。廣義互相關(guān)函數(shù)的目的就是為了在嘈雜環(huán)境下,削弱噪聲和混響的影響,使實(shí)際環(huán)境聲源的定位更加準(zhǔn)確。在互功率譜域使用加權(quán)函數(shù)加權(quán),然后經(jīng)過IFFT 運(yùn)算后找到峰值估計(jì)時(shí)延,最后通過式(4)和式(5)計(jì)算出聲源到達(dá)2 個(gè)麥克風(fēng)的時(shí)延,Gx1x2(ω)是互頻譜。
4.2.3 定位估計(jì)
就二維平面來說,聲源到達(dá)麥克風(fēng)陣列的波形被看作平面波,如圖4 所示。
聲速假定為c,這2 個(gè)麥克風(fēng)之間的距為a,M1 和M2 的時(shí)延是τ (,根據(jù)圖4 的幾何關(guān)系可以得出:
由于其他參數(shù)已知,進(jìn)而可以得到聲源對(duì)于麥克風(fēng)陣列的角度:
4.3 串口通信
串口通信是一種串行異步通信,通信雙方以字符幀為數(shù)據(jù)傳輸單位,字符幀按位依次傳輸,每個(gè)位占固定的時(shí)間長度。兩個(gè)字符幀之間的傳輸時(shí)間間隔可以是任意的,即傳輸完一個(gè)字符幀后,可以間隔任意時(shí)間再傳輸下一個(gè)字符幀。
K210 和STM32 都支持串口通信功能,它們之間的串口通信可以通過連接它們之間的TX 和RX 引腳來實(shí)現(xiàn)。K210 一共有3 個(gè)UART, 由于K210 的FPIOA 特性,支持每個(gè)外設(shè)隨意映射到任意引腳,因此UART 可以進(jìn)行自由的引腳映射。我們將K210 的24 號(hào)和25 號(hào)引腳作為UART 通信的RX 和TX。STM32C8T6 有3 個(gè)UART 接口,本次采用UART1 接口,將PA10 和PA9 作為UART 通信的RX 和TX。下面將介紹K210 和STM32 之間通過串口通信進(jìn)行數(shù)據(jù)傳輸?shù)幕静襟E。
(1)確定串口通信參數(shù):在K210 和STM32 之間進(jìn)行串口通信前,需要確認(rèn)串口通信的波特率、數(shù)據(jù)位、停止位和校驗(yàn)位等參數(shù),保證2 個(gè)設(shè)備設(shè)置的參數(shù)一致。
(2) 配置K210 的串口:在K210 中,本次使用MaixPy、串口參數(shù)等信息。
(3)配置STM32 的串口:在STM32 中,使用Keil5進(jìn)行串口配置。
(4)發(fā)送與接收數(shù)據(jù):K210 是發(fā)送數(shù)據(jù)的一端,STM32 則接收K210 發(fā)送過來的串口數(shù)據(jù)。數(shù)據(jù)的傳輸需要保證2 個(gè)設(shè)備的串口通信參數(shù)一致,而且發(fā)送和接收數(shù)據(jù)的方式也需要保持一致,這樣才能確保數(shù)據(jù)的正確傳輸。由于K210 發(fā)送的數(shù)據(jù)是ASCII 碼的形式,并且是每次發(fā)送一個(gè)字符,因此發(fā)送數(shù)據(jù)的結(jié)尾要以‘ \r\n來表明發(fā)送數(shù)據(jù)結(jié)束。
5 系統(tǒng)測試
在實(shí)驗(yàn)中,先對(duì)小車進(jìn)行固定聲源定位的實(shí)驗(yàn)。將小車放在一個(gè)標(biāo)明角度的大圓盤中,將聲源依次放置不同的角度和距離,看小車能否準(zhǔn)確到達(dá)聲源的位置。先測量小車起始位置與聲源的距離,等到小車停止后,記錄小車所處圓盤的角度并測出小車所停位置與起點(diǎn)的距離,其實(shí)驗(yàn)數(shù)據(jù)如表1 所列。
第2 次實(shí)驗(yàn),在小車的附近放置障礙物,將聲源的發(fā)聲裝置放在障礙物的后方,測試小車能否繞過障礙物,從而抵達(dá)聲源位置。經(jīng)過2 次實(shí)驗(yàn)可以得出,在室內(nèi)封閉的場所,小車在聲源定位時(shí),可以基本準(zhǔn)確到達(dá)聲源位置,并且可以繞開障礙物。
6 結(jié)束語
本文設(shè)計(jì)了一種基于聲源定位的智能小車,其重點(diǎn)還是如何處理聲源定位。經(jīng)測試,小車可以很好地確定聲源的角度和距離,也可以較好地實(shí)現(xiàn)了對(duì)小車的運(yùn)動(dòng)控制,可以驗(yàn)證基于聲源定位的智能小車的定位和可移動(dòng)性能,并且可以比較不同系統(tǒng)設(shè)計(jì)和參數(shù)之間的差異。本次實(shí)驗(yàn)中存在一定的角度和距離誤差,不能在聲源嘈雜的環(huán)境下進(jìn)行聲源定位,未來的改進(jìn)還需要考慮聲源定位算法的優(yōu)化、定位精度的提高、運(yùn)動(dòng)控制等方面的問題。此外,對(duì)于不同的應(yīng)用場景,可能需要對(duì)系統(tǒng)進(jìn)行特定的優(yōu)點(diǎn)適配,以滿足不同的需求,以便可以更加精確地進(jìn)行聲源定位。本文旨在為后面聲源定位的研究提供參考。
參考文獻(xiàn):
[1] 邵佳偉.基于麥克風(fēng)陣列的聲源定位問題研究[D].沈陽:沈陽工業(yè)大學(xué),2022.
[2] 朱智,嚴(yán)超,潘曉輝.基于聲源定位的智能小車控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].無線互聯(lián)科技,2022,19(13):76-78.
[3] 王小懷,伊樹彬,蔡洛思.基于TDOA 技術(shù)及幾何模型的聲源精準(zhǔn)定位[J].中國新技術(shù)新產(chǎn)品,2022,(22):29-31+84.
作者簡介:
蘇俊杰(1999—),碩士,研究方向:嵌入式系統(tǒng)。
胡杰(1968—),碩士,副教授,研究方向:物聯(lián)網(wǎng)感知技術(shù)、嵌入式系統(tǒng)。
計(jì)算機(jī)應(yīng)用文摘·觸控2023年15期