超声波信号检测


9

我创建了一个相当简单的TDOA系统,该系统使用从两个扬声器发出的超声波信号来定位(相对于扬声器)移动电话。这两个信号按频率分开。

该系统具有以下约束:

  • 信号必须听不到。为此,我们坚持使用高于17 kHz的频率。少数人仍然可以听到,但大多数人听不到。
  • 采样率为44.1 kHz。
  • 音乐通常会在播放,因此在较低频率下会有很多干扰。
  • 我们无法控制扬声器和麦克风在较高频率下的运行状况,因此我们将上限保持在20 kHz左右。

我使用的特定信号是BPSK调制的13位Barker码,因为它们具有良好的自相关特性。自相关如下所示: 信号自相关

但是,当我将期望信号与现实生活中的接收信号互相关时,我通常会得到如下所示: 典型互相关

蓝色是与扬声器1信号的互相关,红色是与扬声器2信号的互相关。由于麦克风的定向增益,回波似乎很明显,并且不幸的是,通常比直接路径信号要强。

我尝试仅检测信号的最早出现,因为这很可能是直接路径。这种方法对我用来确定何时存在信号的阈值非常敏感,因此根本不够鲁棒。

我想要一种确定信号的“真实”到达时间(即直接路径信号的到达时间)的可靠方法。也许某种形式的信道估计和反卷积?如果是这样,那将如何工作?

数据/代码:我想明确地说,我不希望任何人分析数据或检查我的代码。我已经提供了它们,以备您需要。我主要对想法感兴趣。

我提供了原始接收信号和调制后的预期信号供下载。它们均以44.1 kHz采样。将接收到的信号与预期信号相关联会产生与上图类似但不同的东西,因为在将接收到的信号与预期信号相关之前,我将接收到的信号移至基带并进行了抽取。

接收信号

预期信号1

预期信号2

Matlab脚本 Matlab脚本同时具有信号生成脚本(genLocationSig.m)和我的接收/处理脚本(calcTimingOffset.m)。


您是否可以共享rx1,rx2和模板数据?
Tarin Ziyaee 2014年

@ user4619我今晚将尝试这样做。
Jim Clay 2014年

很快:我收到了您的数据,并制作了对比度增强的STFT-PSD。我猜想底部的那5个blip是您的两个信号,以频率分开。您的信号似乎可以正常传输,但我不认为回声或多径是您的问题。如您所见,至少在开始时,脉冲之间存在很多间歇性(宽带)噪声。如果您需要复杂的频带移动,下采样,将其与巴克序列相关联并查看包络,您会看到什么?
Tarin Ziyaee 2014年

1
好的,有两件事:I)您是否考虑过使用线性chi而不是像这样的编码波形?它们给您更大的灵活性,并且所涉及的运动部件大大减少。II)您的带宽限制是什么(如果有)?例如,您的模板似乎大约1 KHz宽,这是什么原因?你可以更高吗?使用线性-,这很容易。III)虽然我怀疑您的解调器有什么问题,但是提出来会有所帮助。这样,它将省去我编写代码的麻烦!
Tarin Ziyaee 2014年

1
关于位注释,有一个误解:让我们将剥皮器代码的13个状态中的每个状态称为“芯片”。因此,如果我传送一点,我将传送13个芯片。如果传输2位,则传输26个芯片,依此类推。所以我的问题是,您要传输多少?我假设您只是传输1位,所以我说您也可以考虑传输更多位,以增强编码增益。那有意义吗?
Tarin Ziyaee 2014年

Answers:


3

这些不是您要查找的代码...

正如我在评论中所提到的,有很多方法可以实现可靠的TDOA。(与线性线性调频,指数线性调频和CDMA类型方法互相关)。您已经使用代码构建了TDOA系统,(如果需要鲁棒的多普勒,那确实是线性线性调频的不错选择),但是您通过两种方式人为地限制了自己:

  • 13
  • 1

使用PN序列:

3161127

PN_31 = [ 1  1 -1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1 -1  1 -1  1 -1  1  1  1 -1  1  1 -1 -1 -1  1  1  1];

PN_61 = [ 1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1 -1 -1  1 ...
     -1  1 -1 -1 -1  1  1 -1 -1 -1 -1  1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1  1 -1  1 -1 ...
      1  1 -1 -1  1  1 -1];

PN_127 = [-1     1     1     1    -1     1    -1    -1     1    -1     1     1    -1    -1    -1     1     1    -1     1     1     1     1    -1     1     1    -1     1    -1 ...
       1     1    -1     1     1    -1    -1     1    -1    -1     1    -1    -1    -1     1     1     1    -1    -1    -1    -1     1    -1     1     1     1     1     1 ...
      -1    -1     1    -1     1    -1     1     1     1    -1    -1     1     1    -1     1    -1    -1    -1     1    -1    -1     1     1     1     1    -1    -1    -1 ...
       1    -1     1    -1    -1    -1    -1     1     1    -1    -1    -1    -1    -1     1    -1    -1    -1    -1    -1    -1     1     1     1     1     1     1     1 ...
      -1     1    -1     1    -1     1    -1    -1     1     1    -1    -1     1     1     1];

1310 log[12713]10

在此处输入图片说明

传送序言:

在您的特定应用程序中,您提到您仅传输一位。如果可以帮助您,则应尽量避免这种情况,并尽可能多地传输应用程序允许的位,以获取更多的编码增益。

316112713


尝试其中一种或两种解决方案,然后提出您的结果。我希望可以进行切实的改进,然后再进行迭代。(脉冲整形,不同/更长的PN序列等)。


1
是的,我计划尝试更长的序列。我不知道pn序列的循环自相关是如此有趣。不幸的是,对我的应用而言,线性自相关很重要。关于前同步码,就某种意义而言,整个序列在某种意义上是“前同步码”,从某种意义上说,使前同步码有用的是它是已知的数据模式。我的整个信号是先验的。
吉姆·克莱

我决定通过使用10 lfsr(1023芯片)命令来证明或排除通过延长信号可以解决该问题,从而在信号长度上有点过大。我会发生什么事。
吉姆·克莱

1
@JimClay很高兴听到这个消息。我很好奇看到现在收到的xcorrs /信号是什么样的。那太好了。
Tarin Ziyaee 2014年

1
@endolith是的,多普勒问题。我通过多次关联来处理此问题,每次将接收信号的频率偏移不同的量。如果您在频域中进行关联,这很容易做到。
吉姆·克莱

1
@endolith正如Jim Clay描述他的方法时,他基本上是在计算所谓的歧义函数。即,产生交叉校正,第二维对应于基本频率。然后将显示峰值,因此,由于我们知道原始频率,因此显示了其多普勒度。
Tarin Ziyaee 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.