Сонар из Диктофона

2a6cd5e3814c844483b4a37cf622669a.png

Пролог

Что если из диктофона сделать акустический локатор? Давайте разбираться.

Постановка задачи

Записать *.WAV файл во время действия точечного звукового источника генерирующего импульсы ЛЧМ сигнала.

Вычислить корреляцию и оценить расстояние до предметов вокруг.

Основная идея

Я попробовал периодически излучать ЛЧМ импульсы и непрерывно вычислять корреляцию. Измерять время между пиками TOF и пересчитывать его в расстояние. Всё как в настоящих радарах.

Реализация

Как известно скорость звука это 331 метр/с. Если умножить скорость звука на TOF и поделить на два то получится расстояние до предмета.

Dist = V_{sound} \frac{TOF}{2} ;   \frac{[m] }{[s]} \frac{[s]}{2}=[m]  \qquad   \qquad (1)

Прежде всего надо подготовить файл с зондирующими импульсами. Для этого я написал на Си утилиту которая синтезирует такие файлы по опциям из командной строки.

Для частоты дискретизации я посчитал выбрать 44.1kHz. Это предельное значения для аудиокодеков внутри смартфонов. Да и потом, мобильное приложение Audio Rec записывает именно на частоте 44.1kHz.

В качестве зондирующего импульса я выбрал chirp сигнал (он же ЛЧМ сигнал). ЛЧМ используют в радиолокации, поэтому я выбрал его для сонара. Параметры ЛЧМ: F1= 500 Hz, F2=5000 Hz, длительность 6 ms. Этот звук похож на лопающиеся мыльные пузыри.

5b04131746e7a35ad18d9e7a5cf12f34.png

Для достаточного количества измерений надо излучать серию сhirp импульсов. В данном wav файле зондирующие ЛЧМ сигналы следуют с периодом 0.362 s.

9b601fb2821f8acf8ce7b29e50737eb0.png

Я взял два мобильных телефона и вышел во двор. Первый смартфон я включил проигрывать *.wav файл с последовательностью зондирующих ЛЧМ сигналов, а второй смартфон поставил рядом и включил диктофон на запись *.wav файла на частоте дискретизации 44100 Hz.

Получился вот такой файл записи.

25b3a249d0fd783ce07e91d029b2abb9.png

Затем я взял файл записи и подал его на вход моей консольной утилиты, которая делает свёртку записанного файла и того самого зондирующего ЛЧМ сигнала.

Свёртку я сделал FIR фильтром у которого коэффициенты — это значения семплов ЛЧМ сигнала.

fe96a8205cdf6ccda1f3ea77e2a7d4b1.png

Получился вот такой результат свёртки. Тут можно заметить, что после 23ms присутствует стабильное эхо. Поделив TOF 23ms на два и умножая на скорость звука 331 м/s получается 4 метра до какой-то цели.

14679786909895436afeef1160127e7b.png

Эхо особенно заметно в логарифмическом масштабе по оси Y.

846f745d32d3dd50c995b87700137873.png

В логарифмическом масштабе чётче видны максимумы корреляции записанного сигнала с локальной копией ЛЧМ.

304b20087edfdf72656bbd17e9bf32af.png

На расстоянии 4 метров в самом деле находилась стена ворот.

А это следующий эксперимент. Тут по оси X время пересчитывается сразу в расстояние до цели по формуле (1). То есть умножается на коэффициент 331×0.5=165.5 [m]/[c]. На оси Y — результат свёртки.

Примерно так можно интерпретировать цели на свёртке. По Y-логарифм свёртки, X-расстояние.

Примерно так можно интерпретировать цели на свёртке. По Y-логарифм свёртки, X-расстояние.

Заметна высокая воспроизводимость эхо сигнала. На первый взгляд что-то похожее на правду.

Что можно улучшить?

1--Повысить частоту дискретизации до 96kHz. Это улучшит разрешение измерения расстояния.

2--Увеличить длительность ЛЧМ сигнала. Вероятно это даст больший максимум свёртки, так как будет больше слагаемых.

3--Записывать эхо на матрицу из трёх микрофонов в одной горизонтальной плоскости. Так можно будет определять направление прихода эхо и, тем самым, вычислять расстояние до предметов с привязкой к азимуту (bearing).

4--Вычислять свёртку в реальном времени на FPGA. Это позволит повысить эффективность сонара.

5--Измеряя эхо в заранее известных местах, например вдоль линии, можно численными методами построить карту окружающего пространства. Тут в акустике можно применить все те же методы и алгоритмы обработки сигналов, как и в радиолокации с синтезированной апертурой (SAR/РСА).

Как найти локальные максимумы в графике свертки? Очень просто. Можно запрограммировать фильтр, который будет искать максимумы в скользящем окне. Таким образом получится массив возможных целей. При этом отдельный микрофон не знает откуда по азимуту пришли эти эхо. Поэтому надо построить концентрические окружности местонахождения целей вокруг каждого микрофона. Пересечения этих окружностей и будут показывать координаты цели.

К примеру, благодаря измерениям эха всего лишь из двух известных координат вдоль линии на расстоянии D можно определить координаты цели с точностью до зеркального отражения.

f8439971f1af9f1b7ed959894ac5658d.png

Итоги

Удалось на практике убедиться, что сделать сонар из обыкновенного телефонного аудиокодека вполне реальная задача. Это лишь вопрос вычислений. ЛЧМ сигнал может выполнять роль зондирующего импульса.

FIR фильтр можно использовать для вычисления свёртки, просто прописав функцию коэффициентами фильтра.

Подобные эксперименты со звуком можно проводить в качестве лабораторных работ в ВУЗах по цифровой обработке сигналов, радиолокации и гидроакустике.

Словарь

Акроним

Расшифровка

ЛЧМ

Линейная частотная модуляция

DDS

direct digital synthesis

TOF

Time-of-Flight

ВУЗ

Высшее учебное заведение

FIR

finite impulse response

Ссылки

Вопросы

Существуют ли микросхемы аппаратных конфигурируемых FIR фильтров (в ASIC исполнении)?

Habrahabr.ru прочитано 1615 раз