我创建了一个相当简单的TDOA系统,该系统使用从两个扬声器发出的超声波信号来定位(相对于扬声器)移动电话。这两个信号按频率分开。
该系统具有以下约束:
- 信号必须听不到。为此,我们坚持使用高于17 kHz的频率。少数人仍然可以听到,但大多数人听不到。
- 采样率为44.1 kHz。
- 音乐通常会在播放,因此在较低频率下会有很多干扰。
- 我们无法控制扬声器和麦克风在较高频率下的运行状况,因此我们将上限保持在20 kHz左右。
我使用的特定信号是BPSK调制的13位Barker码,因为它们具有良好的自相关特性。自相关如下所示:
但是,当我将期望信号与现实生活中的接收信号互相关时,我通常会得到如下所示:
蓝色是与扬声器1信号的互相关,红色是与扬声器2信号的互相关。由于麦克风的定向增益,回波似乎很明显,并且不幸的是,通常比直接路径信号要强。
我尝试仅检测信号的最早出现,因为这很可能是直接路径。这种方法对我用来确定何时存在信号的阈值非常敏感,因此根本不够鲁棒。
我想要一种确定信号的“真实”到达时间(即直接路径信号的到达时间)的可靠方法。也许某种形式的信道估计和反卷积?如果是这样,那将如何工作?
数据/代码:我想明确地说,我不希望任何人分析数据或检查我的代码。我已经提供了它们,以备您需要。我主要对想法感兴趣。
我提供了原始接收信号和调制后的预期信号供下载。它们均以44.1 kHz采样。将接收到的信号与预期信号相关联会产生与上图类似但不同的东西,因为在将接收到的信号与预期信号相关之前,我将接收到的信号移至基带并进行了抽取。
Matlab脚本 Matlab脚本同时具有信号生成脚本(genLocationSig.m)和我的接收/处理脚本(calcTimingOffset.m)。