基于K210的声源定位系统
生活随笔
收集整理的這篇文章主要介紹了
基于K210的声源定位系统
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2022年全國大學(xué)生電子設(shè)計競賽——聲源定位跟蹤系統(tǒng)(E題)
設(shè)計一種能夠檢測聲音源的偏航角、俯仰角及距離來定位和指示聲源的裝置。水平方向上采用K210結(jié)合麥克風(fēng)陣列采集不同方向麥克風(fēng)的強(qiáng)度,從而計算偏航角和距離;從而控制舵機(jī),將激光筆指到聲源位置。
所需硬件
maixbit(k210芯片)、麥克風(fēng)陣列、舵機(jī)、lcd顯示屏
核心代碼:
卡爾曼濾波: def Kalman_Filter(value): # 傳angleglobal KF_lastP #上次的協(xié)方差global KF_nowP #本次的協(xié)方差global KF_x_hat #卡爾曼濾波的計算值,即為后驗最優(yōu)值global KF_Kg #卡爾曼增益系數(shù)global KF_Q #過程噪聲global KF_R #測量噪聲output=0 #output為卡爾曼濾波計算值x_t=KF_x_hat #當(dāng)前先驗預(yù)測值 = 上一次最優(yōu)值KF_nowP=KF_lastP+KF_Q #本次的協(xié)方差矩陣KF_Kg=KF_nowP/(KF_nowP+KF_R)#卡爾曼增益系數(shù)計算output=x_t+KF_Kg*(value-x_t)#當(dāng)前最優(yōu)值KF_x_hat=output #更新最優(yōu)值KF_lastP=(1-KF_Kg)*KF_nowP#更新協(xié)方差矩陣return output 獲取麥克風(fēng)陣列的坐標(biāo)位置、聲強(qiáng)、夾角等 def get_mic_dir():AngleX=0AngleY=0AngleR=0Angle=0AngleAddPi=0Angle_Z=0AngleR_Z=0mic_list=[]img = mic.get_map()imga=img# 獲取聲音源分布圖像b = mic.get_dir(imga) # 計算、獲取聲源方向for i in range(len(b)):if b[i]>=2:AngleX+= b[i]*math.sin(i*math.pi/6)AngleY+= b[i]*math.cos(i*math.pi/6)AngleX=round(AngleX,6) #計算坐標(biāo)轉(zhuǎn)換值A(chǔ)ngleY=round(AngleY,6)if AngleY<0:AngleAddPi=180if AngleX<0 and AngleY > 0:AngleAddPi=360if AngleX!=0 or AngleY!=0: #參數(shù)修正if AngleY==0:Angle=90 if AngleX>0 else 270 #填補(bǔ)X軸角度else:Angle=AngleAddPi+round(math.degrees(math.atan(AngleX/AngleY)),4) #計算角度AngleR=round(math.sqrt(AngleY*AngleY+AngleX*AngleX),4) #計算強(qiáng)度AngleR_Z=int(AngleR)Angle_Z=int(Angle)mic_list.append(AngleX)mic_list.append(AngleY)mic_list.append(AngleR)mic_list.append(Angle)完整代碼和效果見:
https://m.tb.cn/h.UdDKJML?tk=stEl2zanG9O CZ0001
點擊鏈接直接打開
總結(jié)
以上是生活随笔為你收集整理的基于K210的声源定位系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年A特种设备相关管理(电梯)考试
- 下一篇: Java+Swing实现医院管理系统