Я создал довольно простую систему TDOA, которая использует ультразвуковые сигналы, излучаемые двумя динамиками, для определения местоположения (относительно динамиков) мобильных телефонов. Два сигнала разделены по частоте.
Система имеет следующие ограничения:
- Сигналы должны быть не слышны. Для этого мы придерживаемся частот выше 17 кГц. Несколько человек все еще слышат это, но большинство не могут.
- Частота дискретизации составляет 44,1 кГц.
- Музыка обычно играет, поэтому на низких частотах много помех.
- Мы не контролируем, насколько хорошо работают динамики и микрофоны на верхних частотах, поэтому мы сохранили наш верхний предел на уровне около 20 кГц.
Конкретный сигнал, который я использую, это модулированные BPSK 13-битные коды Баркера из-за их хороших автокорреляционных свойств. Автокорреляция выглядит следующим образом:
Однако когда я кросс-коррелирую ожидаемый сигнал с полученным сигналом в реальной жизни, то, что я получаю, обычно выглядит так:
Синий - это взаимная корреляция с сигналом динамика 1, а красный - это взаимная корреляция с сигналом динамика 2. Похоже, что эхо является значительным и, к сожалению, часто сильнее, чем сигнал прямого тракта из-за направленного усиления микрофона.
Я попытался просто обнаружить самое раннее появление сигнала, поскольку это, вероятно, прямой путь. Этот подход очень чувствителен к порогу, который я использую для решения, когда сигнал присутствует, и поэтому не является устойчивым вообще.
Я хотел бы иметь надежный подход для определения «истинного» времени прибытия сигнала, то есть времени прибытия сигнала прямого тракта. Возможно, какая-то форма оценки канала и деконволюции? Если так, как это будет работать?
Данные / код: Я хочу прояснить, что я не ожидаю, что кто-либо проанализирует данные или проверит мой код. Я сделал их доступными на случай, если ты захочешь. Меня больше всего интересуют идеи.
Я сделал необработанный полученный сигнал и модулированные ожидаемые сигналы доступными для загрузки. Все они сэмплированы на частоте 44,1 кГц. Сопоставление принятого сигнала с ожидаемыми сигналами приведет к чему-то похожему, но не идентичному изображению выше, потому что я перемещаю принятые сигналы в основную полосу и преобразую перед сопоставлением с ожидаемыми сигналами.
Скрипты Matlab Скрипты Matlab имеют как скрипт генерации сигнала (genLocationSig.m), так и мой скрипт получения / обработки (calcTimingOffset.m).