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