我在寻找或实施一种寻找信号源的算法时遇到了一些麻烦。我的工作目标是找到发声器的位置。
为了达到这个目的,我使用了三个振动传感器。我使用的技术是基于到达时差的多点定位。
使用接收信号的互相关来找到每个传感器之间的到达时间差。
我已经实现了算法以找到到达的时差,但我的问题更多的是关于多点定位如何工作,根据我的参考我不清楚,我找不到任何其他好的参考,这是免费的/打开。
我看过这篇文章Trilateration using TDOA 但我无法弄清楚如何解决多边定位维基百科页面的方程组(7),因为我只有三个TDOA。
对此的任何帮助都将非常感激
答案 0 :(得分:3)
您有三个传感器坐标A,B,C
,未知的信号源坐标P
,未知的信号开始时间t0
和三次信号注册ta, tb, tc
。
示例:让传感器A在12:00:05,传感器B - 在12:00:00,传感器C - 12:00:07捕获信号。因此,请指定时差:ta=5, tb=0, tc=7
从传感器到源的平方距离对应于信号走动的时间v
(speed of sound在空中或其他环境中)
(Ax-Px)^2 + (Ay-Py)^2 = (v*(ta-t0))^2 {1}
(Bx-Px)^2 + (By-Py)^2 = (v*(tb-t0))^2 {2}
(Cx-Px)^2 + (Cy-Py)^2 = (v*(tc-t0))^2 {3}
打开括号,然后减去等式({2} - {1},{3} - {2},{1} - {3})以丢弃未知术语的正方形。
Ax^2-2*Ax*Px + Px^2 + Ay^2-2*Ay*Py + Py^2 = v^2*(ta^2 - 2*ta*t0 + t0^2)
Bx^2-2*Bx*Px + Px^2 + By^2-2*By*Py + Py^2 = v^2*(tb^2 - 2*tb*t0 + t0^2)
Cx^2-2*Cx*Px + Px^2 + Cy^2-2*Cy*Py + Py^2 = v^2*(tc^2 - 2*tc*t0 + t0^2)
Bx^2-Ax^2 -2*(Bx-Ax)*Px + By^2-Ay^2 -2*(By-Ay)*Py = v^2*(tb^2-ta^2 -2*(tb-ta)*t0) {1'}
Cx^2-Bx^2 -2*(Cx-Bx)*Px + Cy^2-By^2 -2*(Cy-By)*Py = v^2*(tc^2-tb^2 -2*(tc-tb)*t0) {2'}
Ax^2-Cx^2 -2*(Ax-Cx)*Px + Ay^2-Cy^2 -2*(Ay-Cy)*Py = v^2*(ta^2-tc^2 -2*(ta-tc)*t0) {3'}
现在你的three linear equations系统有三个未知数。它可以通过一些广泛的算法来解决 - Gauss elimination,LU decomposition等。
请注意,求解精度很大程度上取决于坐标和时间测量中的小误差(此方法不是很稳健)。
答案 1 :(得分:0)
几何上,双曲线表示两点之间距离恒定的点云。你有3分,但成对,3对可能的时间差将允许你绘制3个双曲线。寻找双曲线在曲线上相交处或之间的点。或者解决等效代数(最小二乘)。