赞
踩
声音检测和测距有许多与回声定位、导航和地理定位相关的应用。所有这些都依赖于使用声音延迟准确定位声源的位置。
在这项研究中,我们组装了一个设备,该设备可以利用声音到达时间的差异来精确定位声源的位置。它由连接到 Arduino 电路板的三个声音传感器组成,该电路板发送数据至电脑,在 Python 中进行处理。我们发现其误差的大小随声源和传感器的相对位置而变化,致使生成一个误差模型,该模型让机器将任何单个测量与设备中实验确定的不确定性相结合,生成一个二维概率分布作为声源位置的热图。概率分布通常与机器的实际输出分布相匹配。
声音检测和测距有许多应用,包括民用和军用。 通过时间延迟测量,准确定位波源位置的能力在许多应用中存在。 如,天文学领域,射电天文学通过使用大型射电望远镜,通过检测天体的无线电发射来研究天体。 然而,单个望远镜实现的图像分辨率受到几个因素的限制,如望远镜天线孔径的大小。 为了克服这个限制,可以使用一种称为超长基线干涉测量的干涉测量,其中许多遥远的望远镜同步在一起模拟更大的奇异望远镜。 为了实现这一点,不同望远镜的无线电信号到达时间之间的延迟被组合和处理。 这项研究采用了一种称为到达时间差的类似技术,构建一种可以精确定位声源位置的装置。
到达时间差 (TDOA) 是一种用于对射频源进行地理定位的技术。 它需要三个或更多能够检测感兴趣信号的远程接收器(探针)。 每个探针在时间上同步到捕获相应的 I/Q 数据块。 软件移动每个 I/Q 数据集的时间特征以找到每个探测器到达时间的差异,这给出了源与每组探头的距离差异。 使用多个探针提供一组曲线,指示距离的解方程。
如文中所述,这种方法广泛用于定位系统。 本文设备包括三个通过 Arduino 电路板同步在一起的 Arduino 声音传感器。 我们假设三个声音传感器足够远且没有干扰,可以测量到声源的范围和方向。
模拟代码片段:
def makePlot(xBoundL=-50,xBoundR=50,yBoundL=-50,yBoundR=50, xPixScal=1,yPixScal=1, micSize=1, errConst=2, xMic=[0,1],yMic=[0,0], source=[0,0], ): x = np.arange( xBoundL, xBoundR, xPixScal ) y = np.arange( yBoundL, yBoundR, yPixScal ) X = np.tile( x, [y.size,1]) Y = np.tile( y, [x.size,1]) Y = np.rot90(Y) d12 = getDelay(source[0],source[1],xMic[0],yMic[0],xMic[1],yMic[1]) d13 = getDelay(source[0],source[1],xMic[0],yMic[0],xMic[2],yMic[2]) d23 = getDelay(source[0],source[1],xMic[1],yMic[1],xMic[2],yMic[2]) data = function(X, Y, xMic[0],yMic[0],xMic[1],yMic[1],xMic[2],yMic[2], d12,d13,d23, errConst) plt.imshow(data,extent=[xBoundL,xBoundR,yBoundL,yBoundR]) plt.contour(X,Y, curve(X,Y,xMic[0],yMic[0],xMic[1],yMic[1]), [d12],colors="red") # mics 1, 2 plt.contour(X,Y, curve(X,Y,xMic[0],yMic[0],xMic[2],yMic[2]), [d13],colors="red") # mics 1, 3 plt.contour(X,Y, curve(X,Y,xMic[1],yMic[1],xMic[2],yMic[2]), [d23],colors="red") # mics 2, 3 plt.plot(xMic,yMic,marker='o',linestyle='None', color='red',markersize=micSize) plt.show() def curve(x,y,x1,y1,x2,y2): return np.sqrt((x-x1)**2+(y-y1)**2)-np.sqrt((x-x2)**2+(y-y2)**2)
详情参阅 - 亚图跨际
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。