среда, 13 ноября 2013 г.

Действие второе.

 
Валялось всё это хозяйство несколько лет без дела и вот летом 2012 наконец дошли у автора сего поста руки до всего этого хозяйства. А целью была давнишняя мечта с помощью этих замечательных поплавков организовать так называемую SAS (Synthetic Aperture Sonar) или по-русски, ГСА (гидролокатор с синтезированной апертурой, или, если совсем по-русски, гидролокатор с искусственным раскрывом).
Суть этой штуковины в том, что за счёт грамотного накопления сигналов при движении приёмной антенны можно получить угловое разрешение намного выше, чем у используемой антенны. Причём, парадокс в том, что у используемой антенны как раз угловое разрешение должно быть как можно хуже (в идеале ширина ДН должна быть 180°). В нашем случае ширина ДН, как отмечено выше, около 45°, сойдёт.
        С помощью моего товарища, человека с реально золотыми руками, мы достаточно быстро организовали экспериментальный стендик на базе герметичный пластиковой коробки для СВЧ-печки :), кусков плотного пенопласта и прочей мелочёвки.




К тому времени L-Card выпустил более современный USB-АЦП с частотой оцифровки до 10МГц под названием E-2010B и новая версия программы записи под названием «L-Graph II». Надо отдать должное товарищам из L-Card: они «растут над собой». И хотя остались некоторые «кривоватости» в программе и «пацанский» стиль в документации (мы два дня ржали над фразой в описании: «учтите, что система Windows – ни разу не операционная система реального времени»; нормальный стиль для документации!), E-2010В приятно удивил стабильностью работы. При скорости оцифровки 500КГц АЦП умудрялся в real-time без пропусков писать на винч старого испытанного в боях мининоута ASUS S-200N (кстати, последний, если я не ошибаюсь, до сих пор является самым маленьким в мире полноценным ноутом!). По-крайней мере, почётное звание "Russian геморр-device" уже не соответствовало продукции «L-Card».
           Единственная неприятность – это довольно высокое потребление этого АЦП. Что и стало причиной малого количества записей ибо наш старенький «УПС» быстро сдался. Кроме того, тяжёлый сетевой блок питания АЦП постоянно норовил вывалиться из розетки.




        Верный RF-45 питался от своей батарейки (дабы исключить  наводки и прочую хню), сигнал снимался с выхода последнего каскада посредством осциллографического щупа с включённым делителем (на фото видно), включение осуществлялось перемычкой для надёжности. Частота оцифровки была выбрана в 500КГц как компромисс между длиной записи и желанием подальше отойти от частоты Котельникова.            
В целом эксперимент прошёл успешно. Сделаны три длинные записи при движении лодки с разной скоростью. Правда задним числом я сообразил, что неплохо бы было ещё параллельно писать сигнал на входе МК и на входе радиопередатчика. Ну да хрен с ним, может в другой раз.
           Типовой сигнал выглядит нижеследующим образом






В более крупном масштабе отражённый сигнал выглядит так




На рисунке чётко видно четыре участка (обозначены стрелками):
  1. участок включения питания и управления КУ первого каскада (по нему, кстати, удобно, с помощью порога, «прицеливаться» в начало очередного цикла излучения);
  2. на вход просачивается излучаемый импульс (правда, почему-то его длина оказалась равной 360мкС, что противоречит данным 2007г.; несущая частота равна 118,703КГц);
  3. появляется отражённый сигнал от дна и видно плавное увеличение КУ усилителя;
  4. отражённый сигнал продолжает поступать от соседних участков дна и, кроме того, из-за многократных переотражений дно-поверхность-берег (так называемая «реверберация»).
По всей видимости, простенький алгоритм, заложенный в МК, отслеживает порогом момент №3, т.е. первое отражение от дна, и весь остальной сигнал его уже не интересует. Кстати сказать, из этого следует идея об усовершенствовании работы поплавка: если остальной сигнал не интересен, то и нафига тратить энергию на работу усилителя. После момента №3 его можно просто отключать, в существующей же версии время работы усилителя фиксировано.
Ну это так, к слову, а нас как раз интересует (и очень интересует!) участок №4. Именно в нём заключена информация необходимая для SAS. Во-первых сделаем то, что не способен сделать слабенький PIC’овский «восьмерёночек», а именно – согласованную обработку. Согласованная обработка позволяет, теоретически, довести максимальную глубину работы поплавка до сотен метров!  
Убираем медленно меняющиеся части с помощью простейшего ВЧ-фильтра diff и сворачиваем получившийся сигнал с комплексной синусоидой на частоте F0 = 118703Гц. С длительностью тут вопрос. Самый «чёткий» результат получался, когда длительность опорного сигнала принималась равной T0 = 150мкС. Т.е. данные 2007г. о длительности зондирующего импульса верны, но тогда имеем следующее (показана действительная часть корреляционной функции (КФ))





   Дать чёткое физическое объяснение этой картинке достаточно сложно. Сначала идёт отклик от излучаемого сигнала, к которому подтянута метка нуля дальности. О начальном участке (примерно до 5м – разговор далее), а вот внятно объяснить наличие сплошного отражения («протяжённой цели») от 5 до 30м я ну никак не могу! Если это «звон» среды (реверберация), то она должна быть затухающая с характерным для мелководного водоёма для этой частоты временем затухания порядка нескольких миллисекунд. Это соответствует максимум 10-15м, но никак не 25м! Была даже идея о самовозбуждении усилителя, но при данной схемотехнике это невозможно.

           Ещё более интересно становится при переключении масштаба




Во-первых, что-то непонятное творится с излучаемым импульсом. На рисунке видно, что отклик от излучаемого сигнала распадается на четыре хорошо различимых пика. Можно предположить, что это результат возбуждения всей нашей коробки, в которую врезан поплавок. Длина волны излучения составляет порядка 1см, размер коробки – около 25см, так что эта гипотеза вполне приемлема. Но почему тогда первый отклик не является максимальным? Что там за предвестник такой?

Далее идёт тишина, затем – на глубине 1,3 и 1,5м появляются два одиночных мощных отражения. Природа их неизвестна, но возможно – это как раз рыбы, или большие валуны на дне. Затем, на глубине 1,7м начинается протяжённая цель. Судя по всему это – дно, что достаточно точно соответствует данным о глубине.

А дальше идёт отражение от дна, но с учётом ширины ДН эти отражения должны быть промодулированы ДН пьезоэлемента (правда на фоне работы цепи регулировки КУ усилителя мы можем этого и не видеть) и длиться не более 1м. Правда, по-видимому, здесь дело в поверхностной волне, возбуждённой в грунте дна и тем самым получающей дополнительную задержку.

А дальше начинается форменный форшмак! С расстояния 4м отражения резко спадают, затем с отметки примерно 4,8м идёт пачка мощных точечных отражений, которые плавно сливаются с упоминавшимся выше протяжённым откликом. В принципе, судя по расстоянию (около 6м) этот протяжённый отклик может быть отражением от берега вследствие волноводного распространения в узком водном слое. Хотя, в некотором смысле вторая «серия» отражений повторяет характер первой «серии». И это наводит на мысль о приёме дважды отражённого сигнала по направлению «дно-поверхность-дно».

Посмотрим, как эта же самая картина изменилась через пару излучений (около 0,5сек).
 



За это время лодка при средней скорости 5-6км/ч сместилась где-то на 80см. Видим, что отклик от излучаемого сигнала и двух мощных отражателей почти не изменился (так что вряд ли это рыбы). Но при этом дно приблизилось примерно на 20см. Следовательно, лодка, скорее всего, шла к берегу. Заметим, что задний «фронт» отклика также несколько увеличился в сторону отметки 4м. Это странно, ибо при постоянной ширине ДН, если дно приблизилось, то и ширина отклика от дна должна была уменьшится, а не увеличится.

            В общем понятно: для синтезированной апертуры данные после 4м нам, скорее всего, не интересны.
Вообще говоря, у нас неверная конфигурация аппаратуры для SAS. Ибо для SAS требуется боковой обзор, т.е. антенна должна принимать только с одного бока (или смотреть вперёд по ходу движения - это называется режим «доплеровского обужения луча»). В противном случае при синтезе у нас будут отклики слева и справа по ходу движения носителя накладываться друг на друга. У нас это, увы, будет именно так. Ну да и ладно.
                Второй момент – это равномерность движения лодки. Для SAS крайне важным является высокая равномерность (или, хотя бы возможность высокоточно знать положения носителя, конкретно – с точностью до лямбда-на-восемь, т.е. в нашем случае с точностью до миллиметра!) движения носителя. Если это условие не обеспечено (а в реальных системах оно практически никогда не обеспечено :), то положение частично спасают т.н. методы автофокусировки. Этих методов за последние пятнадцать-двадцать лет напридумано уева туча. В частности, имеются методы, придуманные автором этого опуса и реализованные в виде Matlab'овского кода.
Кстати сказать, из-за низкой скорости распространения волн в воде у SAS часто возникает проблема однозначности. Суть в том, что SAS можно обсуждать с двух точек зрения. Первая – это «доплеровская» трактовка. Но мне как-то она не близка. А вот вторая точка зрения,- рассматривать SAS как искусственную линейную антенную решётку (АР), для меня вполне наглядна. И здесь, так же как и в настоящей АР, межэлементное расстояние должно удовлетворять определенному соотношению в зависимости от ширины ДН элементов её оставляющих.
Так вот и это условие, на самом деле, не выполнено в нашем случае, причём, грубо не выполнено. Ибо за 0,25сек лодка успевает пройти до 40см при длине волны 1,2см. При не выполнении этого условия  получится, как на фотографии с плёночного фотоаппарата, у которого заело механизм перемотки плёнки.
Ещё одна проблема – неточное знание излучаемой частоты. Эта частота получается целочисленным делением задающего генератора микроконтроллера, который является «калиброванным» с точностью до единиц процентов, да ещё и зависит от колебаний температуры.
И тем не менее, забьем на это всё и попробуем собрать искусственную антенну.
Разрезаем нашу запись на циклы излучения, собираем в т.н. первичную матрицу «быстрое время» - «медленное время» (номер излучения), сжимаем сигнал коррелятором по быстрому времени и проходимся по медленному времени обратным преобразованием Фурье.
Получаем, что называется “первый блин – комом»:


Но кое-что по этой абракадабре сказать можно:
  1. полоса на месте излучаемого импульса говорит о том, что фокусировка очень даже нужна и, кроме того, с неоднозначностью у нас полный форшмак
  2. яркая полоса в стороне от центра картинки говорит нам о том, что со значением излучаемой частотой Fo мы, походу, здорово ошиблись;
  3. несмотря на сильную «полосатость» изображения (ещё одно подтверждение необходимости фокусировки, а также следствие неоднозначности) кое-что рассмотреть всё же можно. В частности видно, что до примерно 3000-го отсчёта (~2.7м наклонной дальности) дно является достаточно гладким, а дальше начинаются «шершавости». Возможно – это просто следствие уменьшение угла места.
Итак, нужна фокусировка. Что это такое? По-русски говоря – это выравнивание. Обычно фокусировку делят на две части: грубая фокусировка, она же – выравнивание с точностью до элемента разрешения по дальности (не отсчёта!), она же (для любителей иностранщины) – устранение “миграции» по дальности. Второй этап – это выравнивание точнее, чем один элемент дальности, она же – фазовая фокусировка (ибо выравнивание с точностью выше, чем элемент разрешения, суть, «подкрутка» фазы).
Причём конкретная реализация обоих этапов зависит от числа отсчётов на один элемент дальности. В нашем случае – это порядка 37 отсчётов (т.е. фазовый шаг около 10 градусов). Следовательно, нет необходимости разбивать фокусировку на два этапа и всё можно делать обыкновенными сдвигами.
Теперь, а как оценить потребные сдвиги? Как я уже писал выше алгоритмов – миллион. Но в нашем случае ограничимся самым простым – выравниванием по излучаемому сигналу (благо мы фактически работаем в режиме «приём-на-фоне-излучения»). Т.е. находим и запоминаем максимум КФ первого зондирования Nmax. Затем последовательно находим максимумы всех остальных зондирований n_max_i, где i – номер зондирования и сдвигаем i-ый столбец первичной матрицы на величину (Nmax-n_max_i). Кстати, сказать – это, по-сути, самый простой способ и с точки зрения вычислительной нагрузки: она в данном случае просто смешная (чего не скажешь о других способах автофокусировки!).
Сказано – сделано, получаем:





Накапливалось всего по 9 зондирований исходя из ширины диаграммы излучателя и скорости движения лодки. Картинка получается гораздо более чёткой. Фокусировка автоматически выровняла Доплер и максимум теперь почти по центру. Сразу виден дифракционный максимум (красный кружок), таким образом, зона однозначности – всего ±2 зондирования.
В области, обведённой жёлтым, видна некая слабо-полосатая структура. По-видимому, прямо под лодкой дно было достаточно гладким с некоторой волнистой структурой.
В областях, обведённых синим и зелёными линиями, явно обнаруживаются некие местные образования. Но более чётко их рассмотреть не удастся: не хватает разрешения (не фиг было так лодку гнать!).
Кстати сказать, более навороченные и сложные методы (по корреляции, по контрасту, по энтропии и т.д. и т.п.) автофокусировки в данном случае дают худшие результаты нежели наш «примитивный» метод.
 
Как писали в XIX веке «за сим кончаю», то бишь, пришло время резюмировать. А выводы просты: «хамминбёрдовский» поплавок является законченной высокочастотной гидроакустической системой (ГАС), пригодной для проведения вполне серьёзных экспериментов.