基于K210的声源定位系统
生活随笔
收集整理的這篇文章主要介紹了
基于K210的声源定位系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2022年全國大學生電子設計競賽——聲源定位跟蹤系統(E題)
設計一種能夠檢測聲音源的偏航角、俯仰角及距離來定位和指示聲源的裝置。水平方向上采用K210結合麥克風陣列采集不同方向麥克風的強度,從而計算偏航角和距離;從而控制舵機,將激光筆指到聲源位置。
所需硬件
maixbit(k210芯片)、麥克風陣列、舵機、lcd顯示屏
核心代碼:
卡爾曼濾波: def Kalman_Filter(value): # 傳angleglobal KF_lastP #上次的協方差global KF_nowP #本次的協方差global KF_x_hat #卡爾曼濾波的計算值,即為后驗最優值global KF_Kg #卡爾曼增益系數global KF_Q #過程噪聲global KF_R #測量噪聲output=0 #output為卡爾曼濾波計算值x_t=KF_x_hat #當前先驗預測值 = 上一次最優值KF_nowP=KF_lastP+KF_Q #本次的協方差矩陣KF_Kg=KF_nowP/(KF_nowP+KF_R)#卡爾曼增益系數計算output=x_t+KF_Kg*(value-x_t)#當前最優值KF_x_hat=output #更新最優值KF_lastP=(1-KF_Kg)*KF_nowP#更新協方差矩陣return output 獲取麥克風陣列的坐標位置、聲強、夾角等 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) #計算坐標轉換值AngleY=round(AngleY,6)if AngleY<0:AngleAddPi=180if AngleX<0 and AngleY > 0:AngleAddPi=360if AngleX!=0 or AngleY!=0: #參數修正if AngleY==0:Angle=90 if AngleX>0 else 270 #填補X軸角度else:Angle=AngleAddPi+round(math.degrees(math.atan(AngleX/AngleY)),4) #計算角度AngleR=round(math.sqrt(AngleY*AngleY+AngleX*AngleX),4) #計算強度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
點擊鏈接直接打開
總結
以上是生活随笔為你收集整理的基于K210的声源定位系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年A特种设备相关管理(电梯)考试
- 下一篇: 纳斯达克的区块链野望