基于信号延迟找出传感器相对位置的算法

标签 algorithm signal-processing triangulation

这与三角测量有关,但以一种非直观的方式。

我们有一个由 n 个传感器组成的传感器阵列,它们在空间上是分开的。他们测量信号,其速度相对于传感器之间的距离足够低,我们可以测量传感器之间所述信号的延迟。 (例如,4 个麦克风收听声音,每个麦克风相距 1 米或类似距离)。

我们不知道这些传感器相对于彼此的位置,也不知道信号源的位置,但我们可以在阵列周围移动信号源,从而给我们带来多重延迟,这与信号源的距离有关传感器之间的相对关系(例如围绕传感器阵列拍手)。

我们能否从一组延迟中找到数组的相对位置?

直觉上这似乎是可能的,因为我们知道信号的速度,以及每个传感器中的信号相对于彼此的延迟,因此知道这些传感器的相对距离。

还有一件事:如果信号距离很远,它的行为就像一个无限平面源,但如果信号很近,波前是球面的,这会使事情变得复杂。

还有 2D 情况和 3D 情况。 The set up for one signal

此图像是一个信号测量时刻

最佳答案

是的,有警告。

由于您不知道源信号的时间,因此无法直接测量每个阵列与源之间的距离。

但是您仍然可以分辨出不同阵列组件之间的距离差异。

这为每对数组组件提供了一个丑陋的方程式。你可以把它写成类似 d_1 - d_0 - measurement_delay_1_0 * signal_speed = 0,其中 d_x 是源和接收器之间的距离 (sqrt((xs-xr ) ^2 + (ys-yr)^2 + (zs - zr) ^2)).

一次测量不足以解决问题。所以现在将源在 X 方向移动一个单位并进行新的测量。然后将源在 y 方向上移动一个单位并进行测量。如果你在 3d 情况下,也许还有一个在 z 上。我怀疑这(或 4 次测量)就足够了,但我没有深入研究数学。

现在,如果这是一个完美的设置,您将获得完美的测量结果,并且您应该获得一个多项式方程组,您应该能够使用已知技术(在维基百科或一本好的数学书上查找)求解该方程组。

但是,现实世界并不完美,因此您不太可能获得精确的数学解决方案。因此,下一个最好的办法是将其视为一种优化解决方案,您希望从最小二乘法的角度优化每个方程(再次查找)。这将为您提供最佳的位置近似值。好处是您可以通过进行额外的测量来提高此设置的准确性。

注意事项:

  • 疯狂的探测器放置可能会干扰解决方案。理想情况下,探测器不会共面。
  • 坐标系取决于您移动源的方式。如果移动非常精确,移动非常小的(相对)量可能会导致很大的错误。
  • 在现实世界中,您会听到回声和噪音。你应该在尝试定位任何东西之前处理它。

关于基于信号延迟找出传感器相对位置的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64045388/

相关文章:

algorithm - 计算 PDF 文件页数的代码改进

algorithm - 回溯算法是否必须从后面开始?

python - 在python中创建一个频谱图(不画图)

objective-c - kAudioUnitSubType_NBandEQ 是如何工作的?或者使用 DSP 公式与 Novocaine 进行均衡?

algorithm - 如何检测图像纹理?

java - TopCoder 最佳选择算法来自 SRM 489 DIV 2(500 分)

matlab - 如何以与原始文件相同的速度播放采样的音频文件?

compiler-errors - Tetgen TetCall编译错误

c++ - 如何使用 OpenCV triangulatePoints

c++ - 如何找到反射顶点和凸顶点